From 519ca5ea2514a35702816d0d4673881c163f9590 Mon Sep 17 00:00:00 2001 From: Hemil Kadakia Date: Fri, 19 Nov 2021 13:38:22 -0800 Subject: [PATCH] merge upstream grafeas changes while preserving commit log (#7) * updating json examples and extended the grpc client example * Deal with Windows line-endings that git introduces * Allow for Windows protoc download * Deal with explicitly shelling out via bash * Unzip on Windows slow to release file handles * fix marshalling error when deleting projects * backfill tests * Add tests on permission checking Add some tests to validate the permission checks on UpdateOccurrence operations. To support the tests, add a allowListAuth test implementation of Auth that just stores a list of allowed project/permission pairs. Two of the tests are documenting incorrect behavior that will be fixed in a later commit. Namely: (1) Updating the NoteName should require NotesAttachOccurrence on the old NoteName (as this is effectively a detach operation). (2) When excluding the NoteName from the update using an UpdateMask, the permission check should be performed against the existing NoteName, not whatever was passed in (and which will be ignored). * Fix permission checks in occurrence update function This commit fixes the permission checks in UpdateOccurrence and updates the tests from the last commit to demonstrate the change. In particular, we now check the NotesAttachOccurrence on the occurrence's existing NoteName before allowing updates. We continue to check the NotesAttachOccurrence on the updated NoteName (if it is different from the existing NoteName whose permission has already been checked). This means that updating an occurrence from one note to another requires NotesAttachOccurrence on both notes. * Changes to v1 proto only * fix the field number of inclusive. * also add changes to v1beta1 * fix typo * Update running_grafeas.md The instructions for using the curl command with the certificate didn't work for me. I got the error message: `curl: (58) unable to set private key file: 'server.pem' type PEM` When I added these additional flags, it worked fine. * add grafeas-elasticsearch to list of backends * Add the vendor field to Vulnerability.Detail * Increase max page size in v1 API: 1k -> 10k. * fixes ARM build * initial commit of grafeas proto * add files generated by running make * Added roadmap and clarifications for architecture * addressing comments on the PR * further comments addressed * Add the non_compliance_reason field to ComplianceOccurrence The field is necessary to support the cases where the benchmark is non-compliant but there are no associated files, like the upcoming SQL checks. * remove unused deps from compliance proto * add COMPLIANCE to note kind * Added SECURITY guidelines * fix: broken link * Add the vendor info to the V1 api. * Initial commit of DSSE Attestation and IntotoProvenance support. * Remove prefix from intotoprovenance * Add generation code. * Add dsse references in grafeas.proto * Fixes in reference to the comments. * Fix common.proto field format * Change names of fields to work around naming conflicts. * Renamed Builder to BuilderConfig, to not conflict with the Java generated Builder class. * Make casing of dsse consistent * Make casing of dsse consistent * Move the package type and effective severity to the PackageIssue level When we are creating vulnerabilities, we may find vulnerabilities for multiple different package types (e.g. OS, Maven, NPM, Go, etc.) on a single Note. Since type is currently on the Vulnerability occurrence level, we need to move it down into the PackageIssue level. Similarly, vulnerabilities issued for different package types (potentially by different vulnerability sources) can have different effective severities. Therefore, this field also needs to be moved down into the PackageIssue level. * Change intoto provenance arguments to be of Any type. * Change intoto provenance arguments to be of Any type. * Fix small typo * Add comment about "Any" * SBOM protos * move spdx proto to v1beta1 and split into seperate files * Add TODO to encapsulate spdx license fields * Change arguments and recipe from []Any to just Any, to more closely follow the spec. * Add SPDX Relationships protos and consolidate SPDX protos into one file. * Remove obsolete SPDX files. * Added fields to PackageInfoOccurrence and RelationshipNote * Created License message * Use License message instead of the string field type * Use annotations for output only fields * Clean up comments for output only fields * Top-level enums should appear ahead of messages * Correction: top-level enums should appear after messages * 1. Add a new type, of type slsa_provenance, which exactly follows the slsa spec (as opposed to the intoto_provenance, which has a few differences). 2. Add slsa_provenance as a predicate type to the intoto_statement 3. Add the intoto_statement to the build type. 4. Change the json serialization of the intoto_statement type to "_type" to follow the spec. * Correct import paths * Keep intoto_provenance as-is. * Cmment out the slsa provenance to see if compilation works. * Fix spelling of deployable * 1. Move intoto_statement to its own file, replacing dsse_attestation and references to it. 2. Add slsa_provenaecn and intoto_statement to generate file. * Add build verification and tests * Keep dsse attestation, just move around intoto_statement to its own file. * Keep dsse attestation with the original statement * Added links for clarification. * Rename Builder message to BuilderConfig * Prepend messages with "Slsa" to avoid naming conflicts in the "grafeas.v1" package. * changes for cvss v3 * Add grafeas-rds to list of backends. * use backticks for strings * regen with protoc 3.11.4 and grpc-gateway 1.19.6 * add v1 proto generated code * preserve original v1 generate.go * regen with v2 and sync with master * add git validation that was done in https://git.vzbuilders.com/maditya/grafeas-orig/pull/3 * add pg filter based on mysql filter * Remove pgsql implementation (#1) All the pgsql specific code will be moved out to tetradio repo, as mentioned upstream in https://github.com/grafeas/grafeas/issues/341 When we are ready, we can submit this and pgsql code to be merged upstream. * add custom uploader_id and content_hash field for package type (#2) Co-authored-by: jwang04 * regen with protoc 3.11.4 and grpc-gateway 1.19.6 * add v1 proto generated code * preserve original v1 generate.go * regen with v2 and sync with master * add pg filter based on mysql filter * initial working version * fix kind sql parsing * Remove pgsql implementation (#1) All the pgsql specific code will be moved out to tetradio repo, as mentioned upstream in https://github.com/grafeas/grafeas/issues/341 When we are ready, we can submit this and pgsql code to be merged upstream. Co-authored-by: greendinosaur Co-authored-by: Sean Dukehart Co-authored-by: Michael Parker Co-authored-by: wkozlik <61755482+wkozlik@users.noreply.github.com> Co-authored-by: Eric Zimanyi Co-authored-by: Aysylu Greenberg Co-authored-by: Neetha Sebastian Co-authored-by: Dina Graves Portman Co-authored-by: Yinpeng Li Co-authored-by: Catherine Jones <31020910+catherinejones@users.noreply.github.com> Co-authored-by: Pietro Ferretti Co-authored-by: Nolan Emirot Co-authored-by: vyinpengli Co-authored-by: sherzberg Co-authored-by: Nicholas Cho Co-authored-by: Yousef Alowayed Co-authored-by: Wiktor Kozlik Co-authored-by: Ethan Anderson Co-authored-by: yzhao02 Co-authored-by: Aditya Mahendrakar Co-authored-by: Junyi Wang Co-authored-by: jwang04 --- README.md | 17 + SECURITY.md | 5 + docs/json_examples/note_build.json | 1 + docs/json_examples/note_deployment.json | 1 + docs/json_examples/note_vulnerability.json | 1 + docs/running_grafeas.md | 4 +- go.mod | 15 +- go.sum | 128 +- go/filtering/parser/parser_test.go | 12 +- go/v1/api/grafeas.go | 2 +- go/v1/api/grafeas_test.go | 48 +- go/v1/api/validators/build/build.go | 10 +- go/v1/api/validators/build/build_test.go | 18 +- go/v1/api/validators/grafeas/grafeas.go | 2 +- go/v1beta1/api/grafeas_test.go | 29 + go/v1beta1/api/note_test.go | 4 +- go/v1beta1/api/occurrence_test.go | 4 +- go/v1beta1/api/validators/grafeas/grafeas.go | 2 +- go/v1beta1/example/client/client.go | 323 ++- go/v1beta1/project/project.go | 2 +- go/v1beta1/project/project_test.go | 4 +- proto/v1/build.proto | 14 +- proto/v1/common.proto | 18 + proto/v1/compliance.proto | 80 + proto/v1/dsse_attestation.proto | 48 + proto/v1/generate.go | 7 +- proto/v1/grafeas.proto | 15 +- proto/v1/grafeas_go_proto/attestation.pb.go | 430 --- proto/v1/grafeas_go_proto/build.pb.go | 263 -- proto/v1/grafeas_go_proto/common.pb.go | 385 --- proto/v1/grafeas_go_proto/cvss.pb.go | 659 ----- proto/v1/grafeas_go_proto/deployment.pb.go | 378 --- proto/v1/grafeas_go_proto/discovery.pb.go | 451 --- proto/v1/grafeas_go_proto/grafeas.pb.go | 2563 ----------------- proto/v1/grafeas_go_proto/grafeas.pb.gw.go | 1704 ----------- proto/v1/grafeas_go_proto/grafeas_grpc.pb.go | 602 ---- proto/v1/grafeas_go_proto/image.pb.go | 462 --- proto/v1/grafeas_go_proto/package.pb.go | 714 ----- proto/v1/grafeas_go_proto/provenance.pb.go | 1634 ----------- proto/v1/grafeas_go_proto/upgrade.pb.go | 734 ----- proto/v1/grafeas_go_proto/vulnerability.pb.go | 1056 ------- proto/v1/intoto_provenance.proto | 93 + proto/v1/intoto_statement.proto | 47 + proto/v1/package.proto | 8 + proto/v1/slsa_provenance.proto | 95 + proto/v1/vulnerability.proto | 36 +- .../attestation_go_proto/attestation.pb.go | 2 +- proto/v1beta1/build_go_proto/build.pb.go | 2 +- proto/v1beta1/common.proto | 10 +- proto/v1beta1/common_go_proto/common.pb.go | 40 +- proto/v1beta1/cvss_go_proto/cvss.pb.go | 2 +- .../deployment_go_proto/deployment.pb.go | 22 +- .../discovery_go_proto/discovery.pb.go | 10 +- proto/v1beta1/generate.go | 8 + proto/v1beta1/git_go_proto/git.pb.go | 16 +- proto/v1beta1/grafeas.proto | 21 +- proto/v1beta1/grafeas_go_proto/grafeas.pb.go | 1368 +++++---- .../grafeas_go_proto/grafeas_grpc.pb.go | 22 +- proto/v1beta1/image_go_proto/image.pb.go | 2 +- proto/v1beta1/intoto_go_proto/intoto.pb.go | 2 +- proto/v1beta1/package.proto | 8 + proto/v1beta1/package_go_proto/package.pb.go | 78 +- proto/v1beta1/project_go_proto/project.pb.go | 6 +- .../project_go_proto/project_grpc.pb.go | 12 +- .../provenance_go_proto/provenance.pb.go | 18 +- proto/v1beta1/source_go_proto/source.pb.go | 2 +- proto/v1beta1/spdx.proto | 409 +++ proto/v1beta1/spdx_go_proto/spdx.pb.go | 1878 ++++++++++++ proto/v1beta1/swagger/discovery.swagger.json | 2 +- proto/v1beta1/swagger/grafeas.swagger.json | 474 ++- proto/v1beta1/swagger/spdx.swagger.json | 46 + proto/v1beta1/vulnerability.proto | 27 +- .../vulnerability.pb.go | 397 +-- protoc/downloadProtoc.sh | 22 +- protoc/generate.go | 2 +- protodeps/generate.go | 6 +- 76 files changed, 5049 insertions(+), 12993 deletions(-) create mode 100644 SECURITY.md create mode 100644 proto/v1/compliance.proto create mode 100644 proto/v1/dsse_attestation.proto delete mode 100644 proto/v1/grafeas_go_proto/attestation.pb.go delete mode 100644 proto/v1/grafeas_go_proto/build.pb.go delete mode 100644 proto/v1/grafeas_go_proto/common.pb.go delete mode 100644 proto/v1/grafeas_go_proto/cvss.pb.go delete mode 100644 proto/v1/grafeas_go_proto/deployment.pb.go delete mode 100644 proto/v1/grafeas_go_proto/discovery.pb.go delete mode 100644 proto/v1/grafeas_go_proto/grafeas.pb.go delete mode 100644 proto/v1/grafeas_go_proto/grafeas.pb.gw.go delete mode 100644 proto/v1/grafeas_go_proto/grafeas_grpc.pb.go delete mode 100644 proto/v1/grafeas_go_proto/image.pb.go delete mode 100644 proto/v1/grafeas_go_proto/package.pb.go delete mode 100644 proto/v1/grafeas_go_proto/provenance.pb.go delete mode 100644 proto/v1/grafeas_go_proto/upgrade.pb.go delete mode 100644 proto/v1/grafeas_go_proto/vulnerability.pb.go create mode 100644 proto/v1/intoto_provenance.proto create mode 100644 proto/v1/intoto_statement.proto create mode 100644 proto/v1/slsa_provenance.proto create mode 100644 proto/v1beta1/spdx.proto create mode 100644 proto/v1beta1/spdx_go_proto/spdx.pb.go create mode 100644 proto/v1beta1/swagger/spdx.swagger.json diff --git a/README.md b/README.md index 40538ada..55971418 100644 --- a/README.md +++ b/README.md @@ -29,6 +29,16 @@ files](https://github.com/Grafeas/Grafeas/tree/master/proto/v1beta1). ## Grafeas Architecture +Grafeas project consists of + +* the Grafeas API, +* a reference server implementation, +* [3 community contributed storage backends](https://github.com/grafeas/grafeas/tree/master/go/v1beta1/storage): +PostgreSQL, BoltDB, and in-memory storage. + +Longer-term, these are to be extracted into separate projects (see +[#341](https://github.com/grafeas/grafeas/issues/341)). + The diagram below shows the boundaries between Grafeas API, server, its storage backends and the clients: @@ -40,6 +50,13 @@ The following projects provide bindings for Grafeas API to different storage bac * [grafeas-pgsql](https://github.com/grafeas/grafeas-pgsql) * [grafeas-oracle](https://github.com/judavi/grafeas-oracle) +* [grafeas-elasticsearch](https://github.com/rode/grafeas-elasticsearch) +* [grafeas-rds](https://github.com/theparanoids/grafeas-rds) + +## Roadmap + +Please see the [Grafeas roadmap](https://www.slideshare.net/aysylu/binary-authorization-in-kubernetes/65) +for the future of the project development. ## Support diff --git a/SECURITY.md b/SECURITY.md new file mode 100644 index 00000000..0d5a399d --- /dev/null +++ b/SECURITY.md @@ -0,0 +1,5 @@ +To report a security issue, please email [grafeas-security-report](mailto:grafeas-security-report@google.com) +with a description of the issue, the steps you took to create the issue, +affected versions, and if known, mitigations for the issue. Our vulnerability +management team will acknowledge receiving your email within 3 working days. +This project follows a 90 day disclosure timeline. diff --git a/docs/json_examples/note_build.json b/docs/json_examples/note_build.json index 45aaf422..0a577bc9 100644 --- a/docs/json_examples/note_build.json +++ b/docs/json_examples/note_build.json @@ -1,4 +1,5 @@ { + "name": "projects/notes_example/notes/exampleBuildNote", "shortDescription": "Gives an example build note", "longDescription": "Shows the fields that need to be set in order to create a build note inside a project", "kind": "BUILD", diff --git a/docs/json_examples/note_deployment.json b/docs/json_examples/note_deployment.json index 89b56564..5113cd69 100644 --- a/docs/json_examples/note_deployment.json +++ b/docs/json_examples/note_deployment.json @@ -1,4 +1,5 @@ { + "name": "projects/notes_example/notes/exampleDeploymentNote", "shortDescription": "Gives an example deployment note", "longDescription": "Shows the fields that need to be set in order to create a deployment note inside a project", "kind": "DEPLOYMENT", diff --git a/docs/json_examples/note_vulnerability.json b/docs/json_examples/note_vulnerability.json index ea3d7387..3e7857f6 100644 --- a/docs/json_examples/note_vulnerability.json +++ b/docs/json_examples/note_vulnerability.json @@ -1,4 +1,5 @@ { + "name": "projects/notes_example/notes/exampleVulnerabilityNote", "shortDescription": "Gives an example vulnerability note", "longDescription": "Shows the fields that need to be set in order to create a vulnerability note inside a project", "kind": "VULNERABILITY", diff --git a/docs/running_grafeas.md b/docs/running_grafeas.md index eb6c3315..797f234e 100644 --- a/docs/running_grafeas.md +++ b/docs/running_grafeas.md @@ -138,12 +138,12 @@ openssl pkcs12 -in server.p12 -out server.pem -clcerts Now, `curl` the endpoint: ```bash -curl -k --cert server.pem https://localhost:8080/v1beta1/projects +curl -k --key server.key --cacert ca.pem --cert server.pem https://localhost:8080/v1beta1/projects ``` ### gRPC with a go client -[client.go](../go/v1beta1/example/client.go) contains a small example of a go +[client.go](../go/v1beta1/example/client/client.go) contains a small example of a go client that connects to Grafeas and outputs the notes in `myproject`: ```bash diff --git a/go.mod b/go.mod index 96993c1b..893c7a80 100644 --- a/go.mod +++ b/go.mod @@ -1,6 +1,6 @@ module github.com/grafeas/grafeas -go 1.12 +go 1.14 require ( github.com/antlr/antlr4 v0.0.0-20190819145818-b43a4c3a8015 @@ -12,11 +12,12 @@ require ( github.com/google/uuid v1.1.2 github.com/grpc-ecosystem/grpc-gateway/v2 v2.0.1 github.com/rs/cors v1.7.0 - github.com/spf13/viper v1.4.0 - golang.org/x/net v0.0.0-20200822124328-c89045814202 - google.golang.org/genproto v0.0.0-20201019141844-1ed22bb0c154 - google.golang.org/grpc v1.33.1 - google.golang.org/grpc/examples v0.0.0-20201222210138-66c1393796be // indirect + github.com/spf13/viper v1.7.1 + golang.org/x/net v0.0.0-20201110031124-69a78807bb2b + golang.org/x/sys v0.0.0-20210426230700-d19ff857e887 // indirect + google.golang.org/genproto v0.0.0-20201113130914-ce600e9a6f9e + google.golang.org/grpc v1.33.2 + google.golang.org/grpc/examples v0.0.0-20201112215255-90f1b3ee835b // indirect google.golang.org/protobuf v1.25.0 - gopkg.in/yaml.v2 v2.2.8 // indirect + gopkg.in/yaml.v2 v2.4.0 // indirect ) diff --git a/go.sum b/go.sum index 1d4b2f34..383be5fa 100644 --- a/go.sum +++ b/go.sum @@ -12,6 +12,7 @@ cloud.google.com/go v0.54.0/go.mod h1:1rq2OEkV3YMf6n/9ZvGWI3GWw0VoqH/1x2nd8Is/bP cloud.google.com/go v0.56.0/go.mod h1:jr7tqZxxKOVYizybht9+26Z/gUq7tiRzu+ACVAMbKVk= cloud.google.com/go v0.57.0/go.mod h1:oXiQ6Rzq3RAkkY7N6t3TcE6jE+CIBBbA36lwQ1JyzZs= cloud.google.com/go v0.62.0/go.mod h1:jmCYTdRCQuc1PHIIJ/maLInMho30T/Y0M4hTdTShOYc= +cloud.google.com/go v0.63.0/go.mod h1:GmezbQc7T2snqkEXWfZ0sy0VfkB/ivI2DdtJL2DEmlg= cloud.google.com/go v0.65.0/go.mod h1:O5N8zS7uWy9vkA9vayVHs65eM1ubvY4h553ofrNHObY= cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o= cloud.google.com/go/bigquery v1.3.0/go.mod h1:PjpwJnslEMmckchkHFfq+HTD2DmtT67aNFKH1/VBDHE= @@ -21,6 +22,7 @@ cloud.google.com/go/bigquery v1.7.0/go.mod h1://okPTzCYNXSlb24MZs83e2Do+h+VXtc4g cloud.google.com/go/bigquery v1.8.0/go.mod h1:J5hqkt3O0uAFnINi6JXValWIb1v0goeZM77hZzJN/fQ= cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE= cloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk= +cloud.google.com/go/firestore v1.1.0/go.mod h1:ulACoGHTpvq5r8rxGJ4ddJZBZqakUQqClKRT5SZwBmk= cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I= cloud.google.com/go/pubsub v1.1.0/go.mod h1:EwwdRX2sKPjnvnqCa270oGRyludottCI76h+R3AArQw= cloud.google.com/go/pubsub v1.2.0/go.mod h1:jhfEVHT8odbXTkndysNHCcx0awwzvfOlguIAii9o8iA= @@ -40,9 +42,13 @@ github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRF github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= github.com/antlr/antlr4 v0.0.0-20190819145818-b43a4c3a8015 h1:StuiJFxQUsxSCzcby6NFZRdEhPkXD5vxN7TZ4MD6T84= github.com/antlr/antlr4 v0.0.0-20190819145818-b43a4c3a8015/go.mod h1:T7PbCXFs94rrTttyxjbyT5+/1V8T2TYDejxUfHJjw1Y= -github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8= +github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o= +github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmVTwzkszR9V5SSuryQ31EELlFMUz1kKyl939pY= +github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= +github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs= +github.com/bketelsen/crypt v0.0.3-0.20200106085610-5cbc8cc4026c/go.mod h1:MKsuJmJgSg28kpZDP6UIiPt0e0Oz0kqKNGyRaWEPv84= github.com/boltdb/bolt v1.3.1 h1:JQmyP4ZBrce+ZQu0dY660FMfatumYDLun9hBCUVIkF4= github.com/boltdb/bolt v1.3.1/go.mod h1:clJnj/oiGkjum5o1McbSZDSLxVThjynRyGBgiAx27Ps= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= @@ -55,8 +61,8 @@ github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGX github.com/cockroachdb/cmux v0.0.0-20170110192607-30d10be49292 h1:dzj1/xcivGjNPwwifh/dWTczkwcuqsXXFHY1X/TZMtw= github.com/cockroachdb/cmux v0.0.0-20170110192607-30d10be49292/go.mod h1:qRiX68mZX1lGBkTWyp3CLcenw9I94W2dLeRvMzcn9N4= github.com/coreos/bbolt v1.3.2/go.mod h1:iRUV2dpdMOn7Bo10OQBFzIJO9kkE559Wcmn+qkEiiKk= -github.com/coreos/etcd v3.3.10+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= -github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= +github.com/coreos/etcd v3.3.13+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= +github.com/coreos/go-semver v0.3.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= github.com/coreos/go-systemd v0.0.0-20190321100706-95778dfbb74e/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= @@ -68,9 +74,9 @@ 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/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= github.com/fsnotify/fsnotify v1.4.7 h1:IXs+QLmnXW2CcXuY+8Mzv/fWEsPGWxqefPtCP5CnV9I= github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= -github.com/ghodss/yaml v1.0.0 h1:wQHKEahhL6wmXdzwWG11gIVCkOv05bNOh+Rxn0yngAk= github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= @@ -94,14 +100,11 @@ github.com/golang/mock v1.4.0/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt github.com/golang/mock v1.4.1/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= github.com/golang/mock v1.4.3/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= github.com/golang/mock v1.4.4/go.mod h1:l3mdAwkq5BuhzHwde/uurv3sEJeZMXNpwsxVWU71h+4= -github.com/golang/protobuf v1.2.0 h1:P3YflyNX/ehuJFLhxviNdFxQPkGK5cDcApsge1SqnvM= github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= -github.com/golang/protobuf v1.3.2 h1:6nsPYzhq5kReh6QImI3k5qWzO4PEbvbIW2cwSfR/6xs= 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.3.4/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= -github.com/golang/protobuf v1.3.5 h1:F768QJ1E9tib+q5Sc8MkdJi1RxLTbRcTf8LJV56aRls= github.com/golang/protobuf v1.3.5/go.mod h1:6O5/vntMXwX2lRkT1hjjk0nAC1IDOTvTlVgjlRvqsdk= 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= @@ -116,7 +119,6 @@ github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Z github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= 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 h1:Xye71clBPdm5HgqGwUkwhbynsUJZhDbS20FvLhQ2izg= 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.4.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= @@ -140,21 +142,43 @@ github.com/google/uuid v1.1.2 h1:EVhdT+1Kseyi1/pUmXKaFxYsDNy9RQYkMWRH68J/W7Y= github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk= -github.com/gorilla/websocket v1.4.0/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= +github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1 h1:EGx4pi6eqNxGaHF6qqu48+N2wcFQ5qg5FXgOdqsJ5d8= +github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= +github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= github.com/grpc-ecosystem/go-grpc-middleware v1.0.0/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk= github.com/grpc-ecosystem/grpc-gateway v1.9.0 h1:bM6ZAFZmc/wPFaRDi0d5L7hGEZEx/2u+Tmr2evNHDiI= github.com/grpc-ecosystem/grpc-gateway v1.9.0/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= github.com/grpc-ecosystem/grpc-gateway/v2 v2.0.1 h1:X2vfSnm1WC8HEo0MBHZg2TcuDUHJj6kd1TmEAQncnSA= github.com/grpc-ecosystem/grpc-gateway/v2 v2.0.1/go.mod h1:oVMjMN64nzEcepv1kdZKgx1qNYt4Ro0Gqefiq2JWdis= +github.com/hashicorp/consul/api v1.1.0/go.mod h1:VmuI/Lkw1nC05EYQWNKwWGbkg+FbDBtguAZLlVdkD9Q= +github.com/hashicorp/consul/sdk v0.1.1/go.mod h1:VKf9jXwCTEY1QZP2MOLRhb5i/I/ssyNV1vwHyQBF0x8= +github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= +github.com/hashicorp/go-cleanhttp v0.5.1/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80= +github.com/hashicorp/go-immutable-radix v1.0.0/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= +github.com/hashicorp/go-msgpack v0.5.3/go.mod h1:ahLV/dePpqEmjfWmKiqvPkv/twdG7iPBM1vqhUKIvfM= +github.com/hashicorp/go-multierror v1.0.0/go.mod h1:dHtQlpGsu+cZNNAkkCN/P3hoUDHhCYQXV3UM06sGGrk= +github.com/hashicorp/go-rootcerts v1.0.0/go.mod h1:K6zTfqpRlCUIjkwsN4Z+hiSfzSTQa6eBIzfwKfwNnHU= +github.com/hashicorp/go-sockaddr v1.0.0/go.mod h1:7Xibr9yA9JjQq1JpNB2Vw7kxv8xerXegt+ozgdvDeDU= +github.com/hashicorp/go-syslog v1.0.0/go.mod h1:qPfqrKkXGihmCqbJM2mZgkZGvKG1dFdvsLplgctolz4= +github.com/hashicorp/go-uuid v1.0.0/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= +github.com/hashicorp/go-uuid v1.0.1/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= +github.com/hashicorp/go.net v0.0.1/go.mod h1:hjKkEWcCURg++eb33jQU7oqQcI9XDCnUzHA0oac0k90= github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= +github.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO+LraFDTW64= +github.com/hashicorp/mdns v1.0.0/go.mod h1:tL+uN++7HEJ6SQLQ2/p+z2pH24WQKWjBPkE0mNTz8vQ= +github.com/hashicorp/memberlist v0.1.3/go.mod h1:ajVTdAv/9Im8oMAAj5G31PhhMCZJV2pPBoIllUwCN7I= +github.com/hashicorp/serf v0.8.2/go.mod h1:6hOLApaqBFA1NXqRQAsxw9QxuDEvNxSQRwA/JwenrHc= github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo= +github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk= +github.com/jtolds/gls v4.20.0+incompatible h1:xdiiI2gbIgH/gLH7ADydsJ1uDOEzR8yvV7C0MuV77Wo= +github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= @@ -165,19 +189,32 @@ github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORN github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= -github.com/magiconair/properties v1.8.0 h1:LLgXmsheXeRoUOBOjtwPQCWIYqM/LU1ayDtDePerRcY= -github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= +github.com/magiconair/properties v1.8.1 h1:ZC2Vc7/ZFkGmsVC9KvOjumD+G5lXy2RtTKyzRKO2BQ4= +github.com/magiconair/properties v1.8.1/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= +github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= +github.com/mattn/go-isatty v0.0.3/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= +github.com/miekg/dns v1.0.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg= +github.com/mitchellh/cli v1.0.0/go.mod h1:hNIlj7HEI86fIcpObd7a0FcrxTWetlwJDGcceTlRvqc= +github.com/mitchellh/go-homedir v1.0.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= +github.com/mitchellh/go-testing-interface v1.0.0/go.mod h1:kRemZodwjscx+RGhAo8eIhFbs2+BFgRtFPeD/KE+zxI= +github.com/mitchellh/gox v0.4.0/go.mod h1:Sd9lOJ0+aimLBi73mGofS1ycjY8lL3uZM3JPS42BGNg= +github.com/mitchellh/iochan v1.0.0/go.mod h1:JwYml1nuB7xOzsp52dPpHFffvOCDupsG0QubkSMEySY= +github.com/mitchellh/mapstructure v0.0.0-20160808181253-ca63d7c062ee/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= github.com/mitchellh/mapstructure v1.1.2 h1:fmNYVwqnSfB9mZU6OS2O6GsXM+wcskZDuKQzvN1EDeE= github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= +github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= +github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U= +github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= github.com/pelletier/go-toml v1.2.0 h1:T5zMGML61Wp+FlcbWjRDT7yAxhJNAiPPLOFECq181zc= github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= -github.com/pkg/errors v0.8.0 h1:WdK/asTD0HN+q6hsWO3/vpuAkAr+tw6aNJNDFFf0+qw= github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/posener/complete v1.1.1/go.mod h1:em0nMJCgc9GFtwrmVmEMR/ZL6WyhyjMBndrE9hABlRI= github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= github.com/prometheus/client_golang v0.9.3/go.mod h1:/TN21ttK/J9q6uSwhBd54HahCDft0ttaMvbicHlPoso= github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= @@ -188,13 +225,18 @@ github.com/prometheus/common v0.4.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y8 github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.0-20190507164030-5867b95ac084/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= github.com/prometheus/tsdb v0.7.1/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU= -github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af h1:gu+uRPtBe88sKxUCEXRoeCvVG90TJmwhiqRpvdhQFng= github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg= github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= github.com/rs/cors v1.7.0 h1:+88SsELBHx5r+hZ8TCkggzSstaWNbDvThkVK8H6f9ik= github.com/rs/cors v1.7.0/go.mod h1:gFx+x8UowdsKA9AchylcLynDq+nNFfI8FkUZdN/jGCU= +github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= +github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc= github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= +github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d h1:zE9ykElWQ6/NYmHa3jpm/yHnI4xSofP+UP6SpjHcSeM= +github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= +github.com/smartystreets/goconvey v1.6.4 h1:fv0U8FUIMPNf1L9lnHLvLhgicrIVChEkdzIKYqbNC9s= +github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM= github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= github.com/spf13/afero v1.1.2 h1:m8/z1t7/fwjysjQRYbP0RD+bUIF/8tJwPdEZsI83ACI= @@ -205,18 +247,18 @@ github.com/spf13/jwalterweatherman v1.0.0 h1:XHEdyB+EcvlqZamSM4ZOMGlc93t6AcsBEu9 github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= github.com/spf13/pflag v1.0.3 h1:zPAT6CGy6wXeQ7NtTnaTerfKOsV6V6F8agHXFiazDkg= github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= -github.com/spf13/viper v1.4.0 h1:yXHLWeravcrgGyFSyCgdYpXQ9dR9c/WED3pg1RhxqEU= -github.com/spf13/viper v1.4.0/go.mod h1:PTJ7Z/lr49W6bUbkmS1V3by4uWynFiR9p7+dSq/yZzE= +github.com/spf13/viper v1.7.1 h1:pM5oEahlgWv/WnHXpgbKz7iLIxRf65tye2Ci+XFK5sk= +github.com/spf13/viper v1.7.1/go.mod h1:8WkrPz2fc9jxqZNCJI/76HCieCp4Q8HaLFoCha5qpdg= 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 h1:bSDNvY7ZPG5RlJ8otE/7V6gMiyenm9RtJ7IUVIAoJ1w= 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 h1:2E4SXV/wtOkTonXsotYi4li6zVWxYlZuYNCXe9XRJyk= github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= +github.com/subosito/gotenv v1.2.0 h1:Slr1R9HxAlEKefgq5jn9U+DnETlIUa6HfgEzj0g5d7s= +github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw= github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= -github.com/ugorji/go v1.1.4/go.mod h1:uQMGLiO92mf5W77hV/PUCpI3pbzQx3CRekS0kk+RGrc= github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= -github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q= github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= @@ -230,6 +272,7 @@ go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/crypto v0.0.0-20181029021203-45a5f77698d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= @@ -267,8 +310,9 @@ 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/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-20181023162649-9b4f9f5ad519/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20181220203305-927f97764cc3 h1:eH6Eip3UpmR+yM/qI9Ijluzb1bNv/cAU/n+6l8tRSis= +golang.org/x/net v0.0.0-20181201002055-351d144fa1fc/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20181220203305-927f97764cc3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -276,7 +320,6 @@ golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190501004415-9ce7a6920f09/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190503192946-f4e77d36d62c/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190522155817-f3200d17e092/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190628185345-da137c7871d7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= @@ -285,7 +328,6 @@ golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553/go.mod h1:z5CRVTTTmAJ677TzLL golang.org/x/net v0.0.0-20200114155413-6afb5195e5aa/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200222125558-5a598a2470a0/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200226121028-0de0cce0169b h1:0mm1VjtFUOIlE1SbDlwjYaDxZVDP2S5ou6y0gSgXHu8= golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200301022130-244492dfa37a/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200324143707-d3edc9973b7e/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= @@ -295,15 +337,15 @@ golang.org/x/net v0.0.0-20200513185701-a91f0712d120/go.mod h1:qpuaurCH72eLCgpAm/ golang.org/x/net v0.0.0-20200520182314-0ba52f642ac2/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20200707034311-ab3426394381/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= -golang.org/x/net v0.0.0-20200822124328-c89045814202 h1:VvcQYSHwXgi7W+TpUR6A9g6Up98WAHf3f/ulnJ62IyA= golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= +golang.org/x/net v0.0.0-20201110031124-69a78807bb2b h1:uwuIcX0g4Yl1NC5XAz37xsr2lTtcqevgzYNVt49waME= +golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20191202225959-858c2ad4c8b6/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20200902213428-5d25da1a8d43/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f h1:wMNYb4v58l5UBM7MYRLPG6ZhfOqbKu7X5eyFl8ZhKvA= 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-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -312,13 +354,12 @@ 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-20200317015054-43a5402ce75a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sys v0.0.0-20180830151530-49385e6e1522 h1:Ve1ORMCxvRmSXBwJK+t3Oy+V2vRW2OetUQBq4rJIkZE= +golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20181107165924-66b7b1311ac8 h1:YoY1wS6JYVRpIfFngRf2HHo9R9dAne3xbkGOQ5rJXjU= +golang.org/x/sys v0.0.0-20181026203630-95b1ffbd15a5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181107165924-66b7b1311ac8/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a h1:1BGLXjeY4akVXGgbC9HugT3Jv3hCI0z56oJR5vAMgBU= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -342,13 +383,13 @@ golang.org/x/sys v0.0.0-20200501052902-10377860bb8e/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20200511232937-7e40ca221e25/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200515095857-1151b9dac4a9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200523222454-059865788121/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200803210538-64077c9b5642 h1:B6caxRw+hozq68X2MY7jEpZh/cr4/aHLv9xU8Kkadrw= golang.org/x/sys v0.0.0-20200803210538-64077c9b5642/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210426230700-d19ff857e887 h1:dXfMednGJh/SUUFjTLsWJz3P+TQt9qnR11GgeI3vWKs= +golang.org/x/sys v0.0.0-20210426230700-d19ff857e887/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= -golang.org/x/text v0.3.0 h1:g61tztE5qeGQ89tm6NTjjM9VPIm088od1l6aSorWRWg= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= -golang.org/x/text v0.3.2 h1:tW2bmiBqwgJj/UpqtC8EpXEZVYOwU0yG4iWbprSVAcs= golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= golang.org/x/text v0.3.3 h1:cokOdA+Jmi5PJGXLlLllQSgYigAEfHXJAERHVMaCc2k= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= @@ -362,9 +403,9 @@ golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3 golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190312151545-0bb0c0a6e846/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190312170243-e65039ee4138/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190328211700-ab21143f2384/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/tools v0.0.0-20190506145303-2d16b83fe98c/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= -golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135 h1:5Beo0mZN8dRzgrMMkDp0jc8YXQKx9DiJ2k1dkvGsn5A= golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/tools v0.0.0-20190606124116-d0a3d012864b/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= @@ -372,6 +413,7 @@ golang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgw golang.org/x/tools v0.0.0-20190816200558-6889da9d5479/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191112195655-aa38f8e97acc/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191113191852-77e3bb0ad9e7/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191115202509-3a792d9c32b2/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= @@ -396,6 +438,7 @@ golang.org/x/tools v0.0.0-20200515010526-7d3b6ebf133d/go.mod h1:EkVYQZoAsY45+roY golang.org/x/tools v0.0.0-20200618134242-20370b0cb4b2/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200729194436-6467de6f59a7/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= golang.org/x/tools v0.0.0-20200804011535-6c149bb5ef0d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= +golang.org/x/tools v0.0.0-20200806022845-90696ccdc692/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= golang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= 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= @@ -430,7 +473,6 @@ google.golang.org/genproto v0.0.0-20190418145605-e7d98fc518a7/go.mod h1:VzzqZJRn google.golang.org/genproto v0.0.0-20190425155659-357c62f0e4bb/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= google.golang.org/genproto v0.0.0-20190502173448-54afdca5d873/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= google.golang.org/genproto v0.0.0-20190801165951-fa694d86fc64/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= -google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55 h1:gSJIx1SDwno+2ElGhA4+qG2zF97qiUzTM+rQ0klBOcE= google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= google.golang.org/genproto v0.0.0-20190911173649-1774047e7e51/go.mod h1:IbNlFCBrqXvoKpeg0TB2l7cyZUmoaFKYIwrEpbDKLA8= google.golang.org/genproto v0.0.0-20191108220845-16a3f7862a1a/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= @@ -455,29 +497,27 @@ google.golang.org/genproto v0.0.0-20200729003335-053ba62fc06f/go.mod h1:FWY/as6D google.golang.org/genproto v0.0.0-20200804131852-c06518451d9c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20200806141610-86f49bd18e98/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20200825200019-8632dd797987/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20201019141844-1ed22bb0c154 h1:bFFRpT+e8JJVY7lMMfvezL1ZIwqiwmPl2bsE2yx4HqM= google.golang.org/genproto v0.0.0-20201019141844-1ed22bb0c154/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/grpc v1.19.0 h1:cfg4PD8YEdSFnm7qLV4++93WcmhH2nIUhMjhdCvl3j8= +google.golang.org/genproto v0.0.0-20201113130914-ce600e9a6f9e h1:jRAe+6EDD0LNrVzmjx7FxBivivOZTKnXMbH5lvmxLP8= +google.golang.org/genproto v0.0.0-20201113130914-ce600e9a6f9e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= -google.golang.org/grpc v1.21.0/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= -google.golang.org/grpc v1.23.0 h1:AzbTB6ux+okLTzP8Ru1Xs41C303zdcfEht7MQnYJt5A= 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.26.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= google.golang.org/grpc v1.27.1/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= google.golang.org/grpc v1.28.0/go.mod h1:rpkK4SK4GF4Ach/+MFLZUBavHOvF2JJB5uozKKal+60= -google.golang.org/grpc v1.29.1 h1:EC2SB8S04d2r73uptxphDSUG+kTKVgjRPF+N3xpxRB4= google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk= google.golang.org/grpc v1.30.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= google.golang.org/grpc v1.31.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= -google.golang.org/grpc v1.33.1 h1:DGeFlSan2f+WEtCERJ4J9GJWk15TxUi8QGagfI87Xyc= google.golang.org/grpc v1.33.1/go.mod h1:fr5YgcSWrqhRRxogOsw7RzIpsmvOZ6IcH4kBYTpR3n0= +google.golang.org/grpc v1.33.2 h1:EQyQC3sa8M+p6Ulc8yy9SWSS2GVwyRc83gAbG8lrl4o= +google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc= google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.0.0/go.mod h1:6Kw0yEErY5E/yWrBtf03jp27GLLJujG4z/JK95pnjjw= -google.golang.org/grpc/examples v0.0.0-20201222210138-66c1393796be h1:xbegEtASlUK7sdyR3v+zzLVFFA8s1ID1t3D1Y8NDrms= -google.golang.org/grpc/examples v0.0.0-20201222210138-66c1393796be/go.mod h1:Ly7ZA/ARzg8fnPU9TyZIxoz33sEUuWX7txiqs8lPTgE= +google.golang.org/grpc/examples v0.0.0-20201112215255-90f1b3ee835b h1:NuxyvVZoDfHZwYW9LD4GJiF5/nhiSyP4/InTrvw9Ibk= +google.golang.org/grpc/examples v0.0.0-20201112215255-90f1b3ee835b/go.mod h1:IBqQ7wSUJ2Ep09a8rMWFsg4fmI2r38zwsq8a0GgxXpM= 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= @@ -490,20 +530,20 @@ google.golang.org/protobuf v1.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGj google.golang.org/protobuf v1.25.0 h1:Ejskq+SyPohKW+1uil0JJMtmHCgJPJ/qWTxr8qp+R4c= google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= -gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 h1:qIbj1fsPNlZgppZ+VLlY7N33q108Sa+fhmuc+sWQYwY= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= -gopkg.in/resty.v1 v1.12.0 h1:CuXP0Pjfw9rOuY6EP+UvtNvt5DSqHpIxILZKT/quCZI= +gopkg.in/ini.v1 v1.51.0 h1:AQvPpx3LzTDM0AjnIRlVFwFFGC+npRopjZxLJj6gdno= +gopkg.in/ini.v1 v1.51.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/resty.v1 v1.12.0/go.mod h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo= gopkg.in/yaml.v2 v2.0.0-20170812160011-eb3733d160e7/go.mod h1:JAlM8MvJe8wmxCU4Bli9HhUf9+ttbYbLASfIpnQbh74= gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.2.2 h1:ZCJp+EgiOT7lHqUV2J862kp8Qj64Jo6az82+3Td9dZw= gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.3/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.2.8 h1:obN1ZagJSUGI0Ek/LBmuj4SNLPfIny3KsKFopxRdj10= -gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.4/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= honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= diff --git a/go/filtering/parser/parser_test.go b/go/filtering/parser/parser_test.go index 9e43338f..e01e5611 100644 --- a/go/filtering/parser/parser_test.go +++ b/go/filtering/parser/parser_test.go @@ -18,6 +18,7 @@ package parser import ( "fmt" "io/ioutil" + "runtime" "strings" "testing" @@ -93,21 +94,26 @@ func verifyBaseline(t *testing.T, baseline baseline) { } func newTestBaselines(filename string) ([]baseline, error) { + lineSeparator := "\n" + if runtime.GOOS == "windows" { + lineSeparator = "\r\n" + } + bytes, err := ioutil.ReadFile(fmt.Sprintf("testdata/%s.baseline", filename)) if err != nil { panic(fmt.Sprintf("Could not read provided file: %s", filename)) } - testCases := strings.Split(string(bytes), TestCaseDelimiter) + testCases := strings.Split(string(bytes), strings.ReplaceAll(TestCaseDelimiter, "\n", lineSeparator)) baselines := make([]baseline, len(testCases)) for i, testCase := range testCases { testCaseName := fmt.Sprintf("%s[%d]", filename, i) - inputOutput := strings.Split(testCase, InputOutputDelimiter) + inputOutput := strings.Split(testCase, strings.ReplaceAll(InputOutputDelimiter, "\n", lineSeparator)) input, output := inputOutput[0], inputOutput[1] baselines[i] = baseline{ source: common.NewStringSource(input, testCaseName), expected: &expr.ParsedExpr{}, } - resultOrError := strings.Split(output, DiagnosticsDelimiter) + resultOrError := strings.Split(output, strings.ReplaceAll(DiagnosticsDelimiter, "\n", lineSeparator)) result := resultOrError[0] if result != NoResult { if err := pb.UnmarshalText(output, baselines[i].expected); err != nil { diff --git a/go/v1/api/grafeas.go b/go/v1/api/grafeas.go index 77ec18a6..3d317afc 100644 --- a/go/v1/api/grafeas.go +++ b/go/v1/api/grafeas.go @@ -26,7 +26,7 @@ import ( const ( defaultPageSize = 20 - maxPageSize = 1000 + maxPageSize = 10000 maxBatchSize = 1000 // NotesGet is the permission to get a note. diff --git a/go/v1/api/grafeas_test.go b/go/v1/api/grafeas_test.go index 91b7807c..4a69a0fe 100644 --- a/go/v1/api/grafeas_test.go +++ b/go/v1/api/grafeas_test.go @@ -375,6 +375,35 @@ func (s *fakeStorage) ListNoteOccurrences(ctx context.Context, pID, nID, filter, return foundOccs, "", nil } +// projectPermission binds a permission to a project. +type projectPermission struct { + permission iam.Permission + projectID string +} + +// allowListAuth implements grafeas.Auth, denying all access checks except those +// in the specified allowList. +type allowListAuth struct { + allowList []projectPermission +} + +func (a *allowListAuth) CheckAccessAndProject(ctx context.Context, projectID string, entityID string, p iam.Permission) error { + for _, allowed := range a.allowList { + if allowed.permission == p && allowed.projectID == projectID { + return nil + } + } + return status.Errorf(codes.PermissionDenied, "permission %q denied for %q or %q", p, projectID, entityID) +} + +func (a *allowListAuth) EndUserID(ctx context.Context) (string, error) { + return "42", nil +} + +func (a *allowListAuth) PurgePolicy(ctx context.Context, projectID string, entityID string, r iam.Resource) error { + return nil +} + type fakeAuth struct { // Whether auth calls return an error to exercise err code paths. authErr, endUserIDErr, purgeErr bool @@ -427,9 +456,14 @@ func TestValidatePageSize(t *testing.T) { wantPS: 500, }, { - desc: "page size of 1000 (the max allowed), valid", - ps: 1000, - wantPS: 1000, + desc: "page size of 5000, valid", + ps: 5000, + wantPS: 5000, + }, + { + desc: "page size of 10000 (the max allowed), valid", + ps: 10000, + wantPS: 10000, }, } @@ -461,13 +495,13 @@ func TestValidatePageSizeErrors(t *testing.T) { wantErrCode: codes.InvalidArgument, }, { - desc: "page size of 1001 (larger than max allowed), want error", - ps: 1001, + desc: "page size of 10001 (larger than max allowed), want error", + ps: 10001, wantErrCode: codes.InvalidArgument, }, { - desc: "page size of 5000 (larger than max allowed), want error", - ps: 5000, + desc: "page size of 50000 (larger than max allowed), want error", + ps: 50000, wantErrCode: codes.InvalidArgument, }, } diff --git a/go/v1/api/validators/build/build.go b/go/v1/api/validators/build/build.go index 0b890257..20144aaa 100644 --- a/go/v1/api/validators/build/build.go +++ b/go/v1/api/validators/build/build.go @@ -39,9 +39,13 @@ func ValidateNote(b *gpb.BuildNote) []error { func ValidateOccurrence(d *gpb.BuildOccurrence) []error { errs := []error{} - if p := d.GetProvenance(); p == nil { - errs = append(errs, errors.New("provenance is required")) - } else { + p := d.GetProvenance() + i := d.GetIntotoProvenance() + s := d.GetIntotoStatement() + if p == nil && i == nil && s == nil { + errs = append(errs, errors.New("either Provenance or intotoProvenance or intotoStatement is required")) + } + if p != nil { for _, err := range provenance.ValidateBuildProvenance(p) { errs = append(errs, fmt.Errorf("provenance.%s", err)) } diff --git a/go/v1/api/validators/build/build_test.go b/go/v1/api/validators/build/build_test.go index 424a77a4..6bf88647 100644 --- a/go/v1/api/validators/build/build_test.go +++ b/go/v1/api/validators/build/build_test.go @@ -64,7 +64,7 @@ func TestValidateOccurrence(t *testing.T) { wantErrs: true, }, { - desc: "valid details, want success", + desc: "valid details with provenance, want success", d: &gpb.BuildOccurrence{ Provenance: &gpb.BuildProvenance{ Id: "8c0b1847-f78b-4bf7-8b2e-38e1bb48b125", @@ -72,6 +72,22 @@ func TestValidateOccurrence(t *testing.T) { }, wantErrs: false, }, + { + desc: "valid details with intotoprovenance, want success", + d: &gpb.BuildOccurrence{ + IntotoProvenance: &gpb.InTotoProvenance{}, + }, + wantErrs: false, + }, + { + desc: "valid details with intotostatement, want success", + d: &gpb.BuildOccurrence{ + IntotoStatement: &gpb.InTotoStatement{ + Type: "my_type", + }, + }, + wantErrs: false, + }, } for _, tt := range tests { diff --git a/go/v1/api/validators/grafeas/grafeas.go b/go/v1/api/validators/grafeas/grafeas.go index ffad85fe..a0683f63 100644 --- a/go/v1/api/validators/grafeas/grafeas.go +++ b/go/v1/api/validators/grafeas/grafeas.go @@ -66,7 +66,7 @@ func ValidateNote(n *gpb.Note) error { if d := n.GetDeployment(); d != nil { for _, err := range deployment.ValidateNote(d) { - errs = append(errs, fmt.Errorf("deplyable.%s", err)) + errs = append(errs, fmt.Errorf("deployable.%s", err)) } } diff --git a/go/v1beta1/api/grafeas_test.go b/go/v1beta1/api/grafeas_test.go index 83ace471..743caacd 100644 --- a/go/v1beta1/api/grafeas_test.go +++ b/go/v1beta1/api/grafeas_test.go @@ -427,6 +427,35 @@ func (s *fakeStorage) GetVulnerabilityOccurrencesSummary(ctx context.Context, pr }, nil } +// projectPermission binds a permission to a project. +type projectPermission struct { + permission iam.Permission + projectID string +} + +// allowListAuth implements grafeas.Auth, denying all access checks except those +// in the specified allowList. +type allowListAuth struct { + allowList []projectPermission +} + +func (a *allowListAuth) CheckAccessAndProject(ctx context.Context, projectID string, entityID string, p iam.Permission) error { + for _, allowed := range a.allowList { + if allowed.permission == p && allowed.projectID == projectID { + return nil + } + } + return status.Errorf(codes.PermissionDenied, "permission %q denied for %q or %q", p, projectID, entityID) +} + +func (a *allowListAuth) EndUserID(ctx context.Context) (string, error) { + return "42", nil +} + +func (a *allowListAuth) PurgePolicy(ctx context.Context, projectID string, entityID string, r iam.Resource) error { + return nil +} + type fakeAuth struct { // Whether auth calls return an error to exercise err code paths. authErr, endUserIDErr, purgeErr bool diff --git a/go/v1beta1/api/note_test.go b/go/v1beta1/api/note_test.go index 89cec8b3..7320116e 100644 --- a/go/v1beta1/api/note_test.go +++ b/go/v1beta1/api/note_test.go @@ -671,8 +671,10 @@ func TestDeleteNote(t *testing.T) { req := &gpb.DeleteNoteRequest{ Name: "projects/goog-vulnz/notes/CVE-UH-OH", } - if _, err := g.DeleteNote(ctx, req); err != nil { + if n, err := g.DeleteNote(ctx, req); err != nil { t.Errorf("Got err %v, want success", err) + } else if n == nil { + t.Error("expected response to not be nil") } } diff --git a/go/v1beta1/api/occurrence_test.go b/go/v1beta1/api/occurrence_test.go index 8f88aa35..0dad045f 100644 --- a/go/v1beta1/api/occurrence_test.go +++ b/go/v1beta1/api/occurrence_test.go @@ -652,8 +652,10 @@ func TestDeleteOccurrence(t *testing.T) { req := &gpb.DeleteOccurrenceRequest{ Name: createdOcc.Name, } - if _, err := g.DeleteOccurrence(ctx, req); err != nil { + if oc, err := g.DeleteOccurrence(ctx, req); err != nil { t.Errorf("Got err %v, want success", err) + } else if oc == nil { + t.Error("expected response to not be nil") } }) } diff --git a/go/v1beta1/api/validators/grafeas/grafeas.go b/go/v1beta1/api/validators/grafeas/grafeas.go index a324e49d..0119a820 100644 --- a/go/v1beta1/api/validators/grafeas/grafeas.go +++ b/go/v1beta1/api/validators/grafeas/grafeas.go @@ -67,7 +67,7 @@ func ValidateNote(n *gpb.Note) error { if d := n.GetDeployable(); d != nil { for _, err := range deployment.ValidateDeployable(d) { - errs = append(errs, fmt.Errorf("deplyable.%s", err)) + errs = append(errs, fmt.Errorf("deployable.%s", err)) } } diff --git a/go/v1beta1/example/client/client.go b/go/v1beta1/example/client/client.go index 31fa39f0..fcb51157 100644 --- a/go/v1beta1/example/client/client.go +++ b/go/v1beta1/example/client/client.go @@ -18,18 +18,167 @@ import ( "context" "log" + "time" + + timestamp "github.com/golang/protobuf/ptypes/timestamp" + buildpb "github.com/grafeas/grafeas/proto/v1beta1/build_go_proto" + deppb "github.com/grafeas/grafeas/proto/v1beta1/deployment_go_proto" pb "github.com/grafeas/grafeas/proto/v1beta1/grafeas_go_proto" + packpb "github.com/grafeas/grafeas/proto/v1beta1/package_go_proto" + projpb "github.com/grafeas/grafeas/proto/v1beta1/project_go_proto" + provpb "github.com/grafeas/grafeas/proto/v1beta1/provenance_go_proto" + sourcepb "github.com/grafeas/grafeas/proto/v1beta1/source_go_proto" + vulpb "github.com/grafeas/grafeas/proto/v1beta1/vulnerability_go_proto" + "google.golang.org/grpc" ) func main() { + // demonstrates creation of two projects, + // creation of notes in one project and occurences in the other + // shows creation of build, vulnerability and deploy types conn, err := grpc.Dial("localhost:8080", grpc.WithInsecure()) defer conn.Close() + + projectClient := projpb.NewProjectsClient(conn) + + log.Println("Create a new project to store notes") + _, err = projectClient.CreateProject(context.Background(), &projpb.CreateProjectRequest{ + Project: &projpb.Project{Name: "projects/provider_example"}, + }) + if err != nil { + log.Fatal(err) + } + + // Get a single project + log.Println("Get the details of the new project") + project, err := projectClient.GetProject(context.Background(), &projpb.GetProjectRequest{ + Name: "projects/provider_example", + }) + if err != nil { + log.Fatal(err) + } else { + log.Println(project) + } + + // Create a second project + log.Println("now create a second project for the occurrences") + _, err = projectClient.CreateProject(context.Background(), &projpb.CreateProjectRequest{ + Project: &projpb.Project{Name: "projects/occurrence_example"}, + }) + if err != nil { + log.Fatal(err) + } + + // List projects + log.Println("list out all the projects") + projectResp, err := projectClient.ListProjects(context.Background(), + &projpb.ListProjectsRequest{}) + + if err != nil { + log.Fatal(err) + } + + if len(projectResp.Projects) != 0 { + log.Println(projectResp.Projects) + } else { + log.Printf("no projects") + } + client := pb.NewGrafeasV1Beta1Client(conn) + + log.Println("create a vulnerability note") + vulDetails := vulpb.Vulnerability_Detail{ + Package: "libexempi3", + CpeUri: "cpe:/o:debian:debian_linux:7", + MinAffectedVersion: &packpb.Version{ + Name: "2.5.7", + Revision: "1", + Kind: 1, + }, + } + + noteReq := pb.CreateNoteRequest{ + Parent: "projects/provider_example", + NoteId: "testVulnerabilityNote", + Note: &pb.Note{ + Name: "projects/provider_example/notes/testVulnerabilityNote", + ShortDescription: "A vulnerability note", + LongDescription: "A longer description vulnerability note", + Kind: 1, + Type: &pb.Note_Vulnerability{ + Vulnerability: &vulpb.Vulnerability{ + CvssScore: 1.23, + Severity: 3, + Details: []*vulpb.Vulnerability_Detail{ + &vulDetails, + }, + }, + }, + }, + } + + _, err = client.CreateNote(context.Background(), ¬eReq) + if err != nil { + log.Fatal(err) + } + + log.Println("create a deployment note") + noteReq = pb.CreateNoteRequest{ + Parent: "projects/provider_example", + NoteId: "testDeploymentNote", + Note: &pb.Note{ + Name: "projects/provider_example/notes/testDeploymentNote", + ShortDescription: "A deployment note", + LongDescription: "A longer description deployment note", + Kind: 5, + Type: &pb.Note_Deployable{ + Deployable: &deppb.Deployable{ + ResourceUri: []string{ + "http://somewhere", + }, + }, + }, + }, + } + + _, err = client.CreateNote(context.Background(), ¬eReq) + if err != nil { + log.Fatal(err) + } + + log.Println("create a build note") + noteReq = pb.CreateNoteRequest{ + Parent: "projects/provider_example", + NoteId: "testBuildNote", + Note: &pb.Note{ + Name: "projects/provider_example/notes/testBuildNote", + ShortDescription: "A build note", + LongDescription: "A longer description build note", + Kind: 2, + Type: &pb.Note_Build{ + Build: &buildpb.Build{ + BuilderVersion: "some version", + Signature: &buildpb.BuildSignature{ + PublicKey: "some public key", + Signature: []byte("Z3JhZmVhcw=="), + KeyId: "some key identifier", + KeyType: 0, + }, + }, + }, + }, + } + _, err = client.CreateNote(context.Background(), ¬eReq) + if err != nil { + log.Fatal(err) + } + // List notes + log.Println("list all the notes for the provider project") resp, err := client.ListNotes(context.Background(), &pb.ListNotesRequest{ - Parent: "projects/myproject", + Parent: "projects/provider_example", }) if err != nil { log.Fatal(err) @@ -38,6 +187,176 @@ func main() { if len(resp.Notes) != 0 { log.Println(resp.Notes) } else { - log.Printf("Project 'myproject' does not contain any notes") + log.Printf("Project 'provider_example' does not contain any notes") + } + + // --- now occurrernces --- + + // Create occurence for the deployment note in the second project + log.Println("create a deployment occurrence") + + deploymentDetails := deppb.Deployment{ + UserEmail: "some@email.com", + DeployTime: ×tamp.Timestamp{ + Seconds: time.Now().UTC().UnixNano(), + }, + Config: "some deployment config", + Address: "some hosting platform", + Platform: deppb.Deployment_CUSTOM, + } + occurenceDeployment := pb.Occurrence_Deployment{ + Deployment: &deppb.Details{Deployment: &deploymentDetails}, + } + occurenceDetails := pb.Occurrence{ + Name: "projects/occurrence_example/occurences/testDeploymentOccurrence", + Resource: &pb.Resource{ + Name: "some os", + Uri: "http://someuri", + }, + NoteName: "projects/occurrence_example/notes/testDeploymentOccurrence", + Kind: 5, + Details: &occurenceDeployment, + } + + occurenceRequest := pb.CreateOccurrenceRequest{ + Parent: "projects/occurrence_example", + Occurrence: &occurenceDetails, + } + + _, err = client.CreateOccurrence(context.Background(), &occurenceRequest) + if err != nil { + log.Fatal(err) + } + + //create a vulnerability occurrence + log.Println("create a vulnerability occurrence") + packageIssue := vulpb.PackageIssue{ + AffectedLocation: &vulpb.VulnerabilityLocation{ + CpeUri: "7", + Package: "a", + Version: &packpb.Version{ + Name: "v1.1.1", + Kind: 3, + Revision: "r", + }, + }, + FixedLocation: &vulpb.VulnerabilityLocation{ + CpeUri: "cpe:/o:debian:debian_linux:7", + Package: "a", + Version: &packpb.Version{ + Name: "namestring", + Kind: 3, + Revision: "1", + }, + }, + } + vulnerability := vulpb.Details{ + Type: "the type of package", + PackageIssue: []*vulpb.PackageIssue{ + &packageIssue, + }, + } + occurrenceVulnerabilityDetails := pb.Occurrence_Vulnerability{ + Vulnerability: &vulnerability, } + + occurenceDetails = pb.Occurrence{ + Name: "projects/occurrence_example/occurences/testVulnerabilityOccurrence", + Resource: &pb.Resource{ + Name: "some os", + Uri: "http://someuri", + }, + NoteName: "projects/occurrence_example/notes/testVulnerabilityOccurrence", + Kind: 5, + Details: &occurrenceVulnerabilityDetails, + } + + occurenceRequest = pb.CreateOccurrenceRequest{ + Parent: "projects/occurrence_example", + Occurrence: &occurenceDetails, + } + + _, err = client.CreateOccurrence(context.Background(), &occurenceRequest) + if err != nil { + log.Fatal(err) + } + + // now create a build occurrence + log.Println("create a build occurrence") + build := buildpb.Details{ + Provenance: &provpb.BuildProvenance{ + Id: "build identifier", + ProjectId: "some project identifier", + Commands: []*provpb.Command{}, + BuiltArtifacts: []*provpb.Artifact{ + &provpb.Artifact{ + Checksum: "123", + Id: "some identifier for the artifact", + Names: []string{ + "name of the related artifact", + }, + }, + }, + CreateTime: ×tamp.Timestamp{ + Seconds: time.Now().UTC().UnixNano(), + }, + StartTime: ×tamp.Timestamp{ + Seconds: time.Now().UTC().UnixNano(), + }, + EndTime: ×tamp.Timestamp{ + Seconds: time.Now().UTC().UnixNano(), + }, + Creator: "User initiating the build", + LogsUri: "location of the build logs", + SourceProvenance: &provpb.Source{ + ArtifactStorageSourceUri: "input binary artifacts from this build", + Context: &sourcepb.SourceContext{ + Context: &sourcepb.SourceContext_Git{ + Git: &sourcepb.GitSourceContext{ + Url: "the git repo url", + RevisionId: "git commit hash", + }, + }, + }, + }, + TriggerId: "triggered by code commit 123", + BuilderVersion: "some version of the builder", + }, + ProvenanceBytes: "Z3JhZmVhcw==", + } + occurrenceBuildDetails := pb.Occurrence_Build{ + Build: &build, + } + + occurenceDetails = pb.Occurrence{ + Name: "projects/occurrence_example/occurences/testBuildOccurrence", + Resource: &pb.Resource{ + Name: "some os", + Uri: "http://someuri", + }, + NoteName: "projects/occurrence_example/notes/testBuildOccurrence", + Kind: 2, + Details: &occurrenceBuildDetails, + } + + _, err = client.CreateOccurrence(context.Background(), &occurenceRequest) + if err != nil { + log.Fatal(err) + } + + // List notes + log.Println("list all the occurrences for the provider project") + respOccurrences, err := client.ListOccurrences(context.Background(), + &pb.ListOccurrencesRequest{ + Parent: "projects/occurrence_example", + }) + if err != nil { + log.Fatal(err) + } + if len(respOccurrences.Occurrences) != 0 { + log.Println(respOccurrences.Occurrences) + } else { + log.Printf("Project 'occurrence_example' does not contain any occurrences") + } + } diff --git a/go/v1beta1/project/project.go b/go/v1beta1/project/project.go index 81618cbb..86981e99 100644 --- a/go/v1beta1/project/project.go +++ b/go/v1beta1/project/project.go @@ -106,5 +106,5 @@ func (gp *API) DeleteProject(ctx context.Context, req *prpb.DeleteProjectRequest if err := gp.Storage.DeleteProject(ctx, pID); err != nil { return nil, err } - return nil, nil + return &empty.Empty{}, nil } diff --git a/go/v1beta1/project/project_test.go b/go/v1beta1/project/project_test.go index bd5f0b0b..35593f2b 100644 --- a/go/v1beta1/project/project_test.go +++ b/go/v1beta1/project/project_test.go @@ -314,8 +314,10 @@ func TestDeleteProject(t *testing.T) { req := &prpb.DeleteProjectRequest{ Name: "projects/1234", } - if _, err := gp.DeleteProject(ctx, req); err != nil { + if p, err := gp.DeleteProject(ctx, req); err != nil { t.Errorf("Got err %v, want success", err) + } else if p == nil { + t.Error("expected response to not be nil") } } diff --git a/proto/v1/build.proto b/proto/v1/build.proto index 2f1b1b7b..447aefa6 100644 --- a/proto/v1/build.proto +++ b/proto/v1/build.proto @@ -22,6 +22,8 @@ option java_package = "io.grafeas.v1"; option objc_class_prefix = "GRA"; import "proto/v1/provenance.proto"; +import "proto/v1/intoto_statement.proto"; +import "proto/v1/intoto_provenance.proto"; // Note holding the version of the provider's builder and the signature of the // provenance message in the build details occurrence. @@ -32,7 +34,7 @@ message BuildNote { // Details of a build occurrence. message BuildOccurrence { - // Required. The actual provenance for the build. + // The actual provenance for the build. grafeas.v1.BuildProvenance provenance = 1; // Serialized JSON representation of the provenance, used in generating the @@ -47,4 +49,14 @@ message BuildOccurrence { // provenance is marshalled to json as well to prevent incompatibilities with // future changes. string provenance_bytes = 2; + + // Deprecated. See InTotoStatement for the replacement. + // In-toto Provenance representation as defined in spec. + InTotoProvenance intoto_provenance = 3; + + // In-toto Statement representation as defined in spec. + // The intoto_statement can contain any type of provenance. The serialized + // payload of the statement can be stored and signed in the Occurrence's + // envelope. + InTotoStatement intoto_statement = 4; } diff --git a/proto/v1/common.proto b/proto/v1/common.proto index 4d9b4567..24832bdc 100644 --- a/proto/v1/common.proto +++ b/proto/v1/common.proto @@ -41,6 +41,10 @@ enum NoteKind { ATTESTATION = 7; // This represents an available package upgrade. UPGRADE = 8; + // This represents a Compliance Note + COMPLIANCE = 9; + // This represents a DSSE attestation Note + DSSE_ATTESTATION = 10; } // Metadata for any related URL information. @@ -101,3 +105,17 @@ message Signature { // * "nih:///sha-256;703f68f42aba2c6de30f488a5ea122fef76324679c9bf89791ba95a1271589a5" string public_key_id = 2; } + +// MUST match https://github.com/secure-systems-lab/dsse/blob/master/envelope.proto. +// An authenticated message of arbitrary type. +message Envelope { + bytes payload = 1; + string payload_type = 2; + repeated EnvelopeSignature signatures = 3; +} + +message EnvelopeSignature { + bytes sig = 1; + string keyid = 2; +} + diff --git a/proto/v1/compliance.proto b/proto/v1/compliance.proto new file mode 100644 index 00000000..d7f809d5 --- /dev/null +++ b/proto/v1/compliance.proto @@ -0,0 +1,80 @@ +// Copyright 2021 The Grafeas Authors. All rights reserved. +// +// 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 grafeas.v1; + +import "proto/v1/vulnerability.proto"; + +option go_package = "github.com/grafeas/grafeas/proto/v1/grafeas_go_proto"; +option java_multiple_files = true; +option java_package = "io.grafeas.v1"; +option objc_class_prefix = "GRA"; + +message ComplianceNote { + // The title that identifies this compliance check. + string title = 1; + // A description about this compliance check. + string description = 2; + // The OS and config versions the benchmark applies to. + repeated grafeas.v1.ComplianceVersion version = 3; + // A rationale for the existence of this compliance check. + string rationale = 4; + // A description of remediation steps if the compliance check fails. + string remediation = 5; + // A compliance check that is a CIS benchmark. + message CisBenchmark { + int32 profile_level = 1; + grafeas.v1.Severity severity = 2; + } + oneof compliance_type { + CisBenchmark cis_benchmark = 6; + } + // Serialized scan instructions with a predefined format. + bytes scan_instructions = 7; +} + +// Describes the CIS benchmark version that is applicable to a given OS and +// os version. +message ComplianceVersion { + // The CPE URI (https://cpe.mitre.org/specification/) this benchmark is + // applicable to. + string cpe_uri = 1; + // The version of the benchmark. This is set to the version of the OS-specific + // CIS document the benchmark is defined in. + string version = 2; +} + +// An indication that the compliance checks in the associated ComplianceNote +// were not satisfied for particular resources or a specified reason. +message ComplianceOccurrence { + repeated NonCompliantFile non_compliant_files = 2; + string non_compliance_reason = 3; +} + +// Details about files that caused a compliance check to fail. +message NonCompliantFile { + // display_command is a single command that can be used to display a list of + // non compliant files. When there is no such command, we can also iterate a + // list of non compliant file using 'path'. + + // Empty if `display_command` is set. + string path = 1; + // Command to display the non-compliant files. + string display_command = 2; + // Explains why a file is non compliant for a CIS check. + string reason = 3; +} + diff --git a/proto/v1/dsse_attestation.proto b/proto/v1/dsse_attestation.proto new file mode 100644 index 00000000..8f9942c6 --- /dev/null +++ b/proto/v1/dsse_attestation.proto @@ -0,0 +1,48 @@ +// Copyright 2021 The Grafeas Authors. All rights reserved. +// +// 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 grafeas.v1; +option go_package = "github.com/grafeas/grafeas/proto/v1/grafeas_go_proto"; +option java_multiple_files = true; +option java_package = "io.grafeas.v1"; +option objc_class_prefix = "GRA"; + +import "proto/v1/common.proto"; +import "proto/v1/intoto_statement.proto"; + +message DSSEAttestationNote { + // This submessage provides human-readable hints about the purpose of the + // authority. Because the name of a note acts as its resource reference, it is + // important to disambiguate the canonical name of the Note (which might be a + // UUID for security purposes) from "readable" names more suitable for debug + // output. Note that these hints should not be used to look up authorities in + // security sensitive contexts, such as when looking up attestations to + // verify. + message DSSEHint { + // Required. The human readable name of this attestation authority, for example "cloudbuild-prod". + string human_readable_name = 1; + } + // DSSEHint hints at the purpose of the attestation authority. + DSSEHint hint = 1; +} + +// Deprecated. Prefer to use a regular Occurrence, and populate the +// Envelope at the top level of the Occurrence. +message DSSEAttestationOccurrence { + // If doing something security critical, make sure to verify the signatures in this metadata. + Envelope envelope = 1; + oneof decoded_payload { + InTotoStatement statement = 2; + } +} \ No newline at end of file diff --git a/proto/v1/generate.go b/proto/v1/generate.go index 04644591..4504318b 100644 --- a/proto/v1/generate.go +++ b/proto/v1/generate.go @@ -6,6 +6,10 @@ //go:generate protoc ../../proto/v1/attestation.proto //go:generate protoc ../../proto/v1/common.proto //go:generate protoc ../../proto/v1/deployment.proto +//go:generate protoc ../../proto/v1/dsse_attestation.proto +//go:generate protoc ../../proto/v1/intoto_provenance.proto +//go:generate protoc ../../proto/v1/slsa_provenance.proto +//go:generate protoc ../../proto/v1/intoto_statement.proto //go:generate protoc ../../proto/v1/grafeas.proto //go:generate protoc ../../proto/v1/package.proto //go:generate protoc ../../proto/v1/provenance.proto @@ -15,7 +19,8 @@ //go:generate protoc ../../proto/v1/image.proto //go:generate protoc ../../proto/v1/vulnerability.proto //go:generate protoc ../../proto/v1/upgrade.proto +//go:generate protoc ../../proto/v1/compliance.proto //go:generate mv grafeas_go_proto tmp //go:generate mv tmp/github.com/grafeas/grafeas/proto/v1/grafeas_go_proto . //go:generate rm -rf tmp -package v1 +package v1 \ No newline at end of file diff --git a/proto/v1/grafeas.proto b/proto/v1/grafeas.proto index 647b31ca..bd9491ee 100644 --- a/proto/v1/grafeas.proto +++ b/proto/v1/grafeas.proto @@ -37,6 +37,8 @@ import "proto/v1/image.proto"; import "proto/v1/package.proto"; import "proto/v1/upgrade.proto"; import "proto/v1/vulnerability.proto"; +import "proto/v1/compliance.proto"; +import "proto/v1/dsse_attestation.proto"; // [Grafeas](https://grafeas.io) API. // @@ -236,8 +238,14 @@ message Occurrence { grafeas.v1.AttestationOccurrence attestation = 14; // Describes an available package upgrade on the linked resource. grafeas.v1.UpgradeOccurrence upgrade = 15; - + // Describes a compliance violation on a linked resource. + grafeas.v1.ComplianceOccurrence compliance = 16; + // Describes an attestation of an artifact using dsse. + grafeas.v1.DSSEAttestationOccurrence dsse_attestation = 17; } + + // https://github.com/secure-systems-lab/dsse + grafeas.v1.Envelope envelope = 18; } // A type of analysis that can be done for a resource. @@ -296,6 +304,10 @@ message Note { grafeas.v1.AttestationNote attestation = 16; // A note describing available package upgrades. grafeas.v1.UpgradeNote upgrade = 17; + // A note describing a compliance check. + grafeas.v1.ComplianceNote compliance = 18; + // A note describing a dsse attestation note. + grafeas.v1.DSSEAttestationNote dsse_attestation = 19; } } @@ -524,3 +536,4 @@ message BatchCreateOccurrencesResponse { // The occurrences that were created. repeated Occurrence occurrences = 1; } + diff --git a/proto/v1/grafeas_go_proto/attestation.pb.go b/proto/v1/grafeas_go_proto/attestation.pb.go deleted file mode 100644 index 33381f07..00000000 --- a/proto/v1/grafeas_go_proto/attestation.pb.go +++ /dev/null @@ -1,430 +0,0 @@ -// Copyright 2019 The Grafeas Authors. All rights reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -// Code generated by protoc-gen-go. DO NOT EDIT. -// versions: -// protoc-gen-go v1.25.0 -// protoc v3.14.0 -// source: proto/v1/attestation.proto - -package grafeas_go_proto - -import ( - proto "github.com/golang/protobuf/proto" - 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) -) - -// This is a compile-time assertion that a sufficiently up-to-date version -// of the legacy proto package is being used. -const _ = proto.ProtoPackageIsVersion4 - -// Note kind that represents a logical attestation "role" or "authority". For -// example, an organization might have one `Authority` for "QA" and one for -// "build". This note is intended to act strictly as a grouping mechanism for -// the attached occurrences (Attestations). This grouping mechanism also -// provides a security boundary, since IAM ACLs gate the ability for a principle -// to attach an occurrence to a given note. It also provides a single point of -// lookup to find all attached attestation occurrences, even if they don't all -// live in the same project. -type AttestationNote struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Hint hints at the purpose of the attestation authority. - Hint *AttestationNote_Hint `protobuf:"bytes,1,opt,name=hint,proto3" json:"hint,omitempty"` -} - -func (x *AttestationNote) Reset() { - *x = AttestationNote{} - if protoimpl.UnsafeEnabled { - mi := &file_proto_v1_attestation_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *AttestationNote) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*AttestationNote) ProtoMessage() {} - -func (x *AttestationNote) ProtoReflect() protoreflect.Message { - mi := &file_proto_v1_attestation_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 AttestationNote.ProtoReflect.Descriptor instead. -func (*AttestationNote) Descriptor() ([]byte, []int) { - return file_proto_v1_attestation_proto_rawDescGZIP(), []int{0} -} - -func (x *AttestationNote) GetHint() *AttestationNote_Hint { - if x != nil { - return x.Hint - } - return nil -} - -type Jwt struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // The compact encoding of a JWS, which is always three base64 encoded strings - // joined by periods. For details, see: - // https://tools.ietf.org/html/rfc7515.html#section-3.1 - CompactJwt string `protobuf:"bytes,1,opt,name=compact_jwt,json=compactJwt,proto3" json:"compact_jwt,omitempty"` -} - -func (x *Jwt) Reset() { - *x = Jwt{} - if protoimpl.UnsafeEnabled { - mi := &file_proto_v1_attestation_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *Jwt) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*Jwt) ProtoMessage() {} - -func (x *Jwt) ProtoReflect() protoreflect.Message { - mi := &file_proto_v1_attestation_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 Jwt.ProtoReflect.Descriptor instead. -func (*Jwt) Descriptor() ([]byte, []int) { - return file_proto_v1_attestation_proto_rawDescGZIP(), []int{1} -} - -func (x *Jwt) GetCompactJwt() string { - if x != nil { - return x.CompactJwt - } - return "" -} - -// Occurrence that represents a single "attestation". The authenticity of an -// attestation can be verified using the attached signature. If the verifier -// trusts the public key of the signer, then verifying the signature is -// sufficient to establish trust. In this circumstance, the authority to which -// this attestation is attached is primarily useful for lookup (how to find -// this attestation if you already know the authority and artifact to be -// verified) and intent (for which authority this attestation was intended to -// sign. -type AttestationOccurrence struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Required. The serialized payload that is verified by one or more `signatures`. - SerializedPayload []byte `protobuf:"bytes,1,opt,name=serialized_payload,json=serializedPayload,proto3" json:"serialized_payload,omitempty"` - // One or more signatures over `serialized_payload`. Verifier implementations - // should consider this attestation message verified if at least one - // `signature` verifies `serialized_payload`. See `Signature` in common.proto - // for more details on signature structure and verification. - Signatures []*Signature `protobuf:"bytes,2,rep,name=signatures,proto3" json:"signatures,omitempty"` - // One or more JWTs encoding a self-contained attestation. - // Each JWT encodes the payload that it verifies within the JWT itself. - // Verifier implementation SHOULD ignore the `serialized_payload` field - // when verifying these JWTs. - // If only JWTs are present on this AttestationOccurrence, then the - // `serialized_payload` SHOULD be left empty. - // Each JWT SHOULD encode a claim specific to the `resource_uri` of this - // Occurrence, but this is not validated by Grafeas metadata API - // implementations. The JWT itself is opaque to Grafeas. - Jwts []*Jwt `protobuf:"bytes,3,rep,name=jwts,proto3" json:"jwts,omitempty"` -} - -func (x *AttestationOccurrence) Reset() { - *x = AttestationOccurrence{} - if protoimpl.UnsafeEnabled { - mi := &file_proto_v1_attestation_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *AttestationOccurrence) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*AttestationOccurrence) ProtoMessage() {} - -func (x *AttestationOccurrence) ProtoReflect() protoreflect.Message { - mi := &file_proto_v1_attestation_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 AttestationOccurrence.ProtoReflect.Descriptor instead. -func (*AttestationOccurrence) Descriptor() ([]byte, []int) { - return file_proto_v1_attestation_proto_rawDescGZIP(), []int{2} -} - -func (x *AttestationOccurrence) GetSerializedPayload() []byte { - if x != nil { - return x.SerializedPayload - } - return nil -} - -func (x *AttestationOccurrence) GetSignatures() []*Signature { - if x != nil { - return x.Signatures - } - return nil -} - -func (x *AttestationOccurrence) GetJwts() []*Jwt { - if x != nil { - return x.Jwts - } - return nil -} - -// This submessage provides human-readable hints about the purpose of the -// authority. Because the name of a note acts as its resource reference, it is -// important to disambiguate the canonical name of the Note (which might be a -// UUID for security purposes) from "readable" names more suitable for debug -// output. Note that these hints should not be used to look up authorities in -// security sensitive contexts, such as when looking up attestations to -// verify. -type AttestationNote_Hint struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Required. The human readable name of this attestation authority, for - // example "qa". - HumanReadableName string `protobuf:"bytes,1,opt,name=human_readable_name,json=humanReadableName,proto3" json:"human_readable_name,omitempty"` -} - -func (x *AttestationNote_Hint) Reset() { - *x = AttestationNote_Hint{} - if protoimpl.UnsafeEnabled { - mi := &file_proto_v1_attestation_proto_msgTypes[3] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *AttestationNote_Hint) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*AttestationNote_Hint) ProtoMessage() {} - -func (x *AttestationNote_Hint) ProtoReflect() protoreflect.Message { - mi := &file_proto_v1_attestation_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 AttestationNote_Hint.ProtoReflect.Descriptor instead. -func (*AttestationNote_Hint) Descriptor() ([]byte, []int) { - return file_proto_v1_attestation_proto_rawDescGZIP(), []int{0, 0} -} - -func (x *AttestationNote_Hint) GetHumanReadableName() string { - if x != nil { - return x.HumanReadableName - } - return "" -} - -var File_proto_v1_attestation_proto protoreflect.FileDescriptor - -var file_proto_v1_attestation_proto_rawDesc = []byte{ - 0x0a, 0x1a, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x61, 0x74, 0x74, 0x65, 0x73, - 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0a, 0x67, 0x72, - 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, 0x76, 0x31, 0x1a, 0x15, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, - 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, - 0x7f, 0x0a, 0x0f, 0x41, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x6f, - 0x74, 0x65, 0x12, 0x34, 0x0a, 0x04, 0x68, 0x69, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x20, 0x2e, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x74, - 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x6f, 0x74, 0x65, 0x2e, 0x48, 0x69, - 0x6e, 0x74, 0x52, 0x04, 0x68, 0x69, 0x6e, 0x74, 0x1a, 0x36, 0x0a, 0x04, 0x48, 0x69, 0x6e, 0x74, - 0x12, 0x2e, 0x0a, 0x13, 0x68, 0x75, 0x6d, 0x61, 0x6e, 0x5f, 0x72, 0x65, 0x61, 0x64, 0x61, 0x62, - 0x6c, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x68, - 0x75, 0x6d, 0x61, 0x6e, 0x52, 0x65, 0x61, 0x64, 0x61, 0x62, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, - 0x22, 0x26, 0x0a, 0x03, 0x4a, 0x77, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x63, 0x6f, 0x6d, 0x70, 0x61, - 0x63, 0x74, 0x5f, 0x6a, 0x77, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x63, 0x6f, - 0x6d, 0x70, 0x61, 0x63, 0x74, 0x4a, 0x77, 0x74, 0x22, 0xa2, 0x01, 0x0a, 0x15, 0x41, 0x74, 0x74, - 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4f, 0x63, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, - 0x63, 0x65, 0x12, 0x2d, 0x0a, 0x12, 0x73, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, - 0x5f, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x11, - 0x73, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, - 0x64, 0x12, 0x35, 0x0a, 0x0a, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x18, - 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, - 0x76, 0x31, 0x2e, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x52, 0x0a, 0x73, 0x69, - 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x12, 0x23, 0x0a, 0x04, 0x6a, 0x77, 0x74, 0x73, - 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, - 0x2e, 0x76, 0x31, 0x2e, 0x4a, 0x77, 0x74, 0x52, 0x04, 0x6a, 0x77, 0x74, 0x73, 0x42, 0x4d, 0x0a, - 0x0d, 0x69, 0x6f, 0x2e, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, 0x76, 0x31, 0x50, 0x01, - 0x5a, 0x34, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x72, 0x61, - 0x66, 0x65, 0x61, 0x73, 0x2f, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x2f, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x5f, 0x67, 0x6f, - 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0xa2, 0x02, 0x03, 0x47, 0x52, 0x41, 0x62, 0x06, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x33, -} - -var ( - file_proto_v1_attestation_proto_rawDescOnce sync.Once - file_proto_v1_attestation_proto_rawDescData = file_proto_v1_attestation_proto_rawDesc -) - -func file_proto_v1_attestation_proto_rawDescGZIP() []byte { - file_proto_v1_attestation_proto_rawDescOnce.Do(func() { - file_proto_v1_attestation_proto_rawDescData = protoimpl.X.CompressGZIP(file_proto_v1_attestation_proto_rawDescData) - }) - return file_proto_v1_attestation_proto_rawDescData -} - -var file_proto_v1_attestation_proto_msgTypes = make([]protoimpl.MessageInfo, 4) -var file_proto_v1_attestation_proto_goTypes = []interface{}{ - (*AttestationNote)(nil), // 0: grafeas.v1.AttestationNote - (*Jwt)(nil), // 1: grafeas.v1.Jwt - (*AttestationOccurrence)(nil), // 2: grafeas.v1.AttestationOccurrence - (*AttestationNote_Hint)(nil), // 3: grafeas.v1.AttestationNote.Hint - (*Signature)(nil), // 4: grafeas.v1.Signature -} -var file_proto_v1_attestation_proto_depIdxs = []int32{ - 3, // 0: grafeas.v1.AttestationNote.hint:type_name -> grafeas.v1.AttestationNote.Hint - 4, // 1: grafeas.v1.AttestationOccurrence.signatures:type_name -> grafeas.v1.Signature - 1, // 2: grafeas.v1.AttestationOccurrence.jwts:type_name -> grafeas.v1.Jwt - 3, // [3:3] is the sub-list for method output_type - 3, // [3:3] is the sub-list for method input_type - 3, // [3:3] is the sub-list for extension type_name - 3, // [3:3] is the sub-list for extension extendee - 0, // [0:3] is the sub-list for field type_name -} - -func init() { file_proto_v1_attestation_proto_init() } -func file_proto_v1_attestation_proto_init() { - if File_proto_v1_attestation_proto != nil { - return - } - file_proto_v1_common_proto_init() - if !protoimpl.UnsafeEnabled { - file_proto_v1_attestation_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AttestationNote); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_proto_v1_attestation_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Jwt); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_proto_v1_attestation_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AttestationOccurrence); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_proto_v1_attestation_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AttestationNote_Hint); 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_proto_v1_attestation_proto_rawDesc, - NumEnums: 0, - NumMessages: 4, - NumExtensions: 0, - NumServices: 0, - }, - GoTypes: file_proto_v1_attestation_proto_goTypes, - DependencyIndexes: file_proto_v1_attestation_proto_depIdxs, - MessageInfos: file_proto_v1_attestation_proto_msgTypes, - }.Build() - File_proto_v1_attestation_proto = out.File - file_proto_v1_attestation_proto_rawDesc = nil - file_proto_v1_attestation_proto_goTypes = nil - file_proto_v1_attestation_proto_depIdxs = nil -} diff --git a/proto/v1/grafeas_go_proto/build.pb.go b/proto/v1/grafeas_go_proto/build.pb.go deleted file mode 100644 index a71bcc3e..00000000 --- a/proto/v1/grafeas_go_proto/build.pb.go +++ /dev/null @@ -1,263 +0,0 @@ -// Copyright 2019 The Grafeas Authors. All rights reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -// Code generated by protoc-gen-go. DO NOT EDIT. -// versions: -// protoc-gen-go v1.25.0 -// protoc v3.14.0 -// source: proto/v1/build.proto - -package grafeas_go_proto - -import ( - proto "github.com/golang/protobuf/proto" - 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) -) - -// This is a compile-time assertion that a sufficiently up-to-date version -// of the legacy proto package is being used. -const _ = proto.ProtoPackageIsVersion4 - -// Note holding the version of the provider's builder and the signature of the -// provenance message in the build details occurrence. -type BuildNote struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Required. Immutable. Version of the builder which produced this build. - BuilderVersion string `protobuf:"bytes,1,opt,name=builder_version,json=builderVersion,proto3" json:"builder_version,omitempty"` -} - -func (x *BuildNote) Reset() { - *x = BuildNote{} - if protoimpl.UnsafeEnabled { - mi := &file_proto_v1_build_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *BuildNote) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*BuildNote) ProtoMessage() {} - -func (x *BuildNote) ProtoReflect() protoreflect.Message { - mi := &file_proto_v1_build_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 BuildNote.ProtoReflect.Descriptor instead. -func (*BuildNote) Descriptor() ([]byte, []int) { - return file_proto_v1_build_proto_rawDescGZIP(), []int{0} -} - -func (x *BuildNote) GetBuilderVersion() string { - if x != nil { - return x.BuilderVersion - } - return "" -} - -// Details of a build occurrence. -type BuildOccurrence struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Required. The actual provenance for the build. - Provenance *BuildProvenance `protobuf:"bytes,1,opt,name=provenance,proto3" json:"provenance,omitempty"` - // Serialized JSON representation of the provenance, used in generating the - // build signature in the corresponding build note. After verifying the - // signature, `provenance_bytes` can be unmarshalled and compared to the - // provenance to confirm that it is unchanged. A base64-encoded string - // representation of the provenance bytes is used for the signature in order - // to interoperate with openssl which expects this format for signature - // verification. - // - // The serialized form is captured both to avoid ambiguity in how the - // provenance is marshalled to json as well to prevent incompatibilities with - // future changes. - ProvenanceBytes string `protobuf:"bytes,2,opt,name=provenance_bytes,json=provenanceBytes,proto3" json:"provenance_bytes,omitempty"` -} - -func (x *BuildOccurrence) Reset() { - *x = BuildOccurrence{} - if protoimpl.UnsafeEnabled { - mi := &file_proto_v1_build_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *BuildOccurrence) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*BuildOccurrence) ProtoMessage() {} - -func (x *BuildOccurrence) ProtoReflect() protoreflect.Message { - mi := &file_proto_v1_build_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 BuildOccurrence.ProtoReflect.Descriptor instead. -func (*BuildOccurrence) Descriptor() ([]byte, []int) { - return file_proto_v1_build_proto_rawDescGZIP(), []int{1} -} - -func (x *BuildOccurrence) GetProvenance() *BuildProvenance { - if x != nil { - return x.Provenance - } - return nil -} - -func (x *BuildOccurrence) GetProvenanceBytes() string { - if x != nil { - return x.ProvenanceBytes - } - return "" -} - -var File_proto_v1_build_proto protoreflect.FileDescriptor - -var file_proto_v1_build_proto_rawDesc = []byte{ - 0x0a, 0x14, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x62, 0x75, 0x69, 0x6c, 0x64, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0a, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, - 0x76, 0x31, 0x1a, 0x19, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, - 0x76, 0x65, 0x6e, 0x61, 0x6e, 0x63, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x34, 0x0a, - 0x09, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x4e, 0x6f, 0x74, 0x65, 0x12, 0x27, 0x0a, 0x0f, 0x62, 0x75, - 0x69, 0x6c, 0x64, 0x65, 0x72, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0e, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x65, 0x72, 0x56, 0x65, 0x72, 0x73, - 0x69, 0x6f, 0x6e, 0x22, 0x79, 0x0a, 0x0f, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x4f, 0x63, 0x63, 0x75, - 0x72, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x3b, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x76, 0x65, 0x6e, - 0x61, 0x6e, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x72, 0x61, - 0x66, 0x65, 0x61, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x50, 0x72, 0x6f, - 0x76, 0x65, 0x6e, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x0a, 0x70, 0x72, 0x6f, 0x76, 0x65, 0x6e, 0x61, - 0x6e, 0x63, 0x65, 0x12, 0x29, 0x0a, 0x10, 0x70, 0x72, 0x6f, 0x76, 0x65, 0x6e, 0x61, 0x6e, 0x63, - 0x65, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x70, - 0x72, 0x6f, 0x76, 0x65, 0x6e, 0x61, 0x6e, 0x63, 0x65, 0x42, 0x79, 0x74, 0x65, 0x73, 0x42, 0x4d, - 0x0a, 0x0d, 0x69, 0x6f, 0x2e, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, 0x76, 0x31, 0x50, - 0x01, 0x5a, 0x34, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x72, - 0x61, 0x66, 0x65, 0x61, 0x73, 0x2f, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x2f, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x5f, 0x67, - 0x6f, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0xa2, 0x02, 0x03, 0x47, 0x52, 0x41, 0x62, 0x06, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x33, -} - -var ( - file_proto_v1_build_proto_rawDescOnce sync.Once - file_proto_v1_build_proto_rawDescData = file_proto_v1_build_proto_rawDesc -) - -func file_proto_v1_build_proto_rawDescGZIP() []byte { - file_proto_v1_build_proto_rawDescOnce.Do(func() { - file_proto_v1_build_proto_rawDescData = protoimpl.X.CompressGZIP(file_proto_v1_build_proto_rawDescData) - }) - return file_proto_v1_build_proto_rawDescData -} - -var file_proto_v1_build_proto_msgTypes = make([]protoimpl.MessageInfo, 2) -var file_proto_v1_build_proto_goTypes = []interface{}{ - (*BuildNote)(nil), // 0: grafeas.v1.BuildNote - (*BuildOccurrence)(nil), // 1: grafeas.v1.BuildOccurrence - (*BuildProvenance)(nil), // 2: grafeas.v1.BuildProvenance -} -var file_proto_v1_build_proto_depIdxs = []int32{ - 2, // 0: grafeas.v1.BuildOccurrence.provenance:type_name -> grafeas.v1.BuildProvenance - 1, // [1:1] is the sub-list for method output_type - 1, // [1:1] is the sub-list for method input_type - 1, // [1:1] is the sub-list for extension type_name - 1, // [1:1] is the sub-list for extension extendee - 0, // [0:1] is the sub-list for field type_name -} - -func init() { file_proto_v1_build_proto_init() } -func file_proto_v1_build_proto_init() { - if File_proto_v1_build_proto != nil { - return - } - file_proto_v1_provenance_proto_init() - if !protoimpl.UnsafeEnabled { - file_proto_v1_build_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BuildNote); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_proto_v1_build_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BuildOccurrence); 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_proto_v1_build_proto_rawDesc, - NumEnums: 0, - NumMessages: 2, - NumExtensions: 0, - NumServices: 0, - }, - GoTypes: file_proto_v1_build_proto_goTypes, - DependencyIndexes: file_proto_v1_build_proto_depIdxs, - MessageInfos: file_proto_v1_build_proto_msgTypes, - }.Build() - File_proto_v1_build_proto = out.File - file_proto_v1_build_proto_rawDesc = nil - file_proto_v1_build_proto_goTypes = nil - file_proto_v1_build_proto_depIdxs = nil -} diff --git a/proto/v1/grafeas_go_proto/common.pb.go b/proto/v1/grafeas_go_proto/common.pb.go deleted file mode 100644 index 6f8c6d8d..00000000 --- a/proto/v1/grafeas_go_proto/common.pb.go +++ /dev/null @@ -1,385 +0,0 @@ -// Copyright 2019 The Grafeas Authors. All rights reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -// Code generated by protoc-gen-go. DO NOT EDIT. -// versions: -// protoc-gen-go v1.25.0 -// protoc v3.14.0 -// source: proto/v1/common.proto - -package grafeas_go_proto - -import ( - proto "github.com/golang/protobuf/proto" - 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) -) - -// This is a compile-time assertion that a sufficiently up-to-date version -// of the legacy proto package is being used. -const _ = proto.ProtoPackageIsVersion4 - -// Kind represents the kinds of notes supported. -type NoteKind int32 - -const ( - // Default value. This value is unused. - NoteKind_NOTE_KIND_UNSPECIFIED NoteKind = 0 - // The note and occurrence represent a package vulnerability. - NoteKind_VULNERABILITY NoteKind = 1 - // The note and occurrence assert build provenance. - NoteKind_BUILD NoteKind = 2 - // This represents an image basis relationship. - NoteKind_IMAGE NoteKind = 3 - // This represents a package installed via a package manager. - NoteKind_PACKAGE NoteKind = 4 - // The note and occurrence track deployment events. - NoteKind_DEPLOYMENT NoteKind = 5 - // The note and occurrence track the initial discovery status of a resource. - NoteKind_DISCOVERY NoteKind = 6 - // This represents a logical "role" that can attest to artifacts. - NoteKind_ATTESTATION NoteKind = 7 - // This represents an available package upgrade. - NoteKind_UPGRADE NoteKind = 8 -) - -// Enum value maps for NoteKind. -var ( - NoteKind_name = map[int32]string{ - 0: "NOTE_KIND_UNSPECIFIED", - 1: "VULNERABILITY", - 2: "BUILD", - 3: "IMAGE", - 4: "PACKAGE", - 5: "DEPLOYMENT", - 6: "DISCOVERY", - 7: "ATTESTATION", - 8: "UPGRADE", - } - NoteKind_value = map[string]int32{ - "NOTE_KIND_UNSPECIFIED": 0, - "VULNERABILITY": 1, - "BUILD": 2, - "IMAGE": 3, - "PACKAGE": 4, - "DEPLOYMENT": 5, - "DISCOVERY": 6, - "ATTESTATION": 7, - "UPGRADE": 8, - } -) - -func (x NoteKind) Enum() *NoteKind { - p := new(NoteKind) - *p = x - return p -} - -func (x NoteKind) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (NoteKind) Descriptor() protoreflect.EnumDescriptor { - return file_proto_v1_common_proto_enumTypes[0].Descriptor() -} - -func (NoteKind) Type() protoreflect.EnumType { - return &file_proto_v1_common_proto_enumTypes[0] -} - -func (x NoteKind) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) -} - -// Deprecated: Use NoteKind.Descriptor instead. -func (NoteKind) EnumDescriptor() ([]byte, []int) { - return file_proto_v1_common_proto_rawDescGZIP(), []int{0} -} - -// Metadata for any related URL information. -type RelatedUrl struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Specific URL associated with the resource. - Url string `protobuf:"bytes,1,opt,name=url,proto3" json:"url,omitempty"` - // Label to describe usage of the URL. - Label string `protobuf:"bytes,2,opt,name=label,proto3" json:"label,omitempty"` -} - -func (x *RelatedUrl) Reset() { - *x = RelatedUrl{} - if protoimpl.UnsafeEnabled { - mi := &file_proto_v1_common_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *RelatedUrl) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*RelatedUrl) ProtoMessage() {} - -func (x *RelatedUrl) ProtoReflect() protoreflect.Message { - mi := &file_proto_v1_common_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 RelatedUrl.ProtoReflect.Descriptor instead. -func (*RelatedUrl) Descriptor() ([]byte, []int) { - return file_proto_v1_common_proto_rawDescGZIP(), []int{0} -} - -func (x *RelatedUrl) GetUrl() string { - if x != nil { - return x.Url - } - return "" -} - -func (x *RelatedUrl) GetLabel() string { - if x != nil { - return x.Label - } - return "" -} - -// Verifiers (e.g. Kritis implementations) MUST verify signatures -// with respect to the trust anchors defined in policy (e.g. a Kritis policy). -// Typically this means that the verifier has been configured with a map from -// `public_key_id` to public key material (and any required parameters, e.g. -// signing algorithm). -// -// In particular, verification implementations MUST NOT treat the signature -// `public_key_id` as anything more than a key lookup hint. The `public_key_id` -// DOES NOT validate or authenticate a public key; it only provides a mechanism -// for quickly selecting a public key ALREADY CONFIGURED on the verifier through -// a trusted channel. Verification implementations MUST reject signatures in any -// of the following circumstances: -// * The `public_key_id` is not recognized by the verifier. -// * The public key that `public_key_id` refers to does not verify the -// signature with respect to the payload. -// -// The `signature` contents SHOULD NOT be "attached" (where the payload is -// included with the serialized `signature` bytes). Verifiers MUST ignore any -// "attached" payload and only verify signatures with respect to explicitly -// provided payload (e.g. a `payload` field on the proto message that holds -// this Signature, or the canonical serialization of the proto message that -// holds this signature). -type Signature struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // The content of the signature, an opaque bytestring. - // The payload that this signature verifies MUST be unambiguously provided - // with the Signature during verification. A wrapper message might provide - // the payload explicitly. Alternatively, a message might have a canonical - // serialization that can always be unambiguously computed to derive the - // payload. - Signature []byte `protobuf:"bytes,1,opt,name=signature,proto3" json:"signature,omitempty"` - // The identifier for the public key that verifies this signature. - // * The `public_key_id` is required. - // * The `public_key_id` SHOULD be an RFC3986 conformant URI. - // * When possible, the `public_key_id` SHOULD be an immutable reference, - // such as a cryptographic digest. - // - // Examples of valid `public_key_id`s: - // - // OpenPGP V4 public key fingerprint: - // * "openpgp4fpr:74FAF3B861BDA0870C7B6DEF607E48D2A663AEEA" - // See https://www.iana.org/assignments/uri-schemes/prov/openpgp4fpr for more - // details on this scheme. - // - // RFC6920 digest-named SubjectPublicKeyInfo (digest of the DER - // serialization): - // * "ni:///sha-256;cD9o9Cq6LG3jD0iKXqEi_vdjJGecm_iXkbqVoScViaU" - // * "nih:///sha-256;703f68f42aba2c6de30f488a5ea122fef76324679c9bf89791ba95a1271589a5" - PublicKeyId string `protobuf:"bytes,2,opt,name=public_key_id,json=publicKeyId,proto3" json:"public_key_id,omitempty"` -} - -func (x *Signature) Reset() { - *x = Signature{} - if protoimpl.UnsafeEnabled { - mi := &file_proto_v1_common_proto_msgTypes[1] - 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_proto_v1_common_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 Signature.ProtoReflect.Descriptor instead. -func (*Signature) Descriptor() ([]byte, []int) { - return file_proto_v1_common_proto_rawDescGZIP(), []int{1} -} - -func (x *Signature) GetSignature() []byte { - if x != nil { - return x.Signature - } - return nil -} - -func (x *Signature) GetPublicKeyId() string { - if x != nil { - return x.PublicKeyId - } - return "" -} - -var File_proto_v1_common_proto protoreflect.FileDescriptor - -var file_proto_v1_common_proto_rawDesc = []byte{ - 0x0a, 0x15, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, - 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0a, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, - 0x2e, 0x76, 0x31, 0x22, 0x34, 0x0a, 0x0a, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x55, 0x72, - 0x6c, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, - 0x75, 0x72, 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x22, 0x4d, 0x0a, 0x09, 0x53, 0x69, 0x67, - 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, - 0x75, 0x72, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, - 0x74, 0x75, 0x72, 0x65, 0x12, 0x22, 0x0a, 0x0d, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x5f, 0x6b, - 0x65, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x75, 0x62, - 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x49, 0x64, 0x2a, 0x98, 0x01, 0x0a, 0x08, 0x4e, 0x6f, 0x74, - 0x65, 0x4b, 0x69, 0x6e, 0x64, 0x12, 0x19, 0x0a, 0x15, 0x4e, 0x4f, 0x54, 0x45, 0x5f, 0x4b, 0x49, - 0x4e, 0x44, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, - 0x12, 0x11, 0x0a, 0x0d, 0x56, 0x55, 0x4c, 0x4e, 0x45, 0x52, 0x41, 0x42, 0x49, 0x4c, 0x49, 0x54, - 0x59, 0x10, 0x01, 0x12, 0x09, 0x0a, 0x05, 0x42, 0x55, 0x49, 0x4c, 0x44, 0x10, 0x02, 0x12, 0x09, - 0x0a, 0x05, 0x49, 0x4d, 0x41, 0x47, 0x45, 0x10, 0x03, 0x12, 0x0b, 0x0a, 0x07, 0x50, 0x41, 0x43, - 0x4b, 0x41, 0x47, 0x45, 0x10, 0x04, 0x12, 0x0e, 0x0a, 0x0a, 0x44, 0x45, 0x50, 0x4c, 0x4f, 0x59, - 0x4d, 0x45, 0x4e, 0x54, 0x10, 0x05, 0x12, 0x0d, 0x0a, 0x09, 0x44, 0x49, 0x53, 0x43, 0x4f, 0x56, - 0x45, 0x52, 0x59, 0x10, 0x06, 0x12, 0x0f, 0x0a, 0x0b, 0x41, 0x54, 0x54, 0x45, 0x53, 0x54, 0x41, - 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x07, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x50, 0x47, 0x52, 0x41, 0x44, - 0x45, 0x10, 0x08, 0x42, 0x4d, 0x0a, 0x0d, 0x69, 0x6f, 0x2e, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, - 0x73, 0x2e, 0x76, 0x31, 0x50, 0x01, 0x5a, 0x34, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, - 0x6f, 0x6d, 0x2f, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x2f, 0x67, 0x72, 0x61, 0x66, 0x65, - 0x61, 0x73, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x72, 0x61, 0x66, - 0x65, 0x61, 0x73, 0x5f, 0x67, 0x6f, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0xa2, 0x02, 0x03, 0x47, - 0x52, 0x41, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, -} - -var ( - file_proto_v1_common_proto_rawDescOnce sync.Once - file_proto_v1_common_proto_rawDescData = file_proto_v1_common_proto_rawDesc -) - -func file_proto_v1_common_proto_rawDescGZIP() []byte { - file_proto_v1_common_proto_rawDescOnce.Do(func() { - file_proto_v1_common_proto_rawDescData = protoimpl.X.CompressGZIP(file_proto_v1_common_proto_rawDescData) - }) - return file_proto_v1_common_proto_rawDescData -} - -var file_proto_v1_common_proto_enumTypes = make([]protoimpl.EnumInfo, 1) -var file_proto_v1_common_proto_msgTypes = make([]protoimpl.MessageInfo, 2) -var file_proto_v1_common_proto_goTypes = []interface{}{ - (NoteKind)(0), // 0: grafeas.v1.NoteKind - (*RelatedUrl)(nil), // 1: grafeas.v1.RelatedUrl - (*Signature)(nil), // 2: grafeas.v1.Signature -} -var file_proto_v1_common_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_proto_v1_common_proto_init() } -func file_proto_v1_common_proto_init() { - if File_proto_v1_common_proto != nil { - return - } - if !protoimpl.UnsafeEnabled { - file_proto_v1_common_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RelatedUrl); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_proto_v1_common_proto_msgTypes[1].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 - } - } - } - type x struct{} - out := protoimpl.TypeBuilder{ - File: protoimpl.DescBuilder{ - GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_proto_v1_common_proto_rawDesc, - NumEnums: 1, - NumMessages: 2, - NumExtensions: 0, - NumServices: 0, - }, - GoTypes: file_proto_v1_common_proto_goTypes, - DependencyIndexes: file_proto_v1_common_proto_depIdxs, - EnumInfos: file_proto_v1_common_proto_enumTypes, - MessageInfos: file_proto_v1_common_proto_msgTypes, - }.Build() - File_proto_v1_common_proto = out.File - file_proto_v1_common_proto_rawDesc = nil - file_proto_v1_common_proto_goTypes = nil - file_proto_v1_common_proto_depIdxs = nil -} diff --git a/proto/v1/grafeas_go_proto/cvss.pb.go b/proto/v1/grafeas_go_proto/cvss.pb.go deleted file mode 100644 index e5f72d9d..00000000 --- a/proto/v1/grafeas_go_proto/cvss.pb.go +++ /dev/null @@ -1,659 +0,0 @@ -// Copyright 2019 The Grafeas Authors. All rights reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -// Code generated by protoc-gen-go. DO NOT EDIT. -// versions: -// protoc-gen-go v1.25.0 -// protoc v3.14.0 -// source: proto/v1/cvss.proto - -package grafeas_go_proto - -import ( - proto "github.com/golang/protobuf/proto" - 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) -) - -// This is a compile-time assertion that a sufficiently up-to-date version -// of the legacy proto package is being used. -const _ = proto.ProtoPackageIsVersion4 - -type CVSSv3_AttackVector int32 - -const ( - CVSSv3_ATTACK_VECTOR_UNSPECIFIED CVSSv3_AttackVector = 0 - CVSSv3_ATTACK_VECTOR_NETWORK CVSSv3_AttackVector = 1 - CVSSv3_ATTACK_VECTOR_ADJACENT CVSSv3_AttackVector = 2 - CVSSv3_ATTACK_VECTOR_LOCAL CVSSv3_AttackVector = 3 - CVSSv3_ATTACK_VECTOR_PHYSICAL CVSSv3_AttackVector = 4 -) - -// Enum value maps for CVSSv3_AttackVector. -var ( - CVSSv3_AttackVector_name = map[int32]string{ - 0: "ATTACK_VECTOR_UNSPECIFIED", - 1: "ATTACK_VECTOR_NETWORK", - 2: "ATTACK_VECTOR_ADJACENT", - 3: "ATTACK_VECTOR_LOCAL", - 4: "ATTACK_VECTOR_PHYSICAL", - } - CVSSv3_AttackVector_value = map[string]int32{ - "ATTACK_VECTOR_UNSPECIFIED": 0, - "ATTACK_VECTOR_NETWORK": 1, - "ATTACK_VECTOR_ADJACENT": 2, - "ATTACK_VECTOR_LOCAL": 3, - "ATTACK_VECTOR_PHYSICAL": 4, - } -) - -func (x CVSSv3_AttackVector) Enum() *CVSSv3_AttackVector { - p := new(CVSSv3_AttackVector) - *p = x - return p -} - -func (x CVSSv3_AttackVector) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (CVSSv3_AttackVector) Descriptor() protoreflect.EnumDescriptor { - return file_proto_v1_cvss_proto_enumTypes[0].Descriptor() -} - -func (CVSSv3_AttackVector) Type() protoreflect.EnumType { - return &file_proto_v1_cvss_proto_enumTypes[0] -} - -func (x CVSSv3_AttackVector) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) -} - -// Deprecated: Use CVSSv3_AttackVector.Descriptor instead. -func (CVSSv3_AttackVector) EnumDescriptor() ([]byte, []int) { - return file_proto_v1_cvss_proto_rawDescGZIP(), []int{0, 0} -} - -type CVSSv3_AttackComplexity int32 - -const ( - CVSSv3_ATTACK_COMPLEXITY_UNSPECIFIED CVSSv3_AttackComplexity = 0 - CVSSv3_ATTACK_COMPLEXITY_LOW CVSSv3_AttackComplexity = 1 - CVSSv3_ATTACK_COMPLEXITY_HIGH CVSSv3_AttackComplexity = 2 -) - -// Enum value maps for CVSSv3_AttackComplexity. -var ( - CVSSv3_AttackComplexity_name = map[int32]string{ - 0: "ATTACK_COMPLEXITY_UNSPECIFIED", - 1: "ATTACK_COMPLEXITY_LOW", - 2: "ATTACK_COMPLEXITY_HIGH", - } - CVSSv3_AttackComplexity_value = map[string]int32{ - "ATTACK_COMPLEXITY_UNSPECIFIED": 0, - "ATTACK_COMPLEXITY_LOW": 1, - "ATTACK_COMPLEXITY_HIGH": 2, - } -) - -func (x CVSSv3_AttackComplexity) Enum() *CVSSv3_AttackComplexity { - p := new(CVSSv3_AttackComplexity) - *p = x - return p -} - -func (x CVSSv3_AttackComplexity) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (CVSSv3_AttackComplexity) Descriptor() protoreflect.EnumDescriptor { - return file_proto_v1_cvss_proto_enumTypes[1].Descriptor() -} - -func (CVSSv3_AttackComplexity) Type() protoreflect.EnumType { - return &file_proto_v1_cvss_proto_enumTypes[1] -} - -func (x CVSSv3_AttackComplexity) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) -} - -// Deprecated: Use CVSSv3_AttackComplexity.Descriptor instead. -func (CVSSv3_AttackComplexity) EnumDescriptor() ([]byte, []int) { - return file_proto_v1_cvss_proto_rawDescGZIP(), []int{0, 1} -} - -type CVSSv3_PrivilegesRequired int32 - -const ( - CVSSv3_PRIVILEGES_REQUIRED_UNSPECIFIED CVSSv3_PrivilegesRequired = 0 - CVSSv3_PRIVILEGES_REQUIRED_NONE CVSSv3_PrivilegesRequired = 1 - CVSSv3_PRIVILEGES_REQUIRED_LOW CVSSv3_PrivilegesRequired = 2 - CVSSv3_PRIVILEGES_REQUIRED_HIGH CVSSv3_PrivilegesRequired = 3 -) - -// Enum value maps for CVSSv3_PrivilegesRequired. -var ( - CVSSv3_PrivilegesRequired_name = map[int32]string{ - 0: "PRIVILEGES_REQUIRED_UNSPECIFIED", - 1: "PRIVILEGES_REQUIRED_NONE", - 2: "PRIVILEGES_REQUIRED_LOW", - 3: "PRIVILEGES_REQUIRED_HIGH", - } - CVSSv3_PrivilegesRequired_value = map[string]int32{ - "PRIVILEGES_REQUIRED_UNSPECIFIED": 0, - "PRIVILEGES_REQUIRED_NONE": 1, - "PRIVILEGES_REQUIRED_LOW": 2, - "PRIVILEGES_REQUIRED_HIGH": 3, - } -) - -func (x CVSSv3_PrivilegesRequired) Enum() *CVSSv3_PrivilegesRequired { - p := new(CVSSv3_PrivilegesRequired) - *p = x - return p -} - -func (x CVSSv3_PrivilegesRequired) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (CVSSv3_PrivilegesRequired) Descriptor() protoreflect.EnumDescriptor { - return file_proto_v1_cvss_proto_enumTypes[2].Descriptor() -} - -func (CVSSv3_PrivilegesRequired) Type() protoreflect.EnumType { - return &file_proto_v1_cvss_proto_enumTypes[2] -} - -func (x CVSSv3_PrivilegesRequired) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) -} - -// Deprecated: Use CVSSv3_PrivilegesRequired.Descriptor instead. -func (CVSSv3_PrivilegesRequired) EnumDescriptor() ([]byte, []int) { - return file_proto_v1_cvss_proto_rawDescGZIP(), []int{0, 2} -} - -type CVSSv3_UserInteraction int32 - -const ( - CVSSv3_USER_INTERACTION_UNSPECIFIED CVSSv3_UserInteraction = 0 - CVSSv3_USER_INTERACTION_NONE CVSSv3_UserInteraction = 1 - CVSSv3_USER_INTERACTION_REQUIRED CVSSv3_UserInteraction = 2 -) - -// Enum value maps for CVSSv3_UserInteraction. -var ( - CVSSv3_UserInteraction_name = map[int32]string{ - 0: "USER_INTERACTION_UNSPECIFIED", - 1: "USER_INTERACTION_NONE", - 2: "USER_INTERACTION_REQUIRED", - } - CVSSv3_UserInteraction_value = map[string]int32{ - "USER_INTERACTION_UNSPECIFIED": 0, - "USER_INTERACTION_NONE": 1, - "USER_INTERACTION_REQUIRED": 2, - } -) - -func (x CVSSv3_UserInteraction) Enum() *CVSSv3_UserInteraction { - p := new(CVSSv3_UserInteraction) - *p = x - return p -} - -func (x CVSSv3_UserInteraction) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (CVSSv3_UserInteraction) Descriptor() protoreflect.EnumDescriptor { - return file_proto_v1_cvss_proto_enumTypes[3].Descriptor() -} - -func (CVSSv3_UserInteraction) Type() protoreflect.EnumType { - return &file_proto_v1_cvss_proto_enumTypes[3] -} - -func (x CVSSv3_UserInteraction) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) -} - -// Deprecated: Use CVSSv3_UserInteraction.Descriptor instead. -func (CVSSv3_UserInteraction) EnumDescriptor() ([]byte, []int) { - return file_proto_v1_cvss_proto_rawDescGZIP(), []int{0, 3} -} - -type CVSSv3_Scope int32 - -const ( - CVSSv3_SCOPE_UNSPECIFIED CVSSv3_Scope = 0 - CVSSv3_SCOPE_UNCHANGED CVSSv3_Scope = 1 - CVSSv3_SCOPE_CHANGED CVSSv3_Scope = 2 -) - -// Enum value maps for CVSSv3_Scope. -var ( - CVSSv3_Scope_name = map[int32]string{ - 0: "SCOPE_UNSPECIFIED", - 1: "SCOPE_UNCHANGED", - 2: "SCOPE_CHANGED", - } - CVSSv3_Scope_value = map[string]int32{ - "SCOPE_UNSPECIFIED": 0, - "SCOPE_UNCHANGED": 1, - "SCOPE_CHANGED": 2, - } -) - -func (x CVSSv3_Scope) Enum() *CVSSv3_Scope { - p := new(CVSSv3_Scope) - *p = x - return p -} - -func (x CVSSv3_Scope) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (CVSSv3_Scope) Descriptor() protoreflect.EnumDescriptor { - return file_proto_v1_cvss_proto_enumTypes[4].Descriptor() -} - -func (CVSSv3_Scope) Type() protoreflect.EnumType { - return &file_proto_v1_cvss_proto_enumTypes[4] -} - -func (x CVSSv3_Scope) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) -} - -// Deprecated: Use CVSSv3_Scope.Descriptor instead. -func (CVSSv3_Scope) EnumDescriptor() ([]byte, []int) { - return file_proto_v1_cvss_proto_rawDescGZIP(), []int{0, 4} -} - -type CVSSv3_Impact int32 - -const ( - CVSSv3_IMPACT_UNSPECIFIED CVSSv3_Impact = 0 - CVSSv3_IMPACT_HIGH CVSSv3_Impact = 1 - CVSSv3_IMPACT_LOW CVSSv3_Impact = 2 - CVSSv3_IMPACT_NONE CVSSv3_Impact = 3 -) - -// Enum value maps for CVSSv3_Impact. -var ( - CVSSv3_Impact_name = map[int32]string{ - 0: "IMPACT_UNSPECIFIED", - 1: "IMPACT_HIGH", - 2: "IMPACT_LOW", - 3: "IMPACT_NONE", - } - CVSSv3_Impact_value = map[string]int32{ - "IMPACT_UNSPECIFIED": 0, - "IMPACT_HIGH": 1, - "IMPACT_LOW": 2, - "IMPACT_NONE": 3, - } -) - -func (x CVSSv3_Impact) Enum() *CVSSv3_Impact { - p := new(CVSSv3_Impact) - *p = x - return p -} - -func (x CVSSv3_Impact) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (CVSSv3_Impact) Descriptor() protoreflect.EnumDescriptor { - return file_proto_v1_cvss_proto_enumTypes[5].Descriptor() -} - -func (CVSSv3_Impact) Type() protoreflect.EnumType { - return &file_proto_v1_cvss_proto_enumTypes[5] -} - -func (x CVSSv3_Impact) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) -} - -// Deprecated: Use CVSSv3_Impact.Descriptor instead. -func (CVSSv3_Impact) EnumDescriptor() ([]byte, []int) { - return file_proto_v1_cvss_proto_rawDescGZIP(), []int{0, 5} -} - -// Common Vulnerability Scoring System version 3. -// For details, see https://www.first.org/cvss/specification-document -type CVSSv3 struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // The base score is a function of the base metric scores. - BaseScore float32 `protobuf:"fixed32,1,opt,name=base_score,json=baseScore,proto3" json:"base_score,omitempty"` - ExploitabilityScore float32 `protobuf:"fixed32,2,opt,name=exploitability_score,json=exploitabilityScore,proto3" json:"exploitability_score,omitempty"` - ImpactScore float32 `protobuf:"fixed32,3,opt,name=impact_score,json=impactScore,proto3" json:"impact_score,omitempty"` - // Base Metrics - // Represents the intrinsic characteristics of a vulnerability that are - // constant over time and across user environments. - AttackVector CVSSv3_AttackVector `protobuf:"varint,5,opt,name=attack_vector,json=attackVector,proto3,enum=grafeas.v1.CVSSv3_AttackVector" json:"attack_vector,omitempty"` - AttackComplexity CVSSv3_AttackComplexity `protobuf:"varint,6,opt,name=attack_complexity,json=attackComplexity,proto3,enum=grafeas.v1.CVSSv3_AttackComplexity" json:"attack_complexity,omitempty"` - PrivilegesRequired CVSSv3_PrivilegesRequired `protobuf:"varint,7,opt,name=privileges_required,json=privilegesRequired,proto3,enum=grafeas.v1.CVSSv3_PrivilegesRequired" json:"privileges_required,omitempty"` - UserInteraction CVSSv3_UserInteraction `protobuf:"varint,8,opt,name=user_interaction,json=userInteraction,proto3,enum=grafeas.v1.CVSSv3_UserInteraction" json:"user_interaction,omitempty"` - Scope CVSSv3_Scope `protobuf:"varint,9,opt,name=scope,proto3,enum=grafeas.v1.CVSSv3_Scope" json:"scope,omitempty"` - ConfidentialityImpact CVSSv3_Impact `protobuf:"varint,10,opt,name=confidentiality_impact,json=confidentialityImpact,proto3,enum=grafeas.v1.CVSSv3_Impact" json:"confidentiality_impact,omitempty"` - IntegrityImpact CVSSv3_Impact `protobuf:"varint,11,opt,name=integrity_impact,json=integrityImpact,proto3,enum=grafeas.v1.CVSSv3_Impact" json:"integrity_impact,omitempty"` - AvailabilityImpact CVSSv3_Impact `protobuf:"varint,12,opt,name=availability_impact,json=availabilityImpact,proto3,enum=grafeas.v1.CVSSv3_Impact" json:"availability_impact,omitempty"` -} - -func (x *CVSSv3) Reset() { - *x = CVSSv3{} - if protoimpl.UnsafeEnabled { - mi := &file_proto_v1_cvss_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *CVSSv3) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*CVSSv3) ProtoMessage() {} - -func (x *CVSSv3) ProtoReflect() protoreflect.Message { - mi := &file_proto_v1_cvss_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 CVSSv3.ProtoReflect.Descriptor instead. -func (*CVSSv3) Descriptor() ([]byte, []int) { - return file_proto_v1_cvss_proto_rawDescGZIP(), []int{0} -} - -func (x *CVSSv3) GetBaseScore() float32 { - if x != nil { - return x.BaseScore - } - return 0 -} - -func (x *CVSSv3) GetExploitabilityScore() float32 { - if x != nil { - return x.ExploitabilityScore - } - return 0 -} - -func (x *CVSSv3) GetImpactScore() float32 { - if x != nil { - return x.ImpactScore - } - return 0 -} - -func (x *CVSSv3) GetAttackVector() CVSSv3_AttackVector { - if x != nil { - return x.AttackVector - } - return CVSSv3_ATTACK_VECTOR_UNSPECIFIED -} - -func (x *CVSSv3) GetAttackComplexity() CVSSv3_AttackComplexity { - if x != nil { - return x.AttackComplexity - } - return CVSSv3_ATTACK_COMPLEXITY_UNSPECIFIED -} - -func (x *CVSSv3) GetPrivilegesRequired() CVSSv3_PrivilegesRequired { - if x != nil { - return x.PrivilegesRequired - } - return CVSSv3_PRIVILEGES_REQUIRED_UNSPECIFIED -} - -func (x *CVSSv3) GetUserInteraction() CVSSv3_UserInteraction { - if x != nil { - return x.UserInteraction - } - return CVSSv3_USER_INTERACTION_UNSPECIFIED -} - -func (x *CVSSv3) GetScope() CVSSv3_Scope { - if x != nil { - return x.Scope - } - return CVSSv3_SCOPE_UNSPECIFIED -} - -func (x *CVSSv3) GetConfidentialityImpact() CVSSv3_Impact { - if x != nil { - return x.ConfidentialityImpact - } - return CVSSv3_IMPACT_UNSPECIFIED -} - -func (x *CVSSv3) GetIntegrityImpact() CVSSv3_Impact { - if x != nil { - return x.IntegrityImpact - } - return CVSSv3_IMPACT_UNSPECIFIED -} - -func (x *CVSSv3) GetAvailabilityImpact() CVSSv3_Impact { - if x != nil { - return x.AvailabilityImpact - } - return CVSSv3_IMPACT_UNSPECIFIED -} - -var File_proto_v1_cvss_proto protoreflect.FileDescriptor - -var file_proto_v1_cvss_proto_rawDesc = []byte{ - 0x0a, 0x13, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x76, 0x73, 0x73, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0a, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, 0x76, - 0x31, 0x22, 0xfa, 0x0a, 0x0a, 0x06, 0x43, 0x56, 0x53, 0x53, 0x76, 0x33, 0x12, 0x1d, 0x0a, 0x0a, - 0x62, 0x61, 0x73, 0x65, 0x5f, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x02, - 0x52, 0x09, 0x62, 0x61, 0x73, 0x65, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x31, 0x0a, 0x14, 0x65, - 0x78, 0x70, 0x6c, 0x6f, 0x69, 0x74, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x5f, 0x73, 0x63, - 0x6f, 0x72, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x02, 0x52, 0x13, 0x65, 0x78, 0x70, 0x6c, 0x6f, - 0x69, 0x74, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x21, - 0x0a, 0x0c, 0x69, 0x6d, 0x70, 0x61, 0x63, 0x74, 0x5f, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x02, 0x52, 0x0b, 0x69, 0x6d, 0x70, 0x61, 0x63, 0x74, 0x53, 0x63, 0x6f, 0x72, - 0x65, 0x12, 0x44, 0x0a, 0x0d, 0x61, 0x74, 0x74, 0x61, 0x63, 0x6b, 0x5f, 0x76, 0x65, 0x63, 0x74, - 0x6f, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1f, 0x2e, 0x67, 0x72, 0x61, 0x66, 0x65, - 0x61, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x56, 0x53, 0x53, 0x76, 0x33, 0x2e, 0x41, 0x74, 0x74, - 0x61, 0x63, 0x6b, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x52, 0x0c, 0x61, 0x74, 0x74, 0x61, 0x63, - 0x6b, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x12, 0x50, 0x0a, 0x11, 0x61, 0x74, 0x74, 0x61, 0x63, - 0x6b, 0x5f, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x78, 0x69, 0x74, 0x79, 0x18, 0x06, 0x20, 0x01, - 0x28, 0x0e, 0x32, 0x23, 0x2e, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, 0x76, 0x31, 0x2e, - 0x43, 0x56, 0x53, 0x53, 0x76, 0x33, 0x2e, 0x41, 0x74, 0x74, 0x61, 0x63, 0x6b, 0x43, 0x6f, 0x6d, - 0x70, 0x6c, 0x65, 0x78, 0x69, 0x74, 0x79, 0x52, 0x10, 0x61, 0x74, 0x74, 0x61, 0x63, 0x6b, 0x43, - 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x78, 0x69, 0x74, 0x79, 0x12, 0x56, 0x0a, 0x13, 0x70, 0x72, 0x69, - 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x73, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, - 0x18, 0x07, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x25, 0x2e, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, - 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x56, 0x53, 0x53, 0x76, 0x33, 0x2e, 0x50, 0x72, 0x69, 0x76, 0x69, - 0x6c, 0x65, 0x67, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x52, 0x12, 0x70, - 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, - 0x64, 0x12, 0x4d, 0x0a, 0x10, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x61, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x22, 0x2e, 0x67, 0x72, - 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x56, 0x53, 0x53, 0x76, 0x33, 0x2e, - 0x55, 0x73, 0x65, 0x72, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, - 0x0f, 0x75, 0x73, 0x65, 0x72, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x12, 0x2e, 0x0a, 0x05, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0e, 0x32, - 0x18, 0x2e, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x56, 0x53, - 0x53, 0x76, 0x33, 0x2e, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x52, 0x05, 0x73, 0x63, 0x6f, 0x70, 0x65, - 0x12, 0x50, 0x0a, 0x16, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, - 0x69, 0x74, 0x79, 0x5f, 0x69, 0x6d, 0x70, 0x61, 0x63, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0e, - 0x32, 0x19, 0x2e, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x56, - 0x53, 0x53, 0x76, 0x33, 0x2e, 0x49, 0x6d, 0x70, 0x61, 0x63, 0x74, 0x52, 0x15, 0x63, 0x6f, 0x6e, - 0x66, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x49, 0x6d, 0x70, 0x61, - 0x63, 0x74, 0x12, 0x44, 0x0a, 0x10, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x69, 0x74, 0x79, 0x5f, - 0x69, 0x6d, 0x70, 0x61, 0x63, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x19, 0x2e, 0x67, - 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x56, 0x53, 0x53, 0x76, 0x33, - 0x2e, 0x49, 0x6d, 0x70, 0x61, 0x63, 0x74, 0x52, 0x0f, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x69, - 0x74, 0x79, 0x49, 0x6d, 0x70, 0x61, 0x63, 0x74, 0x12, 0x4a, 0x0a, 0x13, 0x61, 0x76, 0x61, 0x69, - 0x6c, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x5f, 0x69, 0x6d, 0x70, 0x61, 0x63, 0x74, 0x18, - 0x0c, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x19, 0x2e, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, - 0x76, 0x31, 0x2e, 0x43, 0x56, 0x53, 0x53, 0x76, 0x33, 0x2e, 0x49, 0x6d, 0x70, 0x61, 0x63, 0x74, - 0x52, 0x12, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x49, 0x6d, - 0x70, 0x61, 0x63, 0x74, 0x22, 0x99, 0x01, 0x0a, 0x0c, 0x41, 0x74, 0x74, 0x61, 0x63, 0x6b, 0x56, - 0x65, 0x63, 0x74, 0x6f, 0x72, 0x12, 0x1d, 0x0a, 0x19, 0x41, 0x54, 0x54, 0x41, 0x43, 0x4b, 0x5f, - 0x56, 0x45, 0x43, 0x54, 0x4f, 0x52, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, - 0x45, 0x44, 0x10, 0x00, 0x12, 0x19, 0x0a, 0x15, 0x41, 0x54, 0x54, 0x41, 0x43, 0x4b, 0x5f, 0x56, - 0x45, 0x43, 0x54, 0x4f, 0x52, 0x5f, 0x4e, 0x45, 0x54, 0x57, 0x4f, 0x52, 0x4b, 0x10, 0x01, 0x12, - 0x1a, 0x0a, 0x16, 0x41, 0x54, 0x54, 0x41, 0x43, 0x4b, 0x5f, 0x56, 0x45, 0x43, 0x54, 0x4f, 0x52, - 0x5f, 0x41, 0x44, 0x4a, 0x41, 0x43, 0x45, 0x4e, 0x54, 0x10, 0x02, 0x12, 0x17, 0x0a, 0x13, 0x41, - 0x54, 0x54, 0x41, 0x43, 0x4b, 0x5f, 0x56, 0x45, 0x43, 0x54, 0x4f, 0x52, 0x5f, 0x4c, 0x4f, 0x43, - 0x41, 0x4c, 0x10, 0x03, 0x12, 0x1a, 0x0a, 0x16, 0x41, 0x54, 0x54, 0x41, 0x43, 0x4b, 0x5f, 0x56, - 0x45, 0x43, 0x54, 0x4f, 0x52, 0x5f, 0x50, 0x48, 0x59, 0x53, 0x49, 0x43, 0x41, 0x4c, 0x10, 0x04, - 0x22, 0x6c, 0x0a, 0x10, 0x41, 0x74, 0x74, 0x61, 0x63, 0x6b, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, - 0x78, 0x69, 0x74, 0x79, 0x12, 0x21, 0x0a, 0x1d, 0x41, 0x54, 0x54, 0x41, 0x43, 0x4b, 0x5f, 0x43, - 0x4f, 0x4d, 0x50, 0x4c, 0x45, 0x58, 0x49, 0x54, 0x59, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, - 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x19, 0x0a, 0x15, 0x41, 0x54, 0x54, 0x41, 0x43, - 0x4b, 0x5f, 0x43, 0x4f, 0x4d, 0x50, 0x4c, 0x45, 0x58, 0x49, 0x54, 0x59, 0x5f, 0x4c, 0x4f, 0x57, - 0x10, 0x01, 0x12, 0x1a, 0x0a, 0x16, 0x41, 0x54, 0x54, 0x41, 0x43, 0x4b, 0x5f, 0x43, 0x4f, 0x4d, - 0x50, 0x4c, 0x45, 0x58, 0x49, 0x54, 0x59, 0x5f, 0x48, 0x49, 0x47, 0x48, 0x10, 0x02, 0x22, 0x92, - 0x01, 0x0a, 0x12, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x73, 0x52, 0x65, 0x71, - 0x75, 0x69, 0x72, 0x65, 0x64, 0x12, 0x23, 0x0a, 0x1f, 0x50, 0x52, 0x49, 0x56, 0x49, 0x4c, 0x45, - 0x47, 0x45, 0x53, 0x5f, 0x52, 0x45, 0x51, 0x55, 0x49, 0x52, 0x45, 0x44, 0x5f, 0x55, 0x4e, 0x53, - 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1c, 0x0a, 0x18, 0x50, 0x52, - 0x49, 0x56, 0x49, 0x4c, 0x45, 0x47, 0x45, 0x53, 0x5f, 0x52, 0x45, 0x51, 0x55, 0x49, 0x52, 0x45, - 0x44, 0x5f, 0x4e, 0x4f, 0x4e, 0x45, 0x10, 0x01, 0x12, 0x1b, 0x0a, 0x17, 0x50, 0x52, 0x49, 0x56, - 0x49, 0x4c, 0x45, 0x47, 0x45, 0x53, 0x5f, 0x52, 0x45, 0x51, 0x55, 0x49, 0x52, 0x45, 0x44, 0x5f, - 0x4c, 0x4f, 0x57, 0x10, 0x02, 0x12, 0x1c, 0x0a, 0x18, 0x50, 0x52, 0x49, 0x56, 0x49, 0x4c, 0x45, - 0x47, 0x45, 0x53, 0x5f, 0x52, 0x45, 0x51, 0x55, 0x49, 0x52, 0x45, 0x44, 0x5f, 0x48, 0x49, 0x47, - 0x48, 0x10, 0x03, 0x22, 0x6d, 0x0a, 0x0f, 0x55, 0x73, 0x65, 0x72, 0x49, 0x6e, 0x74, 0x65, 0x72, - 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x20, 0x0a, 0x1c, 0x55, 0x53, 0x45, 0x52, 0x5f, 0x49, - 0x4e, 0x54, 0x45, 0x52, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, - 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x19, 0x0a, 0x15, 0x55, 0x53, 0x45, 0x52, - 0x5f, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x4e, 0x4f, 0x4e, - 0x45, 0x10, 0x01, 0x12, 0x1d, 0x0a, 0x19, 0x55, 0x53, 0x45, 0x52, 0x5f, 0x49, 0x4e, 0x54, 0x45, - 0x52, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x52, 0x45, 0x51, 0x55, 0x49, 0x52, 0x45, 0x44, - 0x10, 0x02, 0x22, 0x46, 0x0a, 0x05, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x12, 0x15, 0x0a, 0x11, 0x53, - 0x43, 0x4f, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, - 0x10, 0x00, 0x12, 0x13, 0x0a, 0x0f, 0x53, 0x43, 0x4f, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x43, 0x48, - 0x41, 0x4e, 0x47, 0x45, 0x44, 0x10, 0x01, 0x12, 0x11, 0x0a, 0x0d, 0x53, 0x43, 0x4f, 0x50, 0x45, - 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x44, 0x10, 0x02, 0x22, 0x52, 0x0a, 0x06, 0x49, 0x6d, - 0x70, 0x61, 0x63, 0x74, 0x12, 0x16, 0x0a, 0x12, 0x49, 0x4d, 0x50, 0x41, 0x43, 0x54, 0x5f, 0x55, - 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0f, 0x0a, 0x0b, - 0x49, 0x4d, 0x50, 0x41, 0x43, 0x54, 0x5f, 0x48, 0x49, 0x47, 0x48, 0x10, 0x01, 0x12, 0x0e, 0x0a, - 0x0a, 0x49, 0x4d, 0x50, 0x41, 0x43, 0x54, 0x5f, 0x4c, 0x4f, 0x57, 0x10, 0x02, 0x12, 0x0f, 0x0a, - 0x0b, 0x49, 0x4d, 0x50, 0x41, 0x43, 0x54, 0x5f, 0x4e, 0x4f, 0x4e, 0x45, 0x10, 0x03, 0x42, 0x4d, - 0x0a, 0x0d, 0x69, 0x6f, 0x2e, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, 0x76, 0x31, 0x50, - 0x01, 0x5a, 0x34, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x72, - 0x61, 0x66, 0x65, 0x61, 0x73, 0x2f, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x2f, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x5f, 0x67, - 0x6f, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0xa2, 0x02, 0x03, 0x47, 0x52, 0x41, 0x62, 0x06, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x33, -} - -var ( - file_proto_v1_cvss_proto_rawDescOnce sync.Once - file_proto_v1_cvss_proto_rawDescData = file_proto_v1_cvss_proto_rawDesc -) - -func file_proto_v1_cvss_proto_rawDescGZIP() []byte { - file_proto_v1_cvss_proto_rawDescOnce.Do(func() { - file_proto_v1_cvss_proto_rawDescData = protoimpl.X.CompressGZIP(file_proto_v1_cvss_proto_rawDescData) - }) - return file_proto_v1_cvss_proto_rawDescData -} - -var file_proto_v1_cvss_proto_enumTypes = make([]protoimpl.EnumInfo, 6) -var file_proto_v1_cvss_proto_msgTypes = make([]protoimpl.MessageInfo, 1) -var file_proto_v1_cvss_proto_goTypes = []interface{}{ - (CVSSv3_AttackVector)(0), // 0: grafeas.v1.CVSSv3.AttackVector - (CVSSv3_AttackComplexity)(0), // 1: grafeas.v1.CVSSv3.AttackComplexity - (CVSSv3_PrivilegesRequired)(0), // 2: grafeas.v1.CVSSv3.PrivilegesRequired - (CVSSv3_UserInteraction)(0), // 3: grafeas.v1.CVSSv3.UserInteraction - (CVSSv3_Scope)(0), // 4: grafeas.v1.CVSSv3.Scope - (CVSSv3_Impact)(0), // 5: grafeas.v1.CVSSv3.Impact - (*CVSSv3)(nil), // 6: grafeas.v1.CVSSv3 -} -var file_proto_v1_cvss_proto_depIdxs = []int32{ - 0, // 0: grafeas.v1.CVSSv3.attack_vector:type_name -> grafeas.v1.CVSSv3.AttackVector - 1, // 1: grafeas.v1.CVSSv3.attack_complexity:type_name -> grafeas.v1.CVSSv3.AttackComplexity - 2, // 2: grafeas.v1.CVSSv3.privileges_required:type_name -> grafeas.v1.CVSSv3.PrivilegesRequired - 3, // 3: grafeas.v1.CVSSv3.user_interaction:type_name -> grafeas.v1.CVSSv3.UserInteraction - 4, // 4: grafeas.v1.CVSSv3.scope:type_name -> grafeas.v1.CVSSv3.Scope - 5, // 5: grafeas.v1.CVSSv3.confidentiality_impact:type_name -> grafeas.v1.CVSSv3.Impact - 5, // 6: grafeas.v1.CVSSv3.integrity_impact:type_name -> grafeas.v1.CVSSv3.Impact - 5, // 7: grafeas.v1.CVSSv3.availability_impact:type_name -> grafeas.v1.CVSSv3.Impact - 8, // [8:8] is the sub-list for method output_type - 8, // [8:8] is the sub-list for method input_type - 8, // [8:8] is the sub-list for extension type_name - 8, // [8:8] is the sub-list for extension extendee - 0, // [0:8] is the sub-list for field type_name -} - -func init() { file_proto_v1_cvss_proto_init() } -func file_proto_v1_cvss_proto_init() { - if File_proto_v1_cvss_proto != nil { - return - } - if !protoimpl.UnsafeEnabled { - file_proto_v1_cvss_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CVSSv3); 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_proto_v1_cvss_proto_rawDesc, - NumEnums: 6, - NumMessages: 1, - NumExtensions: 0, - NumServices: 0, - }, - GoTypes: file_proto_v1_cvss_proto_goTypes, - DependencyIndexes: file_proto_v1_cvss_proto_depIdxs, - EnumInfos: file_proto_v1_cvss_proto_enumTypes, - MessageInfos: file_proto_v1_cvss_proto_msgTypes, - }.Build() - File_proto_v1_cvss_proto = out.File - file_proto_v1_cvss_proto_rawDesc = nil - file_proto_v1_cvss_proto_goTypes = nil - file_proto_v1_cvss_proto_depIdxs = nil -} diff --git a/proto/v1/grafeas_go_proto/deployment.pb.go b/proto/v1/grafeas_go_proto/deployment.pb.go deleted file mode 100644 index b727b10f..00000000 --- a/proto/v1/grafeas_go_proto/deployment.pb.go +++ /dev/null @@ -1,378 +0,0 @@ -// Copyright 2019 The Grafeas Authors. All rights reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -// Code generated by protoc-gen-go. DO NOT EDIT. -// versions: -// protoc-gen-go v1.25.0 -// protoc v3.14.0 -// source: proto/v1/deployment.proto - -package grafeas_go_proto - -import ( - proto "github.com/golang/protobuf/proto" - 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) -) - -// This is a compile-time assertion that a sufficiently up-to-date version -// of the legacy proto package is being used. -const _ = proto.ProtoPackageIsVersion4 - -// Types of platforms. -type DeploymentOccurrence_Platform int32 - -const ( - // Unknown. - DeploymentOccurrence_PLATFORM_UNSPECIFIED DeploymentOccurrence_Platform = 0 - // Google Container Engine. - DeploymentOccurrence_GKE DeploymentOccurrence_Platform = 1 - // Google App Engine: Flexible Environment. - DeploymentOccurrence_FLEX DeploymentOccurrence_Platform = 2 - // Custom user-defined platform. - DeploymentOccurrence_CUSTOM DeploymentOccurrence_Platform = 3 -) - -// Enum value maps for DeploymentOccurrence_Platform. -var ( - DeploymentOccurrence_Platform_name = map[int32]string{ - 0: "PLATFORM_UNSPECIFIED", - 1: "GKE", - 2: "FLEX", - 3: "CUSTOM", - } - DeploymentOccurrence_Platform_value = map[string]int32{ - "PLATFORM_UNSPECIFIED": 0, - "GKE": 1, - "FLEX": 2, - "CUSTOM": 3, - } -) - -func (x DeploymentOccurrence_Platform) Enum() *DeploymentOccurrence_Platform { - p := new(DeploymentOccurrence_Platform) - *p = x - return p -} - -func (x DeploymentOccurrence_Platform) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (DeploymentOccurrence_Platform) Descriptor() protoreflect.EnumDescriptor { - return file_proto_v1_deployment_proto_enumTypes[0].Descriptor() -} - -func (DeploymentOccurrence_Platform) Type() protoreflect.EnumType { - return &file_proto_v1_deployment_proto_enumTypes[0] -} - -func (x DeploymentOccurrence_Platform) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) -} - -// Deprecated: Use DeploymentOccurrence_Platform.Descriptor instead. -func (DeploymentOccurrence_Platform) EnumDescriptor() ([]byte, []int) { - return file_proto_v1_deployment_proto_rawDescGZIP(), []int{1, 0} -} - -// An artifact that can be deployed in some runtime. -type DeploymentNote struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Required. Resource URI for the artifact being deployed. - ResourceUri []string `protobuf:"bytes,1,rep,name=resource_uri,json=resourceUri,proto3" json:"resource_uri,omitempty"` -} - -func (x *DeploymentNote) Reset() { - *x = DeploymentNote{} - if protoimpl.UnsafeEnabled { - mi := &file_proto_v1_deployment_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *DeploymentNote) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*DeploymentNote) ProtoMessage() {} - -func (x *DeploymentNote) ProtoReflect() protoreflect.Message { - mi := &file_proto_v1_deployment_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 DeploymentNote.ProtoReflect.Descriptor instead. -func (*DeploymentNote) Descriptor() ([]byte, []int) { - return file_proto_v1_deployment_proto_rawDescGZIP(), []int{0} -} - -func (x *DeploymentNote) GetResourceUri() []string { - if x != nil { - return x.ResourceUri - } - return nil -} - -// The period during which some deployable was active in a runtime. -type DeploymentOccurrence struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Identity of the user that triggered this deployment. - UserEmail string `protobuf:"bytes,1,opt,name=user_email,json=userEmail,proto3" json:"user_email,omitempty"` - // Required. Beginning of the lifetime of this deployment. - DeployTime *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=deploy_time,json=deployTime,proto3" json:"deploy_time,omitempty"` - // End of the lifetime of this deployment. - UndeployTime *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=undeploy_time,json=undeployTime,proto3" json:"undeploy_time,omitempty"` - // Configuration used to create this deployment. - Config string `protobuf:"bytes,4,opt,name=config,proto3" json:"config,omitempty"` - // Address of the runtime element hosting this deployment. - Address string `protobuf:"bytes,5,opt,name=address,proto3" json:"address,omitempty"` - // Output only. Resource URI for the artifact being deployed taken from - // the deployable field with the same name. - ResourceUri []string `protobuf:"bytes,6,rep,name=resource_uri,json=resourceUri,proto3" json:"resource_uri,omitempty"` - // Platform hosting this deployment. - Platform DeploymentOccurrence_Platform `protobuf:"varint,7,opt,name=platform,proto3,enum=grafeas.v1.DeploymentOccurrence_Platform" json:"platform,omitempty"` -} - -func (x *DeploymentOccurrence) Reset() { - *x = DeploymentOccurrence{} - if protoimpl.UnsafeEnabled { - mi := &file_proto_v1_deployment_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *DeploymentOccurrence) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*DeploymentOccurrence) ProtoMessage() {} - -func (x *DeploymentOccurrence) ProtoReflect() protoreflect.Message { - mi := &file_proto_v1_deployment_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 DeploymentOccurrence.ProtoReflect.Descriptor instead. -func (*DeploymentOccurrence) Descriptor() ([]byte, []int) { - return file_proto_v1_deployment_proto_rawDescGZIP(), []int{1} -} - -func (x *DeploymentOccurrence) GetUserEmail() string { - if x != nil { - return x.UserEmail - } - return "" -} - -func (x *DeploymentOccurrence) GetDeployTime() *timestamppb.Timestamp { - if x != nil { - return x.DeployTime - } - return nil -} - -func (x *DeploymentOccurrence) GetUndeployTime() *timestamppb.Timestamp { - if x != nil { - return x.UndeployTime - } - return nil -} - -func (x *DeploymentOccurrence) GetConfig() string { - if x != nil { - return x.Config - } - return "" -} - -func (x *DeploymentOccurrence) GetAddress() string { - if x != nil { - return x.Address - } - return "" -} - -func (x *DeploymentOccurrence) GetResourceUri() []string { - if x != nil { - return x.ResourceUri - } - return nil -} - -func (x *DeploymentOccurrence) GetPlatform() DeploymentOccurrence_Platform { - if x != nil { - return x.Platform - } - return DeploymentOccurrence_PLATFORM_UNSPECIFIED -} - -var File_proto_v1_deployment_proto protoreflect.FileDescriptor - -var file_proto_v1_deployment_proto_rawDesc = []byte{ - 0x0a, 0x19, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x64, 0x65, 0x70, 0x6c, 0x6f, - 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0a, 0x67, 0x72, 0x61, - 0x66, 0x65, 0x61, 0x73, 0x2e, 0x76, 0x31, 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, 0x33, 0x0a, 0x0e, 0x44, 0x65, 0x70, 0x6c, - 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x4e, 0x6f, 0x74, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x72, 0x65, - 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x75, 0x72, 0x69, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, - 0x52, 0x0b, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x55, 0x72, 0x69, 0x22, 0x94, 0x03, - 0x0a, 0x14, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x4f, 0x63, 0x63, 0x75, - 0x72, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x65, - 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x75, 0x73, 0x65, 0x72, - 0x45, 0x6d, 0x61, 0x69, 0x6c, 0x12, 0x3b, 0x0a, 0x0b, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 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, 0x0a, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x54, 0x69, - 0x6d, 0x65, 0x12, 0x3f, 0x0a, 0x0d, 0x75, 0x6e, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 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, 0x0c, 0x75, 0x6e, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x54, - 0x69, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x18, 0x0a, 0x07, 0x61, - 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x64, - 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, - 0x65, 0x5f, 0x75, 0x72, 0x69, 0x18, 0x06, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x72, 0x65, 0x73, - 0x6f, 0x75, 0x72, 0x63, 0x65, 0x55, 0x72, 0x69, 0x12, 0x45, 0x0a, 0x08, 0x70, 0x6c, 0x61, 0x74, - 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x29, 0x2e, 0x67, 0x72, 0x61, - 0x66, 0x65, 0x61, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, - 0x6e, 0x74, 0x4f, 0x63, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x2e, 0x50, 0x6c, 0x61, - 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x52, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x22, - 0x43, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x18, 0x0a, 0x14, 0x50, - 0x4c, 0x41, 0x54, 0x46, 0x4f, 0x52, 0x4d, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, - 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x07, 0x0a, 0x03, 0x47, 0x4b, 0x45, 0x10, 0x01, 0x12, 0x08, - 0x0a, 0x04, 0x46, 0x4c, 0x45, 0x58, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x43, 0x55, 0x53, 0x54, - 0x4f, 0x4d, 0x10, 0x03, 0x42, 0x4d, 0x0a, 0x0d, 0x69, 0x6f, 0x2e, 0x67, 0x72, 0x61, 0x66, 0x65, - 0x61, 0x73, 0x2e, 0x76, 0x31, 0x50, 0x01, 0x5a, 0x34, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, - 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x2f, 0x67, 0x72, 0x61, 0x66, - 0x65, 0x61, 0x73, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x72, 0x61, - 0x66, 0x65, 0x61, 0x73, 0x5f, 0x67, 0x6f, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0xa2, 0x02, 0x03, - 0x47, 0x52, 0x41, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, -} - -var ( - file_proto_v1_deployment_proto_rawDescOnce sync.Once - file_proto_v1_deployment_proto_rawDescData = file_proto_v1_deployment_proto_rawDesc -) - -func file_proto_v1_deployment_proto_rawDescGZIP() []byte { - file_proto_v1_deployment_proto_rawDescOnce.Do(func() { - file_proto_v1_deployment_proto_rawDescData = protoimpl.X.CompressGZIP(file_proto_v1_deployment_proto_rawDescData) - }) - return file_proto_v1_deployment_proto_rawDescData -} - -var file_proto_v1_deployment_proto_enumTypes = make([]protoimpl.EnumInfo, 1) -var file_proto_v1_deployment_proto_msgTypes = make([]protoimpl.MessageInfo, 2) -var file_proto_v1_deployment_proto_goTypes = []interface{}{ - (DeploymentOccurrence_Platform)(0), // 0: grafeas.v1.DeploymentOccurrence.Platform - (*DeploymentNote)(nil), // 1: grafeas.v1.DeploymentNote - (*DeploymentOccurrence)(nil), // 2: grafeas.v1.DeploymentOccurrence - (*timestamppb.Timestamp)(nil), // 3: google.protobuf.Timestamp -} -var file_proto_v1_deployment_proto_depIdxs = []int32{ - 3, // 0: grafeas.v1.DeploymentOccurrence.deploy_time:type_name -> google.protobuf.Timestamp - 3, // 1: grafeas.v1.DeploymentOccurrence.undeploy_time:type_name -> google.protobuf.Timestamp - 0, // 2: grafeas.v1.DeploymentOccurrence.platform:type_name -> grafeas.v1.DeploymentOccurrence.Platform - 3, // [3:3] is the sub-list for method output_type - 3, // [3:3] is the sub-list for method input_type - 3, // [3:3] is the sub-list for extension type_name - 3, // [3:3] is the sub-list for extension extendee - 0, // [0:3] is the sub-list for field type_name -} - -func init() { file_proto_v1_deployment_proto_init() } -func file_proto_v1_deployment_proto_init() { - if File_proto_v1_deployment_proto != nil { - return - } - if !protoimpl.UnsafeEnabled { - file_proto_v1_deployment_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DeploymentNote); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_proto_v1_deployment_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DeploymentOccurrence); 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_proto_v1_deployment_proto_rawDesc, - NumEnums: 1, - NumMessages: 2, - NumExtensions: 0, - NumServices: 0, - }, - GoTypes: file_proto_v1_deployment_proto_goTypes, - DependencyIndexes: file_proto_v1_deployment_proto_depIdxs, - EnumInfos: file_proto_v1_deployment_proto_enumTypes, - MessageInfos: file_proto_v1_deployment_proto_msgTypes, - }.Build() - File_proto_v1_deployment_proto = out.File - file_proto_v1_deployment_proto_rawDesc = nil - file_proto_v1_deployment_proto_goTypes = nil - file_proto_v1_deployment_proto_depIdxs = nil -} diff --git a/proto/v1/grafeas_go_proto/discovery.pb.go b/proto/v1/grafeas_go_proto/discovery.pb.go deleted file mode 100644 index 99042fcb..00000000 --- a/proto/v1/grafeas_go_proto/discovery.pb.go +++ /dev/null @@ -1,451 +0,0 @@ -// Copyright 2019 The Grafeas Authors. All rights reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -// Code generated by protoc-gen-go. DO NOT EDIT. -// versions: -// protoc-gen-go v1.25.0 -// protoc v3.14.0 -// source: proto/v1/discovery.proto - -package grafeas_go_proto - -import ( - proto "github.com/golang/protobuf/proto" - status "google.golang.org/genproto/googleapis/rpc/status" - 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) -) - -// This is a compile-time assertion that a sufficiently up-to-date version -// of the legacy proto package is being used. -const _ = proto.ProtoPackageIsVersion4 - -// Whether the resource is continuously analyzed. -type DiscoveryOccurrence_ContinuousAnalysis int32 - -const ( - // Unknown. - DiscoveryOccurrence_CONTINUOUS_ANALYSIS_UNSPECIFIED DiscoveryOccurrence_ContinuousAnalysis = 0 - // The resource is continuously analyzed. - DiscoveryOccurrence_ACTIVE DiscoveryOccurrence_ContinuousAnalysis = 1 - // The resource is ignored for continuous analysis. - DiscoveryOccurrence_INACTIVE DiscoveryOccurrence_ContinuousAnalysis = 2 -) - -// Enum value maps for DiscoveryOccurrence_ContinuousAnalysis. -var ( - DiscoveryOccurrence_ContinuousAnalysis_name = map[int32]string{ - 0: "CONTINUOUS_ANALYSIS_UNSPECIFIED", - 1: "ACTIVE", - 2: "INACTIVE", - } - DiscoveryOccurrence_ContinuousAnalysis_value = map[string]int32{ - "CONTINUOUS_ANALYSIS_UNSPECIFIED": 0, - "ACTIVE": 1, - "INACTIVE": 2, - } -) - -func (x DiscoveryOccurrence_ContinuousAnalysis) Enum() *DiscoveryOccurrence_ContinuousAnalysis { - p := new(DiscoveryOccurrence_ContinuousAnalysis) - *p = x - return p -} - -func (x DiscoveryOccurrence_ContinuousAnalysis) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (DiscoveryOccurrence_ContinuousAnalysis) Descriptor() protoreflect.EnumDescriptor { - return file_proto_v1_discovery_proto_enumTypes[0].Descriptor() -} - -func (DiscoveryOccurrence_ContinuousAnalysis) Type() protoreflect.EnumType { - return &file_proto_v1_discovery_proto_enumTypes[0] -} - -func (x DiscoveryOccurrence_ContinuousAnalysis) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) -} - -// Deprecated: Use DiscoveryOccurrence_ContinuousAnalysis.Descriptor instead. -func (DiscoveryOccurrence_ContinuousAnalysis) EnumDescriptor() ([]byte, []int) { - return file_proto_v1_discovery_proto_rawDescGZIP(), []int{1, 0} -} - -// Analysis status for a resource. Currently for initial analysis only (not -// updated in continuous analysis). -type DiscoveryOccurrence_AnalysisStatus int32 - -const ( - // Unknown. - DiscoveryOccurrence_ANALYSIS_STATUS_UNSPECIFIED DiscoveryOccurrence_AnalysisStatus = 0 - // Resource is known but no action has been taken yet. - DiscoveryOccurrence_PENDING DiscoveryOccurrence_AnalysisStatus = 1 - // Resource is being analyzed. - DiscoveryOccurrence_SCANNING DiscoveryOccurrence_AnalysisStatus = 2 - // Analysis has finished successfully. - DiscoveryOccurrence_FINISHED_SUCCESS DiscoveryOccurrence_AnalysisStatus = 3 - // Analysis has finished unsuccessfully, the analysis itself is in a bad - // state. - DiscoveryOccurrence_FINISHED_FAILED DiscoveryOccurrence_AnalysisStatus = 4 - // The resource is known not to be supported - DiscoveryOccurrence_FINISHED_UNSUPPORTED DiscoveryOccurrence_AnalysisStatus = 5 -) - -// Enum value maps for DiscoveryOccurrence_AnalysisStatus. -var ( - DiscoveryOccurrence_AnalysisStatus_name = map[int32]string{ - 0: "ANALYSIS_STATUS_UNSPECIFIED", - 1: "PENDING", - 2: "SCANNING", - 3: "FINISHED_SUCCESS", - 4: "FINISHED_FAILED", - 5: "FINISHED_UNSUPPORTED", - } - DiscoveryOccurrence_AnalysisStatus_value = map[string]int32{ - "ANALYSIS_STATUS_UNSPECIFIED": 0, - "PENDING": 1, - "SCANNING": 2, - "FINISHED_SUCCESS": 3, - "FINISHED_FAILED": 4, - "FINISHED_UNSUPPORTED": 5, - } -) - -func (x DiscoveryOccurrence_AnalysisStatus) Enum() *DiscoveryOccurrence_AnalysisStatus { - p := new(DiscoveryOccurrence_AnalysisStatus) - *p = x - return p -} - -func (x DiscoveryOccurrence_AnalysisStatus) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (DiscoveryOccurrence_AnalysisStatus) Descriptor() protoreflect.EnumDescriptor { - return file_proto_v1_discovery_proto_enumTypes[1].Descriptor() -} - -func (DiscoveryOccurrence_AnalysisStatus) Type() protoreflect.EnumType { - return &file_proto_v1_discovery_proto_enumTypes[1] -} - -func (x DiscoveryOccurrence_AnalysisStatus) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) -} - -// Deprecated: Use DiscoveryOccurrence_AnalysisStatus.Descriptor instead. -func (DiscoveryOccurrence_AnalysisStatus) EnumDescriptor() ([]byte, []int) { - return file_proto_v1_discovery_proto_rawDescGZIP(), []int{1, 1} -} - -// A note that indicates a type of analysis a provider would perform. This note -// exists in a provider's project. A `Discovery` occurrence is created in a -// consumer's project at the start of analysis. -type DiscoveryNote struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Required. Immutable. The kind of analysis that is handled by this - // discovery. - AnalysisKind NoteKind `protobuf:"varint,1,opt,name=analysis_kind,json=analysisKind,proto3,enum=grafeas.v1.NoteKind" json:"analysis_kind,omitempty"` -} - -func (x *DiscoveryNote) Reset() { - *x = DiscoveryNote{} - if protoimpl.UnsafeEnabled { - mi := &file_proto_v1_discovery_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *DiscoveryNote) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*DiscoveryNote) ProtoMessage() {} - -func (x *DiscoveryNote) ProtoReflect() protoreflect.Message { - mi := &file_proto_v1_discovery_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 DiscoveryNote.ProtoReflect.Descriptor instead. -func (*DiscoveryNote) Descriptor() ([]byte, []int) { - return file_proto_v1_discovery_proto_rawDescGZIP(), []int{0} -} - -func (x *DiscoveryNote) GetAnalysisKind() NoteKind { - if x != nil { - return x.AnalysisKind - } - return NoteKind_NOTE_KIND_UNSPECIFIED -} - -// Provides information about the analysis status of a discovered resource. -type DiscoveryOccurrence struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Whether the resource is continuously analyzed. - ContinuousAnalysis DiscoveryOccurrence_ContinuousAnalysis `protobuf:"varint,1,opt,name=continuous_analysis,json=continuousAnalysis,proto3,enum=grafeas.v1.DiscoveryOccurrence_ContinuousAnalysis" json:"continuous_analysis,omitempty"` - // The status of discovery for the resource. - AnalysisStatus DiscoveryOccurrence_AnalysisStatus `protobuf:"varint,2,opt,name=analysis_status,json=analysisStatus,proto3,enum=grafeas.v1.DiscoveryOccurrence_AnalysisStatus" json:"analysis_status,omitempty"` - // When an error is encountered this will contain a LocalizedMessage under - // details to show to the user. The LocalizedMessage is output only and - // populated by the API. - AnalysisStatusError *status.Status `protobuf:"bytes,3,opt,name=analysis_status_error,json=analysisStatusError,proto3" json:"analysis_status_error,omitempty"` - // The CPE of the resource being scanned. - Cpe string `protobuf:"bytes,4,opt,name=cpe,proto3" json:"cpe,omitempty"` - // The last time this resource was scanned. - LastScanTime *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=last_scan_time,json=lastScanTime,proto3" json:"last_scan_time,omitempty"` -} - -func (x *DiscoveryOccurrence) Reset() { - *x = DiscoveryOccurrence{} - if protoimpl.UnsafeEnabled { - mi := &file_proto_v1_discovery_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *DiscoveryOccurrence) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*DiscoveryOccurrence) ProtoMessage() {} - -func (x *DiscoveryOccurrence) ProtoReflect() protoreflect.Message { - mi := &file_proto_v1_discovery_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 DiscoveryOccurrence.ProtoReflect.Descriptor instead. -func (*DiscoveryOccurrence) Descriptor() ([]byte, []int) { - return file_proto_v1_discovery_proto_rawDescGZIP(), []int{1} -} - -func (x *DiscoveryOccurrence) GetContinuousAnalysis() DiscoveryOccurrence_ContinuousAnalysis { - if x != nil { - return x.ContinuousAnalysis - } - return DiscoveryOccurrence_CONTINUOUS_ANALYSIS_UNSPECIFIED -} - -func (x *DiscoveryOccurrence) GetAnalysisStatus() DiscoveryOccurrence_AnalysisStatus { - if x != nil { - return x.AnalysisStatus - } - return DiscoveryOccurrence_ANALYSIS_STATUS_UNSPECIFIED -} - -func (x *DiscoveryOccurrence) GetAnalysisStatusError() *status.Status { - if x != nil { - return x.AnalysisStatusError - } - return nil -} - -func (x *DiscoveryOccurrence) GetCpe() string { - if x != nil { - return x.Cpe - } - return "" -} - -func (x *DiscoveryOccurrence) GetLastScanTime() *timestamppb.Timestamp { - if x != nil { - return x.LastScanTime - } - return nil -} - -var File_proto_v1_discovery_proto protoreflect.FileDescriptor - -var file_proto_v1_discovery_proto_rawDesc = []byte{ - 0x0a, 0x18, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x64, 0x69, 0x73, 0x63, 0x6f, - 0x76, 0x65, 0x72, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0a, 0x67, 0x72, 0x61, 0x66, - 0x65, 0x61, 0x73, 0x2e, 0x76, 0x31, 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, 0x17, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, - 0x72, 0x70, 0x63, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x1a, 0x15, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, - 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x4a, 0x0a, 0x0d, 0x44, 0x69, 0x73, 0x63, 0x6f, - 0x76, 0x65, 0x72, 0x79, 0x4e, 0x6f, 0x74, 0x65, 0x12, 0x39, 0x0a, 0x0d, 0x61, 0x6e, 0x61, 0x6c, - 0x79, 0x73, 0x69, 0x73, 0x5f, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, - 0x14, 0x2e, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x74, - 0x65, 0x4b, 0x69, 0x6e, 0x64, 0x52, 0x0c, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x4b, - 0x69, 0x6e, 0x64, 0x22, 0xd8, 0x04, 0x0a, 0x13, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, - 0x79, 0x4f, 0x63, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x63, 0x0a, 0x13, 0x63, - 0x6f, 0x6e, 0x74, 0x69, 0x6e, 0x75, 0x6f, 0x75, 0x73, 0x5f, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, - 0x69, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x32, 0x2e, 0x67, 0x72, 0x61, 0x66, 0x65, - 0x61, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x4f, - 0x63, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x69, 0x6e, - 0x75, 0x6f, 0x75, 0x73, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x52, 0x12, 0x63, 0x6f, - 0x6e, 0x74, 0x69, 0x6e, 0x75, 0x6f, 0x75, 0x73, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, - 0x12, 0x57, 0x0a, 0x0f, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x5f, 0x73, 0x74, 0x61, - 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2e, 0x2e, 0x67, 0x72, 0x61, 0x66, - 0x65, 0x61, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, - 0x4f, 0x63, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x2e, 0x41, 0x6e, 0x61, 0x6c, 0x79, - 0x73, 0x69, 0x73, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x0e, 0x61, 0x6e, 0x61, 0x6c, 0x79, - 0x73, 0x69, 0x73, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x46, 0x0a, 0x15, 0x61, 0x6e, 0x61, - 0x6c, 0x79, 0x73, 0x69, 0x73, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x5f, 0x65, 0x72, 0x72, - 0x6f, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x13, 0x61, 0x6e, - 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x45, 0x72, 0x72, 0x6f, - 0x72, 0x12, 0x10, 0x0a, 0x03, 0x63, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, - 0x63, 0x70, 0x65, 0x12, 0x40, 0x0a, 0x0e, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x73, 0x63, 0x61, 0x6e, - 0x5f, 0x74, 0x69, 0x6d, 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, 0x0c, 0x6c, 0x61, 0x73, 0x74, 0x53, 0x63, 0x61, - 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x22, 0x53, 0x0a, 0x12, 0x43, 0x6f, 0x6e, 0x74, 0x69, 0x6e, 0x75, - 0x6f, 0x75, 0x73, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x12, 0x23, 0x0a, 0x1f, 0x43, - 0x4f, 0x4e, 0x54, 0x49, 0x4e, 0x55, 0x4f, 0x55, 0x53, 0x5f, 0x41, 0x4e, 0x41, 0x4c, 0x59, 0x53, - 0x49, 0x53, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, - 0x12, 0x0a, 0x0a, 0x06, 0x41, 0x43, 0x54, 0x49, 0x56, 0x45, 0x10, 0x01, 0x12, 0x0c, 0x0a, 0x08, - 0x49, 0x4e, 0x41, 0x43, 0x54, 0x49, 0x56, 0x45, 0x10, 0x02, 0x22, 0x91, 0x01, 0x0a, 0x0e, 0x41, - 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1f, 0x0a, - 0x1b, 0x41, 0x4e, 0x41, 0x4c, 0x59, 0x53, 0x49, 0x53, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, - 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0b, - 0x0a, 0x07, 0x50, 0x45, 0x4e, 0x44, 0x49, 0x4e, 0x47, 0x10, 0x01, 0x12, 0x0c, 0x0a, 0x08, 0x53, - 0x43, 0x41, 0x4e, 0x4e, 0x49, 0x4e, 0x47, 0x10, 0x02, 0x12, 0x14, 0x0a, 0x10, 0x46, 0x49, 0x4e, - 0x49, 0x53, 0x48, 0x45, 0x44, 0x5f, 0x53, 0x55, 0x43, 0x43, 0x45, 0x53, 0x53, 0x10, 0x03, 0x12, - 0x13, 0x0a, 0x0f, 0x46, 0x49, 0x4e, 0x49, 0x53, 0x48, 0x45, 0x44, 0x5f, 0x46, 0x41, 0x49, 0x4c, - 0x45, 0x44, 0x10, 0x04, 0x12, 0x18, 0x0a, 0x14, 0x46, 0x49, 0x4e, 0x49, 0x53, 0x48, 0x45, 0x44, - 0x5f, 0x55, 0x4e, 0x53, 0x55, 0x50, 0x50, 0x4f, 0x52, 0x54, 0x45, 0x44, 0x10, 0x05, 0x42, 0x4d, - 0x0a, 0x0d, 0x69, 0x6f, 0x2e, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, 0x76, 0x31, 0x50, - 0x01, 0x5a, 0x34, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x72, - 0x61, 0x66, 0x65, 0x61, 0x73, 0x2f, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x2f, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x5f, 0x67, - 0x6f, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0xa2, 0x02, 0x03, 0x47, 0x52, 0x41, 0x62, 0x06, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x33, -} - -var ( - file_proto_v1_discovery_proto_rawDescOnce sync.Once - file_proto_v1_discovery_proto_rawDescData = file_proto_v1_discovery_proto_rawDesc -) - -func file_proto_v1_discovery_proto_rawDescGZIP() []byte { - file_proto_v1_discovery_proto_rawDescOnce.Do(func() { - file_proto_v1_discovery_proto_rawDescData = protoimpl.X.CompressGZIP(file_proto_v1_discovery_proto_rawDescData) - }) - return file_proto_v1_discovery_proto_rawDescData -} - -var file_proto_v1_discovery_proto_enumTypes = make([]protoimpl.EnumInfo, 2) -var file_proto_v1_discovery_proto_msgTypes = make([]protoimpl.MessageInfo, 2) -var file_proto_v1_discovery_proto_goTypes = []interface{}{ - (DiscoveryOccurrence_ContinuousAnalysis)(0), // 0: grafeas.v1.DiscoveryOccurrence.ContinuousAnalysis - (DiscoveryOccurrence_AnalysisStatus)(0), // 1: grafeas.v1.DiscoveryOccurrence.AnalysisStatus - (*DiscoveryNote)(nil), // 2: grafeas.v1.DiscoveryNote - (*DiscoveryOccurrence)(nil), // 3: grafeas.v1.DiscoveryOccurrence - (NoteKind)(0), // 4: grafeas.v1.NoteKind - (*status.Status)(nil), // 5: google.rpc.Status - (*timestamppb.Timestamp)(nil), // 6: google.protobuf.Timestamp -} -var file_proto_v1_discovery_proto_depIdxs = []int32{ - 4, // 0: grafeas.v1.DiscoveryNote.analysis_kind:type_name -> grafeas.v1.NoteKind - 0, // 1: grafeas.v1.DiscoveryOccurrence.continuous_analysis:type_name -> grafeas.v1.DiscoveryOccurrence.ContinuousAnalysis - 1, // 2: grafeas.v1.DiscoveryOccurrence.analysis_status:type_name -> grafeas.v1.DiscoveryOccurrence.AnalysisStatus - 5, // 3: grafeas.v1.DiscoveryOccurrence.analysis_status_error:type_name -> google.rpc.Status - 6, // 4: grafeas.v1.DiscoveryOccurrence.last_scan_time:type_name -> google.protobuf.Timestamp - 5, // [5:5] is the sub-list for method output_type - 5, // [5:5] is the sub-list for method input_type - 5, // [5:5] is the sub-list for extension type_name - 5, // [5:5] is the sub-list for extension extendee - 0, // [0:5] is the sub-list for field type_name -} - -func init() { file_proto_v1_discovery_proto_init() } -func file_proto_v1_discovery_proto_init() { - if File_proto_v1_discovery_proto != nil { - return - } - file_proto_v1_common_proto_init() - if !protoimpl.UnsafeEnabled { - file_proto_v1_discovery_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DiscoveryNote); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_proto_v1_discovery_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DiscoveryOccurrence); 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_proto_v1_discovery_proto_rawDesc, - NumEnums: 2, - NumMessages: 2, - NumExtensions: 0, - NumServices: 0, - }, - GoTypes: file_proto_v1_discovery_proto_goTypes, - DependencyIndexes: file_proto_v1_discovery_proto_depIdxs, - EnumInfos: file_proto_v1_discovery_proto_enumTypes, - MessageInfos: file_proto_v1_discovery_proto_msgTypes, - }.Build() - File_proto_v1_discovery_proto = out.File - file_proto_v1_discovery_proto_rawDesc = nil - file_proto_v1_discovery_proto_goTypes = nil - file_proto_v1_discovery_proto_depIdxs = nil -} diff --git a/proto/v1/grafeas_go_proto/grafeas.pb.go b/proto/v1/grafeas_go_proto/grafeas.pb.go deleted file mode 100644 index e9ba0f80..00000000 --- a/proto/v1/grafeas_go_proto/grafeas.pb.go +++ /dev/null @@ -1,2563 +0,0 @@ -// Copyright 2019 The Grafeas Authors. All rights reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -// Code generated by protoc-gen-go. DO NOT EDIT. -// versions: -// protoc-gen-go v1.25.0 -// protoc v3.14.0 -// source: proto/v1/grafeas.proto - -package grafeas_go_proto - -import ( - proto "github.com/golang/protobuf/proto" - _ "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" - fieldmaskpb "google.golang.org/protobuf/types/known/fieldmaskpb" - 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) -) - -// This is a compile-time assertion that a sufficiently up-to-date version -// of the legacy proto package is being used. -const _ = proto.ProtoPackageIsVersion4 - -// An instance of an analysis type that has been found on a resource. -type Occurrence struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Output only. The name of the occurrence in the form of - // `projects/[PROJECT_ID]/occurrences/[OCCURRENCE_ID]`. - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - // Required. Immutable. A URI that represents the resource for which the - // occurrence applies. For example, - // `https://gcr.io/project/image@sha256:123abc` for a Docker image. - ResourceUri string `protobuf:"bytes,2,opt,name=resource_uri,json=resourceUri,proto3" json:"resource_uri,omitempty"` - // Required. Immutable. The analysis note associated with this occurrence, in - // the form of `projects/[PROVIDER_ID]/notes/[NOTE_ID]`. This field can be - // used as a filter in list requests. - NoteName string `protobuf:"bytes,3,opt,name=note_name,json=noteName,proto3" json:"note_name,omitempty"` - // Output only. This explicitly denotes which of the occurrence details are - // specified. This field can be used as a filter in list requests. - Kind NoteKind `protobuf:"varint,4,opt,name=kind,proto3,enum=grafeas.v1.NoteKind" json:"kind,omitempty"` - // A description of actions that can be taken to remedy the note. - Remediation string `protobuf:"bytes,5,opt,name=remediation,proto3" json:"remediation,omitempty"` - // Output only. The time this occurrence was created. - CreateTime *timestamppb.Timestamp `protobuf:"bytes,6,opt,name=create_time,json=createTime,proto3" json:"create_time,omitempty"` - // Output only. The time this occurrence was last updated. - UpdateTime *timestamppb.Timestamp `protobuf:"bytes,7,opt,name=update_time,json=updateTime,proto3" json:"update_time,omitempty"` - // Required. Immutable. Describes the details of the note kind found on this - // resource. - // - // Types that are assignable to Details: - // *Occurrence_Vulnerability - // *Occurrence_Build - // *Occurrence_Image - // *Occurrence_Package - // *Occurrence_Deployment - // *Occurrence_Discovery - // *Occurrence_Attestation - // *Occurrence_Upgrade - Details isOccurrence_Details `protobuf_oneof:"details"` -} - -func (x *Occurrence) Reset() { - *x = Occurrence{} - if protoimpl.UnsafeEnabled { - mi := &file_proto_v1_grafeas_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *Occurrence) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*Occurrence) ProtoMessage() {} - -func (x *Occurrence) ProtoReflect() protoreflect.Message { - mi := &file_proto_v1_grafeas_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 Occurrence.ProtoReflect.Descriptor instead. -func (*Occurrence) Descriptor() ([]byte, []int) { - return file_proto_v1_grafeas_proto_rawDescGZIP(), []int{0} -} - -func (x *Occurrence) GetName() string { - if x != nil { - return x.Name - } - return "" -} - -func (x *Occurrence) GetResourceUri() string { - if x != nil { - return x.ResourceUri - } - return "" -} - -func (x *Occurrence) GetNoteName() string { - if x != nil { - return x.NoteName - } - return "" -} - -func (x *Occurrence) GetKind() NoteKind { - if x != nil { - return x.Kind - } - return NoteKind_NOTE_KIND_UNSPECIFIED -} - -func (x *Occurrence) GetRemediation() string { - if x != nil { - return x.Remediation - } - return "" -} - -func (x *Occurrence) GetCreateTime() *timestamppb.Timestamp { - if x != nil { - return x.CreateTime - } - return nil -} - -func (x *Occurrence) GetUpdateTime() *timestamppb.Timestamp { - if x != nil { - return x.UpdateTime - } - return nil -} - -func (m *Occurrence) GetDetails() isOccurrence_Details { - if m != nil { - return m.Details - } - return nil -} - -func (x *Occurrence) GetVulnerability() *VulnerabilityOccurrence { - if x, ok := x.GetDetails().(*Occurrence_Vulnerability); ok { - return x.Vulnerability - } - return nil -} - -func (x *Occurrence) GetBuild() *BuildOccurrence { - if x, ok := x.GetDetails().(*Occurrence_Build); ok { - return x.Build - } - return nil -} - -func (x *Occurrence) GetImage() *ImageOccurrence { - if x, ok := x.GetDetails().(*Occurrence_Image); ok { - return x.Image - } - return nil -} - -func (x *Occurrence) GetPackage() *PackageOccurrence { - if x, ok := x.GetDetails().(*Occurrence_Package); ok { - return x.Package - } - return nil -} - -func (x *Occurrence) GetDeployment() *DeploymentOccurrence { - if x, ok := x.GetDetails().(*Occurrence_Deployment); ok { - return x.Deployment - } - return nil -} - -func (x *Occurrence) GetDiscovery() *DiscoveryOccurrence { - if x, ok := x.GetDetails().(*Occurrence_Discovery); ok { - return x.Discovery - } - return nil -} - -func (x *Occurrence) GetAttestation() *AttestationOccurrence { - if x, ok := x.GetDetails().(*Occurrence_Attestation); ok { - return x.Attestation - } - return nil -} - -func (x *Occurrence) GetUpgrade() *UpgradeOccurrence { - if x, ok := x.GetDetails().(*Occurrence_Upgrade); ok { - return x.Upgrade - } - return nil -} - -type isOccurrence_Details interface { - isOccurrence_Details() -} - -type Occurrence_Vulnerability struct { - // Describes a security vulnerability. - Vulnerability *VulnerabilityOccurrence `protobuf:"bytes,8,opt,name=vulnerability,proto3,oneof"` -} - -type Occurrence_Build struct { - // Describes a verifiable build. - Build *BuildOccurrence `protobuf:"bytes,9,opt,name=build,proto3,oneof"` -} - -type Occurrence_Image struct { - // Describes how this resource derives from the basis in the associated - // note. - Image *ImageOccurrence `protobuf:"bytes,10,opt,name=image,proto3,oneof"` -} - -type Occurrence_Package struct { - // Describes the installation of a package on the linked resource. - Package *PackageOccurrence `protobuf:"bytes,11,opt,name=package,proto3,oneof"` -} - -type Occurrence_Deployment struct { - // Describes the deployment of an artifact on a runtime. - Deployment *DeploymentOccurrence `protobuf:"bytes,12,opt,name=deployment,proto3,oneof"` -} - -type Occurrence_Discovery struct { - // Describes when a resource was discovered. - Discovery *DiscoveryOccurrence `protobuf:"bytes,13,opt,name=discovery,proto3,oneof"` -} - -type Occurrence_Attestation struct { - // Describes an attestation of an artifact. - Attestation *AttestationOccurrence `protobuf:"bytes,14,opt,name=attestation,proto3,oneof"` -} - -type Occurrence_Upgrade struct { - // Describes an available package upgrade on the linked resource. - Upgrade *UpgradeOccurrence `protobuf:"bytes,15,opt,name=upgrade,proto3,oneof"` -} - -func (*Occurrence_Vulnerability) isOccurrence_Details() {} - -func (*Occurrence_Build) isOccurrence_Details() {} - -func (*Occurrence_Image) isOccurrence_Details() {} - -func (*Occurrence_Package) isOccurrence_Details() {} - -func (*Occurrence_Deployment) isOccurrence_Details() {} - -func (*Occurrence_Discovery) isOccurrence_Details() {} - -func (*Occurrence_Attestation) isOccurrence_Details() {} - -func (*Occurrence_Upgrade) isOccurrence_Details() {} - -// A type of analysis that can be done for a resource. -type Note struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Output only. The name of the note in the form of - // `projects/[PROVIDER_ID]/notes/[NOTE_ID]`. - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - // A one sentence description of this note. - ShortDescription string `protobuf:"bytes,2,opt,name=short_description,json=shortDescription,proto3" json:"short_description,omitempty"` - // A detailed description of this note. - LongDescription string `protobuf:"bytes,3,opt,name=long_description,json=longDescription,proto3" json:"long_description,omitempty"` - // Output only. The type of analysis. This field can be used as a filter in - // list requests. - Kind NoteKind `protobuf:"varint,4,opt,name=kind,proto3,enum=grafeas.v1.NoteKind" json:"kind,omitempty"` - // URLs associated with this note. - RelatedUrl []*RelatedUrl `protobuf:"bytes,5,rep,name=related_url,json=relatedUrl,proto3" json:"related_url,omitempty"` - // Time of expiration for this note. Empty if note does not expire. - ExpirationTime *timestamppb.Timestamp `protobuf:"bytes,6,opt,name=expiration_time,json=expirationTime,proto3" json:"expiration_time,omitempty"` - // Output only. The time this note was created. This field can be used as a - // filter in list requests. - CreateTime *timestamppb.Timestamp `protobuf:"bytes,7,opt,name=create_time,json=createTime,proto3" json:"create_time,omitempty"` - // Output only. The time this note was last updated. This field can be used as - // a filter in list requests. - UpdateTime *timestamppb.Timestamp `protobuf:"bytes,8,opt,name=update_time,json=updateTime,proto3" json:"update_time,omitempty"` - // Other notes related to this note. - RelatedNoteNames []string `protobuf:"bytes,9,rep,name=related_note_names,json=relatedNoteNames,proto3" json:"related_note_names,omitempty"` - // Required. Immutable. The type of analysis this note represents. - // - // Types that are assignable to Type: - // *Note_Vulnerability - // *Note_Build - // *Note_Image - // *Note_Package - // *Note_Deployment - // *Note_Discovery - // *Note_Attestation - // *Note_Upgrade - Type isNote_Type `protobuf_oneof:"type"` -} - -func (x *Note) Reset() { - *x = Note{} - if protoimpl.UnsafeEnabled { - mi := &file_proto_v1_grafeas_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *Note) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*Note) ProtoMessage() {} - -func (x *Note) ProtoReflect() protoreflect.Message { - mi := &file_proto_v1_grafeas_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 Note.ProtoReflect.Descriptor instead. -func (*Note) Descriptor() ([]byte, []int) { - return file_proto_v1_grafeas_proto_rawDescGZIP(), []int{1} -} - -func (x *Note) GetName() string { - if x != nil { - return x.Name - } - return "" -} - -func (x *Note) GetShortDescription() string { - if x != nil { - return x.ShortDescription - } - return "" -} - -func (x *Note) GetLongDescription() string { - if x != nil { - return x.LongDescription - } - return "" -} - -func (x *Note) GetKind() NoteKind { - if x != nil { - return x.Kind - } - return NoteKind_NOTE_KIND_UNSPECIFIED -} - -func (x *Note) GetRelatedUrl() []*RelatedUrl { - if x != nil { - return x.RelatedUrl - } - return nil -} - -func (x *Note) GetExpirationTime() *timestamppb.Timestamp { - if x != nil { - return x.ExpirationTime - } - return nil -} - -func (x *Note) GetCreateTime() *timestamppb.Timestamp { - if x != nil { - return x.CreateTime - } - return nil -} - -func (x *Note) GetUpdateTime() *timestamppb.Timestamp { - if x != nil { - return x.UpdateTime - } - return nil -} - -func (x *Note) GetRelatedNoteNames() []string { - if x != nil { - return x.RelatedNoteNames - } - return nil -} - -func (m *Note) GetType() isNote_Type { - if m != nil { - return m.Type - } - return nil -} - -func (x *Note) GetVulnerability() *VulnerabilityNote { - if x, ok := x.GetType().(*Note_Vulnerability); ok { - return x.Vulnerability - } - return nil -} - -func (x *Note) GetBuild() *BuildNote { - if x, ok := x.GetType().(*Note_Build); ok { - return x.Build - } - return nil -} - -func (x *Note) GetImage() *ImageNote { - if x, ok := x.GetType().(*Note_Image); ok { - return x.Image - } - return nil -} - -func (x *Note) GetPackage() *PackageNote { - if x, ok := x.GetType().(*Note_Package); ok { - return x.Package - } - return nil -} - -func (x *Note) GetDeployment() *DeploymentNote { - if x, ok := x.GetType().(*Note_Deployment); ok { - return x.Deployment - } - return nil -} - -func (x *Note) GetDiscovery() *DiscoveryNote { - if x, ok := x.GetType().(*Note_Discovery); ok { - return x.Discovery - } - return nil -} - -func (x *Note) GetAttestation() *AttestationNote { - if x, ok := x.GetType().(*Note_Attestation); ok { - return x.Attestation - } - return nil -} - -func (x *Note) GetUpgrade() *UpgradeNote { - if x, ok := x.GetType().(*Note_Upgrade); ok { - return x.Upgrade - } - return nil -} - -type isNote_Type interface { - isNote_Type() -} - -type Note_Vulnerability struct { - // A note describing a package vulnerability. - Vulnerability *VulnerabilityNote `protobuf:"bytes,10,opt,name=vulnerability,proto3,oneof"` -} - -type Note_Build struct { - // A note describing build provenance for a verifiable build. - Build *BuildNote `protobuf:"bytes,11,opt,name=build,proto3,oneof"` -} - -type Note_Image struct { - // A note describing a base image. - Image *ImageNote `protobuf:"bytes,12,opt,name=image,proto3,oneof"` -} - -type Note_Package struct { - // A note describing a package hosted by various package managers. - Package *PackageNote `protobuf:"bytes,13,opt,name=package,proto3,oneof"` -} - -type Note_Deployment struct { - // A note describing something that can be deployed. - Deployment *DeploymentNote `protobuf:"bytes,14,opt,name=deployment,proto3,oneof"` -} - -type Note_Discovery struct { - // A note describing the initial analysis of a resource. - Discovery *DiscoveryNote `protobuf:"bytes,15,opt,name=discovery,proto3,oneof"` -} - -type Note_Attestation struct { - // A note describing an attestation role. - Attestation *AttestationNote `protobuf:"bytes,16,opt,name=attestation,proto3,oneof"` -} - -type Note_Upgrade struct { - // A note describing available package upgrades. - Upgrade *UpgradeNote `protobuf:"bytes,17,opt,name=upgrade,proto3,oneof"` -} - -func (*Note_Vulnerability) isNote_Type() {} - -func (*Note_Build) isNote_Type() {} - -func (*Note_Image) isNote_Type() {} - -func (*Note_Package) isNote_Type() {} - -func (*Note_Deployment) isNote_Type() {} - -func (*Note_Discovery) isNote_Type() {} - -func (*Note_Attestation) isNote_Type() {} - -func (*Note_Upgrade) isNote_Type() {} - -// Request to get an occurrence. -type GetOccurrenceRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // The name of the occurrence in the form of - // `projects/[PROJECT_ID]/occurrences/[OCCURRENCE_ID]`. - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` -} - -func (x *GetOccurrenceRequest) Reset() { - *x = GetOccurrenceRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_proto_v1_grafeas_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *GetOccurrenceRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GetOccurrenceRequest) ProtoMessage() {} - -func (x *GetOccurrenceRequest) ProtoReflect() protoreflect.Message { - mi := &file_proto_v1_grafeas_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 GetOccurrenceRequest.ProtoReflect.Descriptor instead. -func (*GetOccurrenceRequest) Descriptor() ([]byte, []int) { - return file_proto_v1_grafeas_proto_rawDescGZIP(), []int{2} -} - -func (x *GetOccurrenceRequest) GetName() string { - if x != nil { - return x.Name - } - return "" -} - -// Request to list occurrences. -type ListOccurrencesRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // The name of the project to list occurrences for in the form of - // `projects/[PROJECT_ID]`. - Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"` - // The filter expression. - Filter string `protobuf:"bytes,2,opt,name=filter,proto3" json:"filter,omitempty"` - // Number of occurrences to return in the list. Must be positive. Max allowed - // page size is 1000. If not specified, page size defaults to 20. - PageSize int32 `protobuf:"varint,3,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"` - // Token to provide to skip to a particular spot in the list. - PageToken string `protobuf:"bytes,4,opt,name=page_token,json=pageToken,proto3" json:"page_token,omitempty"` -} - -func (x *ListOccurrencesRequest) Reset() { - *x = ListOccurrencesRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_proto_v1_grafeas_proto_msgTypes[3] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *ListOccurrencesRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ListOccurrencesRequest) ProtoMessage() {} - -func (x *ListOccurrencesRequest) ProtoReflect() protoreflect.Message { - mi := &file_proto_v1_grafeas_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 ListOccurrencesRequest.ProtoReflect.Descriptor instead. -func (*ListOccurrencesRequest) Descriptor() ([]byte, []int) { - return file_proto_v1_grafeas_proto_rawDescGZIP(), []int{3} -} - -func (x *ListOccurrencesRequest) GetParent() string { - if x != nil { - return x.Parent - } - return "" -} - -func (x *ListOccurrencesRequest) GetFilter() string { - if x != nil { - return x.Filter - } - return "" -} - -func (x *ListOccurrencesRequest) GetPageSize() int32 { - if x != nil { - return x.PageSize - } - return 0 -} - -func (x *ListOccurrencesRequest) GetPageToken() string { - if x != nil { - return x.PageToken - } - return "" -} - -// Response for listing occurrences. -type ListOccurrencesResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // The occurrences requested. - Occurrences []*Occurrence `protobuf:"bytes,1,rep,name=occurrences,proto3" json:"occurrences,omitempty"` - // The next pagination token in the list response. It should be used as - // `page_token` for the following request. An empty value means no more - // results. - NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken,proto3" json:"next_page_token,omitempty"` -} - -func (x *ListOccurrencesResponse) Reset() { - *x = ListOccurrencesResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_proto_v1_grafeas_proto_msgTypes[4] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *ListOccurrencesResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ListOccurrencesResponse) ProtoMessage() {} - -func (x *ListOccurrencesResponse) ProtoReflect() protoreflect.Message { - mi := &file_proto_v1_grafeas_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 ListOccurrencesResponse.ProtoReflect.Descriptor instead. -func (*ListOccurrencesResponse) Descriptor() ([]byte, []int) { - return file_proto_v1_grafeas_proto_rawDescGZIP(), []int{4} -} - -func (x *ListOccurrencesResponse) GetOccurrences() []*Occurrence { - if x != nil { - return x.Occurrences - } - return nil -} - -func (x *ListOccurrencesResponse) GetNextPageToken() string { - if x != nil { - return x.NextPageToken - } - return "" -} - -// Request to delete an occurrence. -type DeleteOccurrenceRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // The name of the occurrence in the form of - // `projects/[PROJECT_ID]/occurrences/[OCCURRENCE_ID]`. - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` -} - -func (x *DeleteOccurrenceRequest) Reset() { - *x = DeleteOccurrenceRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_proto_v1_grafeas_proto_msgTypes[5] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *DeleteOccurrenceRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*DeleteOccurrenceRequest) ProtoMessage() {} - -func (x *DeleteOccurrenceRequest) ProtoReflect() protoreflect.Message { - mi := &file_proto_v1_grafeas_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 DeleteOccurrenceRequest.ProtoReflect.Descriptor instead. -func (*DeleteOccurrenceRequest) Descriptor() ([]byte, []int) { - return file_proto_v1_grafeas_proto_rawDescGZIP(), []int{5} -} - -func (x *DeleteOccurrenceRequest) GetName() string { - if x != nil { - return x.Name - } - return "" -} - -// Request to create a new occurrence. -type CreateOccurrenceRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // The name of the project in the form of `projects/[PROJECT_ID]`, under which - // the occurrence is to be created. - Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"` - // The occurrence to create. - Occurrence *Occurrence `protobuf:"bytes,2,opt,name=occurrence,proto3" json:"occurrence,omitempty"` -} - -func (x *CreateOccurrenceRequest) Reset() { - *x = CreateOccurrenceRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_proto_v1_grafeas_proto_msgTypes[6] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *CreateOccurrenceRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*CreateOccurrenceRequest) ProtoMessage() {} - -func (x *CreateOccurrenceRequest) ProtoReflect() protoreflect.Message { - mi := &file_proto_v1_grafeas_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 CreateOccurrenceRequest.ProtoReflect.Descriptor instead. -func (*CreateOccurrenceRequest) Descriptor() ([]byte, []int) { - return file_proto_v1_grafeas_proto_rawDescGZIP(), []int{6} -} - -func (x *CreateOccurrenceRequest) GetParent() string { - if x != nil { - return x.Parent - } - return "" -} - -func (x *CreateOccurrenceRequest) GetOccurrence() *Occurrence { - if x != nil { - return x.Occurrence - } - return nil -} - -// Request to update an occurrence. -type UpdateOccurrenceRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // The name of the occurrence in the form of - // `projects/[PROJECT_ID]/occurrences/[OCCURRENCE_ID]`. - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - // The updated occurrence. - Occurrence *Occurrence `protobuf:"bytes,2,opt,name=occurrence,proto3" json:"occurrence,omitempty"` - // The fields to update. - UpdateMask *fieldmaskpb.FieldMask `protobuf:"bytes,3,opt,name=update_mask,json=updateMask,proto3" json:"update_mask,omitempty"` -} - -func (x *UpdateOccurrenceRequest) Reset() { - *x = UpdateOccurrenceRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_proto_v1_grafeas_proto_msgTypes[7] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *UpdateOccurrenceRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*UpdateOccurrenceRequest) ProtoMessage() {} - -func (x *UpdateOccurrenceRequest) ProtoReflect() protoreflect.Message { - mi := &file_proto_v1_grafeas_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 UpdateOccurrenceRequest.ProtoReflect.Descriptor instead. -func (*UpdateOccurrenceRequest) Descriptor() ([]byte, []int) { - return file_proto_v1_grafeas_proto_rawDescGZIP(), []int{7} -} - -func (x *UpdateOccurrenceRequest) GetName() string { - if x != nil { - return x.Name - } - return "" -} - -func (x *UpdateOccurrenceRequest) GetOccurrence() *Occurrence { - if x != nil { - return x.Occurrence - } - return nil -} - -func (x *UpdateOccurrenceRequest) GetUpdateMask() *fieldmaskpb.FieldMask { - if x != nil { - return x.UpdateMask - } - return nil -} - -// Request to get a note. -type GetNoteRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // The name of the note in the form of - // `projects/[PROVIDER_ID]/notes/[NOTE_ID]`. - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` -} - -func (x *GetNoteRequest) Reset() { - *x = GetNoteRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_proto_v1_grafeas_proto_msgTypes[8] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *GetNoteRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GetNoteRequest) ProtoMessage() {} - -func (x *GetNoteRequest) ProtoReflect() protoreflect.Message { - mi := &file_proto_v1_grafeas_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 GetNoteRequest.ProtoReflect.Descriptor instead. -func (*GetNoteRequest) Descriptor() ([]byte, []int) { - return file_proto_v1_grafeas_proto_rawDescGZIP(), []int{8} -} - -func (x *GetNoteRequest) GetName() string { - if x != nil { - return x.Name - } - return "" -} - -// Request to get the note to which the specified occurrence is attached. -type GetOccurrenceNoteRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // The name of the occurrence in the form of - // `projects/[PROJECT_ID]/occurrences/[OCCURRENCE_ID]`. - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` -} - -func (x *GetOccurrenceNoteRequest) Reset() { - *x = GetOccurrenceNoteRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_proto_v1_grafeas_proto_msgTypes[9] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *GetOccurrenceNoteRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GetOccurrenceNoteRequest) ProtoMessage() {} - -func (x *GetOccurrenceNoteRequest) ProtoReflect() protoreflect.Message { - mi := &file_proto_v1_grafeas_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 GetOccurrenceNoteRequest.ProtoReflect.Descriptor instead. -func (*GetOccurrenceNoteRequest) Descriptor() ([]byte, []int) { - return file_proto_v1_grafeas_proto_rawDescGZIP(), []int{9} -} - -func (x *GetOccurrenceNoteRequest) GetName() string { - if x != nil { - return x.Name - } - return "" -} - -// Request to list notes. -type ListNotesRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // The name of the project to list notes for in the form of - // `projects/[PROJECT_ID]`. - Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"` - // The filter expression. - Filter string `protobuf:"bytes,2,opt,name=filter,proto3" json:"filter,omitempty"` - // Number of notes to return in the list. Must be positive. Max allowed page - // size is 1000. If not specified, page size defaults to 20. - PageSize int32 `protobuf:"varint,3,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"` - // Token to provide to skip to a particular spot in the list. - PageToken string `protobuf:"bytes,4,opt,name=page_token,json=pageToken,proto3" json:"page_token,omitempty"` -} - -func (x *ListNotesRequest) Reset() { - *x = ListNotesRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_proto_v1_grafeas_proto_msgTypes[10] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *ListNotesRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ListNotesRequest) ProtoMessage() {} - -func (x *ListNotesRequest) ProtoReflect() protoreflect.Message { - mi := &file_proto_v1_grafeas_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 ListNotesRequest.ProtoReflect.Descriptor instead. -func (*ListNotesRequest) Descriptor() ([]byte, []int) { - return file_proto_v1_grafeas_proto_rawDescGZIP(), []int{10} -} - -func (x *ListNotesRequest) GetParent() string { - if x != nil { - return x.Parent - } - return "" -} - -func (x *ListNotesRequest) GetFilter() string { - if x != nil { - return x.Filter - } - return "" -} - -func (x *ListNotesRequest) GetPageSize() int32 { - if x != nil { - return x.PageSize - } - return 0 -} - -func (x *ListNotesRequest) GetPageToken() string { - if x != nil { - return x.PageToken - } - return "" -} - -// Response for listing notes. -type ListNotesResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // The notes requested. - Notes []*Note `protobuf:"bytes,1,rep,name=notes,proto3" json:"notes,omitempty"` - // The next pagination token in the list response. It should be used as - // `page_token` for the following request. An empty value means no more - // results. - NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken,proto3" json:"next_page_token,omitempty"` -} - -func (x *ListNotesResponse) Reset() { - *x = ListNotesResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_proto_v1_grafeas_proto_msgTypes[11] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *ListNotesResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ListNotesResponse) ProtoMessage() {} - -func (x *ListNotesResponse) ProtoReflect() protoreflect.Message { - mi := &file_proto_v1_grafeas_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 ListNotesResponse.ProtoReflect.Descriptor instead. -func (*ListNotesResponse) Descriptor() ([]byte, []int) { - return file_proto_v1_grafeas_proto_rawDescGZIP(), []int{11} -} - -func (x *ListNotesResponse) GetNotes() []*Note { - if x != nil { - return x.Notes - } - return nil -} - -func (x *ListNotesResponse) GetNextPageToken() string { - if x != nil { - return x.NextPageToken - } - return "" -} - -// Request to delete a note. -type DeleteNoteRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // The name of the note in the form of - // `projects/[PROVIDER_ID]/notes/[NOTE_ID]`. - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` -} - -func (x *DeleteNoteRequest) Reset() { - *x = DeleteNoteRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_proto_v1_grafeas_proto_msgTypes[12] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *DeleteNoteRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*DeleteNoteRequest) ProtoMessage() {} - -func (x *DeleteNoteRequest) ProtoReflect() protoreflect.Message { - mi := &file_proto_v1_grafeas_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 DeleteNoteRequest.ProtoReflect.Descriptor instead. -func (*DeleteNoteRequest) Descriptor() ([]byte, []int) { - return file_proto_v1_grafeas_proto_rawDescGZIP(), []int{12} -} - -func (x *DeleteNoteRequest) GetName() string { - if x != nil { - return x.Name - } - return "" -} - -// Request to create a new note. -type CreateNoteRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // The name of the project in the form of `projects/[PROJECT_ID]`, under which - // the note is to be created. - Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"` - // The ID to use for this note. - NoteId string `protobuf:"bytes,2,opt,name=note_id,json=noteId,proto3" json:"note_id,omitempty"` - // The note to create. - Note *Note `protobuf:"bytes,3,opt,name=note,proto3" json:"note,omitempty"` -} - -func (x *CreateNoteRequest) Reset() { - *x = CreateNoteRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_proto_v1_grafeas_proto_msgTypes[13] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *CreateNoteRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*CreateNoteRequest) ProtoMessage() {} - -func (x *CreateNoteRequest) ProtoReflect() protoreflect.Message { - mi := &file_proto_v1_grafeas_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 CreateNoteRequest.ProtoReflect.Descriptor instead. -func (*CreateNoteRequest) Descriptor() ([]byte, []int) { - return file_proto_v1_grafeas_proto_rawDescGZIP(), []int{13} -} - -func (x *CreateNoteRequest) GetParent() string { - if x != nil { - return x.Parent - } - return "" -} - -func (x *CreateNoteRequest) GetNoteId() string { - if x != nil { - return x.NoteId - } - return "" -} - -func (x *CreateNoteRequest) GetNote() *Note { - if x != nil { - return x.Note - } - return nil -} - -// Request to update a note. -type UpdateNoteRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // The name of the note in the form of - // `projects/[PROVIDER_ID]/notes/[NOTE_ID]`. - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - // The updated note. - Note *Note `protobuf:"bytes,2,opt,name=note,proto3" json:"note,omitempty"` - // The fields to update. - UpdateMask *fieldmaskpb.FieldMask `protobuf:"bytes,3,opt,name=update_mask,json=updateMask,proto3" json:"update_mask,omitempty"` -} - -func (x *UpdateNoteRequest) Reset() { - *x = UpdateNoteRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_proto_v1_grafeas_proto_msgTypes[14] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *UpdateNoteRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*UpdateNoteRequest) ProtoMessage() {} - -func (x *UpdateNoteRequest) ProtoReflect() protoreflect.Message { - mi := &file_proto_v1_grafeas_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 UpdateNoteRequest.ProtoReflect.Descriptor instead. -func (*UpdateNoteRequest) Descriptor() ([]byte, []int) { - return file_proto_v1_grafeas_proto_rawDescGZIP(), []int{14} -} - -func (x *UpdateNoteRequest) GetName() string { - if x != nil { - return x.Name - } - return "" -} - -func (x *UpdateNoteRequest) GetNote() *Note { - if x != nil { - return x.Note - } - return nil -} - -func (x *UpdateNoteRequest) GetUpdateMask() *fieldmaskpb.FieldMask { - if x != nil { - return x.UpdateMask - } - return nil -} - -// Request to list occurrences for a note. -type ListNoteOccurrencesRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // The name of the note to list occurrences for in the form of - // `projects/[PROVIDER_ID]/notes/[NOTE_ID]`. - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - // The filter expression. - Filter string `protobuf:"bytes,2,opt,name=filter,proto3" json:"filter,omitempty"` - // Number of occurrences to return in the list. - PageSize int32 `protobuf:"varint,3,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"` - // Token to provide to skip to a particular spot in the list. - PageToken string `protobuf:"bytes,4,opt,name=page_token,json=pageToken,proto3" json:"page_token,omitempty"` -} - -func (x *ListNoteOccurrencesRequest) Reset() { - *x = ListNoteOccurrencesRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_proto_v1_grafeas_proto_msgTypes[15] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *ListNoteOccurrencesRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ListNoteOccurrencesRequest) ProtoMessage() {} - -func (x *ListNoteOccurrencesRequest) ProtoReflect() protoreflect.Message { - mi := &file_proto_v1_grafeas_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 ListNoteOccurrencesRequest.ProtoReflect.Descriptor instead. -func (*ListNoteOccurrencesRequest) Descriptor() ([]byte, []int) { - return file_proto_v1_grafeas_proto_rawDescGZIP(), []int{15} -} - -func (x *ListNoteOccurrencesRequest) GetName() string { - if x != nil { - return x.Name - } - return "" -} - -func (x *ListNoteOccurrencesRequest) GetFilter() string { - if x != nil { - return x.Filter - } - return "" -} - -func (x *ListNoteOccurrencesRequest) GetPageSize() int32 { - if x != nil { - return x.PageSize - } - return 0 -} - -func (x *ListNoteOccurrencesRequest) GetPageToken() string { - if x != nil { - return x.PageToken - } - return "" -} - -// Response for listing occurrences for a note. -type ListNoteOccurrencesResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // The occurrences attached to the specified note. - Occurrences []*Occurrence `protobuf:"bytes,1,rep,name=occurrences,proto3" json:"occurrences,omitempty"` - // Token to provide to skip to a particular spot in the list. - NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken,proto3" json:"next_page_token,omitempty"` -} - -func (x *ListNoteOccurrencesResponse) Reset() { - *x = ListNoteOccurrencesResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_proto_v1_grafeas_proto_msgTypes[16] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *ListNoteOccurrencesResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ListNoteOccurrencesResponse) ProtoMessage() {} - -func (x *ListNoteOccurrencesResponse) ProtoReflect() protoreflect.Message { - mi := &file_proto_v1_grafeas_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 ListNoteOccurrencesResponse.ProtoReflect.Descriptor instead. -func (*ListNoteOccurrencesResponse) Descriptor() ([]byte, []int) { - return file_proto_v1_grafeas_proto_rawDescGZIP(), []int{16} -} - -func (x *ListNoteOccurrencesResponse) GetOccurrences() []*Occurrence { - if x != nil { - return x.Occurrences - } - return nil -} - -func (x *ListNoteOccurrencesResponse) GetNextPageToken() string { - if x != nil { - return x.NextPageToken - } - return "" -} - -// Request to create notes in batch. -type BatchCreateNotesRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // The name of the project in the form of `projects/[PROJECT_ID]`, under which - // the notes are to be created. - Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"` - // The notes to create. Max allowed length is 1000. - Notes map[string]*Note `protobuf:"bytes,2,rep,name=notes,proto3" json:"notes,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` -} - -func (x *BatchCreateNotesRequest) Reset() { - *x = BatchCreateNotesRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_proto_v1_grafeas_proto_msgTypes[17] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *BatchCreateNotesRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*BatchCreateNotesRequest) ProtoMessage() {} - -func (x *BatchCreateNotesRequest) ProtoReflect() protoreflect.Message { - mi := &file_proto_v1_grafeas_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 BatchCreateNotesRequest.ProtoReflect.Descriptor instead. -func (*BatchCreateNotesRequest) Descriptor() ([]byte, []int) { - return file_proto_v1_grafeas_proto_rawDescGZIP(), []int{17} -} - -func (x *BatchCreateNotesRequest) GetParent() string { - if x != nil { - return x.Parent - } - return "" -} - -func (x *BatchCreateNotesRequest) GetNotes() map[string]*Note { - if x != nil { - return x.Notes - } - return nil -} - -// Response for creating notes in batch. -type BatchCreateNotesResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // The notes that were created. - Notes []*Note `protobuf:"bytes,1,rep,name=notes,proto3" json:"notes,omitempty"` -} - -func (x *BatchCreateNotesResponse) Reset() { - *x = BatchCreateNotesResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_proto_v1_grafeas_proto_msgTypes[18] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *BatchCreateNotesResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*BatchCreateNotesResponse) ProtoMessage() {} - -func (x *BatchCreateNotesResponse) ProtoReflect() protoreflect.Message { - mi := &file_proto_v1_grafeas_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 BatchCreateNotesResponse.ProtoReflect.Descriptor instead. -func (*BatchCreateNotesResponse) Descriptor() ([]byte, []int) { - return file_proto_v1_grafeas_proto_rawDescGZIP(), []int{18} -} - -func (x *BatchCreateNotesResponse) GetNotes() []*Note { - if x != nil { - return x.Notes - } - return nil -} - -// Request to create occurrences in batch. -type BatchCreateOccurrencesRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // The name of the project in the form of `projects/[PROJECT_ID]`, under which - // the occurrences are to be created. - Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"` - // The occurrences to create. Max allowed length is 1000. - Occurrences []*Occurrence `protobuf:"bytes,2,rep,name=occurrences,proto3" json:"occurrences,omitempty"` -} - -func (x *BatchCreateOccurrencesRequest) Reset() { - *x = BatchCreateOccurrencesRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_proto_v1_grafeas_proto_msgTypes[19] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *BatchCreateOccurrencesRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*BatchCreateOccurrencesRequest) ProtoMessage() {} - -func (x *BatchCreateOccurrencesRequest) ProtoReflect() protoreflect.Message { - mi := &file_proto_v1_grafeas_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 BatchCreateOccurrencesRequest.ProtoReflect.Descriptor instead. -func (*BatchCreateOccurrencesRequest) Descriptor() ([]byte, []int) { - return file_proto_v1_grafeas_proto_rawDescGZIP(), []int{19} -} - -func (x *BatchCreateOccurrencesRequest) GetParent() string { - if x != nil { - return x.Parent - } - return "" -} - -func (x *BatchCreateOccurrencesRequest) GetOccurrences() []*Occurrence { - if x != nil { - return x.Occurrences - } - return nil -} - -// Response for creating occurrences in batch. -type BatchCreateOccurrencesResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // The occurrences that were created. - Occurrences []*Occurrence `protobuf:"bytes,1,rep,name=occurrences,proto3" json:"occurrences,omitempty"` -} - -func (x *BatchCreateOccurrencesResponse) Reset() { - *x = BatchCreateOccurrencesResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_proto_v1_grafeas_proto_msgTypes[20] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *BatchCreateOccurrencesResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*BatchCreateOccurrencesResponse) ProtoMessage() {} - -func (x *BatchCreateOccurrencesResponse) ProtoReflect() protoreflect.Message { - mi := &file_proto_v1_grafeas_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 BatchCreateOccurrencesResponse.ProtoReflect.Descriptor instead. -func (*BatchCreateOccurrencesResponse) Descriptor() ([]byte, []int) { - return file_proto_v1_grafeas_proto_rawDescGZIP(), []int{20} -} - -func (x *BatchCreateOccurrencesResponse) GetOccurrences() []*Occurrence { - if x != nil { - return x.Occurrences - } - return nil -} - -var File_proto_v1_grafeas_proto protoreflect.FileDescriptor - -var file_proto_v1_grafeas_proto_rawDesc = []byte{ - 0x0a, 0x16, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x72, 0x61, 0x66, 0x65, - 0x61, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0a, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, - 0x73, 0x2e, 0x76, 0x31, 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, 0x17, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x63, - 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x62, 0x65, - 0x68, 0x61, 0x76, 0x69, 0x6f, 0x72, 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, 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, 0x20, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, - 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, 0x1a, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x76, - 0x31, 0x2f, 0x61, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x1a, 0x14, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x62, 0x75, - 0x69, 0x6c, 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x15, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x1a, 0x19, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x64, 0x65, 0x70, 0x6c, 0x6f, - 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x18, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x14, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x76, 0x31, 0x2f, - 0x69, 0x6d, 0x61, 0x67, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x16, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x1a, 0x16, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x75, 0x70, - 0x67, 0x72, 0x61, 0x64, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1c, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x76, 0x75, 0x6c, 0x6e, 0x65, 0x72, 0x61, 0x62, 0x69, 0x6c, - 0x69, 0x74, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xf3, 0x06, 0x0a, 0x0a, 0x4f, 0x63, - 0x63, 0x75, 0x72, 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, 0x21, 0x0a, 0x0c, - 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x75, 0x72, 0x69, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0b, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x55, 0x72, 0x69, 0x12, - 0x1b, 0x0a, 0x09, 0x6e, 0x6f, 0x74, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x08, 0x6e, 0x6f, 0x74, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x28, 0x0a, 0x04, - 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x14, 0x2e, 0x67, 0x72, 0x61, - 0x66, 0x65, 0x61, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x74, 0x65, 0x4b, 0x69, 0x6e, 0x64, - 0x52, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x72, 0x65, 0x6d, 0x65, 0x64, 0x69, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x72, 0x65, 0x6d, - 0x65, 0x64, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3b, 0x0a, 0x0b, 0x63, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 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, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, - 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x3b, 0x0a, 0x0b, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, - 0x74, 0x69, 0x6d, 0x65, 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, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, - 0x6d, 0x65, 0x12, 0x4b, 0x0a, 0x0d, 0x76, 0x75, 0x6c, 0x6e, 0x65, 0x72, 0x61, 0x62, 0x69, 0x6c, - 0x69, 0x74, 0x79, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x67, 0x72, 0x61, 0x66, - 0x65, 0x61, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x75, 0x6c, 0x6e, 0x65, 0x72, 0x61, 0x62, 0x69, - 0x6c, 0x69, 0x74, 0x79, 0x4f, 0x63, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x48, 0x00, - 0x52, 0x0d, 0x76, 0x75, 0x6c, 0x6e, 0x65, 0x72, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x12, - 0x33, 0x0a, 0x05, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, - 0x2e, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x75, 0x69, 0x6c, - 0x64, 0x4f, 0x63, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x48, 0x00, 0x52, 0x05, 0x62, - 0x75, 0x69, 0x6c, 0x64, 0x12, 0x33, 0x0a, 0x05, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x18, 0x0a, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, 0x76, 0x31, - 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x4f, 0x63, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x65, - 0x48, 0x00, 0x52, 0x05, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x39, 0x0a, 0x07, 0x70, 0x61, 0x63, - 0x6b, 0x61, 0x67, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x67, 0x72, 0x61, - 0x66, 0x65, 0x61, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x4f, - 0x63, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x48, 0x00, 0x52, 0x07, 0x70, 0x61, 0x63, - 0x6b, 0x61, 0x67, 0x65, 0x12, 0x42, 0x0a, 0x0a, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, - 0x6e, 0x74, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x67, 0x72, 0x61, 0x66, 0x65, - 0x61, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, - 0x4f, 0x63, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x48, 0x00, 0x52, 0x0a, 0x64, 0x65, - 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x3f, 0x0a, 0x09, 0x64, 0x69, 0x73, 0x63, - 0x6f, 0x76, 0x65, 0x72, 0x79, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x67, 0x72, - 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, - 0x72, 0x79, 0x4f, 0x63, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x48, 0x00, 0x52, 0x09, - 0x64, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x12, 0x45, 0x0a, 0x0b, 0x61, 0x74, 0x74, - 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, - 0x2e, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x74, 0x74, 0x65, - 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4f, 0x63, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, - 0x65, 0x48, 0x00, 0x52, 0x0b, 0x61, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x12, 0x39, 0x0a, 0x07, 0x75, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x18, 0x0f, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x1d, 0x2e, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x55, - 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x4f, 0x63, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x65, - 0x48, 0x00, 0x52, 0x07, 0x75, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x3a, 0x47, 0xea, 0x41, 0x44, - 0x0a, 0x15, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, 0x69, 0x6f, 0x2f, 0x4f, 0x63, 0x63, - 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x2b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, - 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x6f, 0x63, 0x63, 0x75, - 0x72, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x6f, 0x63, 0x63, 0x75, 0x72, 0x72, 0x65, - 0x6e, 0x63, 0x65, 0x7d, 0x42, 0x09, 0x0a, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x22, - 0xca, 0x07, 0x0a, 0x04, 0x4e, 0x6f, 0x74, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x2b, 0x0a, 0x11, - 0x73, 0x68, 0x6f, 0x72, 0x74, 0x5f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, - 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x73, 0x68, 0x6f, 0x72, 0x74, 0x44, 0x65, - 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x29, 0x0a, 0x10, 0x6c, 0x6f, 0x6e, - 0x67, 0x5f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0f, 0x6c, 0x6f, 0x6e, 0x67, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, - 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x28, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x0e, 0x32, 0x14, 0x2e, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, 0x76, 0x31, 0x2e, - 0x4e, 0x6f, 0x74, 0x65, 0x4b, 0x69, 0x6e, 0x64, 0x52, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x12, 0x37, - 0x0a, 0x0b, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x05, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, 0x76, 0x31, - 0x2e, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x55, 0x72, 0x6c, 0x52, 0x0a, 0x72, 0x65, 0x6c, - 0x61, 0x74, 0x65, 0x64, 0x55, 0x72, 0x6c, 0x12, 0x43, 0x0a, 0x0f, 0x65, 0x78, 0x70, 0x69, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x69, 0x6d, 0x65, 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, 0x0e, 0x65, 0x78, - 0x70, 0x69, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x3b, 0x0a, 0x0b, - 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 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, 0x0a, 0x63, - 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x3b, 0x0a, 0x0b, 0x75, 0x70, 0x64, - 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 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, 0x0a, 0x75, 0x70, 0x64, 0x61, - 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x2c, 0x0a, 0x12, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x65, - 0x64, 0x5f, 0x6e, 0x6f, 0x74, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x09, 0x20, 0x03, - 0x28, 0x09, 0x52, 0x10, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x4e, 0x6f, 0x74, 0x65, 0x4e, - 0x61, 0x6d, 0x65, 0x73, 0x12, 0x45, 0x0a, 0x0d, 0x76, 0x75, 0x6c, 0x6e, 0x65, 0x72, 0x61, 0x62, - 0x69, 0x6c, 0x69, 0x74, 0x79, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x67, 0x72, - 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x75, 0x6c, 0x6e, 0x65, 0x72, 0x61, - 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x4e, 0x6f, 0x74, 0x65, 0x48, 0x00, 0x52, 0x0d, 0x76, 0x75, - 0x6c, 0x6e, 0x65, 0x72, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x12, 0x2d, 0x0a, 0x05, 0x62, - 0x75, 0x69, 0x6c, 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x67, 0x72, 0x61, - 0x66, 0x65, 0x61, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x4e, 0x6f, 0x74, - 0x65, 0x48, 0x00, 0x52, 0x05, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x12, 0x2d, 0x0a, 0x05, 0x69, 0x6d, - 0x61, 0x67, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x67, 0x72, 0x61, 0x66, - 0x65, 0x61, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x4e, 0x6f, 0x74, 0x65, - 0x48, 0x00, 0x52, 0x05, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x33, 0x0a, 0x07, 0x70, 0x61, 0x63, - 0x6b, 0x61, 0x67, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x72, 0x61, - 0x66, 0x65, 0x61, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x4e, - 0x6f, 0x74, 0x65, 0x48, 0x00, 0x52, 0x07, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x12, 0x3c, - 0x0a, 0x0a, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x0e, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, 0x76, 0x31, 0x2e, - 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x4e, 0x6f, 0x74, 0x65, 0x48, 0x00, - 0x52, 0x0a, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x39, 0x0a, 0x09, - 0x64, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x19, 0x2e, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x69, 0x73, - 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x4e, 0x6f, 0x74, 0x65, 0x48, 0x00, 0x52, 0x09, 0x64, 0x69, - 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x12, 0x3f, 0x0a, 0x0b, 0x61, 0x74, 0x74, 0x65, 0x73, - 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, - 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x74, 0x74, 0x65, 0x73, 0x74, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x6f, 0x74, 0x65, 0x48, 0x00, 0x52, 0x0b, 0x61, 0x74, 0x74, - 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x33, 0x0a, 0x07, 0x75, 0x70, 0x67, 0x72, - 0x61, 0x64, 0x65, 0x18, 0x11, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x72, 0x61, 0x66, - 0x65, 0x61, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x4e, 0x6f, - 0x74, 0x65, 0x48, 0x00, 0x52, 0x07, 0x75, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x3a, 0x35, 0xea, - 0x41, 0x32, 0x0a, 0x0f, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, 0x69, 0x6f, 0x2f, 0x4e, - 0x6f, 0x74, 0x65, 0x12, 0x1f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, - 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x6e, 0x6f, 0x74, 0x65, 0x73, 0x2f, 0x7b, 0x6e, - 0x6f, 0x74, 0x65, 0x7d, 0x42, 0x06, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0x49, 0x0a, 0x14, - 0x47, 0x65, 0x74, 0x4f, 0x63, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x12, 0x31, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x42, 0x1d, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x17, 0x0a, 0x15, 0x67, 0x72, 0x61, 0x66, - 0x65, 0x61, 0x73, 0x2e, 0x69, 0x6f, 0x2f, 0x4f, 0x63, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, - 0x65, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0xa0, 0x01, 0x0a, 0x16, 0x4c, 0x69, 0x73, 0x74, - 0x4f, 0x63, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x12, 0x32, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x42, 0x1a, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x14, 0x0a, 0x12, 0x67, 0x72, 0x61, 0x66, - 0x65, 0x61, 0x73, 0x2e, 0x69, 0x6f, 0x2f, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x06, - 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x1b, - 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x70, - 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x09, 0x70, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x7b, 0x0a, 0x17, 0x4c, 0x69, - 0x73, 0x74, 0x4f, 0x63, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x38, 0x0a, 0x0b, 0x6f, 0x63, 0x63, 0x75, 0x72, 0x72, 0x65, - 0x6e, 0x63, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x72, 0x61, - 0x66, 0x65, 0x61, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x4f, 0x63, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, - 0x63, 0x65, 0x52, 0x0b, 0x6f, 0x63, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x12, - 0x26, 0x0a, 0x0f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, - 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6e, 0x65, 0x78, 0x74, 0x50, 0x61, - 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x4c, 0x0a, 0x17, 0x44, 0x65, 0x6c, 0x65, 0x74, - 0x65, 0x4f, 0x63, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x12, 0x31, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x42, 0x1d, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x17, 0x0a, 0x15, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, - 0x73, 0x2e, 0x69, 0x6f, 0x2f, 0x4f, 0x63, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, - 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x8a, 0x01, 0x0a, 0x17, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, - 0x4f, 0x63, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x12, 0x32, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x42, 0x1a, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x14, 0x0a, 0x12, 0x67, 0x72, 0x61, 0x66, 0x65, - 0x61, 0x73, 0x2e, 0x69, 0x6f, 0x2f, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x06, 0x70, - 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x3b, 0x0a, 0x0a, 0x6f, 0x63, 0x63, 0x75, 0x72, 0x72, 0x65, - 0x6e, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x72, 0x61, 0x66, - 0x65, 0x61, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x4f, 0x63, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, - 0x65, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0a, 0x6f, 0x63, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, - 0x63, 0x65, 0x22, 0xc6, 0x01, 0x0a, 0x17, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x63, 0x63, - 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x31, - 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x1d, 0xe0, 0x41, - 0x02, 0xfa, 0x41, 0x17, 0x0a, 0x15, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, 0x69, 0x6f, - 0x2f, 0x4f, 0x63, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x04, 0x6e, 0x61, 0x6d, - 0x65, 0x12, 0x3b, 0x0a, 0x0a, 0x6f, 0x63, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, - 0x76, 0x31, 0x2e, 0x4f, 0x63, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x42, 0x03, 0xe0, - 0x41, 0x02, 0x52, 0x0a, 0x6f, 0x63, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x3b, - 0x0a, 0x0b, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 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, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x52, - 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x73, 0x6b, 0x22, 0x3d, 0x0a, 0x0e, 0x47, - 0x65, 0x74, 0x4e, 0x6f, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2b, 0x0a, - 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x17, 0xe0, 0x41, 0x02, - 0xfa, 0x41, 0x11, 0x0a, 0x0f, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, 0x69, 0x6f, 0x2f, - 0x4e, 0x6f, 0x74, 0x65, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x4d, 0x0a, 0x18, 0x47, 0x65, - 0x74, 0x4f, 0x63, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x4e, 0x6f, 0x74, 0x65, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x31, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x42, 0x1d, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x17, 0x0a, 0x15, 0x67, 0x72, - 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, 0x69, 0x6f, 0x2f, 0x4f, 0x63, 0x63, 0x75, 0x72, 0x72, 0x65, - 0x6e, 0x63, 0x65, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x9a, 0x01, 0x0a, 0x10, 0x4c, 0x69, - 0x73, 0x74, 0x4e, 0x6f, 0x74, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x32, - 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x1a, - 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x14, 0x0a, 0x12, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, - 0x69, 0x6f, 0x2f, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, - 0x6e, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x61, - 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, - 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x65, 0x5f, - 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x61, 0x67, - 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x63, 0x0a, 0x11, 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x6f, - 0x74, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x26, 0x0a, 0x05, 0x6e, - 0x6f, 0x74, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x67, 0x72, 0x61, - 0x66, 0x65, 0x61, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x74, 0x65, 0x52, 0x05, 0x6e, 0x6f, - 0x74, 0x65, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x70, 0x61, 0x67, 0x65, - 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6e, 0x65, - 0x78, 0x74, 0x50, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x40, 0x0a, 0x11, 0x44, - 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4e, 0x6f, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x12, 0x2b, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x17, - 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x11, 0x0a, 0x0f, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, - 0x69, 0x6f, 0x2f, 0x4e, 0x6f, 0x74, 0x65, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x90, 0x01, - 0x0a, 0x11, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4e, 0x6f, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x12, 0x32, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x42, 0x1a, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x14, 0x0a, 0x12, 0x67, 0x72, 0x61, - 0x66, 0x65, 0x61, 0x73, 0x2e, 0x69, 0x6f, 0x2f, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, - 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x1c, 0x0a, 0x07, 0x6e, 0x6f, 0x74, 0x65, 0x5f, - 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x06, 0x6e, - 0x6f, 0x74, 0x65, 0x49, 0x64, 0x12, 0x29, 0x0a, 0x04, 0x6e, 0x6f, 0x74, 0x65, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, 0x76, 0x31, - 0x2e, 0x4e, 0x6f, 0x74, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x04, 0x6e, 0x6f, 0x74, 0x65, - 0x22, 0xa8, 0x01, 0x0a, 0x11, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4e, 0x6f, 0x74, 0x65, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2b, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x42, 0x17, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x11, 0x0a, 0x0f, 0x67, 0x72, - 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, 0x69, 0x6f, 0x2f, 0x4e, 0x6f, 0x74, 0x65, 0x52, 0x04, 0x6e, - 0x61, 0x6d, 0x65, 0x12, 0x29, 0x0a, 0x04, 0x6e, 0x6f, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x10, 0x2e, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x4e, - 0x6f, 0x74, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x04, 0x6e, 0x6f, 0x74, 0x65, 0x12, 0x3b, - 0x0a, 0x0b, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 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, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x52, - 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x73, 0x6b, 0x22, 0x9d, 0x01, 0x0a, 0x1a, - 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x6f, 0x74, 0x65, 0x4f, 0x63, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, - 0x63, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2b, 0x0a, 0x04, 0x6e, 0x61, - 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x17, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x11, - 0x0a, 0x0f, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, 0x69, 0x6f, 0x2f, 0x4e, 0x6f, 0x74, - 0x65, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, - 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, - 0x1b, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x1d, 0x0a, 0x0a, - 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x09, 0x70, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x7f, 0x0a, 0x1b, 0x4c, - 0x69, 0x73, 0x74, 0x4e, 0x6f, 0x74, 0x65, 0x4f, 0x63, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, - 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x38, 0x0a, 0x0b, 0x6f, 0x63, - 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x16, 0x2e, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x4f, 0x63, 0x63, - 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x0b, 0x6f, 0x63, 0x63, 0x75, 0x72, 0x72, 0x65, - 0x6e, 0x63, 0x65, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x70, 0x61, 0x67, - 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6e, - 0x65, 0x78, 0x74, 0x50, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0xe4, 0x01, 0x0a, - 0x17, 0x42, 0x61, 0x74, 0x63, 0x68, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4e, 0x6f, 0x74, 0x65, - 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x32, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, - 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x1a, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x14, - 0x0a, 0x12, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, 0x69, 0x6f, 0x2f, 0x50, 0x72, 0x6f, - 0x6a, 0x65, 0x63, 0x74, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x49, 0x0a, 0x05, - 0x6e, 0x6f, 0x74, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x67, 0x72, - 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x61, 0x74, 0x63, 0x68, 0x43, 0x72, - 0x65, 0x61, 0x74, 0x65, 0x4e, 0x6f, 0x74, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x2e, 0x4e, 0x6f, 0x74, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x03, 0xe0, 0x41, 0x02, - 0x52, 0x05, 0x6e, 0x6f, 0x74, 0x65, 0x73, 0x1a, 0x4a, 0x0a, 0x0a, 0x4e, 0x6f, 0x74, 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, 0x26, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, - 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x74, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, - 0x02, 0x38, 0x01, 0x22, 0x42, 0x0a, 0x18, 0x42, 0x61, 0x74, 0x63, 0x68, 0x43, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x4e, 0x6f, 0x74, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, - 0x26, 0x0a, 0x05, 0x6e, 0x6f, 0x74, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, - 0x2e, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x74, 0x65, - 0x52, 0x05, 0x6e, 0x6f, 0x74, 0x65, 0x73, 0x22, 0x92, 0x01, 0x0a, 0x1d, 0x42, 0x61, 0x74, 0x63, - 0x68, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, 0x63, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, - 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x32, 0x0a, 0x06, 0x70, 0x61, 0x72, - 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x1a, 0xe0, 0x41, 0x02, 0xfa, 0x41, - 0x14, 0x0a, 0x12, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, 0x69, 0x6f, 0x2f, 0x50, 0x72, - 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x3d, 0x0a, - 0x0b, 0x6f, 0x63, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, 0x76, 0x31, 0x2e, - 0x4f, 0x63, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, - 0x0b, 0x6f, 0x63, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x22, 0x5a, 0x0a, 0x1e, - 0x42, 0x61, 0x74, 0x63, 0x68, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, 0x63, 0x63, 0x75, 0x72, - 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x38, - 0x0a, 0x0b, 0x6f, 0x63, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x18, 0x01, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, 0x76, 0x31, - 0x2e, 0x4f, 0x63, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x0b, 0x6f, 0x63, 0x63, - 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x32, 0xed, 0x0f, 0x0a, 0x07, 0x47, 0x72, 0x61, - 0x66, 0x65, 0x61, 0x73, 0x12, 0x7d, 0x0a, 0x0d, 0x47, 0x65, 0x74, 0x4f, 0x63, 0x63, 0x75, 0x72, - 0x72, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x20, 0x2e, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, - 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4f, 0x63, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x65, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, - 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x4f, 0x63, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x22, - 0x32, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x25, 0x12, 0x23, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x6e, 0x61, - 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6f, 0x63, - 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x2f, 0x2a, 0x7d, 0xda, 0x41, 0x04, 0x6e, - 0x61, 0x6d, 0x65, 0x12, 0x97, 0x01, 0x0a, 0x0f, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x63, 0x63, 0x75, - 0x72, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x12, 0x22, 0x2e, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, - 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x63, 0x63, 0x75, 0x72, 0x72, 0x65, - 0x6e, 0x63, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x67, 0x72, - 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x63, 0x63, - 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x3b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x25, 0x12, 0x23, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x70, - 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, - 0x7d, 0x2f, 0x6f, 0x63, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0xda, 0x41, 0x0d, - 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x2c, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x83, 0x01, - 0x0a, 0x10, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4f, 0x63, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, - 0x63, 0x65, 0x12, 0x23, 0x2e, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, 0x76, 0x31, 0x2e, - 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4f, 0x63, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 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, - 0x32, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x25, 0x2a, 0x23, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x6e, 0x61, - 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6f, 0x63, - 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x2f, 0x2a, 0x7d, 0xda, 0x41, 0x04, 0x6e, - 0x61, 0x6d, 0x65, 0x12, 0x9c, 0x01, 0x0a, 0x10, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, 0x63, - 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x23, 0x2e, 0x67, 0x72, 0x61, 0x66, 0x65, - 0x61, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, 0x63, 0x63, 0x75, - 0x72, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, - 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x4f, 0x63, 0x63, 0x75, 0x72, - 0x72, 0x65, 0x6e, 0x63, 0x65, 0x22, 0x4b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x31, 0x22, 0x23, 0x2f, - 0x76, 0x31, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, - 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x6f, 0x63, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, - 0x65, 0x73, 0x3a, 0x0a, 0x6f, 0x63, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x65, 0xda, 0x41, - 0x11, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x2c, 0x6f, 0x63, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, - 0x63, 0x65, 0x12, 0xc0, 0x01, 0x0a, 0x16, 0x42, 0x61, 0x74, 0x63, 0x68, 0x43, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x4f, 0x63, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x12, 0x29, 0x2e, - 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x61, 0x74, 0x63, 0x68, - 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, 0x63, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x65, - 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e, 0x67, 0x72, 0x61, 0x66, 0x65, - 0x61, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x61, 0x74, 0x63, 0x68, 0x43, 0x72, 0x65, 0x61, 0x74, - 0x65, 0x4f, 0x63, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x4f, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x34, 0x22, 0x2f, 0x2f, 0x76, - 0x31, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, - 0x74, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x6f, 0x63, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x65, - 0x73, 0x3a, 0x62, 0x61, 0x74, 0x63, 0x68, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x3a, 0x01, 0x2a, - 0xda, 0x41, 0x12, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x2c, 0x6f, 0x63, 0x63, 0x75, 0x72, 0x72, - 0x65, 0x6e, 0x63, 0x65, 0x73, 0x12, 0xa6, 0x01, 0x0a, 0x10, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x4f, 0x63, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x23, 0x2e, 0x67, 0x72, 0x61, - 0x66, 0x65, 0x61, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x63, - 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x16, 0x2e, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x4f, 0x63, 0x63, - 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x22, 0x55, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x31, 0x32, - 0x23, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, - 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6f, 0x63, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x65, - 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x0a, 0x6f, 0x63, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x65, - 0xda, 0x41, 0x1b, 0x6e, 0x61, 0x6d, 0x65, 0x2c, 0x6f, 0x63, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, - 0x63, 0x65, 0x2c, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x12, 0x85, - 0x01, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x4f, 0x63, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x65, - 0x4e, 0x6f, 0x74, 0x65, 0x12, 0x24, 0x2e, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, 0x76, - 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4f, 0x63, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x4e, - 0x6f, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x10, 0x2e, 0x67, 0x72, 0x61, - 0x66, 0x65, 0x61, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x74, 0x65, 0x22, 0x38, 0x82, 0xd3, - 0xe4, 0x93, 0x02, 0x2b, 0x12, 0x29, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, - 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6f, 0x63, 0x63, 0x75, 0x72, - 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x6e, 0x6f, 0x74, 0x65, 0x73, 0xda, - 0x41, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x65, 0x0a, 0x07, 0x47, 0x65, 0x74, 0x4e, 0x6f, 0x74, - 0x65, 0x12, 0x1a, 0x2e, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x47, - 0x65, 0x74, 0x4e, 0x6f, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x10, 0x2e, - 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x74, 0x65, 0x22, - 0x2c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1f, 0x12, 0x1d, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x6e, 0x61, - 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6e, 0x6f, - 0x74, 0x65, 0x73, 0x2f, 0x2a, 0x7d, 0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x7f, 0x0a, - 0x09, 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x6f, 0x74, 0x65, 0x73, 0x12, 0x1c, 0x2e, 0x67, 0x72, 0x61, - 0x66, 0x65, 0x61, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x6f, 0x74, 0x65, - 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x67, 0x72, 0x61, 0x66, 0x65, - 0x61, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x6f, 0x74, 0x65, 0x73, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x35, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1f, 0x12, - 0x1d, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, - 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x6e, 0x6f, 0x74, 0x65, 0x73, 0xda, 0x41, - 0x0d, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x2c, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x71, - 0x0a, 0x0a, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4e, 0x6f, 0x74, 0x65, 0x12, 0x1d, 0x2e, 0x67, - 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, - 0x4e, 0x6f, 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, 0x2c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1f, 0x2a, 0x1d, 0x2f, 0x76, 0x31, - 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, - 0x2a, 0x2f, 0x6e, 0x6f, 0x74, 0x65, 0x73, 0x2f, 0x2a, 0x7d, 0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d, - 0x65, 0x12, 0x80, 0x01, 0x0a, 0x0a, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4e, 0x6f, 0x74, 0x65, - 0x12, 0x1d, 0x2e, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, - 0x65, 0x61, 0x74, 0x65, 0x4e, 0x6f, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x10, 0x2e, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x74, - 0x65, 0x22, 0x41, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x25, 0x22, 0x1d, 0x2f, 0x76, 0x31, 0x2f, 0x7b, - 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, - 0x2a, 0x7d, 0x2f, 0x6e, 0x6f, 0x74, 0x65, 0x73, 0x3a, 0x04, 0x6e, 0x6f, 0x74, 0x65, 0xda, 0x41, - 0x13, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x2c, 0x6e, 0x6f, 0x74, 0x65, 0x5f, 0x69, 0x64, 0x2c, - 0x6e, 0x6f, 0x74, 0x65, 0x12, 0xa2, 0x01, 0x0a, 0x10, 0x42, 0x61, 0x74, 0x63, 0x68, 0x43, 0x72, - 0x65, 0x61, 0x74, 0x65, 0x4e, 0x6f, 0x74, 0x65, 0x73, 0x12, 0x23, 0x2e, 0x67, 0x72, 0x61, 0x66, - 0x65, 0x61, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x61, 0x74, 0x63, 0x68, 0x43, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x4e, 0x6f, 0x74, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, - 0x2e, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x61, 0x74, 0x63, - 0x68, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4e, 0x6f, 0x74, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x43, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2e, 0x22, 0x29, 0x2f, 0x76, - 0x31, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, - 0x74, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x6e, 0x6f, 0x74, 0x65, 0x73, 0x3a, 0x62, 0x61, 0x74, 0x63, - 0x68, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x3a, 0x01, 0x2a, 0xda, 0x41, 0x0c, 0x70, 0x61, 0x72, - 0x65, 0x6e, 0x74, 0x2c, 0x6e, 0x6f, 0x74, 0x65, 0x73, 0x12, 0x82, 0x01, 0x0a, 0x0a, 0x55, 0x70, - 0x64, 0x61, 0x74, 0x65, 0x4e, 0x6f, 0x74, 0x65, 0x12, 0x1d, 0x2e, 0x67, 0x72, 0x61, 0x66, 0x65, - 0x61, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4e, 0x6f, 0x74, 0x65, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x10, 0x2e, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, - 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x74, 0x65, 0x22, 0x43, 0x82, 0xd3, 0xe4, 0x93, 0x02, - 0x25, 0x32, 0x1d, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, - 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6e, 0x6f, 0x74, 0x65, 0x73, 0x2f, 0x2a, 0x7d, - 0x3a, 0x04, 0x6e, 0x6f, 0x74, 0x65, 0xda, 0x41, 0x15, 0x6e, 0x61, 0x6d, 0x65, 0x2c, 0x6e, 0x6f, - 0x74, 0x65, 0x2c, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x12, 0xa7, - 0x01, 0x0a, 0x13, 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x6f, 0x74, 0x65, 0x4f, 0x63, 0x63, 0x75, 0x72, - 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x12, 0x26, 0x2e, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, - 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x6f, 0x74, 0x65, 0x4f, 0x63, 0x63, 0x75, - 0x72, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, - 0x2e, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, - 0x4e, 0x6f, 0x74, 0x65, 0x4f, 0x63, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x3f, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2b, 0x12, - 0x29, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, - 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6e, 0x6f, 0x74, 0x65, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x6f, - 0x63, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0xda, 0x41, 0x0b, 0x6e, 0x61, 0x6d, - 0x65, 0x2c, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x42, 0x4d, 0x0a, 0x0d, 0x69, 0x6f, 0x2e, 0x67, - 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, 0x76, 0x31, 0x50, 0x01, 0x5a, 0x34, 0x67, 0x69, 0x74, - 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x2f, - 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x76, 0x31, - 0x2f, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x5f, 0x67, 0x6f, 0x5f, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0xa2, 0x02, 0x03, 0x47, 0x52, 0x41, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, -} - -var ( - file_proto_v1_grafeas_proto_rawDescOnce sync.Once - file_proto_v1_grafeas_proto_rawDescData = file_proto_v1_grafeas_proto_rawDesc -) - -func file_proto_v1_grafeas_proto_rawDescGZIP() []byte { - file_proto_v1_grafeas_proto_rawDescOnce.Do(func() { - file_proto_v1_grafeas_proto_rawDescData = protoimpl.X.CompressGZIP(file_proto_v1_grafeas_proto_rawDescData) - }) - return file_proto_v1_grafeas_proto_rawDescData -} - -var file_proto_v1_grafeas_proto_msgTypes = make([]protoimpl.MessageInfo, 22) -var file_proto_v1_grafeas_proto_goTypes = []interface{}{ - (*Occurrence)(nil), // 0: grafeas.v1.Occurrence - (*Note)(nil), // 1: grafeas.v1.Note - (*GetOccurrenceRequest)(nil), // 2: grafeas.v1.GetOccurrenceRequest - (*ListOccurrencesRequest)(nil), // 3: grafeas.v1.ListOccurrencesRequest - (*ListOccurrencesResponse)(nil), // 4: grafeas.v1.ListOccurrencesResponse - (*DeleteOccurrenceRequest)(nil), // 5: grafeas.v1.DeleteOccurrenceRequest - (*CreateOccurrenceRequest)(nil), // 6: grafeas.v1.CreateOccurrenceRequest - (*UpdateOccurrenceRequest)(nil), // 7: grafeas.v1.UpdateOccurrenceRequest - (*GetNoteRequest)(nil), // 8: grafeas.v1.GetNoteRequest - (*GetOccurrenceNoteRequest)(nil), // 9: grafeas.v1.GetOccurrenceNoteRequest - (*ListNotesRequest)(nil), // 10: grafeas.v1.ListNotesRequest - (*ListNotesResponse)(nil), // 11: grafeas.v1.ListNotesResponse - (*DeleteNoteRequest)(nil), // 12: grafeas.v1.DeleteNoteRequest - (*CreateNoteRequest)(nil), // 13: grafeas.v1.CreateNoteRequest - (*UpdateNoteRequest)(nil), // 14: grafeas.v1.UpdateNoteRequest - (*ListNoteOccurrencesRequest)(nil), // 15: grafeas.v1.ListNoteOccurrencesRequest - (*ListNoteOccurrencesResponse)(nil), // 16: grafeas.v1.ListNoteOccurrencesResponse - (*BatchCreateNotesRequest)(nil), // 17: grafeas.v1.BatchCreateNotesRequest - (*BatchCreateNotesResponse)(nil), // 18: grafeas.v1.BatchCreateNotesResponse - (*BatchCreateOccurrencesRequest)(nil), // 19: grafeas.v1.BatchCreateOccurrencesRequest - (*BatchCreateOccurrencesResponse)(nil), // 20: grafeas.v1.BatchCreateOccurrencesResponse - nil, // 21: grafeas.v1.BatchCreateNotesRequest.NotesEntry - (NoteKind)(0), // 22: grafeas.v1.NoteKind - (*timestamppb.Timestamp)(nil), // 23: google.protobuf.Timestamp - (*VulnerabilityOccurrence)(nil), // 24: grafeas.v1.VulnerabilityOccurrence - (*BuildOccurrence)(nil), // 25: grafeas.v1.BuildOccurrence - (*ImageOccurrence)(nil), // 26: grafeas.v1.ImageOccurrence - (*PackageOccurrence)(nil), // 27: grafeas.v1.PackageOccurrence - (*DeploymentOccurrence)(nil), // 28: grafeas.v1.DeploymentOccurrence - (*DiscoveryOccurrence)(nil), // 29: grafeas.v1.DiscoveryOccurrence - (*AttestationOccurrence)(nil), // 30: grafeas.v1.AttestationOccurrence - (*UpgradeOccurrence)(nil), // 31: grafeas.v1.UpgradeOccurrence - (*RelatedUrl)(nil), // 32: grafeas.v1.RelatedUrl - (*VulnerabilityNote)(nil), // 33: grafeas.v1.VulnerabilityNote - (*BuildNote)(nil), // 34: grafeas.v1.BuildNote - (*ImageNote)(nil), // 35: grafeas.v1.ImageNote - (*PackageNote)(nil), // 36: grafeas.v1.PackageNote - (*DeploymentNote)(nil), // 37: grafeas.v1.DeploymentNote - (*DiscoveryNote)(nil), // 38: grafeas.v1.DiscoveryNote - (*AttestationNote)(nil), // 39: grafeas.v1.AttestationNote - (*UpgradeNote)(nil), // 40: grafeas.v1.UpgradeNote - (*fieldmaskpb.FieldMask)(nil), // 41: google.protobuf.FieldMask - (*emptypb.Empty)(nil), // 42: google.protobuf.Empty -} -var file_proto_v1_grafeas_proto_depIdxs = []int32{ - 22, // 0: grafeas.v1.Occurrence.kind:type_name -> grafeas.v1.NoteKind - 23, // 1: grafeas.v1.Occurrence.create_time:type_name -> google.protobuf.Timestamp - 23, // 2: grafeas.v1.Occurrence.update_time:type_name -> google.protobuf.Timestamp - 24, // 3: grafeas.v1.Occurrence.vulnerability:type_name -> grafeas.v1.VulnerabilityOccurrence - 25, // 4: grafeas.v1.Occurrence.build:type_name -> grafeas.v1.BuildOccurrence - 26, // 5: grafeas.v1.Occurrence.image:type_name -> grafeas.v1.ImageOccurrence - 27, // 6: grafeas.v1.Occurrence.package:type_name -> grafeas.v1.PackageOccurrence - 28, // 7: grafeas.v1.Occurrence.deployment:type_name -> grafeas.v1.DeploymentOccurrence - 29, // 8: grafeas.v1.Occurrence.discovery:type_name -> grafeas.v1.DiscoveryOccurrence - 30, // 9: grafeas.v1.Occurrence.attestation:type_name -> grafeas.v1.AttestationOccurrence - 31, // 10: grafeas.v1.Occurrence.upgrade:type_name -> grafeas.v1.UpgradeOccurrence - 22, // 11: grafeas.v1.Note.kind:type_name -> grafeas.v1.NoteKind - 32, // 12: grafeas.v1.Note.related_url:type_name -> grafeas.v1.RelatedUrl - 23, // 13: grafeas.v1.Note.expiration_time:type_name -> google.protobuf.Timestamp - 23, // 14: grafeas.v1.Note.create_time:type_name -> google.protobuf.Timestamp - 23, // 15: grafeas.v1.Note.update_time:type_name -> google.protobuf.Timestamp - 33, // 16: grafeas.v1.Note.vulnerability:type_name -> grafeas.v1.VulnerabilityNote - 34, // 17: grafeas.v1.Note.build:type_name -> grafeas.v1.BuildNote - 35, // 18: grafeas.v1.Note.image:type_name -> grafeas.v1.ImageNote - 36, // 19: grafeas.v1.Note.package:type_name -> grafeas.v1.PackageNote - 37, // 20: grafeas.v1.Note.deployment:type_name -> grafeas.v1.DeploymentNote - 38, // 21: grafeas.v1.Note.discovery:type_name -> grafeas.v1.DiscoveryNote - 39, // 22: grafeas.v1.Note.attestation:type_name -> grafeas.v1.AttestationNote - 40, // 23: grafeas.v1.Note.upgrade:type_name -> grafeas.v1.UpgradeNote - 0, // 24: grafeas.v1.ListOccurrencesResponse.occurrences:type_name -> grafeas.v1.Occurrence - 0, // 25: grafeas.v1.CreateOccurrenceRequest.occurrence:type_name -> grafeas.v1.Occurrence - 0, // 26: grafeas.v1.UpdateOccurrenceRequest.occurrence:type_name -> grafeas.v1.Occurrence - 41, // 27: grafeas.v1.UpdateOccurrenceRequest.update_mask:type_name -> google.protobuf.FieldMask - 1, // 28: grafeas.v1.ListNotesResponse.notes:type_name -> grafeas.v1.Note - 1, // 29: grafeas.v1.CreateNoteRequest.note:type_name -> grafeas.v1.Note - 1, // 30: grafeas.v1.UpdateNoteRequest.note:type_name -> grafeas.v1.Note - 41, // 31: grafeas.v1.UpdateNoteRequest.update_mask:type_name -> google.protobuf.FieldMask - 0, // 32: grafeas.v1.ListNoteOccurrencesResponse.occurrences:type_name -> grafeas.v1.Occurrence - 21, // 33: grafeas.v1.BatchCreateNotesRequest.notes:type_name -> grafeas.v1.BatchCreateNotesRequest.NotesEntry - 1, // 34: grafeas.v1.BatchCreateNotesResponse.notes:type_name -> grafeas.v1.Note - 0, // 35: grafeas.v1.BatchCreateOccurrencesRequest.occurrences:type_name -> grafeas.v1.Occurrence - 0, // 36: grafeas.v1.BatchCreateOccurrencesResponse.occurrences:type_name -> grafeas.v1.Occurrence - 1, // 37: grafeas.v1.BatchCreateNotesRequest.NotesEntry.value:type_name -> grafeas.v1.Note - 2, // 38: grafeas.v1.Grafeas.GetOccurrence:input_type -> grafeas.v1.GetOccurrenceRequest - 3, // 39: grafeas.v1.Grafeas.ListOccurrences:input_type -> grafeas.v1.ListOccurrencesRequest - 5, // 40: grafeas.v1.Grafeas.DeleteOccurrence:input_type -> grafeas.v1.DeleteOccurrenceRequest - 6, // 41: grafeas.v1.Grafeas.CreateOccurrence:input_type -> grafeas.v1.CreateOccurrenceRequest - 19, // 42: grafeas.v1.Grafeas.BatchCreateOccurrences:input_type -> grafeas.v1.BatchCreateOccurrencesRequest - 7, // 43: grafeas.v1.Grafeas.UpdateOccurrence:input_type -> grafeas.v1.UpdateOccurrenceRequest - 9, // 44: grafeas.v1.Grafeas.GetOccurrenceNote:input_type -> grafeas.v1.GetOccurrenceNoteRequest - 8, // 45: grafeas.v1.Grafeas.GetNote:input_type -> grafeas.v1.GetNoteRequest - 10, // 46: grafeas.v1.Grafeas.ListNotes:input_type -> grafeas.v1.ListNotesRequest - 12, // 47: grafeas.v1.Grafeas.DeleteNote:input_type -> grafeas.v1.DeleteNoteRequest - 13, // 48: grafeas.v1.Grafeas.CreateNote:input_type -> grafeas.v1.CreateNoteRequest - 17, // 49: grafeas.v1.Grafeas.BatchCreateNotes:input_type -> grafeas.v1.BatchCreateNotesRequest - 14, // 50: grafeas.v1.Grafeas.UpdateNote:input_type -> grafeas.v1.UpdateNoteRequest - 15, // 51: grafeas.v1.Grafeas.ListNoteOccurrences:input_type -> grafeas.v1.ListNoteOccurrencesRequest - 0, // 52: grafeas.v1.Grafeas.GetOccurrence:output_type -> grafeas.v1.Occurrence - 4, // 53: grafeas.v1.Grafeas.ListOccurrences:output_type -> grafeas.v1.ListOccurrencesResponse - 42, // 54: grafeas.v1.Grafeas.DeleteOccurrence:output_type -> google.protobuf.Empty - 0, // 55: grafeas.v1.Grafeas.CreateOccurrence:output_type -> grafeas.v1.Occurrence - 20, // 56: grafeas.v1.Grafeas.BatchCreateOccurrences:output_type -> grafeas.v1.BatchCreateOccurrencesResponse - 0, // 57: grafeas.v1.Grafeas.UpdateOccurrence:output_type -> grafeas.v1.Occurrence - 1, // 58: grafeas.v1.Grafeas.GetOccurrenceNote:output_type -> grafeas.v1.Note - 1, // 59: grafeas.v1.Grafeas.GetNote:output_type -> grafeas.v1.Note - 11, // 60: grafeas.v1.Grafeas.ListNotes:output_type -> grafeas.v1.ListNotesResponse - 42, // 61: grafeas.v1.Grafeas.DeleteNote:output_type -> google.protobuf.Empty - 1, // 62: grafeas.v1.Grafeas.CreateNote:output_type -> grafeas.v1.Note - 18, // 63: grafeas.v1.Grafeas.BatchCreateNotes:output_type -> grafeas.v1.BatchCreateNotesResponse - 1, // 64: grafeas.v1.Grafeas.UpdateNote:output_type -> grafeas.v1.Note - 16, // 65: grafeas.v1.Grafeas.ListNoteOccurrences:output_type -> grafeas.v1.ListNoteOccurrencesResponse - 52, // [52:66] is the sub-list for method output_type - 38, // [38:52] is the sub-list for method input_type - 38, // [38:38] is the sub-list for extension type_name - 38, // [38:38] is the sub-list for extension extendee - 0, // [0:38] is the sub-list for field type_name -} - -func init() { file_proto_v1_grafeas_proto_init() } -func file_proto_v1_grafeas_proto_init() { - if File_proto_v1_grafeas_proto != nil { - return - } - file_proto_v1_attestation_proto_init() - file_proto_v1_build_proto_init() - file_proto_v1_common_proto_init() - file_proto_v1_deployment_proto_init() - file_proto_v1_discovery_proto_init() - file_proto_v1_image_proto_init() - file_proto_v1_package_proto_init() - file_proto_v1_upgrade_proto_init() - file_proto_v1_vulnerability_proto_init() - if !protoimpl.UnsafeEnabled { - file_proto_v1_grafeas_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Occurrence); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_proto_v1_grafeas_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Note); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_proto_v1_grafeas_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetOccurrenceRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_proto_v1_grafeas_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListOccurrencesRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_proto_v1_grafeas_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListOccurrencesResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_proto_v1_grafeas_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DeleteOccurrenceRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_proto_v1_grafeas_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CreateOccurrenceRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_proto_v1_grafeas_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UpdateOccurrenceRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_proto_v1_grafeas_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetNoteRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_proto_v1_grafeas_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetOccurrenceNoteRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_proto_v1_grafeas_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListNotesRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_proto_v1_grafeas_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListNotesResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_proto_v1_grafeas_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DeleteNoteRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_proto_v1_grafeas_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CreateNoteRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_proto_v1_grafeas_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UpdateNoteRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_proto_v1_grafeas_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListNoteOccurrencesRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_proto_v1_grafeas_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListNoteOccurrencesResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_proto_v1_grafeas_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BatchCreateNotesRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_proto_v1_grafeas_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BatchCreateNotesResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_proto_v1_grafeas_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BatchCreateOccurrencesRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_proto_v1_grafeas_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BatchCreateOccurrencesResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } - file_proto_v1_grafeas_proto_msgTypes[0].OneofWrappers = []interface{}{ - (*Occurrence_Vulnerability)(nil), - (*Occurrence_Build)(nil), - (*Occurrence_Image)(nil), - (*Occurrence_Package)(nil), - (*Occurrence_Deployment)(nil), - (*Occurrence_Discovery)(nil), - (*Occurrence_Attestation)(nil), - (*Occurrence_Upgrade)(nil), - } - file_proto_v1_grafeas_proto_msgTypes[1].OneofWrappers = []interface{}{ - (*Note_Vulnerability)(nil), - (*Note_Build)(nil), - (*Note_Image)(nil), - (*Note_Package)(nil), - (*Note_Deployment)(nil), - (*Note_Discovery)(nil), - (*Note_Attestation)(nil), - (*Note_Upgrade)(nil), - } - type x struct{} - out := protoimpl.TypeBuilder{ - File: protoimpl.DescBuilder{ - GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_proto_v1_grafeas_proto_rawDesc, - NumEnums: 0, - NumMessages: 22, - NumExtensions: 0, - NumServices: 1, - }, - GoTypes: file_proto_v1_grafeas_proto_goTypes, - DependencyIndexes: file_proto_v1_grafeas_proto_depIdxs, - MessageInfos: file_proto_v1_grafeas_proto_msgTypes, - }.Build() - File_proto_v1_grafeas_proto = out.File - file_proto_v1_grafeas_proto_rawDesc = nil - file_proto_v1_grafeas_proto_goTypes = nil - file_proto_v1_grafeas_proto_depIdxs = nil -} diff --git a/proto/v1/grafeas_go_proto/grafeas.pb.gw.go b/proto/v1/grafeas_go_proto/grafeas.pb.gw.go deleted file mode 100644 index 5511b9dd..00000000 --- a/proto/v1/grafeas_go_proto/grafeas.pb.gw.go +++ /dev/null @@ -1,1704 +0,0 @@ -// Code generated by protoc-gen-grpc-gateway. DO NOT EDIT. -// source: proto/v1/grafeas.proto - -/* -Package grafeas_go_proto is a reverse proxy. - -It translates gRPC into RESTful JSON APIs. -*/ -package grafeas_go_proto - -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_Grafeas_GetOccurrence_0(ctx context.Context, marshaler runtime.Marshaler, client GrafeasClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq GetOccurrenceRequest - var metadata runtime.ServerMetadata - - var ( - val string - ok bool - err error - _ = err - ) - - val, ok = pathParams["name"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "name") - } - - protoReq.Name, err = runtime.String(val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "name", err) - } - - msg, err := client.GetOccurrence(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err - -} - -func local_request_Grafeas_GetOccurrence_0(ctx context.Context, marshaler runtime.Marshaler, server GrafeasServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq GetOccurrenceRequest - var metadata runtime.ServerMetadata - - var ( - val string - ok bool - err error - _ = err - ) - - val, ok = pathParams["name"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "name") - } - - protoReq.Name, err = runtime.String(val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "name", err) - } - - msg, err := server.GetOccurrence(ctx, &protoReq) - return msg, metadata, err - -} - -var ( - filter_Grafeas_ListOccurrences_0 = &utilities.DoubleArray{Encoding: map[string]int{"parent": 0}, Base: []int{1, 1, 0}, Check: []int{0, 1, 2}} -) - -func request_Grafeas_ListOccurrences_0(ctx context.Context, marshaler runtime.Marshaler, client GrafeasClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq ListOccurrencesRequest - var metadata runtime.ServerMetadata - - 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) - } - - if err := req.ParseForm(); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Grafeas_ListOccurrences_0); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := client.ListOccurrences(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err - -} - -func local_request_Grafeas_ListOccurrences_0(ctx context.Context, marshaler runtime.Marshaler, server GrafeasServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq ListOccurrencesRequest - var metadata runtime.ServerMetadata - - 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) - } - - if err := req.ParseForm(); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Grafeas_ListOccurrences_0); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := server.ListOccurrences(ctx, &protoReq) - return msg, metadata, err - -} - -func request_Grafeas_DeleteOccurrence_0(ctx context.Context, marshaler runtime.Marshaler, client GrafeasClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq DeleteOccurrenceRequest - var metadata runtime.ServerMetadata - - var ( - val string - ok bool - err error - _ = err - ) - - val, ok = pathParams["name"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "name") - } - - protoReq.Name, err = runtime.String(val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "name", err) - } - - msg, err := client.DeleteOccurrence(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err - -} - -func local_request_Grafeas_DeleteOccurrence_0(ctx context.Context, marshaler runtime.Marshaler, server GrafeasServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq DeleteOccurrenceRequest - var metadata runtime.ServerMetadata - - var ( - val string - ok bool - err error - _ = err - ) - - val, ok = pathParams["name"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "name") - } - - protoReq.Name, err = runtime.String(val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "name", err) - } - - msg, err := server.DeleteOccurrence(ctx, &protoReq) - return msg, metadata, err - -} - -func request_Grafeas_CreateOccurrence_0(ctx context.Context, marshaler runtime.Marshaler, client GrafeasClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq CreateOccurrenceRequest - 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.Occurrence); 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.CreateOccurrence(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err - -} - -func local_request_Grafeas_CreateOccurrence_0(ctx context.Context, marshaler runtime.Marshaler, server GrafeasServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq CreateOccurrenceRequest - 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.Occurrence); 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.CreateOccurrence(ctx, &protoReq) - return msg, metadata, err - -} - -func request_Grafeas_BatchCreateOccurrences_0(ctx context.Context, marshaler runtime.Marshaler, client GrafeasClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq BatchCreateOccurrencesRequest - 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["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.BatchCreateOccurrences(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err - -} - -func local_request_Grafeas_BatchCreateOccurrences_0(ctx context.Context, marshaler runtime.Marshaler, server GrafeasServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq BatchCreateOccurrencesRequest - 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["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.BatchCreateOccurrences(ctx, &protoReq) - return msg, metadata, err - -} - -var ( - filter_Grafeas_UpdateOccurrence_0 = &utilities.DoubleArray{Encoding: map[string]int{"occurrence": 0, "name": 1}, Base: []int{1, 1, 2, 0, 0}, Check: []int{0, 1, 1, 2, 3}} -) - -func request_Grafeas_UpdateOccurrence_0(ctx context.Context, marshaler runtime.Marshaler, client GrafeasClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq UpdateOccurrenceRequest - 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.Occurrence); err != nil && err != io.EOF { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - if protoReq.UpdateMask == nil || len(protoReq.UpdateMask.GetPaths()) == 0 { - if fieldMask, err := runtime.FieldMaskFromRequestBody(newReader(), protoReq.Occurrence); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } else { - protoReq.UpdateMask = fieldMask - } - } - - var ( - val string - ok bool - err error - _ = err - ) - - val, ok = pathParams["name"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "name") - } - - protoReq.Name, err = runtime.String(val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "name", err) - } - - if err := req.ParseForm(); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Grafeas_UpdateOccurrence_0); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := client.UpdateOccurrence(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err - -} - -func local_request_Grafeas_UpdateOccurrence_0(ctx context.Context, marshaler runtime.Marshaler, server GrafeasServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq UpdateOccurrenceRequest - 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.Occurrence); err != nil && err != io.EOF { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - if protoReq.UpdateMask == nil || len(protoReq.UpdateMask.GetPaths()) == 0 { - if fieldMask, err := runtime.FieldMaskFromRequestBody(newReader(), protoReq.Occurrence); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } else { - protoReq.UpdateMask = fieldMask - } - } - - var ( - val string - ok bool - err error - _ = err - ) - - val, ok = pathParams["name"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "name") - } - - protoReq.Name, err = runtime.String(val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "name", err) - } - - if err := req.ParseForm(); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Grafeas_UpdateOccurrence_0); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := server.UpdateOccurrence(ctx, &protoReq) - return msg, metadata, err - -} - -func request_Grafeas_GetOccurrenceNote_0(ctx context.Context, marshaler runtime.Marshaler, client GrafeasClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq GetOccurrenceNoteRequest - var metadata runtime.ServerMetadata - - var ( - val string - ok bool - err error - _ = err - ) - - val, ok = pathParams["name"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "name") - } - - protoReq.Name, err = runtime.String(val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "name", err) - } - - msg, err := client.GetOccurrenceNote(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err - -} - -func local_request_Grafeas_GetOccurrenceNote_0(ctx context.Context, marshaler runtime.Marshaler, server GrafeasServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq GetOccurrenceNoteRequest - var metadata runtime.ServerMetadata - - var ( - val string - ok bool - err error - _ = err - ) - - val, ok = pathParams["name"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "name") - } - - protoReq.Name, err = runtime.String(val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "name", err) - } - - msg, err := server.GetOccurrenceNote(ctx, &protoReq) - return msg, metadata, err - -} - -func request_Grafeas_GetNote_0(ctx context.Context, marshaler runtime.Marshaler, client GrafeasClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq GetNoteRequest - var metadata runtime.ServerMetadata - - var ( - val string - ok bool - err error - _ = err - ) - - val, ok = pathParams["name"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "name") - } - - protoReq.Name, err = runtime.String(val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "name", err) - } - - msg, err := client.GetNote(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err - -} - -func local_request_Grafeas_GetNote_0(ctx context.Context, marshaler runtime.Marshaler, server GrafeasServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq GetNoteRequest - var metadata runtime.ServerMetadata - - var ( - val string - ok bool - err error - _ = err - ) - - val, ok = pathParams["name"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "name") - } - - protoReq.Name, err = runtime.String(val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "name", err) - } - - msg, err := server.GetNote(ctx, &protoReq) - return msg, metadata, err - -} - -var ( - filter_Grafeas_ListNotes_0 = &utilities.DoubleArray{Encoding: map[string]int{"parent": 0}, Base: []int{1, 1, 0}, Check: []int{0, 1, 2}} -) - -func request_Grafeas_ListNotes_0(ctx context.Context, marshaler runtime.Marshaler, client GrafeasClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq ListNotesRequest - var metadata runtime.ServerMetadata - - 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) - } - - if err := req.ParseForm(); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Grafeas_ListNotes_0); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := client.ListNotes(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err - -} - -func local_request_Grafeas_ListNotes_0(ctx context.Context, marshaler runtime.Marshaler, server GrafeasServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq ListNotesRequest - var metadata runtime.ServerMetadata - - 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) - } - - if err := req.ParseForm(); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Grafeas_ListNotes_0); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := server.ListNotes(ctx, &protoReq) - return msg, metadata, err - -} - -func request_Grafeas_DeleteNote_0(ctx context.Context, marshaler runtime.Marshaler, client GrafeasClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq DeleteNoteRequest - var metadata runtime.ServerMetadata - - var ( - val string - ok bool - err error - _ = err - ) - - val, ok = pathParams["name"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "name") - } - - protoReq.Name, err = runtime.String(val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "name", err) - } - - msg, err := client.DeleteNote(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err - -} - -func local_request_Grafeas_DeleteNote_0(ctx context.Context, marshaler runtime.Marshaler, server GrafeasServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq DeleteNoteRequest - var metadata runtime.ServerMetadata - - var ( - val string - ok bool - err error - _ = err - ) - - val, ok = pathParams["name"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "name") - } - - protoReq.Name, err = runtime.String(val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "name", err) - } - - msg, err := server.DeleteNote(ctx, &protoReq) - return msg, metadata, err - -} - -var ( - filter_Grafeas_CreateNote_0 = &utilities.DoubleArray{Encoding: map[string]int{"note": 0, "parent": 1}, Base: []int{1, 1, 2, 0, 0}, Check: []int{0, 1, 1, 2, 3}} -) - -func request_Grafeas_CreateNote_0(ctx context.Context, marshaler runtime.Marshaler, client GrafeasClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq CreateNoteRequest - 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.Note); 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) - } - - if err := req.ParseForm(); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Grafeas_CreateNote_0); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := client.CreateNote(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err - -} - -func local_request_Grafeas_CreateNote_0(ctx context.Context, marshaler runtime.Marshaler, server GrafeasServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq CreateNoteRequest - 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.Note); 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) - } - - if err := req.ParseForm(); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Grafeas_CreateNote_0); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := server.CreateNote(ctx, &protoReq) - return msg, metadata, err - -} - -func request_Grafeas_BatchCreateNotes_0(ctx context.Context, marshaler runtime.Marshaler, client GrafeasClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq BatchCreateNotesRequest - 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["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.BatchCreateNotes(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err - -} - -func local_request_Grafeas_BatchCreateNotes_0(ctx context.Context, marshaler runtime.Marshaler, server GrafeasServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq BatchCreateNotesRequest - 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["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.BatchCreateNotes(ctx, &protoReq) - return msg, metadata, err - -} - -var ( - filter_Grafeas_UpdateNote_0 = &utilities.DoubleArray{Encoding: map[string]int{"note": 0, "name": 1}, Base: []int{1, 1, 2, 0, 0}, Check: []int{0, 1, 1, 2, 3}} -) - -func request_Grafeas_UpdateNote_0(ctx context.Context, marshaler runtime.Marshaler, client GrafeasClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq UpdateNoteRequest - 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.Note); err != nil && err != io.EOF { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - if protoReq.UpdateMask == nil || len(protoReq.UpdateMask.GetPaths()) == 0 { - if fieldMask, err := runtime.FieldMaskFromRequestBody(newReader(), protoReq.Note); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } else { - protoReq.UpdateMask = fieldMask - } - } - - var ( - val string - ok bool - err error - _ = err - ) - - val, ok = pathParams["name"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "name") - } - - protoReq.Name, err = runtime.String(val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "name", err) - } - - if err := req.ParseForm(); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Grafeas_UpdateNote_0); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := client.UpdateNote(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err - -} - -func local_request_Grafeas_UpdateNote_0(ctx context.Context, marshaler runtime.Marshaler, server GrafeasServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq UpdateNoteRequest - 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.Note); err != nil && err != io.EOF { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - if protoReq.UpdateMask == nil || len(protoReq.UpdateMask.GetPaths()) == 0 { - if fieldMask, err := runtime.FieldMaskFromRequestBody(newReader(), protoReq.Note); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } else { - protoReq.UpdateMask = fieldMask - } - } - - var ( - val string - ok bool - err error - _ = err - ) - - val, ok = pathParams["name"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "name") - } - - protoReq.Name, err = runtime.String(val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "name", err) - } - - if err := req.ParseForm(); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Grafeas_UpdateNote_0); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := server.UpdateNote(ctx, &protoReq) - return msg, metadata, err - -} - -var ( - filter_Grafeas_ListNoteOccurrences_0 = &utilities.DoubleArray{Encoding: map[string]int{"name": 0}, Base: []int{1, 1, 0}, Check: []int{0, 1, 2}} -) - -func request_Grafeas_ListNoteOccurrences_0(ctx context.Context, marshaler runtime.Marshaler, client GrafeasClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq ListNoteOccurrencesRequest - var metadata runtime.ServerMetadata - - var ( - val string - ok bool - err error - _ = err - ) - - val, ok = pathParams["name"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "name") - } - - protoReq.Name, err = runtime.String(val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "name", err) - } - - if err := req.ParseForm(); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Grafeas_ListNoteOccurrences_0); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := client.ListNoteOccurrences(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err - -} - -func local_request_Grafeas_ListNoteOccurrences_0(ctx context.Context, marshaler runtime.Marshaler, server GrafeasServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq ListNoteOccurrencesRequest - var metadata runtime.ServerMetadata - - var ( - val string - ok bool - err error - _ = err - ) - - val, ok = pathParams["name"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "name") - } - - protoReq.Name, err = runtime.String(val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "name", err) - } - - if err := req.ParseForm(); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Grafeas_ListNoteOccurrences_0); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := server.ListNoteOccurrences(ctx, &protoReq) - return msg, metadata, err - -} - -// RegisterGrafeasHandlerServer registers the http handlers for service Grafeas to "mux". -// UnaryRPC :call GrafeasServer 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 RegisterGrafeasHandlerFromEndpoint instead. -func RegisterGrafeasHandlerServer(ctx context.Context, mux *runtime.ServeMux, server GrafeasServer) error { - - mux.Handle("GET", pattern_Grafeas_GetOccurrence_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) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req, "/grafeas.v1.Grafeas/GetOccurrence") - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_Grafeas_GetOccurrence_0(rctx, 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_Grafeas_GetOccurrence_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("GET", pattern_Grafeas_ListOccurrences_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) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req, "/grafeas.v1.Grafeas/ListOccurrences") - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_Grafeas_ListOccurrences_0(rctx, 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_Grafeas_ListOccurrences_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("DELETE", pattern_Grafeas_DeleteOccurrence_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) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req, "/grafeas.v1.Grafeas/DeleteOccurrence") - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_Grafeas_DeleteOccurrence_0(rctx, 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_Grafeas_DeleteOccurrence_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("POST", pattern_Grafeas_CreateOccurrence_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) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req, "/grafeas.v1.Grafeas/CreateOccurrence") - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_Grafeas_CreateOccurrence_0(rctx, 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_Grafeas_CreateOccurrence_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("POST", pattern_Grafeas_BatchCreateOccurrences_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) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req, "/grafeas.v1.Grafeas/BatchCreateOccurrences") - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_Grafeas_BatchCreateOccurrences_0(rctx, 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_Grafeas_BatchCreateOccurrences_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("PATCH", pattern_Grafeas_UpdateOccurrence_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) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req, "/grafeas.v1.Grafeas/UpdateOccurrence") - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_Grafeas_UpdateOccurrence_0(rctx, 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_Grafeas_UpdateOccurrence_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("GET", pattern_Grafeas_GetOccurrenceNote_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) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req, "/grafeas.v1.Grafeas/GetOccurrenceNote") - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_Grafeas_GetOccurrenceNote_0(rctx, 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_Grafeas_GetOccurrenceNote_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("GET", pattern_Grafeas_GetNote_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) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req, "/grafeas.v1.Grafeas/GetNote") - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_Grafeas_GetNote_0(rctx, 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_Grafeas_GetNote_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("GET", pattern_Grafeas_ListNotes_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) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req, "/grafeas.v1.Grafeas/ListNotes") - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_Grafeas_ListNotes_0(rctx, 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_Grafeas_ListNotes_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("DELETE", pattern_Grafeas_DeleteNote_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) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req, "/grafeas.v1.Grafeas/DeleteNote") - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_Grafeas_DeleteNote_0(rctx, 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_Grafeas_DeleteNote_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("POST", pattern_Grafeas_CreateNote_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) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req, "/grafeas.v1.Grafeas/CreateNote") - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_Grafeas_CreateNote_0(rctx, 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_Grafeas_CreateNote_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("POST", pattern_Grafeas_BatchCreateNotes_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) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req, "/grafeas.v1.Grafeas/BatchCreateNotes") - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_Grafeas_BatchCreateNotes_0(rctx, 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_Grafeas_BatchCreateNotes_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("PATCH", pattern_Grafeas_UpdateNote_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) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req, "/grafeas.v1.Grafeas/UpdateNote") - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_Grafeas_UpdateNote_0(rctx, 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_Grafeas_UpdateNote_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("GET", pattern_Grafeas_ListNoteOccurrences_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) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req, "/grafeas.v1.Grafeas/ListNoteOccurrences") - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_Grafeas_ListNoteOccurrences_0(rctx, 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_Grafeas_ListNoteOccurrences_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - return nil -} - -// RegisterGrafeasHandlerFromEndpoint is same as RegisterGrafeasHandler but -// automatically dials to "endpoint" and closes the connection when "ctx" gets done. -func RegisterGrafeasHandlerFromEndpoint(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 RegisterGrafeasHandler(ctx, mux, conn) -} - -// RegisterGrafeasHandler registers the http handlers for service Grafeas to "mux". -// The handlers forward requests to the grpc endpoint over "conn". -func RegisterGrafeasHandler(ctx context.Context, mux *runtime.ServeMux, conn *grpc.ClientConn) error { - return RegisterGrafeasHandlerClient(ctx, mux, NewGrafeasClient(conn)) -} - -// RegisterGrafeasHandlerClient registers the http handlers for service Grafeas -// to "mux". The handlers forward requests to the grpc endpoint over the given implementation of "GrafeasClient". -// Note: the gRPC framework executes interceptors within the gRPC handler. If the passed in "GrafeasClient" -// doesn't go through the normal gRPC flow (creating a gRPC client etc.) then it will be up to the passed in -// "GrafeasClient" to call the correct interceptors. -func RegisterGrafeasHandlerClient(ctx context.Context, mux *runtime.ServeMux, client GrafeasClient) error { - - mux.Handle("GET", pattern_Grafeas_GetOccurrence_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) - rctx, err := runtime.AnnotateContext(ctx, mux, req, "/grafeas.v1.Grafeas/GetOccurrence") - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := request_Grafeas_GetOccurrence_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - - forward_Grafeas_GetOccurrence_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("GET", pattern_Grafeas_ListOccurrences_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) - rctx, err := runtime.AnnotateContext(ctx, mux, req, "/grafeas.v1.Grafeas/ListOccurrences") - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := request_Grafeas_ListOccurrences_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - - forward_Grafeas_ListOccurrences_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("DELETE", pattern_Grafeas_DeleteOccurrence_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) - rctx, err := runtime.AnnotateContext(ctx, mux, req, "/grafeas.v1.Grafeas/DeleteOccurrence") - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := request_Grafeas_DeleteOccurrence_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - - forward_Grafeas_DeleteOccurrence_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("POST", pattern_Grafeas_CreateOccurrence_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) - rctx, err := runtime.AnnotateContext(ctx, mux, req, "/grafeas.v1.Grafeas/CreateOccurrence") - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := request_Grafeas_CreateOccurrence_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - - forward_Grafeas_CreateOccurrence_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("POST", pattern_Grafeas_BatchCreateOccurrences_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) - rctx, err := runtime.AnnotateContext(ctx, mux, req, "/grafeas.v1.Grafeas/BatchCreateOccurrences") - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := request_Grafeas_BatchCreateOccurrences_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - - forward_Grafeas_BatchCreateOccurrences_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("PATCH", pattern_Grafeas_UpdateOccurrence_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) - rctx, err := runtime.AnnotateContext(ctx, mux, req, "/grafeas.v1.Grafeas/UpdateOccurrence") - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := request_Grafeas_UpdateOccurrence_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - - forward_Grafeas_UpdateOccurrence_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("GET", pattern_Grafeas_GetOccurrenceNote_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) - rctx, err := runtime.AnnotateContext(ctx, mux, req, "/grafeas.v1.Grafeas/GetOccurrenceNote") - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := request_Grafeas_GetOccurrenceNote_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - - forward_Grafeas_GetOccurrenceNote_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("GET", pattern_Grafeas_GetNote_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) - rctx, err := runtime.AnnotateContext(ctx, mux, req, "/grafeas.v1.Grafeas/GetNote") - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := request_Grafeas_GetNote_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - - forward_Grafeas_GetNote_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("GET", pattern_Grafeas_ListNotes_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) - rctx, err := runtime.AnnotateContext(ctx, mux, req, "/grafeas.v1.Grafeas/ListNotes") - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := request_Grafeas_ListNotes_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - - forward_Grafeas_ListNotes_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("DELETE", pattern_Grafeas_DeleteNote_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) - rctx, err := runtime.AnnotateContext(ctx, mux, req, "/grafeas.v1.Grafeas/DeleteNote") - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := request_Grafeas_DeleteNote_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - - forward_Grafeas_DeleteNote_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("POST", pattern_Grafeas_CreateNote_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) - rctx, err := runtime.AnnotateContext(ctx, mux, req, "/grafeas.v1.Grafeas/CreateNote") - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := request_Grafeas_CreateNote_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - - forward_Grafeas_CreateNote_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("POST", pattern_Grafeas_BatchCreateNotes_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) - rctx, err := runtime.AnnotateContext(ctx, mux, req, "/grafeas.v1.Grafeas/BatchCreateNotes") - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := request_Grafeas_BatchCreateNotes_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - - forward_Grafeas_BatchCreateNotes_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("PATCH", pattern_Grafeas_UpdateNote_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) - rctx, err := runtime.AnnotateContext(ctx, mux, req, "/grafeas.v1.Grafeas/UpdateNote") - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := request_Grafeas_UpdateNote_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - - forward_Grafeas_UpdateNote_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("GET", pattern_Grafeas_ListNoteOccurrences_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) - rctx, err := runtime.AnnotateContext(ctx, mux, req, "/grafeas.v1.Grafeas/ListNoteOccurrences") - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := request_Grafeas_ListNoteOccurrences_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - - forward_Grafeas_ListNoteOccurrences_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - return nil -} - -var ( - pattern_Grafeas_GetOccurrence_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 2, 2, 1, 0, 4, 4, 5, 3}, []string{"v1", "projects", "occurrences", "name"}, "")) - - pattern_Grafeas_ListOccurrences_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 2, 5, 2, 2, 3}, []string{"v1", "projects", "parent", "occurrences"}, "")) - - pattern_Grafeas_DeleteOccurrence_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 2, 2, 1, 0, 4, 4, 5, 3}, []string{"v1", "projects", "occurrences", "name"}, "")) - - pattern_Grafeas_CreateOccurrence_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 2, 5, 2, 2, 3}, []string{"v1", "projects", "parent", "occurrences"}, "")) - - pattern_Grafeas_BatchCreateOccurrences_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 2, 5, 2, 2, 3}, []string{"v1", "projects", "parent", "occurrences"}, "batchCreate")) - - pattern_Grafeas_UpdateOccurrence_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 2, 2, 1, 0, 4, 4, 5, 3}, []string{"v1", "projects", "occurrences", "name"}, "")) - - pattern_Grafeas_GetOccurrenceNote_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 2, 2, 1, 0, 4, 4, 5, 3, 2, 4}, []string{"v1", "projects", "occurrences", "name", "notes"}, "")) - - pattern_Grafeas_GetNote_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 2, 2, 1, 0, 4, 4, 5, 3}, []string{"v1", "projects", "notes", "name"}, "")) - - pattern_Grafeas_ListNotes_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 2, 5, 2, 2, 3}, []string{"v1", "projects", "parent", "notes"}, "")) - - pattern_Grafeas_DeleteNote_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 2, 2, 1, 0, 4, 4, 5, 3}, []string{"v1", "projects", "notes", "name"}, "")) - - pattern_Grafeas_CreateNote_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 2, 5, 2, 2, 3}, []string{"v1", "projects", "parent", "notes"}, "")) - - pattern_Grafeas_BatchCreateNotes_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 2, 5, 2, 2, 3}, []string{"v1", "projects", "parent", "notes"}, "batchCreate")) - - pattern_Grafeas_UpdateNote_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 2, 2, 1, 0, 4, 4, 5, 3}, []string{"v1", "projects", "notes", "name"}, "")) - - pattern_Grafeas_ListNoteOccurrences_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 2, 2, 1, 0, 4, 4, 5, 3, 2, 4}, []string{"v1", "projects", "notes", "name", "occurrences"}, "")) -) - -var ( - forward_Grafeas_GetOccurrence_0 = runtime.ForwardResponseMessage - - forward_Grafeas_ListOccurrences_0 = runtime.ForwardResponseMessage - - forward_Grafeas_DeleteOccurrence_0 = runtime.ForwardResponseMessage - - forward_Grafeas_CreateOccurrence_0 = runtime.ForwardResponseMessage - - forward_Grafeas_BatchCreateOccurrences_0 = runtime.ForwardResponseMessage - - forward_Grafeas_UpdateOccurrence_0 = runtime.ForwardResponseMessage - - forward_Grafeas_GetOccurrenceNote_0 = runtime.ForwardResponseMessage - - forward_Grafeas_GetNote_0 = runtime.ForwardResponseMessage - - forward_Grafeas_ListNotes_0 = runtime.ForwardResponseMessage - - forward_Grafeas_DeleteNote_0 = runtime.ForwardResponseMessage - - forward_Grafeas_CreateNote_0 = runtime.ForwardResponseMessage - - forward_Grafeas_BatchCreateNotes_0 = runtime.ForwardResponseMessage - - forward_Grafeas_UpdateNote_0 = runtime.ForwardResponseMessage - - forward_Grafeas_ListNoteOccurrences_0 = runtime.ForwardResponseMessage -) diff --git a/proto/v1/grafeas_go_proto/grafeas_grpc.pb.go b/proto/v1/grafeas_go_proto/grafeas_grpc.pb.go deleted file mode 100644 index 9ee30da6..00000000 --- a/proto/v1/grafeas_go_proto/grafeas_grpc.pb.go +++ /dev/null @@ -1,602 +0,0 @@ -// Code generated by protoc-gen-go-grpc. DO NOT EDIT. - -package grafeas_go_proto - -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. -const _ = grpc.SupportPackageIsVersion7 - -// GrafeasClient is the client API for Grafeas 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 GrafeasClient interface { - // Gets the specified occurrence. - GetOccurrence(ctx context.Context, in *GetOccurrenceRequest, opts ...grpc.CallOption) (*Occurrence, error) - // Lists occurrences for the specified project. - ListOccurrences(ctx context.Context, in *ListOccurrencesRequest, opts ...grpc.CallOption) (*ListOccurrencesResponse, error) - // Deletes the specified occurrence. For example, use this method to delete an - // occurrence when the occurrence is no longer applicable for the given - // resource. - DeleteOccurrence(ctx context.Context, in *DeleteOccurrenceRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) - // Creates a new occurrence. - CreateOccurrence(ctx context.Context, in *CreateOccurrenceRequest, opts ...grpc.CallOption) (*Occurrence, error) - // Creates new occurrences in batch. - BatchCreateOccurrences(ctx context.Context, in *BatchCreateOccurrencesRequest, opts ...grpc.CallOption) (*BatchCreateOccurrencesResponse, error) - // Updates the specified occurrence. - UpdateOccurrence(ctx context.Context, in *UpdateOccurrenceRequest, opts ...grpc.CallOption) (*Occurrence, error) - // Gets the note attached to the specified occurrence. Consumer projects can - // use this method to get a note that belongs to a provider project. - GetOccurrenceNote(ctx context.Context, in *GetOccurrenceNoteRequest, opts ...grpc.CallOption) (*Note, error) - // Gets the specified note. - GetNote(ctx context.Context, in *GetNoteRequest, opts ...grpc.CallOption) (*Note, error) - // Lists notes for the specified project. - ListNotes(ctx context.Context, in *ListNotesRequest, opts ...grpc.CallOption) (*ListNotesResponse, error) - // Deletes the specified note. - DeleteNote(ctx context.Context, in *DeleteNoteRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) - // Creates a new note. - CreateNote(ctx context.Context, in *CreateNoteRequest, opts ...grpc.CallOption) (*Note, error) - // Creates new notes in batch. - BatchCreateNotes(ctx context.Context, in *BatchCreateNotesRequest, opts ...grpc.CallOption) (*BatchCreateNotesResponse, error) - // Updates the specified note. - UpdateNote(ctx context.Context, in *UpdateNoteRequest, opts ...grpc.CallOption) (*Note, error) - // Lists occurrences referencing the specified note. Provider projects can use - // this method to get all occurrences across consumer projects referencing the - // specified note. - ListNoteOccurrences(ctx context.Context, in *ListNoteOccurrencesRequest, opts ...grpc.CallOption) (*ListNoteOccurrencesResponse, error) -} - -type grafeasClient struct { - cc grpc.ClientConnInterface -} - -func NewGrafeasClient(cc grpc.ClientConnInterface) GrafeasClient { - return &grafeasClient{cc} -} - -func (c *grafeasClient) GetOccurrence(ctx context.Context, in *GetOccurrenceRequest, opts ...grpc.CallOption) (*Occurrence, error) { - out := new(Occurrence) - err := c.cc.Invoke(ctx, "/grafeas.v1.Grafeas/GetOccurrence", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *grafeasClient) ListOccurrences(ctx context.Context, in *ListOccurrencesRequest, opts ...grpc.CallOption) (*ListOccurrencesResponse, error) { - out := new(ListOccurrencesResponse) - err := c.cc.Invoke(ctx, "/grafeas.v1.Grafeas/ListOccurrences", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *grafeasClient) DeleteOccurrence(ctx context.Context, in *DeleteOccurrenceRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) { - out := new(emptypb.Empty) - err := c.cc.Invoke(ctx, "/grafeas.v1.Grafeas/DeleteOccurrence", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *grafeasClient) CreateOccurrence(ctx context.Context, in *CreateOccurrenceRequest, opts ...grpc.CallOption) (*Occurrence, error) { - out := new(Occurrence) - err := c.cc.Invoke(ctx, "/grafeas.v1.Grafeas/CreateOccurrence", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *grafeasClient) BatchCreateOccurrences(ctx context.Context, in *BatchCreateOccurrencesRequest, opts ...grpc.CallOption) (*BatchCreateOccurrencesResponse, error) { - out := new(BatchCreateOccurrencesResponse) - err := c.cc.Invoke(ctx, "/grafeas.v1.Grafeas/BatchCreateOccurrences", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *grafeasClient) UpdateOccurrence(ctx context.Context, in *UpdateOccurrenceRequest, opts ...grpc.CallOption) (*Occurrence, error) { - out := new(Occurrence) - err := c.cc.Invoke(ctx, "/grafeas.v1.Grafeas/UpdateOccurrence", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *grafeasClient) GetOccurrenceNote(ctx context.Context, in *GetOccurrenceNoteRequest, opts ...grpc.CallOption) (*Note, error) { - out := new(Note) - err := c.cc.Invoke(ctx, "/grafeas.v1.Grafeas/GetOccurrenceNote", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *grafeasClient) GetNote(ctx context.Context, in *GetNoteRequest, opts ...grpc.CallOption) (*Note, error) { - out := new(Note) - err := c.cc.Invoke(ctx, "/grafeas.v1.Grafeas/GetNote", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *grafeasClient) ListNotes(ctx context.Context, in *ListNotesRequest, opts ...grpc.CallOption) (*ListNotesResponse, error) { - out := new(ListNotesResponse) - err := c.cc.Invoke(ctx, "/grafeas.v1.Grafeas/ListNotes", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *grafeasClient) DeleteNote(ctx context.Context, in *DeleteNoteRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) { - out := new(emptypb.Empty) - err := c.cc.Invoke(ctx, "/grafeas.v1.Grafeas/DeleteNote", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *grafeasClient) CreateNote(ctx context.Context, in *CreateNoteRequest, opts ...grpc.CallOption) (*Note, error) { - out := new(Note) - err := c.cc.Invoke(ctx, "/grafeas.v1.Grafeas/CreateNote", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *grafeasClient) BatchCreateNotes(ctx context.Context, in *BatchCreateNotesRequest, opts ...grpc.CallOption) (*BatchCreateNotesResponse, error) { - out := new(BatchCreateNotesResponse) - err := c.cc.Invoke(ctx, "/grafeas.v1.Grafeas/BatchCreateNotes", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *grafeasClient) UpdateNote(ctx context.Context, in *UpdateNoteRequest, opts ...grpc.CallOption) (*Note, error) { - out := new(Note) - err := c.cc.Invoke(ctx, "/grafeas.v1.Grafeas/UpdateNote", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *grafeasClient) ListNoteOccurrences(ctx context.Context, in *ListNoteOccurrencesRequest, opts ...grpc.CallOption) (*ListNoteOccurrencesResponse, error) { - out := new(ListNoteOccurrencesResponse) - err := c.cc.Invoke(ctx, "/grafeas.v1.Grafeas/ListNoteOccurrences", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -// GrafeasServer is the server API for Grafeas service. -// All implementations should embed UnimplementedGrafeasServer -// for forward compatibility -type GrafeasServer interface { - // Gets the specified occurrence. - GetOccurrence(context.Context, *GetOccurrenceRequest) (*Occurrence, error) - // Lists occurrences for the specified project. - ListOccurrences(context.Context, *ListOccurrencesRequest) (*ListOccurrencesResponse, error) - // Deletes the specified occurrence. For example, use this method to delete an - // occurrence when the occurrence is no longer applicable for the given - // resource. - DeleteOccurrence(context.Context, *DeleteOccurrenceRequest) (*emptypb.Empty, error) - // Creates a new occurrence. - CreateOccurrence(context.Context, *CreateOccurrenceRequest) (*Occurrence, error) - // Creates new occurrences in batch. - BatchCreateOccurrences(context.Context, *BatchCreateOccurrencesRequest) (*BatchCreateOccurrencesResponse, error) - // Updates the specified occurrence. - UpdateOccurrence(context.Context, *UpdateOccurrenceRequest) (*Occurrence, error) - // Gets the note attached to the specified occurrence. Consumer projects can - // use this method to get a note that belongs to a provider project. - GetOccurrenceNote(context.Context, *GetOccurrenceNoteRequest) (*Note, error) - // Gets the specified note. - GetNote(context.Context, *GetNoteRequest) (*Note, error) - // Lists notes for the specified project. - ListNotes(context.Context, *ListNotesRequest) (*ListNotesResponse, error) - // Deletes the specified note. - DeleteNote(context.Context, *DeleteNoteRequest) (*emptypb.Empty, error) - // Creates a new note. - CreateNote(context.Context, *CreateNoteRequest) (*Note, error) - // Creates new notes in batch. - BatchCreateNotes(context.Context, *BatchCreateNotesRequest) (*BatchCreateNotesResponse, error) - // Updates the specified note. - UpdateNote(context.Context, *UpdateNoteRequest) (*Note, error) - // Lists occurrences referencing the specified note. Provider projects can use - // this method to get all occurrences across consumer projects referencing the - // specified note. - ListNoteOccurrences(context.Context, *ListNoteOccurrencesRequest) (*ListNoteOccurrencesResponse, error) -} - -// UnimplementedGrafeasServer should be embedded to have forward compatible implementations. -type UnimplementedGrafeasServer struct { -} - -func (UnimplementedGrafeasServer) GetOccurrence(context.Context, *GetOccurrenceRequest) (*Occurrence, error) { - return nil, status.Errorf(codes.Unimplemented, "method GetOccurrence not implemented") -} -func (UnimplementedGrafeasServer) ListOccurrences(context.Context, *ListOccurrencesRequest) (*ListOccurrencesResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method ListOccurrences not implemented") -} -func (UnimplementedGrafeasServer) DeleteOccurrence(context.Context, *DeleteOccurrenceRequest) (*emptypb.Empty, error) { - return nil, status.Errorf(codes.Unimplemented, "method DeleteOccurrence not implemented") -} -func (UnimplementedGrafeasServer) CreateOccurrence(context.Context, *CreateOccurrenceRequest) (*Occurrence, error) { - return nil, status.Errorf(codes.Unimplemented, "method CreateOccurrence not implemented") -} -func (UnimplementedGrafeasServer) BatchCreateOccurrences(context.Context, *BatchCreateOccurrencesRequest) (*BatchCreateOccurrencesResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method BatchCreateOccurrences not implemented") -} -func (UnimplementedGrafeasServer) UpdateOccurrence(context.Context, *UpdateOccurrenceRequest) (*Occurrence, error) { - return nil, status.Errorf(codes.Unimplemented, "method UpdateOccurrence not implemented") -} -func (UnimplementedGrafeasServer) GetOccurrenceNote(context.Context, *GetOccurrenceNoteRequest) (*Note, error) { - return nil, status.Errorf(codes.Unimplemented, "method GetOccurrenceNote not implemented") -} -func (UnimplementedGrafeasServer) GetNote(context.Context, *GetNoteRequest) (*Note, error) { - return nil, status.Errorf(codes.Unimplemented, "method GetNote not implemented") -} -func (UnimplementedGrafeasServer) ListNotes(context.Context, *ListNotesRequest) (*ListNotesResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method ListNotes not implemented") -} -func (UnimplementedGrafeasServer) DeleteNote(context.Context, *DeleteNoteRequest) (*emptypb.Empty, error) { - return nil, status.Errorf(codes.Unimplemented, "method DeleteNote not implemented") -} -func (UnimplementedGrafeasServer) CreateNote(context.Context, *CreateNoteRequest) (*Note, error) { - return nil, status.Errorf(codes.Unimplemented, "method CreateNote not implemented") -} -func (UnimplementedGrafeasServer) BatchCreateNotes(context.Context, *BatchCreateNotesRequest) (*BatchCreateNotesResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method BatchCreateNotes not implemented") -} -func (UnimplementedGrafeasServer) UpdateNote(context.Context, *UpdateNoteRequest) (*Note, error) { - return nil, status.Errorf(codes.Unimplemented, "method UpdateNote not implemented") -} -func (UnimplementedGrafeasServer) ListNoteOccurrences(context.Context, *ListNoteOccurrencesRequest) (*ListNoteOccurrencesResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method ListNoteOccurrences not implemented") -} - -// UnsafeGrafeasServer may be embedded to opt out of forward compatibility for this service. -// Use of this interface is not recommended, as added methods to GrafeasServer will -// result in compilation errors. -type UnsafeGrafeasServer interface { - mustEmbedUnimplementedGrafeasServer() -} - -func RegisterGrafeasServer(s grpc.ServiceRegistrar, srv GrafeasServer) { - s.RegisterService(&_Grafeas_serviceDesc, srv) -} - -func _Grafeas_GetOccurrence_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GetOccurrenceRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(GrafeasServer).GetOccurrence(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/grafeas.v1.Grafeas/GetOccurrence", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(GrafeasServer).GetOccurrence(ctx, req.(*GetOccurrenceRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _Grafeas_ListOccurrences_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ListOccurrencesRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(GrafeasServer).ListOccurrences(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/grafeas.v1.Grafeas/ListOccurrences", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(GrafeasServer).ListOccurrences(ctx, req.(*ListOccurrencesRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _Grafeas_DeleteOccurrence_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(DeleteOccurrenceRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(GrafeasServer).DeleteOccurrence(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/grafeas.v1.Grafeas/DeleteOccurrence", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(GrafeasServer).DeleteOccurrence(ctx, req.(*DeleteOccurrenceRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _Grafeas_CreateOccurrence_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(CreateOccurrenceRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(GrafeasServer).CreateOccurrence(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/grafeas.v1.Grafeas/CreateOccurrence", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(GrafeasServer).CreateOccurrence(ctx, req.(*CreateOccurrenceRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _Grafeas_BatchCreateOccurrences_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(BatchCreateOccurrencesRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(GrafeasServer).BatchCreateOccurrences(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/grafeas.v1.Grafeas/BatchCreateOccurrences", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(GrafeasServer).BatchCreateOccurrences(ctx, req.(*BatchCreateOccurrencesRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _Grafeas_UpdateOccurrence_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(UpdateOccurrenceRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(GrafeasServer).UpdateOccurrence(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/grafeas.v1.Grafeas/UpdateOccurrence", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(GrafeasServer).UpdateOccurrence(ctx, req.(*UpdateOccurrenceRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _Grafeas_GetOccurrenceNote_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GetOccurrenceNoteRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(GrafeasServer).GetOccurrenceNote(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/grafeas.v1.Grafeas/GetOccurrenceNote", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(GrafeasServer).GetOccurrenceNote(ctx, req.(*GetOccurrenceNoteRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _Grafeas_GetNote_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GetNoteRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(GrafeasServer).GetNote(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/grafeas.v1.Grafeas/GetNote", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(GrafeasServer).GetNote(ctx, req.(*GetNoteRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _Grafeas_ListNotes_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ListNotesRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(GrafeasServer).ListNotes(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/grafeas.v1.Grafeas/ListNotes", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(GrafeasServer).ListNotes(ctx, req.(*ListNotesRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _Grafeas_DeleteNote_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(DeleteNoteRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(GrafeasServer).DeleteNote(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/grafeas.v1.Grafeas/DeleteNote", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(GrafeasServer).DeleteNote(ctx, req.(*DeleteNoteRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _Grafeas_CreateNote_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(CreateNoteRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(GrafeasServer).CreateNote(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/grafeas.v1.Grafeas/CreateNote", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(GrafeasServer).CreateNote(ctx, req.(*CreateNoteRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _Grafeas_BatchCreateNotes_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(BatchCreateNotesRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(GrafeasServer).BatchCreateNotes(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/grafeas.v1.Grafeas/BatchCreateNotes", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(GrafeasServer).BatchCreateNotes(ctx, req.(*BatchCreateNotesRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _Grafeas_UpdateNote_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(UpdateNoteRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(GrafeasServer).UpdateNote(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/grafeas.v1.Grafeas/UpdateNote", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(GrafeasServer).UpdateNote(ctx, req.(*UpdateNoteRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _Grafeas_ListNoteOccurrences_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ListNoteOccurrencesRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(GrafeasServer).ListNoteOccurrences(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/grafeas.v1.Grafeas/ListNoteOccurrences", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(GrafeasServer).ListNoteOccurrences(ctx, req.(*ListNoteOccurrencesRequest)) - } - return interceptor(ctx, in, info, handler) -} - -var _Grafeas_serviceDesc = grpc.ServiceDesc{ - ServiceName: "grafeas.v1.Grafeas", - HandlerType: (*GrafeasServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "GetOccurrence", - Handler: _Grafeas_GetOccurrence_Handler, - }, - { - MethodName: "ListOccurrences", - Handler: _Grafeas_ListOccurrences_Handler, - }, - { - MethodName: "DeleteOccurrence", - Handler: _Grafeas_DeleteOccurrence_Handler, - }, - { - MethodName: "CreateOccurrence", - Handler: _Grafeas_CreateOccurrence_Handler, - }, - { - MethodName: "BatchCreateOccurrences", - Handler: _Grafeas_BatchCreateOccurrences_Handler, - }, - { - MethodName: "UpdateOccurrence", - Handler: _Grafeas_UpdateOccurrence_Handler, - }, - { - MethodName: "GetOccurrenceNote", - Handler: _Grafeas_GetOccurrenceNote_Handler, - }, - { - MethodName: "GetNote", - Handler: _Grafeas_GetNote_Handler, - }, - { - MethodName: "ListNotes", - Handler: _Grafeas_ListNotes_Handler, - }, - { - MethodName: "DeleteNote", - Handler: _Grafeas_DeleteNote_Handler, - }, - { - MethodName: "CreateNote", - Handler: _Grafeas_CreateNote_Handler, - }, - { - MethodName: "BatchCreateNotes", - Handler: _Grafeas_BatchCreateNotes_Handler, - }, - { - MethodName: "UpdateNote", - Handler: _Grafeas_UpdateNote_Handler, - }, - { - MethodName: "ListNoteOccurrences", - Handler: _Grafeas_ListNoteOccurrences_Handler, - }, - }, - Streams: []grpc.StreamDesc{}, - Metadata: "proto/v1/grafeas.proto", -} diff --git a/proto/v1/grafeas_go_proto/image.pb.go b/proto/v1/grafeas_go_proto/image.pb.go deleted file mode 100644 index 228e9121..00000000 --- a/proto/v1/grafeas_go_proto/image.pb.go +++ /dev/null @@ -1,462 +0,0 @@ -// Copyright 2019 The Grafeas Authors. All rights reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -// Code generated by protoc-gen-go. DO NOT EDIT. -// versions: -// protoc-gen-go v1.25.0 -// protoc v3.14.0 -// source: proto/v1/image.proto - -package grafeas_go_proto - -import ( - proto "github.com/golang/protobuf/proto" - 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) -) - -// This is a compile-time assertion that a sufficiently up-to-date version -// of the legacy proto package is being used. -const _ = proto.ProtoPackageIsVersion4 - -// Layer holds metadata specific to a layer of a Docker image. -type Layer struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Required. The recovered Dockerfile directive used to construct this layer. - // See https://docs.docker.com/engine/reference/builder/ for more information. - Directive string `protobuf:"bytes,1,opt,name=directive,proto3" json:"directive,omitempty"` - // The recovered arguments to the Dockerfile directive. - Arguments string `protobuf:"bytes,2,opt,name=arguments,proto3" json:"arguments,omitempty"` -} - -func (x *Layer) Reset() { - *x = Layer{} - if protoimpl.UnsafeEnabled { - mi := &file_proto_v1_image_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *Layer) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*Layer) ProtoMessage() {} - -func (x *Layer) ProtoReflect() protoreflect.Message { - mi := &file_proto_v1_image_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 Layer.ProtoReflect.Descriptor instead. -func (*Layer) Descriptor() ([]byte, []int) { - return file_proto_v1_image_proto_rawDescGZIP(), []int{0} -} - -func (x *Layer) GetDirective() string { - if x != nil { - return x.Directive - } - return "" -} - -func (x *Layer) GetArguments() string { - if x != nil { - return x.Arguments - } - return "" -} - -// A set of properties that uniquely identify a given Docker image. -type Fingerprint struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Required. The layer ID of the final layer in the Docker image's v1 - // representation. - V1Name string `protobuf:"bytes,1,opt,name=v1_name,json=v1Name,proto3" json:"v1_name,omitempty"` - // Required. The ordered list of v2 blobs that represent a given image. - V2Blob []string `protobuf:"bytes,2,rep,name=v2_blob,json=v2Blob,proto3" json:"v2_blob,omitempty"` - // Output only. The name of the image's v2 blobs computed via: - // [bottom] := v2_blob[bottom] - // [N] := sha256(v2_blob[N] + " " + v2_name[N+1]) - // Only the name of the final blob is kept. - V2Name string `protobuf:"bytes,3,opt,name=v2_name,json=v2Name,proto3" json:"v2_name,omitempty"` -} - -func (x *Fingerprint) Reset() { - *x = Fingerprint{} - if protoimpl.UnsafeEnabled { - mi := &file_proto_v1_image_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *Fingerprint) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*Fingerprint) ProtoMessage() {} - -func (x *Fingerprint) ProtoReflect() protoreflect.Message { - mi := &file_proto_v1_image_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 Fingerprint.ProtoReflect.Descriptor instead. -func (*Fingerprint) Descriptor() ([]byte, []int) { - return file_proto_v1_image_proto_rawDescGZIP(), []int{1} -} - -func (x *Fingerprint) GetV1Name() string { - if x != nil { - return x.V1Name - } - return "" -} - -func (x *Fingerprint) GetV2Blob() []string { - if x != nil { - return x.V2Blob - } - return nil -} - -func (x *Fingerprint) GetV2Name() string { - if x != nil { - return x.V2Name - } - return "" -} - -// Basis describes the base image portion (Note) of the DockerImage -// relationship. Linked occurrences are derived from this or an equivalent image -// via: -// FROM -// Or an equivalent reference, e.g., a tag of the resource_url. -type ImageNote struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Required. Immutable. The resource_url for the resource representing the - // basis of associated occurrence images. - ResourceUrl string `protobuf:"bytes,1,opt,name=resource_url,json=resourceUrl,proto3" json:"resource_url,omitempty"` - // Required. Immutable. The fingerprint of the base image. - Fingerprint *Fingerprint `protobuf:"bytes,2,opt,name=fingerprint,proto3" json:"fingerprint,omitempty"` -} - -func (x *ImageNote) Reset() { - *x = ImageNote{} - if protoimpl.UnsafeEnabled { - mi := &file_proto_v1_image_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *ImageNote) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ImageNote) ProtoMessage() {} - -func (x *ImageNote) ProtoReflect() protoreflect.Message { - mi := &file_proto_v1_image_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 ImageNote.ProtoReflect.Descriptor instead. -func (*ImageNote) Descriptor() ([]byte, []int) { - return file_proto_v1_image_proto_rawDescGZIP(), []int{2} -} - -func (x *ImageNote) GetResourceUrl() string { - if x != nil { - return x.ResourceUrl - } - return "" -} - -func (x *ImageNote) GetFingerprint() *Fingerprint { - if x != nil { - return x.Fingerprint - } - return nil -} - -// Details of the derived image portion of the DockerImage relationship. This -// image would be produced from a Dockerfile with FROM . -type ImageOccurrence struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Required. The fingerprint of the derived image. - Fingerprint *Fingerprint `protobuf:"bytes,1,opt,name=fingerprint,proto3" json:"fingerprint,omitempty"` - // Output only. The number of layers by which this image differs from the - // associated image basis. - Distance int32 `protobuf:"varint,2,opt,name=distance,proto3" json:"distance,omitempty"` - // This contains layer-specific metadata, if populated it has length - // "distance" and is ordered with [distance] being the layer immediately - // following the base image and [1] being the final layer. - LayerInfo []*Layer `protobuf:"bytes,3,rep,name=layer_info,json=layerInfo,proto3" json:"layer_info,omitempty"` - // Output only. This contains the base image URL for the derived image - // occurrence. - BaseResourceUrl string `protobuf:"bytes,4,opt,name=base_resource_url,json=baseResourceUrl,proto3" json:"base_resource_url,omitempty"` -} - -func (x *ImageOccurrence) Reset() { - *x = ImageOccurrence{} - if protoimpl.UnsafeEnabled { - mi := &file_proto_v1_image_proto_msgTypes[3] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *ImageOccurrence) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ImageOccurrence) ProtoMessage() {} - -func (x *ImageOccurrence) ProtoReflect() protoreflect.Message { - mi := &file_proto_v1_image_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 ImageOccurrence.ProtoReflect.Descriptor instead. -func (*ImageOccurrence) Descriptor() ([]byte, []int) { - return file_proto_v1_image_proto_rawDescGZIP(), []int{3} -} - -func (x *ImageOccurrence) GetFingerprint() *Fingerprint { - if x != nil { - return x.Fingerprint - } - return nil -} - -func (x *ImageOccurrence) GetDistance() int32 { - if x != nil { - return x.Distance - } - return 0 -} - -func (x *ImageOccurrence) GetLayerInfo() []*Layer { - if x != nil { - return x.LayerInfo - } - return nil -} - -func (x *ImageOccurrence) GetBaseResourceUrl() string { - if x != nil { - return x.BaseResourceUrl - } - return "" -} - -var File_proto_v1_image_proto protoreflect.FileDescriptor - -var file_proto_v1_image_proto_rawDesc = []byte{ - 0x0a, 0x14, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x69, 0x6d, 0x61, 0x67, 0x65, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0a, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, - 0x76, 0x31, 0x22, 0x43, 0x0a, 0x05, 0x4c, 0x61, 0x79, 0x65, 0x72, 0x12, 0x1c, 0x0a, 0x09, 0x64, - 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, - 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x61, 0x72, 0x67, - 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x72, - 0x67, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x22, 0x58, 0x0a, 0x0b, 0x46, 0x69, 0x6e, 0x67, 0x65, - 0x72, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x76, 0x31, 0x5f, 0x6e, 0x61, 0x6d, - 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x76, 0x31, 0x4e, 0x61, 0x6d, 0x65, 0x12, - 0x17, 0x0a, 0x07, 0x76, 0x32, 0x5f, 0x62, 0x6c, 0x6f, 0x62, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, - 0x52, 0x06, 0x76, 0x32, 0x42, 0x6c, 0x6f, 0x62, 0x12, 0x17, 0x0a, 0x07, 0x76, 0x32, 0x5f, 0x6e, - 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x76, 0x32, 0x4e, 0x61, 0x6d, - 0x65, 0x22, 0x69, 0x0a, 0x09, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x4e, 0x6f, 0x74, 0x65, 0x12, 0x21, - 0x0a, 0x0c, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x55, 0x72, - 0x6c, 0x12, 0x39, 0x0a, 0x0b, 0x66, 0x69, 0x6e, 0x67, 0x65, 0x72, 0x70, 0x72, 0x69, 0x6e, 0x74, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, - 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x69, 0x6e, 0x67, 0x65, 0x72, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x52, - 0x0b, 0x66, 0x69, 0x6e, 0x67, 0x65, 0x72, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x22, 0xc6, 0x01, 0x0a, - 0x0f, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x4f, 0x63, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x65, - 0x12, 0x39, 0x0a, 0x0b, 0x66, 0x69, 0x6e, 0x67, 0x65, 0x72, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, - 0x76, 0x31, 0x2e, 0x46, 0x69, 0x6e, 0x67, 0x65, 0x72, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x52, 0x0b, - 0x66, 0x69, 0x6e, 0x67, 0x65, 0x72, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x64, - 0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x64, - 0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x30, 0x0a, 0x0a, 0x6c, 0x61, 0x79, 0x65, 0x72, - 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x67, 0x72, - 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x61, 0x79, 0x65, 0x72, 0x52, 0x09, - 0x6c, 0x61, 0x79, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x2a, 0x0a, 0x11, 0x62, 0x61, 0x73, - 0x65, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x62, 0x61, 0x73, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, - 0x63, 0x65, 0x55, 0x72, 0x6c, 0x42, 0x4d, 0x0a, 0x0d, 0x69, 0x6f, 0x2e, 0x67, 0x72, 0x61, 0x66, - 0x65, 0x61, 0x73, 0x2e, 0x76, 0x31, 0x50, 0x01, 0x5a, 0x34, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, - 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x2f, 0x67, 0x72, 0x61, - 0x66, 0x65, 0x61, 0x73, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x72, - 0x61, 0x66, 0x65, 0x61, 0x73, 0x5f, 0x67, 0x6f, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0xa2, 0x02, - 0x03, 0x47, 0x52, 0x41, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, -} - -var ( - file_proto_v1_image_proto_rawDescOnce sync.Once - file_proto_v1_image_proto_rawDescData = file_proto_v1_image_proto_rawDesc -) - -func file_proto_v1_image_proto_rawDescGZIP() []byte { - file_proto_v1_image_proto_rawDescOnce.Do(func() { - file_proto_v1_image_proto_rawDescData = protoimpl.X.CompressGZIP(file_proto_v1_image_proto_rawDescData) - }) - return file_proto_v1_image_proto_rawDescData -} - -var file_proto_v1_image_proto_msgTypes = make([]protoimpl.MessageInfo, 4) -var file_proto_v1_image_proto_goTypes = []interface{}{ - (*Layer)(nil), // 0: grafeas.v1.Layer - (*Fingerprint)(nil), // 1: grafeas.v1.Fingerprint - (*ImageNote)(nil), // 2: grafeas.v1.ImageNote - (*ImageOccurrence)(nil), // 3: grafeas.v1.ImageOccurrence -} -var file_proto_v1_image_proto_depIdxs = []int32{ - 1, // 0: grafeas.v1.ImageNote.fingerprint:type_name -> grafeas.v1.Fingerprint - 1, // 1: grafeas.v1.ImageOccurrence.fingerprint:type_name -> grafeas.v1.Fingerprint - 0, // 2: grafeas.v1.ImageOccurrence.layer_info:type_name -> grafeas.v1.Layer - 3, // [3:3] is the sub-list for method output_type - 3, // [3:3] is the sub-list for method input_type - 3, // [3:3] is the sub-list for extension type_name - 3, // [3:3] is the sub-list for extension extendee - 0, // [0:3] is the sub-list for field type_name -} - -func init() { file_proto_v1_image_proto_init() } -func file_proto_v1_image_proto_init() { - if File_proto_v1_image_proto != nil { - return - } - if !protoimpl.UnsafeEnabled { - file_proto_v1_image_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Layer); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_proto_v1_image_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Fingerprint); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_proto_v1_image_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ImageNote); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_proto_v1_image_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ImageOccurrence); 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_proto_v1_image_proto_rawDesc, - NumEnums: 0, - NumMessages: 4, - NumExtensions: 0, - NumServices: 0, - }, - GoTypes: file_proto_v1_image_proto_goTypes, - DependencyIndexes: file_proto_v1_image_proto_depIdxs, - MessageInfos: file_proto_v1_image_proto_msgTypes, - }.Build() - File_proto_v1_image_proto = out.File - file_proto_v1_image_proto_rawDesc = nil - file_proto_v1_image_proto_goTypes = nil - file_proto_v1_image_proto_depIdxs = nil -} diff --git a/proto/v1/grafeas_go_proto/package.pb.go b/proto/v1/grafeas_go_proto/package.pb.go deleted file mode 100644 index ab430aa5..00000000 --- a/proto/v1/grafeas_go_proto/package.pb.go +++ /dev/null @@ -1,714 +0,0 @@ -// Copyright 2019 The Grafeas Authors. All rights reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -// Code generated by protoc-gen-go. DO NOT EDIT. -// versions: -// protoc-gen-go v1.25.0 -// protoc v3.14.0 -// source: proto/v1/package.proto - -package grafeas_go_proto - -import ( - proto "github.com/golang/protobuf/proto" - 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) -) - -// This is a compile-time assertion that a sufficiently up-to-date version -// of the legacy proto package is being used. -const _ = proto.ProtoPackageIsVersion4 - -// Instruction set architectures supported by various package managers. -type Architecture int32 - -const ( - // Unknown architecture. - Architecture_ARCHITECTURE_UNSPECIFIED Architecture = 0 - // X86 architecture. - Architecture_X86 Architecture = 1 - // X64 architecture. - Architecture_X64 Architecture = 2 -) - -// Enum value maps for Architecture. -var ( - Architecture_name = map[int32]string{ - 0: "ARCHITECTURE_UNSPECIFIED", - 1: "X86", - 2: "X64", - } - Architecture_value = map[string]int32{ - "ARCHITECTURE_UNSPECIFIED": 0, - "X86": 1, - "X64": 2, - } -) - -func (x Architecture) Enum() *Architecture { - p := new(Architecture) - *p = x - return p -} - -func (x Architecture) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (Architecture) Descriptor() protoreflect.EnumDescriptor { - return file_proto_v1_package_proto_enumTypes[0].Descriptor() -} - -func (Architecture) Type() protoreflect.EnumType { - return &file_proto_v1_package_proto_enumTypes[0] -} - -func (x Architecture) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) -} - -// Deprecated: Use Architecture.Descriptor instead. -func (Architecture) EnumDescriptor() ([]byte, []int) { - return file_proto_v1_package_proto_rawDescGZIP(), []int{0} -} - -// Whether this is an ordinary package version or a sentinel MIN/MAX version. -type Version_VersionKind int32 - -const ( - // Unknown. - Version_VERSION_KIND_UNSPECIFIED Version_VersionKind = 0 - // A standard package version. - Version_NORMAL Version_VersionKind = 1 - // A special version representing negative infinity. - Version_MINIMUM Version_VersionKind = 2 - // A special version representing positive infinity. - Version_MAXIMUM Version_VersionKind = 3 -) - -// Enum value maps for Version_VersionKind. -var ( - Version_VersionKind_name = map[int32]string{ - 0: "VERSION_KIND_UNSPECIFIED", - 1: "NORMAL", - 2: "MINIMUM", - 3: "MAXIMUM", - } - Version_VersionKind_value = map[string]int32{ - "VERSION_KIND_UNSPECIFIED": 0, - "NORMAL": 1, - "MINIMUM": 2, - "MAXIMUM": 3, - } -) - -func (x Version_VersionKind) Enum() *Version_VersionKind { - p := new(Version_VersionKind) - *p = x - return p -} - -func (x Version_VersionKind) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (Version_VersionKind) Descriptor() protoreflect.EnumDescriptor { - return file_proto_v1_package_proto_enumTypes[1].Descriptor() -} - -func (Version_VersionKind) Type() protoreflect.EnumType { - return &file_proto_v1_package_proto_enumTypes[1] -} - -func (x Version_VersionKind) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) -} - -// Deprecated: Use Version_VersionKind.Descriptor instead. -func (Version_VersionKind) EnumDescriptor() ([]byte, []int) { - return file_proto_v1_package_proto_rawDescGZIP(), []int{4, 0} -} - -// This represents a particular channel of distribution for a given package. -// E.g., Debian's jessie-backports dpkg mirror. -type Distribution struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Required. The cpe_uri in [CPE format](https://cpe.mitre.org/specification/) - // denoting the package manager version distributing a package. - CpeUri string `protobuf:"bytes,1,opt,name=cpe_uri,json=cpeUri,proto3" json:"cpe_uri,omitempty"` - // The CPU architecture for which packages in this distribution channel were - // built. - Architecture Architecture `protobuf:"varint,2,opt,name=architecture,proto3,enum=grafeas.v1.Architecture" json:"architecture,omitempty"` - // The latest available version of this package in this distribution channel. - LatestVersion *Version `protobuf:"bytes,3,opt,name=latest_version,json=latestVersion,proto3" json:"latest_version,omitempty"` - // A freeform string denoting the maintainer of this package. - Maintainer string `protobuf:"bytes,4,opt,name=maintainer,proto3" json:"maintainer,omitempty"` - // The distribution channel-specific homepage for this package. - Url string `protobuf:"bytes,5,opt,name=url,proto3" json:"url,omitempty"` - // The distribution channel-specific description of this package. - Description string `protobuf:"bytes,6,opt,name=description,proto3" json:"description,omitempty"` -} - -func (x *Distribution) Reset() { - *x = Distribution{} - if protoimpl.UnsafeEnabled { - mi := &file_proto_v1_package_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *Distribution) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*Distribution) ProtoMessage() {} - -func (x *Distribution) ProtoReflect() protoreflect.Message { - mi := &file_proto_v1_package_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 Distribution.ProtoReflect.Descriptor instead. -func (*Distribution) Descriptor() ([]byte, []int) { - return file_proto_v1_package_proto_rawDescGZIP(), []int{0} -} - -func (x *Distribution) GetCpeUri() string { - if x != nil { - return x.CpeUri - } - return "" -} - -func (x *Distribution) GetArchitecture() Architecture { - if x != nil { - return x.Architecture - } - return Architecture_ARCHITECTURE_UNSPECIFIED -} - -func (x *Distribution) GetLatestVersion() *Version { - if x != nil { - return x.LatestVersion - } - return nil -} - -func (x *Distribution) GetMaintainer() string { - if x != nil { - return x.Maintainer - } - return "" -} - -func (x *Distribution) GetUrl() string { - if x != nil { - return x.Url - } - return "" -} - -func (x *Distribution) GetDescription() string { - if x != nil { - return x.Description - } - return "" -} - -// An occurrence of a particular package installation found within a system's -// filesystem. E.g., glibc was found in `/var/lib/dpkg/status`. -type Location struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Required. The CPE URI in [CPE format](https://cpe.mitre.org/specification/) - // denoting the package manager version distributing a package. - CpeUri string `protobuf:"bytes,1,opt,name=cpe_uri,json=cpeUri,proto3" json:"cpe_uri,omitempty"` - // The version installed at this location. - Version *Version `protobuf:"bytes,2,opt,name=version,proto3" json:"version,omitempty"` - // The path from which we gathered that this package/version is installed. - Path string `protobuf:"bytes,3,opt,name=path,proto3" json:"path,omitempty"` -} - -func (x *Location) Reset() { - *x = Location{} - if protoimpl.UnsafeEnabled { - mi := &file_proto_v1_package_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *Location) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*Location) ProtoMessage() {} - -func (x *Location) ProtoReflect() protoreflect.Message { - mi := &file_proto_v1_package_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 Location.ProtoReflect.Descriptor instead. -func (*Location) Descriptor() ([]byte, []int) { - return file_proto_v1_package_proto_rawDescGZIP(), []int{1} -} - -func (x *Location) GetCpeUri() string { - if x != nil { - return x.CpeUri - } - return "" -} - -func (x *Location) GetVersion() *Version { - if x != nil { - return x.Version - } - return nil -} - -func (x *Location) GetPath() string { - if x != nil { - return x.Path - } - return "" -} - -// This represents a particular package that is distributed over various -// channels. E.g., glibc (aka libc6) is distributed by many, at various -// versions. -type PackageNote struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Required. Immutable. The name of the package. - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - // The various channels by which a package is distributed. - Distribution []*Distribution `protobuf:"bytes,10,rep,name=distribution,proto3" json:"distribution,omitempty"` -} - -func (x *PackageNote) Reset() { - *x = PackageNote{} - if protoimpl.UnsafeEnabled { - mi := &file_proto_v1_package_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *PackageNote) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*PackageNote) ProtoMessage() {} - -func (x *PackageNote) ProtoReflect() protoreflect.Message { - mi := &file_proto_v1_package_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 PackageNote.ProtoReflect.Descriptor instead. -func (*PackageNote) Descriptor() ([]byte, []int) { - return file_proto_v1_package_proto_rawDescGZIP(), []int{2} -} - -func (x *PackageNote) GetName() string { - if x != nil { - return x.Name - } - return "" -} - -func (x *PackageNote) GetDistribution() []*Distribution { - if x != nil { - return x.Distribution - } - return nil -} - -// Details on how a particular software package was installed on a system. -type PackageOccurrence struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Output only. The name of the installed package. - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - // Required. All of the places within the filesystem versions of this package - // have been found. - Location []*Location `protobuf:"bytes,2,rep,name=location,proto3" json:"location,omitempty"` -} - -func (x *PackageOccurrence) Reset() { - *x = PackageOccurrence{} - if protoimpl.UnsafeEnabled { - mi := &file_proto_v1_package_proto_msgTypes[3] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *PackageOccurrence) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*PackageOccurrence) ProtoMessage() {} - -func (x *PackageOccurrence) ProtoReflect() protoreflect.Message { - mi := &file_proto_v1_package_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 PackageOccurrence.ProtoReflect.Descriptor instead. -func (*PackageOccurrence) Descriptor() ([]byte, []int) { - return file_proto_v1_package_proto_rawDescGZIP(), []int{3} -} - -func (x *PackageOccurrence) GetName() string { - if x != nil { - return x.Name - } - return "" -} - -func (x *PackageOccurrence) GetLocation() []*Location { - if x != nil { - return x.Location - } - return nil -} - -// Version contains structured information about the version of a package. -type Version struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Used to correct mistakes in the version numbering scheme. - Epoch int32 `protobuf:"varint,1,opt,name=epoch,proto3" json:"epoch,omitempty"` - // Required only when version kind is NORMAL. The main part of the version - // name. - Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` - // The iteration of the package build from the above version. - Revision string `protobuf:"bytes,3,opt,name=revision,proto3" json:"revision,omitempty"` - // Required. Distinguishes between sentinel MIN/MAX versions and normal - // versions. - Kind Version_VersionKind `protobuf:"varint,4,opt,name=kind,proto3,enum=grafeas.v1.Version_VersionKind" json:"kind,omitempty"` - // Human readable version string. This string is of the form - // :- and is only set when kind is NORMAL. - FullName string `protobuf:"bytes,5,opt,name=full_name,json=fullName,proto3" json:"full_name,omitempty"` -} - -func (x *Version) Reset() { - *x = Version{} - if protoimpl.UnsafeEnabled { - mi := &file_proto_v1_package_proto_msgTypes[4] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *Version) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*Version) ProtoMessage() {} - -func (x *Version) ProtoReflect() protoreflect.Message { - mi := &file_proto_v1_package_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 Version.ProtoReflect.Descriptor instead. -func (*Version) Descriptor() ([]byte, []int) { - return file_proto_v1_package_proto_rawDescGZIP(), []int{4} -} - -func (x *Version) GetEpoch() int32 { - if x != nil { - return x.Epoch - } - return 0 -} - -func (x *Version) GetName() string { - if x != nil { - return x.Name - } - return "" -} - -func (x *Version) GetRevision() string { - if x != nil { - return x.Revision - } - return "" -} - -func (x *Version) GetKind() Version_VersionKind { - if x != nil { - return x.Kind - } - return Version_VERSION_KIND_UNSPECIFIED -} - -func (x *Version) GetFullName() string { - if x != nil { - return x.FullName - } - return "" -} - -var File_proto_v1_package_proto protoreflect.FileDescriptor - -var file_proto_v1_package_proto_rawDesc = []byte{ - 0x0a, 0x16, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x61, 0x63, 0x6b, 0x61, - 0x67, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0a, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, - 0x73, 0x2e, 0x76, 0x31, 0x22, 0xf5, 0x01, 0x0a, 0x0c, 0x44, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, - 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x17, 0x0a, 0x07, 0x63, 0x70, 0x65, 0x5f, 0x75, 0x72, 0x69, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x63, 0x70, 0x65, 0x55, 0x72, 0x69, 0x12, 0x3c, - 0x0a, 0x0c, 0x61, 0x72, 0x63, 0x68, 0x69, 0x74, 0x65, 0x63, 0x74, 0x75, 0x72, 0x65, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x0e, 0x32, 0x18, 0x2e, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, 0x76, - 0x31, 0x2e, 0x41, 0x72, 0x63, 0x68, 0x69, 0x74, 0x65, 0x63, 0x74, 0x75, 0x72, 0x65, 0x52, 0x0c, - 0x61, 0x72, 0x63, 0x68, 0x69, 0x74, 0x65, 0x63, 0x74, 0x75, 0x72, 0x65, 0x12, 0x3a, 0x0a, 0x0e, - 0x6c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, 0x76, - 0x31, 0x2e, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x0d, 0x6c, 0x61, 0x74, 0x65, 0x73, - 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1e, 0x0a, 0x0a, 0x6d, 0x61, 0x69, 0x6e, - 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6d, 0x61, - 0x69, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, - 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 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, 0x22, 0x66, 0x0a, 0x08, - 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x17, 0x0a, 0x07, 0x63, 0x70, 0x65, 0x5f, - 0x75, 0x72, 0x69, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x63, 0x70, 0x65, 0x55, 0x72, - 0x69, 0x12, 0x2d, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, 0x76, 0x31, 0x2e, - 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, - 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, - 0x70, 0x61, 0x74, 0x68, 0x22, 0x5f, 0x0a, 0x0b, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x4e, - 0x6f, 0x74, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x3c, 0x0a, 0x0c, 0x64, 0x69, 0x73, 0x74, 0x72, - 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, - 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x69, 0x73, 0x74, 0x72, - 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0c, 0x64, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, - 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x59, 0x0a, 0x11, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, - 0x4f, 0x63, 0x63, 0x75, 0x72, 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, 0x30, - 0x0a, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x14, 0x2e, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x6f, - 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x22, 0xf4, 0x01, 0x0a, 0x07, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05, - 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x65, 0x70, 0x6f, - 0x63, 0x68, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, - 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, - 0x6f, 0x6e, 0x12, 0x33, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, - 0x32, 0x1f, 0x2e, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x65, - 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x4b, 0x69, 0x6e, - 0x64, 0x52, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x66, 0x75, 0x6c, 0x6c, 0x5f, - 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x66, 0x75, 0x6c, 0x6c, - 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x51, 0x0a, 0x0b, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x4b, - 0x69, 0x6e, 0x64, 0x12, 0x1c, 0x0a, 0x18, 0x56, 0x45, 0x52, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x4b, - 0x49, 0x4e, 0x44, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, - 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x4e, 0x4f, 0x52, 0x4d, 0x41, 0x4c, 0x10, 0x01, 0x12, 0x0b, 0x0a, - 0x07, 0x4d, 0x49, 0x4e, 0x49, 0x4d, 0x55, 0x4d, 0x10, 0x02, 0x12, 0x0b, 0x0a, 0x07, 0x4d, 0x41, - 0x58, 0x49, 0x4d, 0x55, 0x4d, 0x10, 0x03, 0x2a, 0x3e, 0x0a, 0x0c, 0x41, 0x72, 0x63, 0x68, 0x69, - 0x74, 0x65, 0x63, 0x74, 0x75, 0x72, 0x65, 0x12, 0x1c, 0x0a, 0x18, 0x41, 0x52, 0x43, 0x48, 0x49, - 0x54, 0x45, 0x43, 0x54, 0x55, 0x52, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, - 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x07, 0x0a, 0x03, 0x58, 0x38, 0x36, 0x10, 0x01, 0x12, 0x07, - 0x0a, 0x03, 0x58, 0x36, 0x34, 0x10, 0x02, 0x42, 0x4d, 0x0a, 0x0d, 0x69, 0x6f, 0x2e, 0x67, 0x72, - 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, 0x76, 0x31, 0x50, 0x01, 0x5a, 0x34, 0x67, 0x69, 0x74, 0x68, - 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x2f, 0x67, - 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x76, 0x31, 0x2f, - 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x5f, 0x67, 0x6f, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0xa2, 0x02, 0x03, 0x47, 0x52, 0x41, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, -} - -var ( - file_proto_v1_package_proto_rawDescOnce sync.Once - file_proto_v1_package_proto_rawDescData = file_proto_v1_package_proto_rawDesc -) - -func file_proto_v1_package_proto_rawDescGZIP() []byte { - file_proto_v1_package_proto_rawDescOnce.Do(func() { - file_proto_v1_package_proto_rawDescData = protoimpl.X.CompressGZIP(file_proto_v1_package_proto_rawDescData) - }) - return file_proto_v1_package_proto_rawDescData -} - -var file_proto_v1_package_proto_enumTypes = make([]protoimpl.EnumInfo, 2) -var file_proto_v1_package_proto_msgTypes = make([]protoimpl.MessageInfo, 5) -var file_proto_v1_package_proto_goTypes = []interface{}{ - (Architecture)(0), // 0: grafeas.v1.Architecture - (Version_VersionKind)(0), // 1: grafeas.v1.Version.VersionKind - (*Distribution)(nil), // 2: grafeas.v1.Distribution - (*Location)(nil), // 3: grafeas.v1.Location - (*PackageNote)(nil), // 4: grafeas.v1.PackageNote - (*PackageOccurrence)(nil), // 5: grafeas.v1.PackageOccurrence - (*Version)(nil), // 6: grafeas.v1.Version -} -var file_proto_v1_package_proto_depIdxs = []int32{ - 0, // 0: grafeas.v1.Distribution.architecture:type_name -> grafeas.v1.Architecture - 6, // 1: grafeas.v1.Distribution.latest_version:type_name -> grafeas.v1.Version - 6, // 2: grafeas.v1.Location.version:type_name -> grafeas.v1.Version - 2, // 3: grafeas.v1.PackageNote.distribution:type_name -> grafeas.v1.Distribution - 3, // 4: grafeas.v1.PackageOccurrence.location:type_name -> grafeas.v1.Location - 1, // 5: grafeas.v1.Version.kind:type_name -> grafeas.v1.Version.VersionKind - 6, // [6:6] is the sub-list for method output_type - 6, // [6:6] is the sub-list for method input_type - 6, // [6:6] is the sub-list for extension type_name - 6, // [6:6] is the sub-list for extension extendee - 0, // [0:6] is the sub-list for field type_name -} - -func init() { file_proto_v1_package_proto_init() } -func file_proto_v1_package_proto_init() { - if File_proto_v1_package_proto != nil { - return - } - if !protoimpl.UnsafeEnabled { - file_proto_v1_package_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Distribution); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_proto_v1_package_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Location); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_proto_v1_package_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PackageNote); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_proto_v1_package_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PackageOccurrence); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_proto_v1_package_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Version); 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_proto_v1_package_proto_rawDesc, - NumEnums: 2, - NumMessages: 5, - NumExtensions: 0, - NumServices: 0, - }, - GoTypes: file_proto_v1_package_proto_goTypes, - DependencyIndexes: file_proto_v1_package_proto_depIdxs, - EnumInfos: file_proto_v1_package_proto_enumTypes, - MessageInfos: file_proto_v1_package_proto_msgTypes, - }.Build() - File_proto_v1_package_proto = out.File - file_proto_v1_package_proto_rawDesc = nil - file_proto_v1_package_proto_goTypes = nil - file_proto_v1_package_proto_depIdxs = nil -} diff --git a/proto/v1/grafeas_go_proto/provenance.pb.go b/proto/v1/grafeas_go_proto/provenance.pb.go deleted file mode 100644 index 014375a3..00000000 --- a/proto/v1/grafeas_go_proto/provenance.pb.go +++ /dev/null @@ -1,1634 +0,0 @@ -// Copyright 2019 The Grafeas Authors. All rights reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -// Code generated by protoc-gen-go. DO NOT EDIT. -// versions: -// protoc-gen-go v1.25.0 -// protoc v3.14.0 -// source: proto/v1/provenance.proto - -package grafeas_go_proto - -import ( - proto "github.com/golang/protobuf/proto" - 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) -) - -// This is a compile-time assertion that a sufficiently up-to-date version -// of the legacy proto package is being used. -const _ = proto.ProtoPackageIsVersion4 - -// The type of an alias. -type AliasContext_Kind int32 - -const ( - // Unknown. - AliasContext_KIND_UNSPECIFIED AliasContext_Kind = 0 - // Git tag. - AliasContext_FIXED AliasContext_Kind = 1 - // Git branch. - AliasContext_MOVABLE AliasContext_Kind = 2 - // Used to specify non-standard aliases. For example, if a Git repo has a - // ref named "refs/foo/bar". - AliasContext_OTHER AliasContext_Kind = 4 -) - -// Enum value maps for AliasContext_Kind. -var ( - AliasContext_Kind_name = map[int32]string{ - 0: "KIND_UNSPECIFIED", - 1: "FIXED", - 2: "MOVABLE", - 4: "OTHER", - } - AliasContext_Kind_value = map[string]int32{ - "KIND_UNSPECIFIED": 0, - "FIXED": 1, - "MOVABLE": 2, - "OTHER": 4, - } -) - -func (x AliasContext_Kind) Enum() *AliasContext_Kind { - p := new(AliasContext_Kind) - *p = x - return p -} - -func (x AliasContext_Kind) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (AliasContext_Kind) Descriptor() protoreflect.EnumDescriptor { - return file_proto_v1_provenance_proto_enumTypes[0].Descriptor() -} - -func (AliasContext_Kind) Type() protoreflect.EnumType { - return &file_proto_v1_provenance_proto_enumTypes[0] -} - -func (x AliasContext_Kind) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) -} - -// Deprecated: Use AliasContext_Kind.Descriptor instead. -func (AliasContext_Kind) EnumDescriptor() ([]byte, []int) { - return file_proto_v1_provenance_proto_rawDescGZIP(), []int{7, 0} -} - -// Provenance of a build. Contains all information needed to verify the full -// details about the build from source to completion. -type BuildProvenance struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Required. Unique identifier of the build. - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - // ID of the project. - ProjectId string `protobuf:"bytes,2,opt,name=project_id,json=projectId,proto3" json:"project_id,omitempty"` - // Commands requested by the build. - Commands []*Command `protobuf:"bytes,3,rep,name=commands,proto3" json:"commands,omitempty"` - // Output of the build. - BuiltArtifacts []*Artifact `protobuf:"bytes,4,rep,name=built_artifacts,json=builtArtifacts,proto3" json:"built_artifacts,omitempty"` - // Time at which the build was created. - CreateTime *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=create_time,json=createTime,proto3" json:"create_time,omitempty"` - // Time at which execution of the build was started. - StartTime *timestamppb.Timestamp `protobuf:"bytes,6,opt,name=start_time,json=startTime,proto3" json:"start_time,omitempty"` - // Time at which execution of the build was finished. - EndTime *timestamppb.Timestamp `protobuf:"bytes,7,opt,name=end_time,json=endTime,proto3" json:"end_time,omitempty"` - // E-mail address of the user who initiated this build. Note that this was the - // user's e-mail address at the time the build was initiated; this address may - // not represent the same end-user for all time. - Creator string `protobuf:"bytes,8,opt,name=creator,proto3" json:"creator,omitempty"` - // URI where any logs for this provenance were written. - LogsUri string `protobuf:"bytes,9,opt,name=logs_uri,json=logsUri,proto3" json:"logs_uri,omitempty"` - // Details of the Source input to the build. - SourceProvenance *Source `protobuf:"bytes,10,opt,name=source_provenance,json=sourceProvenance,proto3" json:"source_provenance,omitempty"` - // Trigger identifier if the build was triggered automatically; empty if not. - TriggerId string `protobuf:"bytes,11,opt,name=trigger_id,json=triggerId,proto3" json:"trigger_id,omitempty"` - // Special options applied to this build. This is a catch-all field where - // build providers can enter any desired additional details. - BuildOptions map[string]string `protobuf:"bytes,12,rep,name=build_options,json=buildOptions,proto3" json:"build_options,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` - // Version string of the builder at the time this build was executed. - BuilderVersion string `protobuf:"bytes,13,opt,name=builder_version,json=builderVersion,proto3" json:"builder_version,omitempty"` -} - -func (x *BuildProvenance) Reset() { - *x = BuildProvenance{} - if protoimpl.UnsafeEnabled { - mi := &file_proto_v1_provenance_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *BuildProvenance) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*BuildProvenance) ProtoMessage() {} - -func (x *BuildProvenance) ProtoReflect() protoreflect.Message { - mi := &file_proto_v1_provenance_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 BuildProvenance.ProtoReflect.Descriptor instead. -func (*BuildProvenance) Descriptor() ([]byte, []int) { - return file_proto_v1_provenance_proto_rawDescGZIP(), []int{0} -} - -func (x *BuildProvenance) GetId() string { - if x != nil { - return x.Id - } - return "" -} - -func (x *BuildProvenance) GetProjectId() string { - if x != nil { - return x.ProjectId - } - return "" -} - -func (x *BuildProvenance) GetCommands() []*Command { - if x != nil { - return x.Commands - } - return nil -} - -func (x *BuildProvenance) GetBuiltArtifacts() []*Artifact { - if x != nil { - return x.BuiltArtifacts - } - return nil -} - -func (x *BuildProvenance) GetCreateTime() *timestamppb.Timestamp { - if x != nil { - return x.CreateTime - } - return nil -} - -func (x *BuildProvenance) GetStartTime() *timestamppb.Timestamp { - if x != nil { - return x.StartTime - } - return nil -} - -func (x *BuildProvenance) GetEndTime() *timestamppb.Timestamp { - if x != nil { - return x.EndTime - } - return nil -} - -func (x *BuildProvenance) GetCreator() string { - if x != nil { - return x.Creator - } - return "" -} - -func (x *BuildProvenance) GetLogsUri() string { - if x != nil { - return x.LogsUri - } - return "" -} - -func (x *BuildProvenance) GetSourceProvenance() *Source { - if x != nil { - return x.SourceProvenance - } - return nil -} - -func (x *BuildProvenance) GetTriggerId() string { - if x != nil { - return x.TriggerId - } - return "" -} - -func (x *BuildProvenance) GetBuildOptions() map[string]string { - if x != nil { - return x.BuildOptions - } - return nil -} - -func (x *BuildProvenance) GetBuilderVersion() string { - if x != nil { - return x.BuilderVersion - } - return "" -} - -// Source describes the location of the source used for the build. -type Source struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // If provided, the input binary artifacts for the build came from this - // location. - ArtifactStorageSourceUri string `protobuf:"bytes,1,opt,name=artifact_storage_source_uri,json=artifactStorageSourceUri,proto3" json:"artifact_storage_source_uri,omitempty"` - // Hash(es) of the build source, which can be used to verify that the original - // source integrity was maintained in the build. - // - // The keys to this map are file paths used as build source and the values - // contain the hash values for those files. - // - // If the build source came in a single package such as a gzipped tarfile - // (.tar.gz), the FileHash will be for the single path to that file. - FileHashes map[string]*FileHashes `protobuf:"bytes,2,rep,name=file_hashes,json=fileHashes,proto3" json:"file_hashes,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` - // If provided, the source code used for the build came from this location. - Context *SourceContext `protobuf:"bytes,3,opt,name=context,proto3" json:"context,omitempty"` - // If provided, some of the source code used for the build may be found in - // these locations, in the case where the source repository had multiple - // remotes or submodules. This list will not include the context specified in - // the context field. - AdditionalContexts []*SourceContext `protobuf:"bytes,4,rep,name=additional_contexts,json=additionalContexts,proto3" json:"additional_contexts,omitempty"` -} - -func (x *Source) Reset() { - *x = Source{} - if protoimpl.UnsafeEnabled { - mi := &file_proto_v1_provenance_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *Source) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*Source) ProtoMessage() {} - -func (x *Source) ProtoReflect() protoreflect.Message { - mi := &file_proto_v1_provenance_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 Source.ProtoReflect.Descriptor instead. -func (*Source) Descriptor() ([]byte, []int) { - return file_proto_v1_provenance_proto_rawDescGZIP(), []int{1} -} - -func (x *Source) GetArtifactStorageSourceUri() string { - if x != nil { - return x.ArtifactStorageSourceUri - } - return "" -} - -func (x *Source) GetFileHashes() map[string]*FileHashes { - if x != nil { - return x.FileHashes - } - return nil -} - -func (x *Source) GetContext() *SourceContext { - if x != nil { - return x.Context - } - return nil -} - -func (x *Source) GetAdditionalContexts() []*SourceContext { - if x != nil { - return x.AdditionalContexts - } - return nil -} - -// Container message for hashes of byte content of files, used in source -// messages to verify integrity of source input to the build. -type FileHashes struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Required. Collection of file hashes. - FileHash []*Hash `protobuf:"bytes,1,rep,name=file_hash,json=fileHash,proto3" json:"file_hash,omitempty"` -} - -func (x *FileHashes) Reset() { - *x = FileHashes{} - if protoimpl.UnsafeEnabled { - mi := &file_proto_v1_provenance_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *FileHashes) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*FileHashes) ProtoMessage() {} - -func (x *FileHashes) ProtoReflect() protoreflect.Message { - mi := &file_proto_v1_provenance_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 FileHashes.ProtoReflect.Descriptor instead. -func (*FileHashes) Descriptor() ([]byte, []int) { - return file_proto_v1_provenance_proto_rawDescGZIP(), []int{2} -} - -func (x *FileHashes) GetFileHash() []*Hash { - if x != nil { - return x.FileHash - } - return nil -} - -// Container message for hash values. -type Hash struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Required. The type of hash that was performed, e.g. "SHA-256". - Type string `protobuf:"bytes,1,opt,name=type,proto3" json:"type,omitempty"` - // Required. The hash value. - Value []byte `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"` -} - -func (x *Hash) Reset() { - *x = Hash{} - if protoimpl.UnsafeEnabled { - mi := &file_proto_v1_provenance_proto_msgTypes[3] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *Hash) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*Hash) ProtoMessage() {} - -func (x *Hash) ProtoReflect() protoreflect.Message { - mi := &file_proto_v1_provenance_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 Hash.ProtoReflect.Descriptor instead. -func (*Hash) Descriptor() ([]byte, []int) { - return file_proto_v1_provenance_proto_rawDescGZIP(), []int{3} -} - -func (x *Hash) GetType() string { - if x != nil { - return x.Type - } - return "" -} - -func (x *Hash) GetValue() []byte { - if x != nil { - return x.Value - } - return nil -} - -// Command describes a step performed as part of the build pipeline. -type Command struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Required. Name of the command, as presented on the command line, or if the - // command is packaged as a Docker container, as presented to `docker pull`. - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - // Environment variables set before running this command. - Env []string `protobuf:"bytes,2,rep,name=env,proto3" json:"env,omitempty"` - // Command-line arguments used when executing this command. - Args []string `protobuf:"bytes,3,rep,name=args,proto3" json:"args,omitempty"` - // Working directory (relative to project source root) used when running this - // command. - Dir string `protobuf:"bytes,4,opt,name=dir,proto3" json:"dir,omitempty"` - // Optional unique identifier for this command, used in wait_for to reference - // this command as a dependency. - Id string `protobuf:"bytes,5,opt,name=id,proto3" json:"id,omitempty"` - // The ID(s) of the command(s) that this command depends on. - WaitFor []string `protobuf:"bytes,6,rep,name=wait_for,json=waitFor,proto3" json:"wait_for,omitempty"` -} - -func (x *Command) Reset() { - *x = Command{} - if protoimpl.UnsafeEnabled { - mi := &file_proto_v1_provenance_proto_msgTypes[4] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *Command) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*Command) ProtoMessage() {} - -func (x *Command) ProtoReflect() protoreflect.Message { - mi := &file_proto_v1_provenance_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 Command.ProtoReflect.Descriptor instead. -func (*Command) Descriptor() ([]byte, []int) { - return file_proto_v1_provenance_proto_rawDescGZIP(), []int{4} -} - -func (x *Command) GetName() string { - if x != nil { - return x.Name - } - return "" -} - -func (x *Command) GetEnv() []string { - if x != nil { - return x.Env - } - return nil -} - -func (x *Command) GetArgs() []string { - if x != nil { - return x.Args - } - return nil -} - -func (x *Command) GetDir() string { - if x != nil { - return x.Dir - } - return "" -} - -func (x *Command) GetId() string { - if x != nil { - return x.Id - } - return "" -} - -func (x *Command) GetWaitFor() []string { - if x != nil { - return x.WaitFor - } - return nil -} - -// Artifact describes a build product. -type Artifact struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Hash or checksum value of a binary, or Docker Registry 2.0 digest of a - // container. - Checksum string `protobuf:"bytes,1,opt,name=checksum,proto3" json:"checksum,omitempty"` - // Artifact ID, if any; for container images, this will be a URL by digest - // like `gcr.io/projectID/imagename@sha256:123456`. - Id string `protobuf:"bytes,2,opt,name=id,proto3" json:"id,omitempty"` - // Related artifact names. This may be the path to a binary or jar file, or in - // the case of a container build, the name used to push the container image to - // Google Container Registry, as presented to `docker push`. Note that a - // single Artifact ID can have multiple names, for example if two tags are - // applied to one image. - Names []string `protobuf:"bytes,3,rep,name=names,proto3" json:"names,omitempty"` -} - -func (x *Artifact) Reset() { - *x = Artifact{} - if protoimpl.UnsafeEnabled { - mi := &file_proto_v1_provenance_proto_msgTypes[5] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *Artifact) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*Artifact) ProtoMessage() {} - -func (x *Artifact) ProtoReflect() protoreflect.Message { - mi := &file_proto_v1_provenance_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 Artifact.ProtoReflect.Descriptor instead. -func (*Artifact) Descriptor() ([]byte, []int) { - return file_proto_v1_provenance_proto_rawDescGZIP(), []int{5} -} - -func (x *Artifact) GetChecksum() string { - if x != nil { - return x.Checksum - } - return "" -} - -func (x *Artifact) GetId() string { - if x != nil { - return x.Id - } - return "" -} - -func (x *Artifact) GetNames() []string { - if x != nil { - return x.Names - } - return nil -} - -// A SourceContext is a reference to a tree of files. A SourceContext together -// with a path point to a unique revision of a single file or directory. -type SourceContext struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // A SourceContext can refer any one of the following types of repositories. - // - // Types that are assignable to Context: - // *SourceContext_CloudRepo - // *SourceContext_Gerrit - // *SourceContext_Git - Context isSourceContext_Context `protobuf_oneof:"context"` - // Labels with user defined metadata. - Labels map[string]string `protobuf:"bytes,4,rep,name=labels,proto3" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` -} - -func (x *SourceContext) Reset() { - *x = SourceContext{} - if protoimpl.UnsafeEnabled { - mi := &file_proto_v1_provenance_proto_msgTypes[6] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *SourceContext) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*SourceContext) ProtoMessage() {} - -func (x *SourceContext) ProtoReflect() protoreflect.Message { - mi := &file_proto_v1_provenance_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 SourceContext.ProtoReflect.Descriptor instead. -func (*SourceContext) Descriptor() ([]byte, []int) { - return file_proto_v1_provenance_proto_rawDescGZIP(), []int{6} -} - -func (m *SourceContext) GetContext() isSourceContext_Context { - if m != nil { - return m.Context - } - return nil -} - -func (x *SourceContext) GetCloudRepo() *CloudRepoSourceContext { - if x, ok := x.GetContext().(*SourceContext_CloudRepo); ok { - return x.CloudRepo - } - return nil -} - -func (x *SourceContext) GetGerrit() *GerritSourceContext { - if x, ok := x.GetContext().(*SourceContext_Gerrit); ok { - return x.Gerrit - } - return nil -} - -func (x *SourceContext) GetGit() *GitSourceContext { - if x, ok := x.GetContext().(*SourceContext_Git); ok { - return x.Git - } - return nil -} - -func (x *SourceContext) GetLabels() map[string]string { - if x != nil { - return x.Labels - } - return nil -} - -type isSourceContext_Context interface { - isSourceContext_Context() -} - -type SourceContext_CloudRepo struct { - // A SourceContext referring to a revision in a Google Cloud Source Repo. - CloudRepo *CloudRepoSourceContext `protobuf:"bytes,1,opt,name=cloud_repo,json=cloudRepo,proto3,oneof"` -} - -type SourceContext_Gerrit struct { - // A SourceContext referring to a Gerrit project. - Gerrit *GerritSourceContext `protobuf:"bytes,2,opt,name=gerrit,proto3,oneof"` -} - -type SourceContext_Git struct { - // A SourceContext referring to any third party Git repo (e.g., GitHub). - Git *GitSourceContext `protobuf:"bytes,3,opt,name=git,proto3,oneof"` -} - -func (*SourceContext_CloudRepo) isSourceContext_Context() {} - -func (*SourceContext_Gerrit) isSourceContext_Context() {} - -func (*SourceContext_Git) isSourceContext_Context() {} - -// An alias to a repo revision. -type AliasContext struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // The alias kind. - Kind AliasContext_Kind `protobuf:"varint,1,opt,name=kind,proto3,enum=grafeas.v1.AliasContext_Kind" json:"kind,omitempty"` - // The alias name. - Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` -} - -func (x *AliasContext) Reset() { - *x = AliasContext{} - if protoimpl.UnsafeEnabled { - mi := &file_proto_v1_provenance_proto_msgTypes[7] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *AliasContext) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*AliasContext) ProtoMessage() {} - -func (x *AliasContext) ProtoReflect() protoreflect.Message { - mi := &file_proto_v1_provenance_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 AliasContext.ProtoReflect.Descriptor instead. -func (*AliasContext) Descriptor() ([]byte, []int) { - return file_proto_v1_provenance_proto_rawDescGZIP(), []int{7} -} - -func (x *AliasContext) GetKind() AliasContext_Kind { - if x != nil { - return x.Kind - } - return AliasContext_KIND_UNSPECIFIED -} - -func (x *AliasContext) GetName() string { - if x != nil { - return x.Name - } - return "" -} - -// A CloudRepoSourceContext denotes a particular revision in a Google Cloud -// Source Repo. -type CloudRepoSourceContext struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // The ID of the repo. - RepoId *RepoId `protobuf:"bytes,1,opt,name=repo_id,json=repoId,proto3" json:"repo_id,omitempty"` - // A revision in a Cloud Repo can be identified by either its revision ID or - // its alias. - // - // Types that are assignable to Revision: - // *CloudRepoSourceContext_RevisionId - // *CloudRepoSourceContext_AliasContext - Revision isCloudRepoSourceContext_Revision `protobuf_oneof:"revision"` -} - -func (x *CloudRepoSourceContext) Reset() { - *x = CloudRepoSourceContext{} - if protoimpl.UnsafeEnabled { - mi := &file_proto_v1_provenance_proto_msgTypes[8] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *CloudRepoSourceContext) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*CloudRepoSourceContext) ProtoMessage() {} - -func (x *CloudRepoSourceContext) ProtoReflect() protoreflect.Message { - mi := &file_proto_v1_provenance_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 CloudRepoSourceContext.ProtoReflect.Descriptor instead. -func (*CloudRepoSourceContext) Descriptor() ([]byte, []int) { - return file_proto_v1_provenance_proto_rawDescGZIP(), []int{8} -} - -func (x *CloudRepoSourceContext) GetRepoId() *RepoId { - if x != nil { - return x.RepoId - } - return nil -} - -func (m *CloudRepoSourceContext) GetRevision() isCloudRepoSourceContext_Revision { - if m != nil { - return m.Revision - } - return nil -} - -func (x *CloudRepoSourceContext) GetRevisionId() string { - if x, ok := x.GetRevision().(*CloudRepoSourceContext_RevisionId); ok { - return x.RevisionId - } - return "" -} - -func (x *CloudRepoSourceContext) GetAliasContext() *AliasContext { - if x, ok := x.GetRevision().(*CloudRepoSourceContext_AliasContext); ok { - return x.AliasContext - } - return nil -} - -type isCloudRepoSourceContext_Revision interface { - isCloudRepoSourceContext_Revision() -} - -type CloudRepoSourceContext_RevisionId struct { - // A revision ID. - RevisionId string `protobuf:"bytes,2,opt,name=revision_id,json=revisionId,proto3,oneof"` -} - -type CloudRepoSourceContext_AliasContext struct { - // An alias, which may be a branch or tag. - AliasContext *AliasContext `protobuf:"bytes,3,opt,name=alias_context,json=aliasContext,proto3,oneof"` -} - -func (*CloudRepoSourceContext_RevisionId) isCloudRepoSourceContext_Revision() {} - -func (*CloudRepoSourceContext_AliasContext) isCloudRepoSourceContext_Revision() {} - -// A SourceContext referring to a Gerrit project. -type GerritSourceContext struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // The URI of a running Gerrit instance. - HostUri string `protobuf:"bytes,1,opt,name=host_uri,json=hostUri,proto3" json:"host_uri,omitempty"` - // The full project name within the host. Projects may be nested, so - // "project/subproject" is a valid project name. The "repo name" is the - // hostURI/project. - GerritProject string `protobuf:"bytes,2,opt,name=gerrit_project,json=gerritProject,proto3" json:"gerrit_project,omitempty"` - // A revision in a Gerrit project can be identified by either its revision ID - // or its alias. - // - // Types that are assignable to Revision: - // *GerritSourceContext_RevisionId - // *GerritSourceContext_AliasContext - Revision isGerritSourceContext_Revision `protobuf_oneof:"revision"` -} - -func (x *GerritSourceContext) Reset() { - *x = GerritSourceContext{} - if protoimpl.UnsafeEnabled { - mi := &file_proto_v1_provenance_proto_msgTypes[9] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *GerritSourceContext) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GerritSourceContext) ProtoMessage() {} - -func (x *GerritSourceContext) ProtoReflect() protoreflect.Message { - mi := &file_proto_v1_provenance_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 GerritSourceContext.ProtoReflect.Descriptor instead. -func (*GerritSourceContext) Descriptor() ([]byte, []int) { - return file_proto_v1_provenance_proto_rawDescGZIP(), []int{9} -} - -func (x *GerritSourceContext) GetHostUri() string { - if x != nil { - return x.HostUri - } - return "" -} - -func (x *GerritSourceContext) GetGerritProject() string { - if x != nil { - return x.GerritProject - } - return "" -} - -func (m *GerritSourceContext) GetRevision() isGerritSourceContext_Revision { - if m != nil { - return m.Revision - } - return nil -} - -func (x *GerritSourceContext) GetRevisionId() string { - if x, ok := x.GetRevision().(*GerritSourceContext_RevisionId); ok { - return x.RevisionId - } - return "" -} - -func (x *GerritSourceContext) GetAliasContext() *AliasContext { - if x, ok := x.GetRevision().(*GerritSourceContext_AliasContext); ok { - return x.AliasContext - } - return nil -} - -type isGerritSourceContext_Revision interface { - isGerritSourceContext_Revision() -} - -type GerritSourceContext_RevisionId struct { - // A revision (commit) ID. - RevisionId string `protobuf:"bytes,3,opt,name=revision_id,json=revisionId,proto3,oneof"` -} - -type GerritSourceContext_AliasContext struct { - // An alias, which may be a branch or tag. - AliasContext *AliasContext `protobuf:"bytes,4,opt,name=alias_context,json=aliasContext,proto3,oneof"` -} - -func (*GerritSourceContext_RevisionId) isGerritSourceContext_Revision() {} - -func (*GerritSourceContext_AliasContext) isGerritSourceContext_Revision() {} - -// A GitSourceContext denotes a particular revision in a third party Git -// repository (e.g., GitHub). -type GitSourceContext struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Git repository URL. - Url string `protobuf:"bytes,1,opt,name=url,proto3" json:"url,omitempty"` - // Git commit hash. - RevisionId string `protobuf:"bytes,2,opt,name=revision_id,json=revisionId,proto3" json:"revision_id,omitempty"` -} - -func (x *GitSourceContext) Reset() { - *x = GitSourceContext{} - if protoimpl.UnsafeEnabled { - mi := &file_proto_v1_provenance_proto_msgTypes[10] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *GitSourceContext) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GitSourceContext) ProtoMessage() {} - -func (x *GitSourceContext) ProtoReflect() protoreflect.Message { - mi := &file_proto_v1_provenance_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 GitSourceContext.ProtoReflect.Descriptor instead. -func (*GitSourceContext) Descriptor() ([]byte, []int) { - return file_proto_v1_provenance_proto_rawDescGZIP(), []int{10} -} - -func (x *GitSourceContext) GetUrl() string { - if x != nil { - return x.Url - } - return "" -} - -func (x *GitSourceContext) GetRevisionId() string { - if x != nil { - return x.RevisionId - } - return "" -} - -// A unique identifier for a Cloud Repo. -type RepoId struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // A cloud repo can be identified by either its project ID and repository name - // combination, or its globally unique identifier. - // - // Types that are assignable to Id: - // *RepoId_ProjectRepoId - // *RepoId_Uid - Id isRepoId_Id `protobuf_oneof:"id"` -} - -func (x *RepoId) Reset() { - *x = RepoId{} - if protoimpl.UnsafeEnabled { - mi := &file_proto_v1_provenance_proto_msgTypes[11] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *RepoId) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*RepoId) ProtoMessage() {} - -func (x *RepoId) ProtoReflect() protoreflect.Message { - mi := &file_proto_v1_provenance_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 RepoId.ProtoReflect.Descriptor instead. -func (*RepoId) Descriptor() ([]byte, []int) { - return file_proto_v1_provenance_proto_rawDescGZIP(), []int{11} -} - -func (m *RepoId) GetId() isRepoId_Id { - if m != nil { - return m.Id - } - return nil -} - -func (x *RepoId) GetProjectRepoId() *ProjectRepoId { - if x, ok := x.GetId().(*RepoId_ProjectRepoId); ok { - return x.ProjectRepoId - } - return nil -} - -func (x *RepoId) GetUid() string { - if x, ok := x.GetId().(*RepoId_Uid); ok { - return x.Uid - } - return "" -} - -type isRepoId_Id interface { - isRepoId_Id() -} - -type RepoId_ProjectRepoId struct { - // A combination of a project ID and a repo name. - ProjectRepoId *ProjectRepoId `protobuf:"bytes,1,opt,name=project_repo_id,json=projectRepoId,proto3,oneof"` -} - -type RepoId_Uid struct { - // A server-assigned, globally unique identifier. - Uid string `protobuf:"bytes,2,opt,name=uid,proto3,oneof"` -} - -func (*RepoId_ProjectRepoId) isRepoId_Id() {} - -func (*RepoId_Uid) isRepoId_Id() {} - -// Selects a repo using a Google Cloud Platform project ID (e.g., -// winged-cargo-31) and a repo name within that project. -type ProjectRepoId struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // The ID of the project. - ProjectId string `protobuf:"bytes,1,opt,name=project_id,json=projectId,proto3" json:"project_id,omitempty"` - // The name of the repo. Leave empty for the default repo. - RepoName string `protobuf:"bytes,2,opt,name=repo_name,json=repoName,proto3" json:"repo_name,omitempty"` -} - -func (x *ProjectRepoId) Reset() { - *x = ProjectRepoId{} - if protoimpl.UnsafeEnabled { - mi := &file_proto_v1_provenance_proto_msgTypes[12] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *ProjectRepoId) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ProjectRepoId) ProtoMessage() {} - -func (x *ProjectRepoId) ProtoReflect() protoreflect.Message { - mi := &file_proto_v1_provenance_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 ProjectRepoId.ProtoReflect.Descriptor instead. -func (*ProjectRepoId) Descriptor() ([]byte, []int) { - return file_proto_v1_provenance_proto_rawDescGZIP(), []int{12} -} - -func (x *ProjectRepoId) GetProjectId() string { - if x != nil { - return x.ProjectId - } - return "" -} - -func (x *ProjectRepoId) GetRepoName() string { - if x != nil { - return x.RepoName - } - return "" -} - -var File_proto_v1_provenance_proto protoreflect.FileDescriptor - -var file_proto_v1_provenance_proto_rawDesc = []byte{ - 0x0a, 0x19, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x76, 0x65, - 0x6e, 0x61, 0x6e, 0x63, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0a, 0x67, 0x72, 0x61, - 0x66, 0x65, 0x61, 0x73, 0x2e, 0x76, 0x31, 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, 0xb2, 0x05, 0x0a, 0x0f, 0x42, 0x75, 0x69, - 0x6c, 0x64, 0x50, 0x72, 0x6f, 0x76, 0x65, 0x6e, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x0e, 0x0a, 0x02, - 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1d, 0x0a, 0x0a, - 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x09, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x64, 0x12, 0x2f, 0x0a, 0x08, 0x63, - 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, - 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x61, - 0x6e, 0x64, 0x52, 0x08, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x12, 0x3d, 0x0a, 0x0f, - 0x62, 0x75, 0x69, 0x6c, 0x74, 0x5f, 0x61, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x73, 0x18, - 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, - 0x76, 0x31, 0x2e, 0x41, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x52, 0x0e, 0x62, 0x75, 0x69, - 0x6c, 0x74, 0x41, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x73, 0x12, 0x3b, 0x0a, 0x0b, 0x63, - 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 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, 0x0a, 0x63, 0x72, - 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x39, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, - 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 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, 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, - 0x69, 0x6d, 0x65, 0x12, 0x35, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 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, 0x07, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x72, - 0x65, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x72, 0x65, - 0x61, 0x74, 0x6f, 0x72, 0x12, 0x19, 0x0a, 0x08, 0x6c, 0x6f, 0x67, 0x73, 0x5f, 0x75, 0x72, 0x69, - 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6c, 0x6f, 0x67, 0x73, 0x55, 0x72, 0x69, 0x12, - 0x3f, 0x0a, 0x11, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x70, 0x72, 0x6f, 0x76, 0x65, 0x6e, - 0x61, 0x6e, 0x63, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x72, 0x61, - 0x66, 0x65, 0x61, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x10, - 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x50, 0x72, 0x6f, 0x76, 0x65, 0x6e, 0x61, 0x6e, 0x63, 0x65, - 0x12, 0x1d, 0x0a, 0x0a, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x0b, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x49, 0x64, 0x12, - 0x52, 0x0a, 0x0d, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x18, 0x0c, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, - 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x50, 0x72, 0x6f, 0x76, 0x65, 0x6e, 0x61, - 0x6e, 0x63, 0x65, 0x2e, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0c, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x4f, 0x70, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x65, 0x72, 0x5f, 0x76, - 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x62, 0x75, - 0x69, 0x6c, 0x64, 0x65, 0x72, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x1a, 0x3f, 0x0a, 0x11, - 0x42, 0x75, 0x69, 0x6c, 0x64, 0x4f, 0x70, 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, 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, 0xe4, 0x02, - 0x0a, 0x06, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x3d, 0x0a, 0x1b, 0x61, 0x72, 0x74, 0x69, - 0x66, 0x61, 0x63, 0x74, 0x5f, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x6f, 0x75, - 0x72, 0x63, 0x65, 0x5f, 0x75, 0x72, 0x69, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x18, 0x61, - 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x53, 0x6f, - 0x75, 0x72, 0x63, 0x65, 0x55, 0x72, 0x69, 0x12, 0x43, 0x0a, 0x0b, 0x66, 0x69, 0x6c, 0x65, 0x5f, - 0x68, 0x61, 0x73, 0x68, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x67, - 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, - 0x2e, 0x46, 0x69, 0x6c, 0x65, 0x48, 0x61, 0x73, 0x68, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, - 0x52, 0x0a, 0x66, 0x69, 0x6c, 0x65, 0x48, 0x61, 0x73, 0x68, 0x65, 0x73, 0x12, 0x33, 0x0a, 0x07, - 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, - 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x6f, 0x75, 0x72, 0x63, - 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, - 0x74, 0x12, 0x4a, 0x0a, 0x13, 0x61, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, - 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, - 0x2e, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x6f, 0x75, 0x72, - 0x63, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x52, 0x12, 0x61, 0x64, 0x64, 0x69, 0x74, - 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x73, 0x1a, 0x55, 0x0a, - 0x0f, 0x46, 0x69, 0x6c, 0x65, 0x48, 0x61, 0x73, 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, 0x2c, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x46, - 0x69, 0x6c, 0x65, 0x48, 0x61, 0x73, 0x68, 0x65, 0x73, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x3a, 0x02, 0x38, 0x01, 0x22, 0x3b, 0x0a, 0x0a, 0x46, 0x69, 0x6c, 0x65, 0x48, 0x61, 0x73, 0x68, - 0x65, 0x73, 0x12, 0x2d, 0x0a, 0x09, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, - 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, - 0x76, 0x31, 0x2e, 0x48, 0x61, 0x73, 0x68, 0x52, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x48, 0x61, 0x73, - 0x68, 0x22, 0x30, 0x0a, 0x04, 0x48, 0x61, 0x73, 0x68, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, - 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, - 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x05, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x22, 0x80, 0x01, 0x0a, 0x07, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x12, - 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, - 0x61, 0x6d, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x65, 0x6e, 0x76, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, - 0x52, 0x03, 0x65, 0x6e, 0x76, 0x12, 0x12, 0x0a, 0x04, 0x61, 0x72, 0x67, 0x73, 0x18, 0x03, 0x20, - 0x03, 0x28, 0x09, 0x52, 0x04, 0x61, 0x72, 0x67, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x64, 0x69, 0x72, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x64, 0x69, 0x72, 0x12, 0x0e, 0x0a, 0x02, 0x69, - 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x77, - 0x61, 0x69, 0x74, 0x5f, 0x66, 0x6f, 0x72, 0x18, 0x06, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x77, - 0x61, 0x69, 0x74, 0x46, 0x6f, 0x72, 0x22, 0x4c, 0x0a, 0x08, 0x41, 0x72, 0x74, 0x69, 0x66, 0x61, - 0x63, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x12, 0x0e, - 0x0a, 0x02, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x14, - 0x0a, 0x05, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x6e, - 0x61, 0x6d, 0x65, 0x73, 0x22, 0xc6, 0x02, 0x0a, 0x0d, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x43, - 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x12, 0x43, 0x0a, 0x0a, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x5f, - 0x72, 0x65, 0x70, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x67, 0x72, 0x61, - 0x66, 0x65, 0x61, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x52, 0x65, 0x70, - 0x6f, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x48, 0x00, - 0x52, 0x09, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x52, 0x65, 0x70, 0x6f, 0x12, 0x39, 0x0a, 0x06, 0x67, - 0x65, 0x72, 0x72, 0x69, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x67, 0x72, - 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x72, 0x72, 0x69, 0x74, 0x53, - 0x6f, 0x75, 0x72, 0x63, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x48, 0x00, 0x52, 0x06, - 0x67, 0x65, 0x72, 0x72, 0x69, 0x74, 0x12, 0x30, 0x0a, 0x03, 0x67, 0x69, 0x74, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, 0x76, 0x31, - 0x2e, 0x47, 0x69, 0x74, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, - 0x74, 0x48, 0x00, 0x52, 0x03, 0x67, 0x69, 0x74, 0x12, 0x3d, 0x0a, 0x06, 0x6c, 0x61, 0x62, 0x65, - 0x6c, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x67, 0x72, 0x61, 0x66, 0x65, - 0x61, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x43, 0x6f, 0x6e, 0x74, - 0x65, 0x78, 0x74, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, - 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 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, 0x42, 0x09, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x22, 0x96, 0x01, - 0x0a, 0x0c, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x12, 0x31, - 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1d, 0x2e, 0x67, - 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x43, - 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x2e, 0x4b, 0x69, 0x6e, 0x64, 0x52, 0x04, 0x6b, 0x69, 0x6e, - 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x3f, 0x0a, 0x04, 0x4b, 0x69, 0x6e, 0x64, 0x12, 0x14, 0x0a, - 0x10, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, - 0x44, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x46, 0x49, 0x58, 0x45, 0x44, 0x10, 0x01, 0x12, 0x0b, - 0x0a, 0x07, 0x4d, 0x4f, 0x56, 0x41, 0x42, 0x4c, 0x45, 0x10, 0x02, 0x12, 0x09, 0x0a, 0x05, 0x4f, - 0x54, 0x48, 0x45, 0x52, 0x10, 0x04, 0x22, 0xb5, 0x01, 0x0a, 0x16, 0x43, 0x6c, 0x6f, 0x75, 0x64, - 0x52, 0x65, 0x70, 0x6f, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, - 0x74, 0x12, 0x2b, 0x0a, 0x07, 0x72, 0x65, 0x70, 0x6f, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, 0x76, 0x31, 0x2e, - 0x52, 0x65, 0x70, 0x6f, 0x49, 0x64, 0x52, 0x06, 0x72, 0x65, 0x70, 0x6f, 0x49, 0x64, 0x12, 0x21, - 0x0a, 0x0b, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0a, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x49, - 0x64, 0x12, 0x3f, 0x0a, 0x0d, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x65, - 0x78, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x67, 0x72, 0x61, 0x66, 0x65, - 0x61, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x43, 0x6f, 0x6e, 0x74, 0x65, - 0x78, 0x74, 0x48, 0x00, 0x52, 0x0c, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x43, 0x6f, 0x6e, 0x74, 0x65, - 0x78, 0x74, 0x42, 0x0a, 0x0a, 0x08, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0xc7, - 0x01, 0x0a, 0x13, 0x47, 0x65, 0x72, 0x72, 0x69, 0x74, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x43, - 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x68, 0x6f, 0x73, 0x74, 0x5f, 0x75, - 0x72, 0x69, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x68, 0x6f, 0x73, 0x74, 0x55, 0x72, - 0x69, 0x12, 0x25, 0x0a, 0x0e, 0x67, 0x65, 0x72, 0x72, 0x69, 0x74, 0x5f, 0x70, 0x72, 0x6f, 0x6a, - 0x65, 0x63, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x67, 0x65, 0x72, 0x72, 0x69, - 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x21, 0x0a, 0x0b, 0x72, 0x65, 0x76, 0x69, - 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, - 0x0a, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x3f, 0x0a, 0x0d, 0x61, - 0x6c, 0x69, 0x61, 0x73, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, 0x76, 0x31, 0x2e, - 0x41, 0x6c, 0x69, 0x61, 0x73, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x48, 0x00, 0x52, 0x0c, - 0x61, 0x6c, 0x69, 0x61, 0x73, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x42, 0x0a, 0x0a, 0x08, - 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x45, 0x0a, 0x10, 0x47, 0x69, 0x74, 0x53, - 0x6f, 0x75, 0x72, 0x63, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x12, 0x10, 0x0a, 0x03, - 0x75, 0x72, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x12, 0x1f, - 0x0a, 0x0b, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0a, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x22, - 0x67, 0x0a, 0x06, 0x52, 0x65, 0x70, 0x6f, 0x49, 0x64, 0x12, 0x43, 0x0a, 0x0f, 0x70, 0x72, 0x6f, - 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x72, 0x65, 0x70, 0x6f, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, 0x76, 0x31, 0x2e, - 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x49, 0x64, 0x48, 0x00, 0x52, - 0x0d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x49, 0x64, 0x12, 0x12, - 0x0a, 0x03, 0x75, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x03, 0x75, - 0x69, 0x64, 0x42, 0x04, 0x0a, 0x02, 0x69, 0x64, 0x22, 0x4b, 0x0a, 0x0d, 0x50, 0x72, 0x6f, 0x6a, - 0x65, 0x63, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x49, 0x64, 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, 0x1b, 0x0a, 0x09, 0x72, 0x65, 0x70, 0x6f, - 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, 0x65, 0x70, - 0x6f, 0x4e, 0x61, 0x6d, 0x65, 0x42, 0x4d, 0x0a, 0x0d, 0x69, 0x6f, 0x2e, 0x67, 0x72, 0x61, 0x66, - 0x65, 0x61, 0x73, 0x2e, 0x76, 0x31, 0x50, 0x01, 0x5a, 0x34, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, - 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x2f, 0x67, 0x72, 0x61, - 0x66, 0x65, 0x61, 0x73, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x72, - 0x61, 0x66, 0x65, 0x61, 0x73, 0x5f, 0x67, 0x6f, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0xa2, 0x02, - 0x03, 0x47, 0x52, 0x41, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, -} - -var ( - file_proto_v1_provenance_proto_rawDescOnce sync.Once - file_proto_v1_provenance_proto_rawDescData = file_proto_v1_provenance_proto_rawDesc -) - -func file_proto_v1_provenance_proto_rawDescGZIP() []byte { - file_proto_v1_provenance_proto_rawDescOnce.Do(func() { - file_proto_v1_provenance_proto_rawDescData = protoimpl.X.CompressGZIP(file_proto_v1_provenance_proto_rawDescData) - }) - return file_proto_v1_provenance_proto_rawDescData -} - -var file_proto_v1_provenance_proto_enumTypes = make([]protoimpl.EnumInfo, 1) -var file_proto_v1_provenance_proto_msgTypes = make([]protoimpl.MessageInfo, 16) -var file_proto_v1_provenance_proto_goTypes = []interface{}{ - (AliasContext_Kind)(0), // 0: grafeas.v1.AliasContext.Kind - (*BuildProvenance)(nil), // 1: grafeas.v1.BuildProvenance - (*Source)(nil), // 2: grafeas.v1.Source - (*FileHashes)(nil), // 3: grafeas.v1.FileHashes - (*Hash)(nil), // 4: grafeas.v1.Hash - (*Command)(nil), // 5: grafeas.v1.Command - (*Artifact)(nil), // 6: grafeas.v1.Artifact - (*SourceContext)(nil), // 7: grafeas.v1.SourceContext - (*AliasContext)(nil), // 8: grafeas.v1.AliasContext - (*CloudRepoSourceContext)(nil), // 9: grafeas.v1.CloudRepoSourceContext - (*GerritSourceContext)(nil), // 10: grafeas.v1.GerritSourceContext - (*GitSourceContext)(nil), // 11: grafeas.v1.GitSourceContext - (*RepoId)(nil), // 12: grafeas.v1.RepoId - (*ProjectRepoId)(nil), // 13: grafeas.v1.ProjectRepoId - nil, // 14: grafeas.v1.BuildProvenance.BuildOptionsEntry - nil, // 15: grafeas.v1.Source.FileHashesEntry - nil, // 16: grafeas.v1.SourceContext.LabelsEntry - (*timestamppb.Timestamp)(nil), // 17: google.protobuf.Timestamp -} -var file_proto_v1_provenance_proto_depIdxs = []int32{ - 5, // 0: grafeas.v1.BuildProvenance.commands:type_name -> grafeas.v1.Command - 6, // 1: grafeas.v1.BuildProvenance.built_artifacts:type_name -> grafeas.v1.Artifact - 17, // 2: grafeas.v1.BuildProvenance.create_time:type_name -> google.protobuf.Timestamp - 17, // 3: grafeas.v1.BuildProvenance.start_time:type_name -> google.protobuf.Timestamp - 17, // 4: grafeas.v1.BuildProvenance.end_time:type_name -> google.protobuf.Timestamp - 2, // 5: grafeas.v1.BuildProvenance.source_provenance:type_name -> grafeas.v1.Source - 14, // 6: grafeas.v1.BuildProvenance.build_options:type_name -> grafeas.v1.BuildProvenance.BuildOptionsEntry - 15, // 7: grafeas.v1.Source.file_hashes:type_name -> grafeas.v1.Source.FileHashesEntry - 7, // 8: grafeas.v1.Source.context:type_name -> grafeas.v1.SourceContext - 7, // 9: grafeas.v1.Source.additional_contexts:type_name -> grafeas.v1.SourceContext - 4, // 10: grafeas.v1.FileHashes.file_hash:type_name -> grafeas.v1.Hash - 9, // 11: grafeas.v1.SourceContext.cloud_repo:type_name -> grafeas.v1.CloudRepoSourceContext - 10, // 12: grafeas.v1.SourceContext.gerrit:type_name -> grafeas.v1.GerritSourceContext - 11, // 13: grafeas.v1.SourceContext.git:type_name -> grafeas.v1.GitSourceContext - 16, // 14: grafeas.v1.SourceContext.labels:type_name -> grafeas.v1.SourceContext.LabelsEntry - 0, // 15: grafeas.v1.AliasContext.kind:type_name -> grafeas.v1.AliasContext.Kind - 12, // 16: grafeas.v1.CloudRepoSourceContext.repo_id:type_name -> grafeas.v1.RepoId - 8, // 17: grafeas.v1.CloudRepoSourceContext.alias_context:type_name -> grafeas.v1.AliasContext - 8, // 18: grafeas.v1.GerritSourceContext.alias_context:type_name -> grafeas.v1.AliasContext - 13, // 19: grafeas.v1.RepoId.project_repo_id:type_name -> grafeas.v1.ProjectRepoId - 3, // 20: grafeas.v1.Source.FileHashesEntry.value:type_name -> grafeas.v1.FileHashes - 21, // [21:21] is the sub-list for method output_type - 21, // [21:21] is the sub-list for method input_type - 21, // [21:21] is the sub-list for extension type_name - 21, // [21:21] is the sub-list for extension extendee - 0, // [0:21] is the sub-list for field type_name -} - -func init() { file_proto_v1_provenance_proto_init() } -func file_proto_v1_provenance_proto_init() { - if File_proto_v1_provenance_proto != nil { - return - } - if !protoimpl.UnsafeEnabled { - file_proto_v1_provenance_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BuildProvenance); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_proto_v1_provenance_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Source); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_proto_v1_provenance_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FileHashes); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_proto_v1_provenance_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Hash); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_proto_v1_provenance_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Command); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_proto_v1_provenance_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Artifact); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_proto_v1_provenance_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SourceContext); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_proto_v1_provenance_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AliasContext); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_proto_v1_provenance_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CloudRepoSourceContext); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_proto_v1_provenance_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GerritSourceContext); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_proto_v1_provenance_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GitSourceContext); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_proto_v1_provenance_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RepoId); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_proto_v1_provenance_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ProjectRepoId); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } - file_proto_v1_provenance_proto_msgTypes[6].OneofWrappers = []interface{}{ - (*SourceContext_CloudRepo)(nil), - (*SourceContext_Gerrit)(nil), - (*SourceContext_Git)(nil), - } - file_proto_v1_provenance_proto_msgTypes[8].OneofWrappers = []interface{}{ - (*CloudRepoSourceContext_RevisionId)(nil), - (*CloudRepoSourceContext_AliasContext)(nil), - } - file_proto_v1_provenance_proto_msgTypes[9].OneofWrappers = []interface{}{ - (*GerritSourceContext_RevisionId)(nil), - (*GerritSourceContext_AliasContext)(nil), - } - file_proto_v1_provenance_proto_msgTypes[11].OneofWrappers = []interface{}{ - (*RepoId_ProjectRepoId)(nil), - (*RepoId_Uid)(nil), - } - type x struct{} - out := protoimpl.TypeBuilder{ - File: protoimpl.DescBuilder{ - GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_proto_v1_provenance_proto_rawDesc, - NumEnums: 1, - NumMessages: 16, - NumExtensions: 0, - NumServices: 0, - }, - GoTypes: file_proto_v1_provenance_proto_goTypes, - DependencyIndexes: file_proto_v1_provenance_proto_depIdxs, - EnumInfos: file_proto_v1_provenance_proto_enumTypes, - MessageInfos: file_proto_v1_provenance_proto_msgTypes, - }.Build() - File_proto_v1_provenance_proto = out.File - file_proto_v1_provenance_proto_rawDesc = nil - file_proto_v1_provenance_proto_goTypes = nil - file_proto_v1_provenance_proto_depIdxs = nil -} diff --git a/proto/v1/grafeas_go_proto/upgrade.pb.go b/proto/v1/grafeas_go_proto/upgrade.pb.go deleted file mode 100644 index 8e3a650f..00000000 --- a/proto/v1/grafeas_go_proto/upgrade.pb.go +++ /dev/null @@ -1,734 +0,0 @@ -// Copyright 2019 The Grafeas Authors. All rights reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -// Code generated by protoc-gen-go. DO NOT EDIT. -// versions: -// protoc-gen-go v1.25.0 -// protoc v3.14.0 -// source: proto/v1/upgrade.proto - -package grafeas_go_proto - -import ( - proto "github.com/golang/protobuf/proto" - 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) -) - -// This is a compile-time assertion that a sufficiently up-to-date version -// of the legacy proto package is being used. -const _ = proto.ProtoPackageIsVersion4 - -// An Upgrade Note represents a potential upgrade of a package to a given -// version. For each package version combination (i.e. bash 4.0, bash 4.1, -// bash 4.1.2), there will be an Upgrade Note. For Windows, windows_update field -// represents the information related to the update. -type UpgradeNote struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Required for non-Windows OS. The package this Upgrade is for. - Package string `protobuf:"bytes,1,opt,name=package,proto3" json:"package,omitempty"` - // Required for non-Windows OS. The version of the package in machine + human - // readable form. - Version *Version `protobuf:"bytes,2,opt,name=version,proto3" json:"version,omitempty"` - // Metadata about the upgrade for each specific operating system. - Distributions []*UpgradeDistribution `protobuf:"bytes,3,rep,name=distributions,proto3" json:"distributions,omitempty"` - // Required for Windows OS. Represents the metadata about the Windows update. - WindowsUpdate *WindowsUpdate `protobuf:"bytes,4,opt,name=windows_update,json=windowsUpdate,proto3" json:"windows_update,omitempty"` -} - -func (x *UpgradeNote) Reset() { - *x = UpgradeNote{} - if protoimpl.UnsafeEnabled { - mi := &file_proto_v1_upgrade_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *UpgradeNote) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*UpgradeNote) ProtoMessage() {} - -func (x *UpgradeNote) ProtoReflect() protoreflect.Message { - mi := &file_proto_v1_upgrade_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 UpgradeNote.ProtoReflect.Descriptor instead. -func (*UpgradeNote) Descriptor() ([]byte, []int) { - return file_proto_v1_upgrade_proto_rawDescGZIP(), []int{0} -} - -func (x *UpgradeNote) GetPackage() string { - if x != nil { - return x.Package - } - return "" -} - -func (x *UpgradeNote) GetVersion() *Version { - if x != nil { - return x.Version - } - return nil -} - -func (x *UpgradeNote) GetDistributions() []*UpgradeDistribution { - if x != nil { - return x.Distributions - } - return nil -} - -func (x *UpgradeNote) GetWindowsUpdate() *WindowsUpdate { - if x != nil { - return x.WindowsUpdate - } - return nil -} - -// The Upgrade Distribution represents metadata about the Upgrade for each -// operating system (CPE). Some distributions have additional metadata around -// updates, classifying them into various categories and severities. -type UpgradeDistribution struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Required - The specific operating system this metadata applies to. See - // https://cpe.mitre.org/specification/. - CpeUri string `protobuf:"bytes,1,opt,name=cpe_uri,json=cpeUri,proto3" json:"cpe_uri,omitempty"` - // The operating system classification of this Upgrade, as specified by the - // upstream operating system upgrade feed. For Windows the classification is - // one of the category_ids listed at https://docs.microsoft.com/en-us/previous-versions/windows/desktop/ff357803(v=vs.85) - Classification string `protobuf:"bytes,2,opt,name=classification,proto3" json:"classification,omitempty"` - // The severity as specified by the upstream operating system. - Severity string `protobuf:"bytes,3,opt,name=severity,proto3" json:"severity,omitempty"` - // The cve tied to this Upgrade. - Cve []string `protobuf:"bytes,4,rep,name=cve,proto3" json:"cve,omitempty"` -} - -func (x *UpgradeDistribution) Reset() { - *x = UpgradeDistribution{} - if protoimpl.UnsafeEnabled { - mi := &file_proto_v1_upgrade_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *UpgradeDistribution) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*UpgradeDistribution) ProtoMessage() {} - -func (x *UpgradeDistribution) ProtoReflect() protoreflect.Message { - mi := &file_proto_v1_upgrade_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 UpgradeDistribution.ProtoReflect.Descriptor instead. -func (*UpgradeDistribution) Descriptor() ([]byte, []int) { - return file_proto_v1_upgrade_proto_rawDescGZIP(), []int{1} -} - -func (x *UpgradeDistribution) GetCpeUri() string { - if x != nil { - return x.CpeUri - } - return "" -} - -func (x *UpgradeDistribution) GetClassification() string { - if x != nil { - return x.Classification - } - return "" -} - -func (x *UpgradeDistribution) GetSeverity() string { - if x != nil { - return x.Severity - } - return "" -} - -func (x *UpgradeDistribution) GetCve() []string { - if x != nil { - return x.Cve - } - return nil -} - -// Windows Update represents the metadata about the update for the Windows -// operating system. The fields in this message come from the Windows Update API -// documented at -// https://docs.microsoft.com/en-us/windows/win32/api/wuapi/nn-wuapi-iupdate. -type WindowsUpdate struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Required - The unique identifier for the update. - Identity *WindowsUpdate_Identity `protobuf:"bytes,1,opt,name=identity,proto3" json:"identity,omitempty"` - // The localized title of the update. - Title string `protobuf:"bytes,2,opt,name=title,proto3" json:"title,omitempty"` - // The localized description of the update. - Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"` - // The list of categories to which the update belongs. - Categories []*WindowsUpdate_Category `protobuf:"bytes,4,rep,name=categories,proto3" json:"categories,omitempty"` - // The Microsoft Knowledge Base article IDs that are associated with the - // update. - KbArticleIds []string `protobuf:"bytes,5,rep,name=kb_article_ids,json=kbArticleIds,proto3" json:"kb_article_ids,omitempty"` - // The hyperlink to the support information for the update. - SupportUrl string `protobuf:"bytes,6,opt,name=support_url,json=supportUrl,proto3" json:"support_url,omitempty"` - // The last published timestamp of the update. - LastPublishedTimestamp *timestamppb.Timestamp `protobuf:"bytes,7,opt,name=last_published_timestamp,json=lastPublishedTimestamp,proto3" json:"last_published_timestamp,omitempty"` -} - -func (x *WindowsUpdate) Reset() { - *x = WindowsUpdate{} - if protoimpl.UnsafeEnabled { - mi := &file_proto_v1_upgrade_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *WindowsUpdate) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*WindowsUpdate) ProtoMessage() {} - -func (x *WindowsUpdate) ProtoReflect() protoreflect.Message { - mi := &file_proto_v1_upgrade_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 WindowsUpdate.ProtoReflect.Descriptor instead. -func (*WindowsUpdate) Descriptor() ([]byte, []int) { - return file_proto_v1_upgrade_proto_rawDescGZIP(), []int{2} -} - -func (x *WindowsUpdate) GetIdentity() *WindowsUpdate_Identity { - if x != nil { - return x.Identity - } - return nil -} - -func (x *WindowsUpdate) GetTitle() string { - if x != nil { - return x.Title - } - return "" -} - -func (x *WindowsUpdate) GetDescription() string { - if x != nil { - return x.Description - } - return "" -} - -func (x *WindowsUpdate) GetCategories() []*WindowsUpdate_Category { - if x != nil { - return x.Categories - } - return nil -} - -func (x *WindowsUpdate) GetKbArticleIds() []string { - if x != nil { - return x.KbArticleIds - } - return nil -} - -func (x *WindowsUpdate) GetSupportUrl() string { - if x != nil { - return x.SupportUrl - } - return "" -} - -func (x *WindowsUpdate) GetLastPublishedTimestamp() *timestamppb.Timestamp { - if x != nil { - return x.LastPublishedTimestamp - } - return nil -} - -// An Upgrade Occurrence represents that a specific resource_url could install a -// specific upgrade. This presence is supplied via local sources (i.e. it is -// present in the mirror and the running system has noticed its availability). -// For Windows, both distribution and windows_update contain information for the -// Windows update. -type UpgradeOccurrence struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Required for non-Windows OS. The package this Upgrade is for. - Package string `protobuf:"bytes,1,opt,name=package,proto3" json:"package,omitempty"` - // Required for non-Windows OS. The version of the package in a machine + - // human readable form. - ParsedVersion *Version `protobuf:"bytes,3,opt,name=parsed_version,json=parsedVersion,proto3" json:"parsed_version,omitempty"` - // Metadata about the upgrade for available for the specific operating system - // for the resource_url. This allows efficient filtering, as well as - // making it easier to use the occurrence. - Distribution *UpgradeDistribution `protobuf:"bytes,4,opt,name=distribution,proto3" json:"distribution,omitempty"` - // Required for Windows OS. Represents the metadata about the Windows update. - WindowsUpdate *WindowsUpdate `protobuf:"bytes,5,opt,name=windows_update,json=windowsUpdate,proto3" json:"windows_update,omitempty"` -} - -func (x *UpgradeOccurrence) Reset() { - *x = UpgradeOccurrence{} - if protoimpl.UnsafeEnabled { - mi := &file_proto_v1_upgrade_proto_msgTypes[3] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *UpgradeOccurrence) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*UpgradeOccurrence) ProtoMessage() {} - -func (x *UpgradeOccurrence) ProtoReflect() protoreflect.Message { - mi := &file_proto_v1_upgrade_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 UpgradeOccurrence.ProtoReflect.Descriptor instead. -func (*UpgradeOccurrence) Descriptor() ([]byte, []int) { - return file_proto_v1_upgrade_proto_rawDescGZIP(), []int{3} -} - -func (x *UpgradeOccurrence) GetPackage() string { - if x != nil { - return x.Package - } - return "" -} - -func (x *UpgradeOccurrence) GetParsedVersion() *Version { - if x != nil { - return x.ParsedVersion - } - return nil -} - -func (x *UpgradeOccurrence) GetDistribution() *UpgradeDistribution { - if x != nil { - return x.Distribution - } - return nil -} - -func (x *UpgradeOccurrence) GetWindowsUpdate() *WindowsUpdate { - if x != nil { - return x.WindowsUpdate - } - return nil -} - -// The unique identifier of the update. -type WindowsUpdate_Identity struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // The revision independent identifier of the update. - UpdateId string `protobuf:"bytes,1,opt,name=update_id,json=updateId,proto3" json:"update_id,omitempty"` - // The revision number of the update. - Revision int32 `protobuf:"varint,2,opt,name=revision,proto3" json:"revision,omitempty"` -} - -func (x *WindowsUpdate_Identity) Reset() { - *x = WindowsUpdate_Identity{} - if protoimpl.UnsafeEnabled { - mi := &file_proto_v1_upgrade_proto_msgTypes[4] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *WindowsUpdate_Identity) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*WindowsUpdate_Identity) ProtoMessage() {} - -func (x *WindowsUpdate_Identity) ProtoReflect() protoreflect.Message { - mi := &file_proto_v1_upgrade_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 WindowsUpdate_Identity.ProtoReflect.Descriptor instead. -func (*WindowsUpdate_Identity) Descriptor() ([]byte, []int) { - return file_proto_v1_upgrade_proto_rawDescGZIP(), []int{2, 0} -} - -func (x *WindowsUpdate_Identity) GetUpdateId() string { - if x != nil { - return x.UpdateId - } - return "" -} - -func (x *WindowsUpdate_Identity) GetRevision() int32 { - if x != nil { - return x.Revision - } - return 0 -} - -// The category to which the update belongs. -type WindowsUpdate_Category struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // The identifier of the category. - CategoryId string `protobuf:"bytes,1,opt,name=category_id,json=categoryId,proto3" json:"category_id,omitempty"` - // The localized name of the category. - Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` -} - -func (x *WindowsUpdate_Category) Reset() { - *x = WindowsUpdate_Category{} - if protoimpl.UnsafeEnabled { - mi := &file_proto_v1_upgrade_proto_msgTypes[5] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *WindowsUpdate_Category) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*WindowsUpdate_Category) ProtoMessage() {} - -func (x *WindowsUpdate_Category) ProtoReflect() protoreflect.Message { - mi := &file_proto_v1_upgrade_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 WindowsUpdate_Category.ProtoReflect.Descriptor instead. -func (*WindowsUpdate_Category) Descriptor() ([]byte, []int) { - return file_proto_v1_upgrade_proto_rawDescGZIP(), []int{2, 1} -} - -func (x *WindowsUpdate_Category) GetCategoryId() string { - if x != nil { - return x.CategoryId - } - return "" -} - -func (x *WindowsUpdate_Category) GetName() string { - if x != nil { - return x.Name - } - return "" -} - -var File_proto_v1_upgrade_proto protoreflect.FileDescriptor - -var file_proto_v1_upgrade_proto_rawDesc = []byte{ - 0x0a, 0x16, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x75, 0x70, 0x67, 0x72, 0x61, - 0x64, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0a, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, - 0x73, 0x2e, 0x76, 0x31, 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, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x76, 0x31, 0x2f, - 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xdf, 0x01, - 0x0a, 0x0b, 0x55, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x4e, 0x6f, 0x74, 0x65, 0x12, 0x18, 0x0a, - 0x07, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, - 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x12, 0x2d, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, - 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x67, 0x72, 0x61, 0x66, 0x65, - 0x61, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x07, 0x76, - 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x45, 0x0a, 0x0d, 0x64, 0x69, 0x73, 0x74, 0x72, 0x69, - 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, - 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x67, 0x72, 0x61, - 0x64, 0x65, 0x44, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0d, - 0x64, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x40, 0x0a, - 0x0e, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x73, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, - 0x76, 0x31, 0x2e, 0x57, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x73, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x52, 0x0d, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x73, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x22, - 0x84, 0x01, 0x0a, 0x13, 0x55, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x44, 0x69, 0x73, 0x74, 0x72, - 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x17, 0x0a, 0x07, 0x63, 0x70, 0x65, 0x5f, 0x75, - 0x72, 0x69, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x63, 0x70, 0x65, 0x55, 0x72, 0x69, - 0x12, 0x26, 0x0a, 0x0e, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x69, - 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 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, 0x12, 0x10, 0x0a, 0x03, 0x63, 0x76, 0x65, 0x18, 0x04, 0x20, 0x03, 0x28, - 0x09, 0x52, 0x03, 0x63, 0x76, 0x65, 0x22, 0xee, 0x03, 0x0a, 0x0d, 0x57, 0x69, 0x6e, 0x64, 0x6f, - 0x77, 0x73, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x3e, 0x0a, 0x08, 0x69, 0x64, 0x65, 0x6e, - 0x74, 0x69, 0x74, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x67, 0x72, 0x61, - 0x66, 0x65, 0x61, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x73, 0x55, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x2e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x52, 0x08, - 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 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, 0x42, 0x0a, 0x0a, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x69, 0x65, 0x73, 0x18, 0x04, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, 0x76, - 0x31, 0x2e, 0x57, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x73, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x2e, - 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x52, 0x0a, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, - 0x72, 0x69, 0x65, 0x73, 0x12, 0x24, 0x0a, 0x0e, 0x6b, 0x62, 0x5f, 0x61, 0x72, 0x74, 0x69, 0x63, - 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0c, 0x6b, 0x62, - 0x41, 0x72, 0x74, 0x69, 0x63, 0x6c, 0x65, 0x49, 0x64, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x75, - 0x70, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0a, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x55, 0x72, 0x6c, 0x12, 0x54, 0x0a, 0x18, 0x6c, - 0x61, 0x73, 0x74, 0x5f, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x64, 0x5f, 0x74, 0x69, - 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 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, 0x16, 0x6c, 0x61, 0x73, 0x74, 0x50, - 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, - 0x70, 0x1a, 0x43, 0x0a, 0x08, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x12, 0x1b, 0x0a, - 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x08, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, - 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x72, 0x65, - 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x1a, 0x3f, 0x0a, 0x08, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, - 0x72, 0x79, 0x12, 0x1f, 0x0a, 0x0b, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x5f, 0x69, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, - 0x79, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0xf0, 0x01, 0x0a, 0x11, 0x55, 0x70, 0x67, 0x72, - 0x61, 0x64, 0x65, 0x4f, 0x63, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x18, 0x0a, - 0x07, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, - 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x12, 0x3a, 0x0a, 0x0e, 0x70, 0x61, 0x72, 0x73, 0x65, - 0x64, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x13, 0x2e, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x65, 0x72, - 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x0d, 0x70, 0x61, 0x72, 0x73, 0x65, 0x64, 0x56, 0x65, 0x72, 0x73, - 0x69, 0x6f, 0x6e, 0x12, 0x43, 0x0a, 0x0c, 0x64, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, - 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x67, 0x72, 0x61, 0x66, - 0x65, 0x61, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x44, 0x69, - 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0c, 0x64, 0x69, 0x73, 0x74, - 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x40, 0x0a, 0x0e, 0x77, 0x69, 0x6e, 0x64, - 0x6f, 0x77, 0x73, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x19, 0x2e, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x69, - 0x6e, 0x64, 0x6f, 0x77, 0x73, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x0d, 0x77, 0x69, 0x6e, - 0x64, 0x6f, 0x77, 0x73, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x42, 0x4d, 0x0a, 0x0d, 0x69, 0x6f, - 0x2e, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, 0x76, 0x31, 0x50, 0x01, 0x5a, 0x34, 0x67, - 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, - 0x73, 0x2f, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, - 0x76, 0x31, 0x2f, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x5f, 0x67, 0x6f, 0x5f, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0xa2, 0x02, 0x03, 0x47, 0x52, 0x41, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x33, -} - -var ( - file_proto_v1_upgrade_proto_rawDescOnce sync.Once - file_proto_v1_upgrade_proto_rawDescData = file_proto_v1_upgrade_proto_rawDesc -) - -func file_proto_v1_upgrade_proto_rawDescGZIP() []byte { - file_proto_v1_upgrade_proto_rawDescOnce.Do(func() { - file_proto_v1_upgrade_proto_rawDescData = protoimpl.X.CompressGZIP(file_proto_v1_upgrade_proto_rawDescData) - }) - return file_proto_v1_upgrade_proto_rawDescData -} - -var file_proto_v1_upgrade_proto_msgTypes = make([]protoimpl.MessageInfo, 6) -var file_proto_v1_upgrade_proto_goTypes = []interface{}{ - (*UpgradeNote)(nil), // 0: grafeas.v1.UpgradeNote - (*UpgradeDistribution)(nil), // 1: grafeas.v1.UpgradeDistribution - (*WindowsUpdate)(nil), // 2: grafeas.v1.WindowsUpdate - (*UpgradeOccurrence)(nil), // 3: grafeas.v1.UpgradeOccurrence - (*WindowsUpdate_Identity)(nil), // 4: grafeas.v1.WindowsUpdate.Identity - (*WindowsUpdate_Category)(nil), // 5: grafeas.v1.WindowsUpdate.Category - (*Version)(nil), // 6: grafeas.v1.Version - (*timestamppb.Timestamp)(nil), // 7: google.protobuf.Timestamp -} -var file_proto_v1_upgrade_proto_depIdxs = []int32{ - 6, // 0: grafeas.v1.UpgradeNote.version:type_name -> grafeas.v1.Version - 1, // 1: grafeas.v1.UpgradeNote.distributions:type_name -> grafeas.v1.UpgradeDistribution - 2, // 2: grafeas.v1.UpgradeNote.windows_update:type_name -> grafeas.v1.WindowsUpdate - 4, // 3: grafeas.v1.WindowsUpdate.identity:type_name -> grafeas.v1.WindowsUpdate.Identity - 5, // 4: grafeas.v1.WindowsUpdate.categories:type_name -> grafeas.v1.WindowsUpdate.Category - 7, // 5: grafeas.v1.WindowsUpdate.last_published_timestamp:type_name -> google.protobuf.Timestamp - 6, // 6: grafeas.v1.UpgradeOccurrence.parsed_version:type_name -> grafeas.v1.Version - 1, // 7: grafeas.v1.UpgradeOccurrence.distribution:type_name -> grafeas.v1.UpgradeDistribution - 2, // 8: grafeas.v1.UpgradeOccurrence.windows_update:type_name -> grafeas.v1.WindowsUpdate - 9, // [9:9] is the sub-list for method output_type - 9, // [9:9] 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_proto_v1_upgrade_proto_init() } -func file_proto_v1_upgrade_proto_init() { - if File_proto_v1_upgrade_proto != nil { - return - } - file_proto_v1_package_proto_init() - if !protoimpl.UnsafeEnabled { - file_proto_v1_upgrade_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UpgradeNote); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_proto_v1_upgrade_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UpgradeDistribution); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_proto_v1_upgrade_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*WindowsUpdate); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_proto_v1_upgrade_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UpgradeOccurrence); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_proto_v1_upgrade_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*WindowsUpdate_Identity); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_proto_v1_upgrade_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*WindowsUpdate_Category); 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_proto_v1_upgrade_proto_rawDesc, - NumEnums: 0, - NumMessages: 6, - NumExtensions: 0, - NumServices: 0, - }, - GoTypes: file_proto_v1_upgrade_proto_goTypes, - DependencyIndexes: file_proto_v1_upgrade_proto_depIdxs, - MessageInfos: file_proto_v1_upgrade_proto_msgTypes, - }.Build() - File_proto_v1_upgrade_proto = out.File - file_proto_v1_upgrade_proto_rawDesc = nil - file_proto_v1_upgrade_proto_goTypes = nil - file_proto_v1_upgrade_proto_depIdxs = nil -} diff --git a/proto/v1/grafeas_go_proto/vulnerability.pb.go b/proto/v1/grafeas_go_proto/vulnerability.pb.go deleted file mode 100644 index fc94dd2d..00000000 --- a/proto/v1/grafeas_go_proto/vulnerability.pb.go +++ /dev/null @@ -1,1056 +0,0 @@ -// Copyright 2019 The Grafeas Authors. All rights reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -// Code generated by protoc-gen-go. DO NOT EDIT. -// versions: -// protoc-gen-go v1.25.0 -// protoc v3.14.0 -// source: proto/v1/vulnerability.proto - -package grafeas_go_proto - -import ( - proto "github.com/golang/protobuf/proto" - 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) -) - -// This is a compile-time assertion that a sufficiently up-to-date version -// of the legacy proto package is being used. -const _ = proto.ProtoPackageIsVersion4 - -// Note provider assigned severity/impact ranking. -type Severity int32 - -const ( - // Unknown. - Severity_SEVERITY_UNSPECIFIED Severity = 0 - // Minimal severity. - Severity_MINIMAL Severity = 1 - // Low severity. - Severity_LOW Severity = 2 - // Medium severity. - Severity_MEDIUM Severity = 3 - // High severity. - Severity_HIGH Severity = 4 - // Critical severity. - Severity_CRITICAL Severity = 5 -) - -// Enum value maps for Severity. -var ( - Severity_name = map[int32]string{ - 0: "SEVERITY_UNSPECIFIED", - 1: "MINIMAL", - 2: "LOW", - 3: "MEDIUM", - 4: "HIGH", - 5: "CRITICAL", - } - Severity_value = map[string]int32{ - "SEVERITY_UNSPECIFIED": 0, - "MINIMAL": 1, - "LOW": 2, - "MEDIUM": 3, - "HIGH": 4, - "CRITICAL": 5, - } -) - -func (x Severity) Enum() *Severity { - p := new(Severity) - *p = x - return p -} - -func (x Severity) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (Severity) Descriptor() protoreflect.EnumDescriptor { - return file_proto_v1_vulnerability_proto_enumTypes[0].Descriptor() -} - -func (Severity) Type() protoreflect.EnumType { - return &file_proto_v1_vulnerability_proto_enumTypes[0] -} - -func (x Severity) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) -} - -// Deprecated: Use Severity.Descriptor instead. -func (Severity) EnumDescriptor() ([]byte, []int) { - return file_proto_v1_vulnerability_proto_rawDescGZIP(), []int{0} -} - -// A security vulnerability that can be found in resources. -type VulnerabilityNote struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // The CVSS score of this vulnerability. CVSS score is on a scale of 0 - 10 - // where 0 indicates low severity and 10 indicates high severity. - CvssScore float32 `protobuf:"fixed32,1,opt,name=cvss_score,json=cvssScore,proto3" json:"cvss_score,omitempty"` - // The note provider assigned severity of this vulnerability. - Severity Severity `protobuf:"varint,2,opt,name=severity,proto3,enum=grafeas.v1.Severity" json:"severity,omitempty"` - // Details of all known distros and packages affected by this vulnerability. - Details []*VulnerabilityNote_Detail `protobuf:"bytes,3,rep,name=details,proto3" json:"details,omitempty"` - // The full description of the CVSSv3 for this vulnerability. - CvssV3 *CVSSv3 `protobuf:"bytes,4,opt,name=cvss_v3,json=cvssV3,proto3" json:"cvss_v3,omitempty"` - // Windows details get their own format because the information format and - // model don't match a normal detail. Specifically Windows updates are done as - // patches, thus Windows vulnerabilities really are a missing package, rather - // than a package being at an incorrect version. - WindowsDetails []*VulnerabilityNote_WindowsDetail `protobuf:"bytes,5,rep,name=windows_details,json=windowsDetails,proto3" json:"windows_details,omitempty"` - // The time this information was last changed at the source. This is an - // upstream timestamp from the underlying information source - e.g. Ubuntu - // security tracker. - SourceUpdateTime *timestamppb.Timestamp `protobuf:"bytes,6,opt,name=source_update_time,json=sourceUpdateTime,proto3" json:"source_update_time,omitempty"` -} - -func (x *VulnerabilityNote) Reset() { - *x = VulnerabilityNote{} - if protoimpl.UnsafeEnabled { - mi := &file_proto_v1_vulnerability_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *VulnerabilityNote) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*VulnerabilityNote) ProtoMessage() {} - -func (x *VulnerabilityNote) ProtoReflect() protoreflect.Message { - mi := &file_proto_v1_vulnerability_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 VulnerabilityNote.ProtoReflect.Descriptor instead. -func (*VulnerabilityNote) Descriptor() ([]byte, []int) { - return file_proto_v1_vulnerability_proto_rawDescGZIP(), []int{0} -} - -func (x *VulnerabilityNote) GetCvssScore() float32 { - if x != nil { - return x.CvssScore - } - return 0 -} - -func (x *VulnerabilityNote) GetSeverity() Severity { - if x != nil { - return x.Severity - } - return Severity_SEVERITY_UNSPECIFIED -} - -func (x *VulnerabilityNote) GetDetails() []*VulnerabilityNote_Detail { - if x != nil { - return x.Details - } - return nil -} - -func (x *VulnerabilityNote) GetCvssV3() *CVSSv3 { - if x != nil { - return x.CvssV3 - } - return nil -} - -func (x *VulnerabilityNote) GetWindowsDetails() []*VulnerabilityNote_WindowsDetail { - if x != nil { - return x.WindowsDetails - } - return nil -} - -func (x *VulnerabilityNote) GetSourceUpdateTime() *timestamppb.Timestamp { - if x != nil { - return x.SourceUpdateTime - } - return nil -} - -// An occurrence of a severity vulnerability on a resource. -type VulnerabilityOccurrence struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // The type of package; whether native or non native (e.g., ruby gems, node.js - // packages, etc.). - Type string `protobuf:"bytes,1,opt,name=type,proto3" json:"type,omitempty"` - // Output only. The note provider assigned severity of this vulnerability. - Severity Severity `protobuf:"varint,2,opt,name=severity,proto3,enum=grafeas.v1.Severity" json:"severity,omitempty"` - // Output only. The CVSS score of this vulnerability. CVSS score is on a - // scale of 0 - 10 where 0 indicates low severity and 10 indicates high - // severity. - CvssScore float32 `protobuf:"fixed32,3,opt,name=cvss_score,json=cvssScore,proto3" json:"cvss_score,omitempty"` - // Required. The set of affected locations and their fixes (if available) - // within the associated resource. - PackageIssue []*VulnerabilityOccurrence_PackageIssue `protobuf:"bytes,4,rep,name=package_issue,json=packageIssue,proto3" json:"package_issue,omitempty"` - // Output only. A one sentence description of this vulnerability. - ShortDescription string `protobuf:"bytes,5,opt,name=short_description,json=shortDescription,proto3" json:"short_description,omitempty"` - // Output only. A detailed description of this vulnerability. - LongDescription string `protobuf:"bytes,6,opt,name=long_description,json=longDescription,proto3" json:"long_description,omitempty"` - // Output only. URLs related to this vulnerability. - RelatedUrls []*RelatedUrl `protobuf:"bytes,7,rep,name=related_urls,json=relatedUrls,proto3" json:"related_urls,omitempty"` - // The distro assigned severity for this vulnerability when it is available, - // otherwise this is the note provider assigned severity. - EffectiveSeverity Severity `protobuf:"varint,8,opt,name=effective_severity,json=effectiveSeverity,proto3,enum=grafeas.v1.Severity" json:"effective_severity,omitempty"` - // Output only. Whether at least one of the affected packages has a fix - // available. - FixAvailable bool `protobuf:"varint,9,opt,name=fix_available,json=fixAvailable,proto3" json:"fix_available,omitempty"` -} - -func (x *VulnerabilityOccurrence) Reset() { - *x = VulnerabilityOccurrence{} - if protoimpl.UnsafeEnabled { - mi := &file_proto_v1_vulnerability_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *VulnerabilityOccurrence) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*VulnerabilityOccurrence) ProtoMessage() {} - -func (x *VulnerabilityOccurrence) ProtoReflect() protoreflect.Message { - mi := &file_proto_v1_vulnerability_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 VulnerabilityOccurrence.ProtoReflect.Descriptor instead. -func (*VulnerabilityOccurrence) Descriptor() ([]byte, []int) { - return file_proto_v1_vulnerability_proto_rawDescGZIP(), []int{1} -} - -func (x *VulnerabilityOccurrence) GetType() string { - if x != nil { - return x.Type - } - return "" -} - -func (x *VulnerabilityOccurrence) GetSeverity() Severity { - if x != nil { - return x.Severity - } - return Severity_SEVERITY_UNSPECIFIED -} - -func (x *VulnerabilityOccurrence) GetCvssScore() float32 { - if x != nil { - return x.CvssScore - } - return 0 -} - -func (x *VulnerabilityOccurrence) GetPackageIssue() []*VulnerabilityOccurrence_PackageIssue { - if x != nil { - return x.PackageIssue - } - return nil -} - -func (x *VulnerabilityOccurrence) GetShortDescription() string { - if x != nil { - return x.ShortDescription - } - return "" -} - -func (x *VulnerabilityOccurrence) GetLongDescription() string { - if x != nil { - return x.LongDescription - } - return "" -} - -func (x *VulnerabilityOccurrence) GetRelatedUrls() []*RelatedUrl { - if x != nil { - return x.RelatedUrls - } - return nil -} - -func (x *VulnerabilityOccurrence) GetEffectiveSeverity() Severity { - if x != nil { - return x.EffectiveSeverity - } - return Severity_SEVERITY_UNSPECIFIED -} - -func (x *VulnerabilityOccurrence) GetFixAvailable() bool { - if x != nil { - return x.FixAvailable - } - return false -} - -// A detail for a distro and package affected by this vulnerability and its -// associated fix (if one is available). -type VulnerabilityNote_Detail struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // The distro assigned severity of this vulnerability. - SeverityName string `protobuf:"bytes,1,opt,name=severity_name,json=severityName,proto3" json:"severity_name,omitempty"` - // A vendor-specific description of this vulnerability. - Description string `protobuf:"bytes,2,opt,name=description,proto3" json:"description,omitempty"` - // The type of package; whether native or non native (e.g., ruby gems, - // node.js packages, etc.). - PackageType string `protobuf:"bytes,3,opt,name=package_type,json=packageType,proto3" json:"package_type,omitempty"` - // Required. The [CPE URI](https://cpe.mitre.org/specification/) this - // vulnerability affects. - AffectedCpeUri string `protobuf:"bytes,4,opt,name=affected_cpe_uri,json=affectedCpeUri,proto3" json:"affected_cpe_uri,omitempty"` - // Required. The package this vulnerability affects. - AffectedPackage string `protobuf:"bytes,5,opt,name=affected_package,json=affectedPackage,proto3" json:"affected_package,omitempty"` - // The version number at the start of an interval in which this vulnerability - // exists. A vulnerability can affect a package between version numbers - // that are disjoint sets of intervals (example: [1.0.0-1.1.0], [2.4.6-2.4.8] - // and [4.5.6-4.6.8]) each of which will be represented in its own Detail. - // If a specific affected version is provided by a vulnerability database, - // affected_version_start and affected_version_end will be the same in that - // Detail. - AffectedVersionStart *Version `protobuf:"bytes,6,opt,name=affected_version_start,json=affectedVersionStart,proto3" json:"affected_version_start,omitempty"` - // The version number at the end of an interval in which this vulnerability - // exists. A vulnerability can affect a package between version numbers - // that are disjoint sets of intervals (example: [1.0.0-1.1.0], [2.4.6-2.4.8] - // and [4.5.6-4.6.8]) each of which will be represented in its own Detail. - // If a specific affected version is provided by a vulnerability database, - // affected_version_start and affected_version_end will be the same in that - // Detail. - AffectedVersionEnd *Version `protobuf:"bytes,7,opt,name=affected_version_end,json=affectedVersionEnd,proto3" json:"affected_version_end,omitempty"` - // The distro recommended [CPE URI](https://cpe.mitre.org/specification/) - // to update to that contains a fix for this vulnerability. It is possible - // for this to be different from the affected_cpe_uri. - FixedCpeUri string `protobuf:"bytes,8,opt,name=fixed_cpe_uri,json=fixedCpeUri,proto3" json:"fixed_cpe_uri,omitempty"` - // The distro recommended package to update to that contains a fix for this - // vulnerability. It is possible for this to be different from the affected_package. - FixedPackage string `protobuf:"bytes,9,opt,name=fixed_package,json=fixedPackage,proto3" json:"fixed_package,omitempty"` - // The distro recommended version to update to that contains a - // fix for this vulnerability. Setting this to VersionKind.MAXIMUM means no - // such version is yet available. - FixedVersion *Version `protobuf:"bytes,10,opt,name=fixed_version,json=fixedVersion,proto3" json:"fixed_version,omitempty"` - // Whether this detail is obsolete. Occurrences are expected not to point to - // obsolete details. - IsObsolete bool `protobuf:"varint,11,opt,name=is_obsolete,json=isObsolete,proto3" json:"is_obsolete,omitempty"` - // The time this information was last changed at the source. This is an - // upstream timestamp from the underlying information source - e.g. Ubuntu - // security tracker. - SourceUpdateTime *timestamppb.Timestamp `protobuf:"bytes,12,opt,name=source_update_time,json=sourceUpdateTime,proto3" json:"source_update_time,omitempty"` -} - -func (x *VulnerabilityNote_Detail) Reset() { - *x = VulnerabilityNote_Detail{} - if protoimpl.UnsafeEnabled { - mi := &file_proto_v1_vulnerability_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *VulnerabilityNote_Detail) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*VulnerabilityNote_Detail) ProtoMessage() {} - -func (x *VulnerabilityNote_Detail) ProtoReflect() protoreflect.Message { - mi := &file_proto_v1_vulnerability_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 VulnerabilityNote_Detail.ProtoReflect.Descriptor instead. -func (*VulnerabilityNote_Detail) Descriptor() ([]byte, []int) { - return file_proto_v1_vulnerability_proto_rawDescGZIP(), []int{0, 0} -} - -func (x *VulnerabilityNote_Detail) GetSeverityName() string { - if x != nil { - return x.SeverityName - } - return "" -} - -func (x *VulnerabilityNote_Detail) GetDescription() string { - if x != nil { - return x.Description - } - return "" -} - -func (x *VulnerabilityNote_Detail) GetPackageType() string { - if x != nil { - return x.PackageType - } - return "" -} - -func (x *VulnerabilityNote_Detail) GetAffectedCpeUri() string { - if x != nil { - return x.AffectedCpeUri - } - return "" -} - -func (x *VulnerabilityNote_Detail) GetAffectedPackage() string { - if x != nil { - return x.AffectedPackage - } - return "" -} - -func (x *VulnerabilityNote_Detail) GetAffectedVersionStart() *Version { - if x != nil { - return x.AffectedVersionStart - } - return nil -} - -func (x *VulnerabilityNote_Detail) GetAffectedVersionEnd() *Version { - if x != nil { - return x.AffectedVersionEnd - } - return nil -} - -func (x *VulnerabilityNote_Detail) GetFixedCpeUri() string { - if x != nil { - return x.FixedCpeUri - } - return "" -} - -func (x *VulnerabilityNote_Detail) GetFixedPackage() string { - if x != nil { - return x.FixedPackage - } - return "" -} - -func (x *VulnerabilityNote_Detail) GetFixedVersion() *Version { - if x != nil { - return x.FixedVersion - } - return nil -} - -func (x *VulnerabilityNote_Detail) GetIsObsolete() bool { - if x != nil { - return x.IsObsolete - } - return false -} - -func (x *VulnerabilityNote_Detail) GetSourceUpdateTime() *timestamppb.Timestamp { - if x != nil { - return x.SourceUpdateTime - } - return nil -} - -type VulnerabilityNote_WindowsDetail struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Required. The [CPE URI](https://cpe.mitre.org/specification/) this - // vulnerability affects. - CpeUri string `protobuf:"bytes,1,opt,name=cpe_uri,json=cpeUri,proto3" json:"cpe_uri,omitempty"` - // Required. The name of this vulnerability. - Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` - // The description of this vulnerability. - Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"` - // Required. The names of the KBs which have hotfixes to mitigate this - // vulnerability. Note that there may be multiple hotfixes (and thus - // multiple KBs) that mitigate a given vulnerability. Currently any listed - // KBs presence is considered a fix. - FixingKbs []*VulnerabilityNote_WindowsDetail_KnowledgeBase `protobuf:"bytes,4,rep,name=fixing_kbs,json=fixingKbs,proto3" json:"fixing_kbs,omitempty"` -} - -func (x *VulnerabilityNote_WindowsDetail) Reset() { - *x = VulnerabilityNote_WindowsDetail{} - if protoimpl.UnsafeEnabled { - mi := &file_proto_v1_vulnerability_proto_msgTypes[3] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *VulnerabilityNote_WindowsDetail) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*VulnerabilityNote_WindowsDetail) ProtoMessage() {} - -func (x *VulnerabilityNote_WindowsDetail) ProtoReflect() protoreflect.Message { - mi := &file_proto_v1_vulnerability_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 VulnerabilityNote_WindowsDetail.ProtoReflect.Descriptor instead. -func (*VulnerabilityNote_WindowsDetail) Descriptor() ([]byte, []int) { - return file_proto_v1_vulnerability_proto_rawDescGZIP(), []int{0, 1} -} - -func (x *VulnerabilityNote_WindowsDetail) GetCpeUri() string { - if x != nil { - return x.CpeUri - } - return "" -} - -func (x *VulnerabilityNote_WindowsDetail) GetName() string { - if x != nil { - return x.Name - } - return "" -} - -func (x *VulnerabilityNote_WindowsDetail) GetDescription() string { - if x != nil { - return x.Description - } - return "" -} - -func (x *VulnerabilityNote_WindowsDetail) GetFixingKbs() []*VulnerabilityNote_WindowsDetail_KnowledgeBase { - if x != nil { - return x.FixingKbs - } - return nil -} - -type VulnerabilityNote_WindowsDetail_KnowledgeBase struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // The KB name (generally of the form KB[0-9]+ (e.g., KB123456)). - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - // A link to the KB in the [Windows update catalog] - // (https://www.catalog.update.microsoft.com/). - Url string `protobuf:"bytes,2,opt,name=url,proto3" json:"url,omitempty"` -} - -func (x *VulnerabilityNote_WindowsDetail_KnowledgeBase) Reset() { - *x = VulnerabilityNote_WindowsDetail_KnowledgeBase{} - if protoimpl.UnsafeEnabled { - mi := &file_proto_v1_vulnerability_proto_msgTypes[4] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *VulnerabilityNote_WindowsDetail_KnowledgeBase) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*VulnerabilityNote_WindowsDetail_KnowledgeBase) ProtoMessage() {} - -func (x *VulnerabilityNote_WindowsDetail_KnowledgeBase) ProtoReflect() protoreflect.Message { - mi := &file_proto_v1_vulnerability_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 VulnerabilityNote_WindowsDetail_KnowledgeBase.ProtoReflect.Descriptor instead. -func (*VulnerabilityNote_WindowsDetail_KnowledgeBase) Descriptor() ([]byte, []int) { - return file_proto_v1_vulnerability_proto_rawDescGZIP(), []int{0, 1, 0} -} - -func (x *VulnerabilityNote_WindowsDetail_KnowledgeBase) GetName() string { - if x != nil { - return x.Name - } - return "" -} - -func (x *VulnerabilityNote_WindowsDetail_KnowledgeBase) GetUrl() string { - if x != nil { - return x.Url - } - return "" -} - -// A detail for a distro and package this vulnerability occurrence was found in -// and its associated fix (if one is available). -type VulnerabilityOccurrence_PackageIssue struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Required. The [CPE URI](https://cpe.mitre.org/specification/) this - // vulnerability was found in. - AffectedCpeUri string `protobuf:"bytes,1,opt,name=affected_cpe_uri,json=affectedCpeUri,proto3" json:"affected_cpe_uri,omitempty"` - // Required. The package this vulnerability was found in. - AffectedPackage string `protobuf:"bytes,2,opt,name=affected_package,json=affectedPackage,proto3" json:"affected_package,omitempty"` - // Required. The version of the package that is installed on the resource - // affected by this vulnerability. - AffectedVersion *Version `protobuf:"bytes,3,opt,name=affected_version,json=affectedVersion,proto3" json:"affected_version,omitempty"` - // The [CPE URI](https://cpe.mitre.org/specification/) this vulnerability was - // fixed in. It is possible for this to be different from - // the affected_cpe_uri. - FixedCpeUri string `protobuf:"bytes,4,opt,name=fixed_cpe_uri,json=fixedCpeUri,proto3" json:"fixed_cpe_uri,omitempty"` - // The package this vulnerability was fixed in. It is possible for this to be - // different from the affected_package. - FixedPackage string `protobuf:"bytes,5,opt,name=fixed_package,json=fixedPackage,proto3" json:"fixed_package,omitempty"` - // Required. The version of the package this vulnerability was fixed in. - // Setting this to VersionKind.MAXIMUM means no fix is yet available. - FixedVersion *Version `protobuf:"bytes,6,opt,name=fixed_version,json=fixedVersion,proto3" json:"fixed_version,omitempty"` - // Output only. Whether a fix is available for this package. - FixAvailable bool `protobuf:"varint,7,opt,name=fix_available,json=fixAvailable,proto3" json:"fix_available,omitempty"` -} - -func (x *VulnerabilityOccurrence_PackageIssue) Reset() { - *x = VulnerabilityOccurrence_PackageIssue{} - if protoimpl.UnsafeEnabled { - mi := &file_proto_v1_vulnerability_proto_msgTypes[5] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *VulnerabilityOccurrence_PackageIssue) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*VulnerabilityOccurrence_PackageIssue) ProtoMessage() {} - -func (x *VulnerabilityOccurrence_PackageIssue) ProtoReflect() protoreflect.Message { - mi := &file_proto_v1_vulnerability_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 VulnerabilityOccurrence_PackageIssue.ProtoReflect.Descriptor instead. -func (*VulnerabilityOccurrence_PackageIssue) Descriptor() ([]byte, []int) { - return file_proto_v1_vulnerability_proto_rawDescGZIP(), []int{1, 0} -} - -func (x *VulnerabilityOccurrence_PackageIssue) GetAffectedCpeUri() string { - if x != nil { - return x.AffectedCpeUri - } - return "" -} - -func (x *VulnerabilityOccurrence_PackageIssue) GetAffectedPackage() string { - if x != nil { - return x.AffectedPackage - } - return "" -} - -func (x *VulnerabilityOccurrence_PackageIssue) GetAffectedVersion() *Version { - if x != nil { - return x.AffectedVersion - } - return nil -} - -func (x *VulnerabilityOccurrence_PackageIssue) GetFixedCpeUri() string { - if x != nil { - return x.FixedCpeUri - } - return "" -} - -func (x *VulnerabilityOccurrence_PackageIssue) GetFixedPackage() string { - if x != nil { - return x.FixedPackage - } - return "" -} - -func (x *VulnerabilityOccurrence_PackageIssue) GetFixedVersion() *Version { - if x != nil { - return x.FixedVersion - } - return nil -} - -func (x *VulnerabilityOccurrence_PackageIssue) GetFixAvailable() bool { - if x != nil { - return x.FixAvailable - } - return false -} - -var File_proto_v1_vulnerability_proto protoreflect.FileDescriptor - -var file_proto_v1_vulnerability_proto_rawDesc = []byte{ - 0x0a, 0x1c, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x76, 0x75, 0x6c, 0x6e, 0x65, - 0x72, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0a, - 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, 0x76, 0x31, 0x1a, 0x15, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x1a, 0x13, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x76, 0x73, 0x73, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x16, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x76, 0x31, - 0x2f, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 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, - 0xad, 0x09, 0x0a, 0x11, 0x56, 0x75, 0x6c, 0x6e, 0x65, 0x72, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, - 0x79, 0x4e, 0x6f, 0x74, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x76, 0x73, 0x73, 0x5f, 0x73, 0x63, - 0x6f, 0x72, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x02, 0x52, 0x09, 0x63, 0x76, 0x73, 0x73, 0x53, - 0x63, 0x6f, 0x72, 0x65, 0x12, 0x30, 0x0a, 0x08, 0x73, 0x65, 0x76, 0x65, 0x72, 0x69, 0x74, 0x79, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x14, 0x2e, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, - 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x76, 0x65, 0x72, 0x69, 0x74, 0x79, 0x52, 0x08, 0x73, 0x65, - 0x76, 0x65, 0x72, 0x69, 0x74, 0x79, 0x12, 0x3e, 0x0a, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, - 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, - 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x75, 0x6c, 0x6e, 0x65, 0x72, 0x61, 0x62, 0x69, 0x6c, 0x69, - 0x74, 0x79, 0x4e, 0x6f, 0x74, 0x65, 0x2e, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x07, 0x64, - 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x2b, 0x0a, 0x07, 0x63, 0x76, 0x73, 0x73, 0x5f, 0x76, - 0x33, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, - 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x56, 0x53, 0x53, 0x76, 0x33, 0x52, 0x06, 0x63, 0x76, 0x73, - 0x73, 0x56, 0x33, 0x12, 0x54, 0x0a, 0x0f, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x73, 0x5f, 0x64, - 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x67, - 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x75, 0x6c, 0x6e, 0x65, 0x72, - 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x4e, 0x6f, 0x74, 0x65, 0x2e, 0x57, 0x69, 0x6e, 0x64, - 0x6f, 0x77, 0x73, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x0e, 0x77, 0x69, 0x6e, 0x64, 0x6f, - 0x77, 0x73, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x48, 0x0a, 0x12, 0x73, 0x6f, 0x75, - 0x72, 0x63, 0x65, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 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, 0x10, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, - 0x69, 0x6d, 0x65, 0x1a, 0xc7, 0x04, 0x0a, 0x06, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x12, 0x23, - 0x0a, 0x0d, 0x73, 0x65, 0x76, 0x65, 0x72, 0x69, 0x74, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x65, 0x76, 0x65, 0x72, 0x69, 0x74, 0x79, 0x4e, - 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, 0x21, 0x0a, 0x0c, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, - 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x61, 0x63, - 0x6b, 0x61, 0x67, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x28, 0x0a, 0x10, 0x61, 0x66, 0x66, 0x65, - 0x63, 0x74, 0x65, 0x64, 0x5f, 0x63, 0x70, 0x65, 0x5f, 0x75, 0x72, 0x69, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0e, 0x61, 0x66, 0x66, 0x65, 0x63, 0x74, 0x65, 0x64, 0x43, 0x70, 0x65, 0x55, - 0x72, 0x69, 0x12, 0x29, 0x0a, 0x10, 0x61, 0x66, 0x66, 0x65, 0x63, 0x74, 0x65, 0x64, 0x5f, 0x70, - 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x61, 0x66, - 0x66, 0x65, 0x63, 0x74, 0x65, 0x64, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x12, 0x49, 0x0a, - 0x16, 0x61, 0x66, 0x66, 0x65, 0x63, 0x74, 0x65, 0x64, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, - 0x6e, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, - 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x65, 0x72, 0x73, 0x69, - 0x6f, 0x6e, 0x52, 0x14, 0x61, 0x66, 0x66, 0x65, 0x63, 0x74, 0x65, 0x64, 0x56, 0x65, 0x72, 0x73, - 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x72, 0x74, 0x12, 0x45, 0x0a, 0x14, 0x61, 0x66, 0x66, 0x65, - 0x63, 0x74, 0x65, 0x64, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x65, 0x6e, 0x64, - 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, - 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x12, 0x61, 0x66, 0x66, - 0x65, 0x63, 0x74, 0x65, 0x64, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x64, 0x12, - 0x22, 0x0a, 0x0d, 0x66, 0x69, 0x78, 0x65, 0x64, 0x5f, 0x63, 0x70, 0x65, 0x5f, 0x75, 0x72, 0x69, - 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x66, 0x69, 0x78, 0x65, 0x64, 0x43, 0x70, 0x65, - 0x55, 0x72, 0x69, 0x12, 0x23, 0x0a, 0x0d, 0x66, 0x69, 0x78, 0x65, 0x64, 0x5f, 0x70, 0x61, 0x63, - 0x6b, 0x61, 0x67, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x66, 0x69, 0x78, 0x65, - 0x64, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x12, 0x38, 0x0a, 0x0d, 0x66, 0x69, 0x78, 0x65, - 0x64, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x13, 0x2e, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x65, 0x72, - 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x0c, 0x66, 0x69, 0x78, 0x65, 0x64, 0x56, 0x65, 0x72, 0x73, 0x69, - 0x6f, 0x6e, 0x12, 0x1f, 0x0a, 0x0b, 0x69, 0x73, 0x5f, 0x6f, 0x62, 0x73, 0x6f, 0x6c, 0x65, 0x74, - 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x69, 0x73, 0x4f, 0x62, 0x73, 0x6f, 0x6c, - 0x65, 0x74, 0x65, 0x12, 0x48, 0x0a, 0x12, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x75, 0x70, - 0x64, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x0c, 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, 0x73, 0x6f, 0x75, - 0x72, 0x63, 0x65, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x1a, 0xef, 0x01, - 0x0a, 0x0d, 0x57, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x73, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x12, - 0x17, 0x0a, 0x07, 0x63, 0x70, 0x65, 0x5f, 0x75, 0x72, 0x69, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x06, 0x63, 0x70, 0x65, 0x55, 0x72, 0x69, 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, 0x58, - 0x0a, 0x0a, 0x66, 0x69, 0x78, 0x69, 0x6e, 0x67, 0x5f, 0x6b, 0x62, 0x73, 0x18, 0x04, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x39, 0x2e, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, 0x76, 0x31, 0x2e, - 0x56, 0x75, 0x6c, 0x6e, 0x65, 0x72, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x4e, 0x6f, 0x74, - 0x65, 0x2e, 0x57, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x73, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2e, - 0x4b, 0x6e, 0x6f, 0x77, 0x6c, 0x65, 0x64, 0x67, 0x65, 0x42, 0x61, 0x73, 0x65, 0x52, 0x09, 0x66, - 0x69, 0x78, 0x69, 0x6e, 0x67, 0x4b, 0x62, 0x73, 0x1a, 0x35, 0x0a, 0x0d, 0x4b, 0x6e, 0x6f, 0x77, - 0x6c, 0x65, 0x64, 0x67, 0x65, 0x42, 0x61, 0x73, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, - 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x10, 0x0a, - 0x03, 0x75, 0x72, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x22, - 0xa0, 0x06, 0x0a, 0x17, 0x56, 0x75, 0x6c, 0x6e, 0x65, 0x72, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, - 0x79, 0x4f, 0x63, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x74, - 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, - 0x30, 0x0a, 0x08, 0x73, 0x65, 0x76, 0x65, 0x72, 0x69, 0x74, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x0e, 0x32, 0x14, 0x2e, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x53, - 0x65, 0x76, 0x65, 0x72, 0x69, 0x74, 0x79, 0x52, 0x08, 0x73, 0x65, 0x76, 0x65, 0x72, 0x69, 0x74, - 0x79, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x76, 0x73, 0x73, 0x5f, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x02, 0x52, 0x09, 0x63, 0x76, 0x73, 0x73, 0x53, 0x63, 0x6f, 0x72, 0x65, - 0x12, 0x55, 0x0a, 0x0d, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x73, 0x73, 0x75, - 0x65, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, - 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x75, 0x6c, 0x6e, 0x65, 0x72, 0x61, 0x62, 0x69, 0x6c, 0x69, - 0x74, 0x79, 0x4f, 0x63, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x2e, 0x50, 0x61, 0x63, - 0x6b, 0x61, 0x67, 0x65, 0x49, 0x73, 0x73, 0x75, 0x65, 0x52, 0x0c, 0x70, 0x61, 0x63, 0x6b, 0x61, - 0x67, 0x65, 0x49, 0x73, 0x73, 0x75, 0x65, 0x12, 0x2b, 0x0a, 0x11, 0x73, 0x68, 0x6f, 0x72, 0x74, - 0x5f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x10, 0x73, 0x68, 0x6f, 0x72, 0x74, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, - 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x29, 0x0a, 0x10, 0x6c, 0x6f, 0x6e, 0x67, 0x5f, 0x64, 0x65, 0x73, - 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, - 0x6c, 0x6f, 0x6e, 0x67, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, - 0x39, 0x0a, 0x0c, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x75, 0x72, 0x6c, 0x73, 0x18, - 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, - 0x76, 0x31, 0x2e, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x55, 0x72, 0x6c, 0x52, 0x0b, 0x72, - 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x55, 0x72, 0x6c, 0x73, 0x12, 0x43, 0x0a, 0x12, 0x65, 0x66, - 0x66, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x73, 0x65, 0x76, 0x65, 0x72, 0x69, 0x74, 0x79, - 0x18, 0x08, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x14, 0x2e, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, - 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x76, 0x65, 0x72, 0x69, 0x74, 0x79, 0x52, 0x11, 0x65, 0x66, - 0x66, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x53, 0x65, 0x76, 0x65, 0x72, 0x69, 0x74, 0x79, 0x12, - 0x23, 0x0a, 0x0d, 0x66, 0x69, 0x78, 0x5f, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, - 0x18, 0x09, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x66, 0x69, 0x78, 0x41, 0x76, 0x61, 0x69, 0x6c, - 0x61, 0x62, 0x6c, 0x65, 0x1a, 0xcb, 0x02, 0x0a, 0x0c, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, - 0x49, 0x73, 0x73, 0x75, 0x65, 0x12, 0x28, 0x0a, 0x10, 0x61, 0x66, 0x66, 0x65, 0x63, 0x74, 0x65, - 0x64, 0x5f, 0x63, 0x70, 0x65, 0x5f, 0x75, 0x72, 0x69, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0e, 0x61, 0x66, 0x66, 0x65, 0x63, 0x74, 0x65, 0x64, 0x43, 0x70, 0x65, 0x55, 0x72, 0x69, 0x12, - 0x29, 0x0a, 0x10, 0x61, 0x66, 0x66, 0x65, 0x63, 0x74, 0x65, 0x64, 0x5f, 0x70, 0x61, 0x63, 0x6b, - 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x61, 0x66, 0x66, 0x65, 0x63, - 0x74, 0x65, 0x64, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x12, 0x3e, 0x0a, 0x10, 0x61, 0x66, - 0x66, 0x65, 0x63, 0x74, 0x65, 0x64, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, 0x76, - 0x31, 0x2e, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x0f, 0x61, 0x66, 0x66, 0x65, 0x63, - 0x74, 0x65, 0x64, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x22, 0x0a, 0x0d, 0x66, 0x69, - 0x78, 0x65, 0x64, 0x5f, 0x63, 0x70, 0x65, 0x5f, 0x75, 0x72, 0x69, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0b, 0x66, 0x69, 0x78, 0x65, 0x64, 0x43, 0x70, 0x65, 0x55, 0x72, 0x69, 0x12, 0x23, - 0x0a, 0x0d, 0x66, 0x69, 0x78, 0x65, 0x64, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x18, - 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x66, 0x69, 0x78, 0x65, 0x64, 0x50, 0x61, 0x63, 0x6b, - 0x61, 0x67, 0x65, 0x12, 0x38, 0x0a, 0x0d, 0x66, 0x69, 0x78, 0x65, 0x64, 0x5f, 0x76, 0x65, 0x72, - 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x67, 0x72, 0x61, - 0x66, 0x65, 0x61, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, - 0x0c, 0x66, 0x69, 0x78, 0x65, 0x64, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x23, 0x0a, - 0x0d, 0x66, 0x69, 0x78, 0x5f, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x07, - 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x66, 0x69, 0x78, 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, - 0x6c, 0x65, 0x2a, 0x5e, 0x0a, 0x08, 0x53, 0x65, 0x76, 0x65, 0x72, 0x69, 0x74, 0x79, 0x12, 0x18, - 0x0a, 0x14, 0x53, 0x45, 0x56, 0x45, 0x52, 0x49, 0x54, 0x59, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, - 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x4d, 0x49, 0x4e, 0x49, - 0x4d, 0x41, 0x4c, 0x10, 0x01, 0x12, 0x07, 0x0a, 0x03, 0x4c, 0x4f, 0x57, 0x10, 0x02, 0x12, 0x0a, - 0x0a, 0x06, 0x4d, 0x45, 0x44, 0x49, 0x55, 0x4d, 0x10, 0x03, 0x12, 0x08, 0x0a, 0x04, 0x48, 0x49, - 0x47, 0x48, 0x10, 0x04, 0x12, 0x0c, 0x0a, 0x08, 0x43, 0x52, 0x49, 0x54, 0x49, 0x43, 0x41, 0x4c, - 0x10, 0x05, 0x42, 0x4d, 0x0a, 0x0d, 0x69, 0x6f, 0x2e, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, - 0x2e, 0x76, 0x31, 0x50, 0x01, 0x5a, 0x34, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, - 0x6d, 0x2f, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x2f, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, - 0x73, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x72, 0x61, 0x66, 0x65, - 0x61, 0x73, 0x5f, 0x67, 0x6f, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0xa2, 0x02, 0x03, 0x47, 0x52, - 0x41, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, -} - -var ( - file_proto_v1_vulnerability_proto_rawDescOnce sync.Once - file_proto_v1_vulnerability_proto_rawDescData = file_proto_v1_vulnerability_proto_rawDesc -) - -func file_proto_v1_vulnerability_proto_rawDescGZIP() []byte { - file_proto_v1_vulnerability_proto_rawDescOnce.Do(func() { - file_proto_v1_vulnerability_proto_rawDescData = protoimpl.X.CompressGZIP(file_proto_v1_vulnerability_proto_rawDescData) - }) - return file_proto_v1_vulnerability_proto_rawDescData -} - -var file_proto_v1_vulnerability_proto_enumTypes = make([]protoimpl.EnumInfo, 1) -var file_proto_v1_vulnerability_proto_msgTypes = make([]protoimpl.MessageInfo, 6) -var file_proto_v1_vulnerability_proto_goTypes = []interface{}{ - (Severity)(0), // 0: grafeas.v1.Severity - (*VulnerabilityNote)(nil), // 1: grafeas.v1.VulnerabilityNote - (*VulnerabilityOccurrence)(nil), // 2: grafeas.v1.VulnerabilityOccurrence - (*VulnerabilityNote_Detail)(nil), // 3: grafeas.v1.VulnerabilityNote.Detail - (*VulnerabilityNote_WindowsDetail)(nil), // 4: grafeas.v1.VulnerabilityNote.WindowsDetail - (*VulnerabilityNote_WindowsDetail_KnowledgeBase)(nil), // 5: grafeas.v1.VulnerabilityNote.WindowsDetail.KnowledgeBase - (*VulnerabilityOccurrence_PackageIssue)(nil), // 6: grafeas.v1.VulnerabilityOccurrence.PackageIssue - (*CVSSv3)(nil), // 7: grafeas.v1.CVSSv3 - (*timestamppb.Timestamp)(nil), // 8: google.protobuf.Timestamp - (*RelatedUrl)(nil), // 9: grafeas.v1.RelatedUrl - (*Version)(nil), // 10: grafeas.v1.Version -} -var file_proto_v1_vulnerability_proto_depIdxs = []int32{ - 0, // 0: grafeas.v1.VulnerabilityNote.severity:type_name -> grafeas.v1.Severity - 3, // 1: grafeas.v1.VulnerabilityNote.details:type_name -> grafeas.v1.VulnerabilityNote.Detail - 7, // 2: grafeas.v1.VulnerabilityNote.cvss_v3:type_name -> grafeas.v1.CVSSv3 - 4, // 3: grafeas.v1.VulnerabilityNote.windows_details:type_name -> grafeas.v1.VulnerabilityNote.WindowsDetail - 8, // 4: grafeas.v1.VulnerabilityNote.source_update_time:type_name -> google.protobuf.Timestamp - 0, // 5: grafeas.v1.VulnerabilityOccurrence.severity:type_name -> grafeas.v1.Severity - 6, // 6: grafeas.v1.VulnerabilityOccurrence.package_issue:type_name -> grafeas.v1.VulnerabilityOccurrence.PackageIssue - 9, // 7: grafeas.v1.VulnerabilityOccurrence.related_urls:type_name -> grafeas.v1.RelatedUrl - 0, // 8: grafeas.v1.VulnerabilityOccurrence.effective_severity:type_name -> grafeas.v1.Severity - 10, // 9: grafeas.v1.VulnerabilityNote.Detail.affected_version_start:type_name -> grafeas.v1.Version - 10, // 10: grafeas.v1.VulnerabilityNote.Detail.affected_version_end:type_name -> grafeas.v1.Version - 10, // 11: grafeas.v1.VulnerabilityNote.Detail.fixed_version:type_name -> grafeas.v1.Version - 8, // 12: grafeas.v1.VulnerabilityNote.Detail.source_update_time:type_name -> google.protobuf.Timestamp - 5, // 13: grafeas.v1.VulnerabilityNote.WindowsDetail.fixing_kbs:type_name -> grafeas.v1.VulnerabilityNote.WindowsDetail.KnowledgeBase - 10, // 14: grafeas.v1.VulnerabilityOccurrence.PackageIssue.affected_version:type_name -> grafeas.v1.Version - 10, // 15: grafeas.v1.VulnerabilityOccurrence.PackageIssue.fixed_version:type_name -> grafeas.v1.Version - 16, // [16:16] is the sub-list for method output_type - 16, // [16:16] 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_proto_v1_vulnerability_proto_init() } -func file_proto_v1_vulnerability_proto_init() { - if File_proto_v1_vulnerability_proto != nil { - return - } - file_proto_v1_common_proto_init() - file_proto_v1_cvss_proto_init() - file_proto_v1_package_proto_init() - if !protoimpl.UnsafeEnabled { - file_proto_v1_vulnerability_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*VulnerabilityNote); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_proto_v1_vulnerability_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*VulnerabilityOccurrence); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_proto_v1_vulnerability_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*VulnerabilityNote_Detail); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_proto_v1_vulnerability_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*VulnerabilityNote_WindowsDetail); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_proto_v1_vulnerability_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*VulnerabilityNote_WindowsDetail_KnowledgeBase); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_proto_v1_vulnerability_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*VulnerabilityOccurrence_PackageIssue); 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_proto_v1_vulnerability_proto_rawDesc, - NumEnums: 1, - NumMessages: 6, - NumExtensions: 0, - NumServices: 0, - }, - GoTypes: file_proto_v1_vulnerability_proto_goTypes, - DependencyIndexes: file_proto_v1_vulnerability_proto_depIdxs, - EnumInfos: file_proto_v1_vulnerability_proto_enumTypes, - MessageInfos: file_proto_v1_vulnerability_proto_msgTypes, - }.Build() - File_proto_v1_vulnerability_proto = out.File - file_proto_v1_vulnerability_proto_rawDesc = nil - file_proto_v1_vulnerability_proto_goTypes = nil - file_proto_v1_vulnerability_proto_depIdxs = nil -} diff --git a/proto/v1/intoto_provenance.proto b/proto/v1/intoto_provenance.proto new file mode 100644 index 00000000..f93596db --- /dev/null +++ b/proto/v1/intoto_provenance.proto @@ -0,0 +1,93 @@ +// Copyright 2021 The Grafeas Authors. All rights reserved. +// +// 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 grafeas.v1; + +option go_package = "github.com/grafeas/grafeas/proto/v1/grafeas_go_proto"; +option java_multiple_files = true; +option java_package = "io.grafeas.v1"; +option objc_class_prefix = "GRA"; + +import "google/protobuf/timestamp.proto"; +import "google/protobuf/any.proto"; + + +// Spec defined at https://github.com/in-toto/attestation/blob/main/spec/predicates/provenance.md + +// Steps taken to build the artifact. +// For a TaskRun, typically each container corresponds to one step in the recipe. +message Recipe { + // URI indicating what type of recipe was performed. It determines the meaning of recipe.entryPoint, recipe.arguments, recipe.environment, and materials. + string type = 1; + // Index in materials containing the recipe steps that are not implied by recipe.type. + // For example, if the recipe type were "make", then this would point to the source containing the Makefile, not the make program itself. + // Set to -1 if the recipe doesn't come from a material, as zero is default unset value for int64. + int64 defined_in_material = 2; + // String identifying the entry point into the build. + // This is often a path to a configuration file and/or a target label within that file. + // The syntax and meaning are defined by recipe.type. + // For example, if the recipe type were "make", then this would reference the directory in which to run make as well as which target to use. + string entry_point = 3; + // Collection of all external inputs that influenced the build on top of recipe.definedInMaterial and recipe.entryPoint. + // For example, if the recipe type were "make", then this might be the flags passed to make aside from the target, which is captured in recipe.entryPoint. + // Since the arguments field can greatly vary in structure, depending on the builder and recipe type, this is of form "Any". + repeated google.protobuf.Any arguments = 4; + // Any other builder-controlled inputs necessary for correctly evaluating the recipe. Usually only needed for reproducing the build but not evaluated as part of policy. + // Since the environment field can greatly vary in structure, depending on the builder and recipe type, this is of form "Any". + repeated google.protobuf.Any environment = 5; +} + +// Indicates that the builder claims certain fields in this message to be complete. +message Completeness { + // If true, the builder claims that recipe.arguments is complete, meaning that all external inputs are properly captured in the recipe. + bool arguments = 1; + // If true, the builder claims that recipe.environment is claimed to be complete. + bool environment = 2; + // If true, the builder claims that materials are complete, usually through some controls to prevent network access. Sometimes called "hermetic". + bool materials = 3; +} + +// Other properties of the build. +message Metadata { + // Identifies the particular build invocation, which can be useful for finding associated logs or other ad-hoc analysis. + // The value SHOULD be globally unique, per in-toto Provenance spec. + string build_invocation_id = 1; + // The timestamp of when the build started. + google.protobuf.Timestamp build_started_on = 2; + // The timestamp of when the build completed. + google.protobuf.Timestamp build_finished_on = 3; + // Indicates that the builder claims certain fields in this message to be complete. + Completeness completeness = 4; + // If true, the builder claims that running the recipe on materials will produce bit-for-bit identical output. + bool reproducible = 5; +} + +message BuilderConfig { + string id = 1; +} + +message InTotoProvenance { + BuilderConfig builder_config = 1; // required + // Identifies the configuration used for the build. + // When combined with materials, this SHOULD fully describe the build, + // such that re-running this recipe results in bit-for-bit identical output + // (if the build is reproducible). + Recipe recipe = 2; // required + Metadata metadata = 3; + // The collection of artifacts that influenced the build including sources, dependencies, build tools, base images, and so on. + // This is considered to be incomplete unless metadata.completeness.materials is true. Unset or null is equivalent to empty. + repeated string materials = 4; +} diff --git a/proto/v1/intoto_statement.proto b/proto/v1/intoto_statement.proto new file mode 100644 index 00000000..9dd3763c --- /dev/null +++ b/proto/v1/intoto_statement.proto @@ -0,0 +1,47 @@ +// Copyright 2021 The Grafeas Authors. All rights reserved. +// +// 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 grafeas.v1; + +option go_package = "github.com/grafeas/grafeas/proto/v1/grafeas_go_proto"; +option java_multiple_files = true; +option java_package = "io.grafeas.v1"; +option objc_class_prefix = "GRA"; + +import "proto/v1/intoto_provenance.proto"; +import "proto/v1/slsa_provenance.proto"; + +// Spec defined at https://github.com/in-toto/attestation/tree/main/spec#statement +// The serialized InTotoStatement will be stored as Envelope.payload. +// Envelope.payloadType is always "application/vnd.in-toto+json". +message InTotoStatement { + // Always `https://in-toto.io/Statement/v0.1`. + string type = 1 [json_name = "_type"]; + repeated Subject subject = 2; + // `https://slsa.dev/provenance/v0.1` for SlsaProvenance. + string predicate_type = 3; + oneof predicate { + InTotoProvenance provenance = 4; + SlsaProvenance slsa_provenance = 5; + } +} +message Subject { + string name = 1; + // `"": ""` + // Algorithms can be e.g. sha256, sha512 + // See https://github.com/in-toto/attestation/blob/main/spec/field_types.md#DigestSet + map digest = 2; +} diff --git a/proto/v1/package.proto b/proto/v1/package.proto index a5a94cf2..9c79310f 100644 --- a/proto/v1/package.proto +++ b/proto/v1/package.proto @@ -102,6 +102,14 @@ message Version { // The iteration of the package build from the above version. string revision = 3; + // Whether this version is specifying part of an inclusive range. Grafeas + // does not have the capability to specify version ranges; instead we have + // fields that specify start version and end versions. At times this is + // insufficient - we also need to specify whether the version is included in + // the range or is excluded from the range. This boolean is expected to be set + // to true when the version is included in a range. + bool inclusive = 6; + // Whether this is an ordinary package version or a sentinel MIN/MAX version. enum VersionKind { // Unknown. diff --git a/proto/v1/slsa_provenance.proto b/proto/v1/slsa_provenance.proto new file mode 100644 index 00000000..ee846daa --- /dev/null +++ b/proto/v1/slsa_provenance.proto @@ -0,0 +1,95 @@ +// Copyright 2021 The Grafeas Authors. All rights reserved. +// +// 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 grafeas.v1; + +import "google/protobuf/any.proto"; +import "google/protobuf/timestamp.proto"; + +option go_package = "github.com/grafeas/grafeas/proto/v1/grafeas_go_proto"; +option java_multiple_files = true; +option java_package = "io.grafeas.v1"; +option objc_class_prefix = "GRA"; + +message SlsaProvenance { + // Steps taken to build the artifact. + // For a TaskRun, typically each container corresponds to one step in the recipe. + message SlsaRecipe { + // URI indicating what type of recipe was performed. It determines the meaning of recipe.entryPoint, recipe.arguments, recipe.environment, and materials. + string type = 1; + // Index in materials containing the recipe steps that are not implied by recipe.type. + // For example, if the recipe type were "make", then this would point to the source containing the Makefile, not the make program itself. + // Set to -1 if the recipe doesn't come from a material, as zero is default unset value for int64. + int64 defined_in_material = 2; + // String identifying the entry point into the build. + // This is often a path to a configuration file and/or a target label within that file. + // The syntax and meaning are defined by recipe.type. + // For example, if the recipe type were "make", then this would reference the directory in which to run make as well as which target to use. + string entry_point = 3; + // Collection of all external inputs that influenced the build on top of recipe.definedInMaterial and recipe.entryPoint. + // For example, if the recipe type were "make", then this might be the flags passed to make aside from the target, which is captured in recipe.entryPoint. + // Depending on the recipe Type, the structure may be different. + google.protobuf.Any arguments = 4; + // Any other builder-controlled inputs necessary for correctly evaluating the recipe. Usually only needed for reproducing the build but not evaluated as part of policy. + // Depending on the recipe Type, the structure may be different. + google.protobuf.Any environment = 5; + } + + // Indicates that the builder claims certain fields in this message to be complete. + message SlsaCompleteness { + // If true, the builder claims that recipe.arguments is complete, meaning that all external inputs are properly captured in the recipe. + bool arguments = 1; + // If true, the builder claims that recipe.environment is claimed to be complete. + bool environment = 2; + // If true, the builder claims that materials are complete, usually through some controls to prevent network access. Sometimes called "hermetic". + bool materials = 3; + } + + // Other properties of the build. + message SlsaMetadata { + // Identifies the particular build invocation, which can be useful for finding associated logs or other ad-hoc analysis. + // The value SHOULD be globally unique, per in-toto Provenance spec. + string build_invocation_id = 1; + // The timestamp of when the build started. + google.protobuf.Timestamp build_started_on = 2; + // The timestamp of when the build completed. + google.protobuf.Timestamp build_finished_on = 3; + // Indicates that the builder claims certain fields in this message to be complete. + SlsaCompleteness completeness = 4; + // If true, the builder claims that running the recipe on materials will produce bit-for-bit identical output. + bool reproducible = 5; + } + + message SlsaBuilder { + string id = 1; + } + + message Material { + string uri = 1; + map digest = 2; + } + + SlsaBuilder builder = 1; // required + // Identifies the configuration used for the build. + // When combined with materials, this SHOULD fully describe the build, + // such that re-running this recipe results in bit-for-bit identical output + // (if the build is reproducible). + SlsaRecipe recipe = 2; // required + SlsaMetadata metadata = 3; + // The collection of artifacts that influenced the build including sources, dependencies, build tools, base images, and so on. + // This is considered to be incomplete unless metadata.completeness.materials is true. Unset or null is equivalent to empty. + repeated Material materials = 4; +} \ No newline at end of file diff --git a/proto/v1/vulnerability.proto b/proto/v1/vulnerability.proto index b693ac81..25b65893 100644 --- a/proto/v1/vulnerability.proto +++ b/proto/v1/vulnerability.proto @@ -21,10 +21,11 @@ option java_multiple_files = true; option java_package = "io.grafeas.v1"; option objc_class_prefix = "GRA"; +import "google/api/field_behavior.proto"; +import "google/protobuf/timestamp.proto"; import "proto/v1/common.proto"; import "proto/v1/cvss.proto"; import "proto/v1/package.proto"; -import "google/protobuf/timestamp.proto"; // Note provider assigned severity/impact ranking. enum Severity { @@ -114,6 +115,12 @@ message VulnerabilityNote { // upstream timestamp from the underlying information source - e.g. Ubuntu // security tracker. google.protobuf.Timestamp source_update_time = 12; + + // The source from which the information in this Detail was obtained. + string source = 13; + + // The name of the vendor of the product. + string vendor = 14; } // The full description of the CVSSv3 for this vulnerability. @@ -171,6 +178,17 @@ message VulnerabilityOccurrence { // severity. float cvss_score = 3; + // The CVSS v3 score for this vulnerability. + message CVSSV3 { + // The base score for for this vulnerability according to cvss v3. + float base_score = 1; + // The severity rating assigned to this vulnerability by vulnerability provider. + Severity severity = 2; + } + + // The cvss v3 score for the vulnerability. + CVSSV3 cvssv3 = 10; + // Required. The set of affected locations and their fixes (if available) // within the associated resource. repeated PackageIssue package_issue = 4; @@ -204,6 +222,14 @@ message VulnerabilityOccurrence { // Output only. Whether a fix is available for this package. bool fix_available = 7; + + // The type of package (e.g. OS, MAVEN, GO). + string package_type = 8; + + // The distro or language system assigned severity for this vulnerability + // when that is available and note provider assigned severity when it is not + // available. + Severity effective_severity = 9 [(google.api.field_behavior) = OUTPUT_ONLY]; } // Output only. A one sentence description of this vulnerability. @@ -217,6 +243,14 @@ message VulnerabilityOccurrence { // The distro assigned severity for this vulnerability when it is available, // otherwise this is the note provider assigned severity. + // + // When there are multiple PackageIssues for this vulnerability, they can have + // different effective severities because some might be provided by the distro + // while others are provided by the language ecosystem for a language pack. + // For this reason, it is advised to use the effective severity on the + // PackageIssue level. In the case where multiple PackageIssues have differing + // effective severities, this field should be the highest severity for any of + // the PackageIssues. Severity effective_severity = 8; // Output only. Whether at least one of the affected packages has a fix diff --git a/proto/v1beta1/attestation_go_proto/attestation.pb.go b/proto/v1beta1/attestation_go_proto/attestation.pb.go index e935c894..5ade773e 100644 --- a/proto/v1beta1/attestation_go_proto/attestation.pb.go +++ b/proto/v1beta1/attestation_go_proto/attestation.pb.go @@ -15,7 +15,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: // protoc-gen-go v1.25.0 -// protoc v3.14.0 +// protoc v3.13.0 // source: attestation.proto package attestation_go_proto diff --git a/proto/v1beta1/build_go_proto/build.pb.go b/proto/v1beta1/build_go_proto/build.pb.go index bc5cb10a..163cbdbe 100644 --- a/proto/v1beta1/build_go_proto/build.pb.go +++ b/proto/v1beta1/build_go_proto/build.pb.go @@ -15,7 +15,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: // protoc-gen-go v1.25.0 -// protoc v3.14.0 +// protoc v3.13.0 // source: build.proto package build_go_proto diff --git a/proto/v1beta1/common.proto b/proto/v1beta1/common.proto index 7fc05cd3..4ef85259 100644 --- a/proto/v1beta1/common.proto +++ b/proto/v1beta1/common.proto @@ -41,6 +41,14 @@ enum NoteKind { ATTESTATION = 7; // This represents an in-toto link. INTOTO = 8; + // This represents a software bill of materials. + SBOM = 9; + // This represents an SPDX Package. + SPDX_PACKAGE = 10; + // This represents an SPDX File. + SPDX_FILE = 11; + // This represents an SPDX Relationship. + SPDX_RELATIONSHIP = 12; // This represents a git repository. // 99 is chosen as the field number to avoid possible conflicts with upstream in the future. REPOSITORY = 99; @@ -113,7 +121,7 @@ message Signature { // A custom message is created because it seems that // public_key_id in common.Signature is designed to include the information encoded by KeyType. // However, using an additional field to store such information is more structural, -// and the information is also about the attributes instead of the identity of a key, +// and the information is also about the attributes instead of the identity of a key, // so that should be a better approach. // Since we are not going to upstream the change which adds a signature field to all note/occurrence type, // we can go with a custom signature. diff --git a/proto/v1beta1/common_go_proto/common.pb.go b/proto/v1beta1/common_go_proto/common.pb.go index f3fbcb1a..36ef4ccc 100644 --- a/proto/v1beta1/common_go_proto/common.pb.go +++ b/proto/v1beta1/common_go_proto/common.pb.go @@ -15,7 +15,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: // protoc-gen-go v1.25.0 -// protoc v3.14.0 +// protoc v3.13.0 // source: common.proto package common_go_proto @@ -61,6 +61,14 @@ const ( NoteKind_ATTESTATION NoteKind = 7 // This represents an in-toto link. NoteKind_INTOTO NoteKind = 8 + // This represents a software bill of materials. + NoteKind_SBOM NoteKind = 9 + // This represents an SPDX Package. + NoteKind_SPDX_PACKAGE NoteKind = 10 + // This represents an SPDX File. + NoteKind_SPDX_FILE NoteKind = 11 + // This represents an SPDX Relationship. + NoteKind_SPDX_RELATIONSHIP NoteKind = 12 // This represents a git repository. // 99 is chosen as the field number to avoid possible conflicts with upstream in the future. NoteKind_REPOSITORY NoteKind = 99 @@ -78,6 +86,10 @@ var ( 6: "DISCOVERY", 7: "ATTESTATION", 8: "INTOTO", + 9: "SBOM", + 10: "SPDX_PACKAGE", + 11: "SPDX_FILE", + 12: "SPDX_RELATIONSHIP", 99: "REPOSITORY", } NoteKind_value = map[string]int32{ @@ -90,6 +102,10 @@ var ( "DISCOVERY": 6, "ATTESTATION": 7, "INTOTO": 8, + "SBOM": 9, + "SPDX_PACKAGE": 10, + "SPDX_FILE": 11, + "SPDX_RELATIONSHIP": 12, "REPOSITORY": 99, } ) @@ -438,7 +454,7 @@ var file_common_proto_rawDesc = []byte{ 0x65, 0x72, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x2e, 0x4b, 0x65, 0x79, 0x54, 0x79, 0x70, 0x65, 0x52, 0x07, 0x6b, 0x65, 0x79, 0x54, 0x79, 0x70, 0x65, 0x22, 0x1c, 0x0a, 0x07, 0x4b, 0x65, 0x79, 0x54, 0x79, 0x70, 0x65, 0x12, 0x11, 0x0a, 0x0d, 0x50, 0x4b, 0x43, 0x53, 0x38, - 0x5f, 0x45, 0x44, 0x32, 0x35, 0x35, 0x31, 0x39, 0x10, 0x00, 0x2a, 0xa7, 0x01, 0x0a, 0x08, 0x4e, + 0x5f, 0x45, 0x44, 0x32, 0x35, 0x35, 0x31, 0x39, 0x10, 0x00, 0x2a, 0xe9, 0x01, 0x0a, 0x08, 0x4e, 0x6f, 0x74, 0x65, 0x4b, 0x69, 0x6e, 0x64, 0x12, 0x19, 0x0a, 0x15, 0x4e, 0x4f, 0x54, 0x45, 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x11, 0x0a, 0x0d, 0x56, 0x55, 0x4c, 0x4e, 0x45, 0x52, 0x41, 0x42, 0x49, 0x4c, @@ -448,14 +464,18 @@ var file_common_proto_rawDesc = []byte{ 0x4f, 0x59, 0x4d, 0x45, 0x4e, 0x54, 0x10, 0x05, 0x12, 0x0d, 0x0a, 0x09, 0x44, 0x49, 0x53, 0x43, 0x4f, 0x56, 0x45, 0x52, 0x59, 0x10, 0x06, 0x12, 0x0f, 0x0a, 0x0b, 0x41, 0x54, 0x54, 0x45, 0x53, 0x54, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x07, 0x12, 0x0a, 0x0a, 0x06, 0x49, 0x4e, 0x54, 0x4f, - 0x54, 0x4f, 0x10, 0x08, 0x12, 0x0e, 0x0a, 0x0a, 0x52, 0x45, 0x50, 0x4f, 0x53, 0x49, 0x54, 0x4f, - 0x52, 0x59, 0x10, 0x63, 0x42, 0x56, 0x0a, 0x12, 0x69, 0x6f, 0x2e, 0x67, 0x72, 0x61, 0x66, 0x65, - 0x61, 0x73, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x50, 0x01, 0x5a, 0x38, 0x67, 0x69, - 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, - 0x2f, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x76, - 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x5f, 0x67, 0x6f, - 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0xa2, 0x02, 0x03, 0x47, 0x52, 0x41, 0x62, 0x06, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x33, + 0x54, 0x4f, 0x10, 0x08, 0x12, 0x08, 0x0a, 0x04, 0x53, 0x42, 0x4f, 0x4d, 0x10, 0x09, 0x12, 0x10, + 0x0a, 0x0c, 0x53, 0x50, 0x44, 0x58, 0x5f, 0x50, 0x41, 0x43, 0x4b, 0x41, 0x47, 0x45, 0x10, 0x0a, + 0x12, 0x0d, 0x0a, 0x09, 0x53, 0x50, 0x44, 0x58, 0x5f, 0x46, 0x49, 0x4c, 0x45, 0x10, 0x0b, 0x12, + 0x15, 0x0a, 0x11, 0x53, 0x50, 0x44, 0x58, 0x5f, 0x52, 0x45, 0x4c, 0x41, 0x54, 0x49, 0x4f, 0x4e, + 0x53, 0x48, 0x49, 0x50, 0x10, 0x0c, 0x12, 0x0e, 0x0a, 0x0a, 0x52, 0x45, 0x50, 0x4f, 0x53, 0x49, + 0x54, 0x4f, 0x52, 0x59, 0x10, 0x63, 0x42, 0x56, 0x0a, 0x12, 0x69, 0x6f, 0x2e, 0x67, 0x72, 0x61, + 0x66, 0x65, 0x61, 0x73, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x50, 0x01, 0x5a, 0x38, + 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x72, 0x61, 0x66, 0x65, + 0x61, 0x73, 0x2f, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x5f, + 0x67, 0x6f, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0xa2, 0x02, 0x03, 0x47, 0x52, 0x41, 0x62, 0x06, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( diff --git a/proto/v1beta1/cvss_go_proto/cvss.pb.go b/proto/v1beta1/cvss_go_proto/cvss.pb.go index e5869300..dd187adb 100644 --- a/proto/v1beta1/cvss_go_proto/cvss.pb.go +++ b/proto/v1beta1/cvss_go_proto/cvss.pb.go @@ -15,7 +15,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: // protoc-gen-go v1.25.0 -// protoc v3.14.0 +// protoc v3.13.0 // source: cvss.proto package cvss_go_proto diff --git a/proto/v1beta1/deployment_go_proto/deployment.pb.go b/proto/v1beta1/deployment_go_proto/deployment.pb.go index 793b9b82..4b0af6d0 100644 --- a/proto/v1beta1/deployment_go_proto/deployment.pb.go +++ b/proto/v1beta1/deployment_go_proto/deployment.pb.go @@ -15,16 +15,16 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: // protoc-gen-go v1.25.0 -// protoc v3.14.0 +// protoc v3.13.0 // source: deployment.proto package deployment_go_proto import ( proto "github.com/golang/protobuf/proto" + timestamp "github.com/golang/protobuf/ptypes/timestamp" 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" ) @@ -204,9 +204,9 @@ type Deployment struct { // Identity of the user that triggered this deployment. UserEmail string `protobuf:"bytes,1,opt,name=user_email,json=userEmail,proto3" json:"user_email,omitempty"` // Required. Beginning of the lifetime of this deployment. - DeployTime *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=deploy_time,json=deployTime,proto3" json:"deploy_time,omitempty"` + DeployTime *timestamp.Timestamp `protobuf:"bytes,2,opt,name=deploy_time,json=deployTime,proto3" json:"deploy_time,omitempty"` // End of the lifetime of this deployment. - UndeployTime *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=undeploy_time,json=undeployTime,proto3" json:"undeploy_time,omitempty"` + UndeployTime *timestamp.Timestamp `protobuf:"bytes,3,opt,name=undeploy_time,json=undeployTime,proto3" json:"undeploy_time,omitempty"` // Configuration used to create this deployment. Config string `protobuf:"bytes,4,opt,name=config,proto3" json:"config,omitempty"` // Address of the runtime element hosting this deployment. @@ -257,14 +257,14 @@ func (x *Deployment) GetUserEmail() string { return "" } -func (x *Deployment) GetDeployTime() *timestamppb.Timestamp { +func (x *Deployment) GetDeployTime() *timestamp.Timestamp { if x != nil { return x.DeployTime } return nil } -func (x *Deployment) GetUndeployTime() *timestamppb.Timestamp { +func (x *Deployment) GetUndeployTime() *timestamp.Timestamp { if x != nil { return x.UndeployTime } @@ -365,11 +365,11 @@ func file_deployment_proto_rawDescGZIP() []byte { var file_deployment_proto_enumTypes = make([]protoimpl.EnumInfo, 1) var file_deployment_proto_msgTypes = make([]protoimpl.MessageInfo, 3) var file_deployment_proto_goTypes = []interface{}{ - (Deployment_Platform)(0), // 0: grafeas.v1beta1.deployment.Deployment.Platform - (*Deployable)(nil), // 1: grafeas.v1beta1.deployment.Deployable - (*Details)(nil), // 2: grafeas.v1beta1.deployment.Details - (*Deployment)(nil), // 3: grafeas.v1beta1.deployment.Deployment - (*timestamppb.Timestamp)(nil), // 4: google.protobuf.Timestamp + (Deployment_Platform)(0), // 0: grafeas.v1beta1.deployment.Deployment.Platform + (*Deployable)(nil), // 1: grafeas.v1beta1.deployment.Deployable + (*Details)(nil), // 2: grafeas.v1beta1.deployment.Details + (*Deployment)(nil), // 3: grafeas.v1beta1.deployment.Deployment + (*timestamp.Timestamp)(nil), // 4: google.protobuf.Timestamp } var file_deployment_proto_depIdxs = []int32{ 3, // 0: grafeas.v1beta1.deployment.Details.deployment:type_name -> grafeas.v1beta1.deployment.Deployment diff --git a/proto/v1beta1/discovery_go_proto/discovery.pb.go b/proto/v1beta1/discovery_go_proto/discovery.pb.go index a6c8e9c2..09613738 100644 --- a/proto/v1beta1/discovery_go_proto/discovery.pb.go +++ b/proto/v1beta1/discovery_go_proto/discovery.pb.go @@ -15,18 +15,18 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: // protoc-gen-go v1.25.0 -// protoc v3.14.0 +// protoc v3.13.0 // source: discovery.proto package discovery_go_proto import ( proto "github.com/golang/protobuf/proto" + timestamp "github.com/golang/protobuf/ptypes/timestamp" common_go_proto "github.com/grafeas/grafeas/proto/v1beta1/common_go_proto" status "google.golang.org/genproto/googleapis/rpc/status" 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" ) @@ -273,7 +273,7 @@ type Discovered struct { ContinuousAnalysis Discovered_ContinuousAnalysis `protobuf:"varint,1,opt,name=continuous_analysis,json=continuousAnalysis,proto3,enum=grafeas.v1beta1.discovery.Discovered_ContinuousAnalysis" json:"continuous_analysis,omitempty"` // The last time continuous analysis was done for this resource. // Deprecated, do not use. - LastAnalysisTime *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=last_analysis_time,json=lastAnalysisTime,proto3" json:"last_analysis_time,omitempty"` + LastAnalysisTime *timestamp.Timestamp `protobuf:"bytes,2,opt,name=last_analysis_time,json=lastAnalysisTime,proto3" json:"last_analysis_time,omitempty"` // The status of discovery for the resource. AnalysisStatus Discovered_AnalysisStatus `protobuf:"varint,3,opt,name=analysis_status,json=analysisStatus,proto3,enum=grafeas.v1beta1.discovery.Discovered_AnalysisStatus" json:"analysis_status,omitempty"` // When an error is encountered this will contain a LocalizedMessage under @@ -321,7 +321,7 @@ func (x *Discovered) GetContinuousAnalysis() Discovered_ContinuousAnalysis { return Discovered_CONTINUOUS_ANALYSIS_UNSPECIFIED } -func (x *Discovered) GetLastAnalysisTime() *timestamppb.Timestamp { +func (x *Discovered) GetLastAnalysisTime() *timestamp.Timestamp { if x != nil { return x.LastAnalysisTime } @@ -431,7 +431,7 @@ var file_discovery_proto_goTypes = []interface{}{ (*Details)(nil), // 3: grafeas.v1beta1.discovery.Details (*Discovered)(nil), // 4: grafeas.v1beta1.discovery.Discovered (common_go_proto.NoteKind)(0), // 5: grafeas.v1beta1.NoteKind - (*timestamppb.Timestamp)(nil), // 6: google.protobuf.Timestamp + (*timestamp.Timestamp)(nil), // 6: google.protobuf.Timestamp (*status.Status)(nil), // 7: google.rpc.Status } var file_discovery_proto_depIdxs = []int32{ diff --git a/proto/v1beta1/generate.go b/proto/v1beta1/generate.go index 4f080c88..77c51537 100644 --- a/proto/v1beta1/generate.go +++ b/proto/v1beta1/generate.go @@ -113,4 +113,12 @@ //go:generate mv project.pb.gw.go project_go_proto //go:generate swagger project.proto //go:generate mv project.swagger.json swagger + +//go:generate protoc spdx.proto +//go:generate rm -rf spdx_go_proto +//go:generate mkdir spdx_go_proto +//go:generate mv spdx.pb.go spdx_go_proto +//go:generate swagger spdx.proto +//go:generate mv spdx.swagger.json swagger + package v1beta1 diff --git a/proto/v1beta1/git_go_proto/git.pb.go b/proto/v1beta1/git_go_proto/git.pb.go index 43d918df..aa8d23d9 100644 --- a/proto/v1beta1/git_go_proto/git.pb.go +++ b/proto/v1beta1/git_go_proto/git.pb.go @@ -1,16 +1,16 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: // protoc-gen-go v1.25.0 -// protoc v3.14.0 +// protoc v3.13.0 // source: git.proto package git_go_proto import ( proto "github.com/golang/protobuf/proto" + timestamp "github.com/golang/protobuf/ptypes/timestamp" 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" ) @@ -111,7 +111,7 @@ type Details struct { After string `protobuf:"bytes,2,opt,name=after,proto3" json:"after,omitempty"` // create_time is the time when the most recent commit is created. // Regarding Github webhook payload, it should be `timestamp` in `head_commit`. - CreateTime *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=create_time,json=createTime,proto3" json:"create_time,omitempty"` + CreateTime *timestamp.Timestamp `protobuf:"bytes,3,opt,name=create_time,json=createTime,proto3" json:"create_time,omitempty"` // pusher denotes the person who pushed the commit(s). Pusher *Details_User `protobuf:"bytes,4,opt,name=pusher,proto3" json:"pusher,omitempty"` } @@ -162,7 +162,7 @@ func (x *Details) GetAfter() string { return "" } -func (x *Details) GetCreateTime() *timestamppb.Timestamp { +func (x *Details) GetCreateTime() *timestamp.Timestamp { if x != nil { return x.CreateTime } @@ -281,10 +281,10 @@ func file_git_proto_rawDescGZIP() []byte { var file_git_proto_msgTypes = make([]protoimpl.MessageInfo, 3) var file_git_proto_goTypes = []interface{}{ - (*Repository)(nil), // 0: grafeas.v1beta1.git.Repository - (*Details)(nil), // 1: grafeas.v1beta1.git.Details - (*Details_User)(nil), // 2: grafeas.v1beta1.git.Details.User - (*timestamppb.Timestamp)(nil), // 3: google.protobuf.Timestamp + (*Repository)(nil), // 0: grafeas.v1beta1.git.Repository + (*Details)(nil), // 1: grafeas.v1beta1.git.Details + (*Details_User)(nil), // 2: grafeas.v1beta1.git.Details.User + (*timestamp.Timestamp)(nil), // 3: google.protobuf.Timestamp } var file_git_proto_depIdxs = []int32{ 3, // 0: grafeas.v1beta1.git.Details.create_time:type_name -> google.protobuf.Timestamp diff --git a/proto/v1beta1/grafeas.proto b/proto/v1beta1/grafeas.proto index a5ada663..b1c0d0b4 100644 --- a/proto/v1beta1/grafeas.proto +++ b/proto/v1beta1/grafeas.proto @@ -38,6 +38,7 @@ import "proto/v1beta1/image.proto"; import "proto/v1beta1/intoto.proto"; import "proto/v1beta1/package.proto"; import "proto/v1beta1/provenance.proto"; +import "proto/v1beta1/spdx.proto"; import "proto/v1beta1/vulnerability.proto"; // [Grafeas](grafeas.io) API. @@ -246,6 +247,14 @@ message Occurrence { grafeas.v1beta1.attestation.Details attestation = 14; // Describes a specific in-toto link. grafeas.v1beta1.intoto.Details intoto = 15; + // Describes a specific software bill of materials document. + grafeas.v1beta1.spdx.DocumentOccurrence sbom = 16; + // Describes a specific SPDX Package. + grafeas.v1beta1.spdx.PackageInfoOccurrence spdx_package = 17; + // Describes a specific SPDX File. + grafeas.v1beta1.spdx.FileOccurrence spdx_file = 18; + // Describes a specific SPDX Relationship. + grafeas.v1beta1.spdx.RelationshipOccurrence spdx_relationship = 19; // Describes a git push event. // 99 is chosen as the field number to avoid possible conflicts with upstream in the future. grafeas.v1beta1.git.Details git = 99; @@ -254,7 +263,7 @@ message Occurrence { // Signature of the "details" field. grafeas.v1beta1.ProducerSignature signature = 100; - // next_id = 16; + // next_id = 20; } // An entity that can have metadata. For example, a Docker image. @@ -333,6 +342,14 @@ message Note { grafeas.v1beta1.attestation.Authority attestation_authority = 16; // A note describing an in-toto link. grafeas.v1beta1.intoto.InToto intoto = 17; + // A note describing a software bill of materials. + grafeas.v1beta1.spdx.DocumentNote sbom = 18; + // A note describing an SPDX Package. + grafeas.v1beta1.spdx.PackageInfoNote spdx_package = 19; + // A note describing an SPDX File. + grafeas.v1beta1.spdx.FileNote spdx_file = 20; + // A note describing an SPDX File. + grafeas.v1beta1.spdx.RelationshipNote spdx_relationship = 21; // A note describing a git repository. // 99 is chosen as the field number to avoid possible conflicts with upstream in the future. grafeas.v1beta1.git.Repository git_repository = 99; @@ -341,7 +358,7 @@ message Note { // Signature of the "type" field. grafeas.v1beta1.ProducerSignature signature = 100; - // next_id = 18; + // next_id = 22; } // Request to get an occurrence. diff --git a/proto/v1beta1/grafeas_go_proto/grafeas.pb.go b/proto/v1beta1/grafeas_go_proto/grafeas.pb.go index 7d286734..7da13114 100644 --- a/proto/v1beta1/grafeas_go_proto/grafeas.pb.go +++ b/proto/v1beta1/grafeas_go_proto/grafeas.pb.go @@ -15,13 +15,15 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: // protoc-gen-go v1.25.0 -// protoc v3.14.0 +// protoc v3.13.0 // source: grafeas.proto package grafeas_go_proto import ( proto "github.com/golang/protobuf/proto" + empty "github.com/golang/protobuf/ptypes/empty" + timestamp "github.com/golang/protobuf/ptypes/timestamp" attestation_go_proto "github.com/grafeas/grafeas/proto/v1beta1/attestation_go_proto" build_go_proto "github.com/grafeas/grafeas/proto/v1beta1/build_go_proto" common_go_proto "github.com/grafeas/grafeas/proto/v1beta1/common_go_proto" @@ -32,13 +34,12 @@ import ( intoto_go_proto "github.com/grafeas/grafeas/proto/v1beta1/intoto_go_proto" package_go_proto "github.com/grafeas/grafeas/proto/v1beta1/package_go_proto" provenance_go_proto "github.com/grafeas/grafeas/proto/v1beta1/provenance_go_proto" + spdx_go_proto "github.com/grafeas/grafeas/proto/v1beta1/spdx_go_proto" vulnerability_go_proto "github.com/grafeas/grafeas/proto/v1beta1/vulnerability_go_proto" _ "google.golang.org/genproto/googleapis/api/annotations" + field_mask "google.golang.org/genproto/protobuf/field_mask" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" - emptypb "google.golang.org/protobuf/types/known/emptypb" - fieldmaskpb "google.golang.org/protobuf/types/known/fieldmaskpb" - timestamppb "google.golang.org/protobuf/types/known/timestamppb" reflect "reflect" sync "sync" ) @@ -75,9 +76,9 @@ type Occurrence struct { // A description of actions that can be taken to remedy the note. Remediation string `protobuf:"bytes,5,opt,name=remediation,proto3" json:"remediation,omitempty"` // Output only. The time this occurrence was created. - CreateTime *timestamppb.Timestamp `protobuf:"bytes,6,opt,name=create_time,json=createTime,proto3" json:"create_time,omitempty"` + CreateTime *timestamp.Timestamp `protobuf:"bytes,6,opt,name=create_time,json=createTime,proto3" json:"create_time,omitempty"` // Output only. The time this occurrence was last updated. - UpdateTime *timestamppb.Timestamp `protobuf:"bytes,7,opt,name=update_time,json=updateTime,proto3" json:"update_time,omitempty"` + UpdateTime *timestamp.Timestamp `protobuf:"bytes,7,opt,name=update_time,json=updateTime,proto3" json:"update_time,omitempty"` // Required. Immutable. Describes the details of the note kind found on this // resource. // @@ -90,6 +91,10 @@ type Occurrence struct { // *Occurrence_Discovered // *Occurrence_Attestation // *Occurrence_Intoto + // *Occurrence_Sbom + // *Occurrence_SpdxPackage + // *Occurrence_SpdxFile + // *Occurrence_SpdxRelationship // *Occurrence_Git Details isOccurrence_Details `protobuf_oneof:"details"` // Signature of the "details" field. @@ -163,14 +168,14 @@ func (x *Occurrence) GetRemediation() string { return "" } -func (x *Occurrence) GetCreateTime() *timestamppb.Timestamp { +func (x *Occurrence) GetCreateTime() *timestamp.Timestamp { if x != nil { return x.CreateTime } return nil } -func (x *Occurrence) GetUpdateTime() *timestamppb.Timestamp { +func (x *Occurrence) GetUpdateTime() *timestamp.Timestamp { if x != nil { return x.UpdateTime } @@ -240,6 +245,34 @@ func (x *Occurrence) GetIntoto() *intoto_go_proto.Details { return nil } +func (x *Occurrence) GetSbom() *spdx_go_proto.DocumentOccurrence { + if x, ok := x.GetDetails().(*Occurrence_Sbom); ok { + return x.Sbom + } + return nil +} + +func (x *Occurrence) GetSpdxPackage() *spdx_go_proto.PackageInfoOccurrence { + if x, ok := x.GetDetails().(*Occurrence_SpdxPackage); ok { + return x.SpdxPackage + } + return nil +} + +func (x *Occurrence) GetSpdxFile() *spdx_go_proto.FileOccurrence { + if x, ok := x.GetDetails().(*Occurrence_SpdxFile); ok { + return x.SpdxFile + } + return nil +} + +func (x *Occurrence) GetSpdxRelationship() *spdx_go_proto.RelationshipOccurrence { + if x, ok := x.GetDetails().(*Occurrence_SpdxRelationship); ok { + return x.SpdxRelationship + } + return nil +} + func (x *Occurrence) GetGit() *git_go_proto.Details { if x, ok := x.GetDetails().(*Occurrence_Git); ok { return x.Git @@ -299,6 +332,26 @@ type Occurrence_Intoto struct { Intoto *intoto_go_proto.Details `protobuf:"bytes,15,opt,name=intoto,proto3,oneof"` } +type Occurrence_Sbom struct { + // Describes a specific software bill of materials document. + Sbom *spdx_go_proto.DocumentOccurrence `protobuf:"bytes,16,opt,name=sbom,proto3,oneof"` +} + +type Occurrence_SpdxPackage struct { + // Describes a specific SPDX Package. + SpdxPackage *spdx_go_proto.PackageInfoOccurrence `protobuf:"bytes,17,opt,name=spdx_package,json=spdxPackage,proto3,oneof"` +} + +type Occurrence_SpdxFile struct { + // Describes a specific SPDX File. + SpdxFile *spdx_go_proto.FileOccurrence `protobuf:"bytes,18,opt,name=spdx_file,json=spdxFile,proto3,oneof"` +} + +type Occurrence_SpdxRelationship struct { + // Describes a specific SPDX Relationship. + SpdxRelationship *spdx_go_proto.RelationshipOccurrence `protobuf:"bytes,19,opt,name=spdx_relationship,json=spdxRelationship,proto3,oneof"` +} + type Occurrence_Git struct { // Describes a git push event. // 99 is chosen as the field number to avoid possible conflicts with upstream in the future. @@ -321,6 +374,14 @@ func (*Occurrence_Attestation) isOccurrence_Details() {} func (*Occurrence_Intoto) isOccurrence_Details() {} +func (*Occurrence_Sbom) isOccurrence_Details() {} + +func (*Occurrence_SpdxPackage) isOccurrence_Details() {} + +func (*Occurrence_SpdxFile) isOccurrence_Details() {} + +func (*Occurrence_SpdxRelationship) isOccurrence_Details() {} + func (*Occurrence_Git) isOccurrence_Details() {} // An entity that can have metadata. For example, a Docker image. @@ -421,13 +482,13 @@ type Note struct { // URLs associated with this note. RelatedUrl []*common_go_proto.RelatedUrl `protobuf:"bytes,5,rep,name=related_url,json=relatedUrl,proto3" json:"related_url,omitempty"` // Time of expiration for this note. Empty if note does not expire. - ExpirationTime *timestamppb.Timestamp `protobuf:"bytes,6,opt,name=expiration_time,json=expirationTime,proto3" json:"expiration_time,omitempty"` + ExpirationTime *timestamp.Timestamp `protobuf:"bytes,6,opt,name=expiration_time,json=expirationTime,proto3" json:"expiration_time,omitempty"` // Output only. The time this note was created. This field can be used as a // filter in list requests. - CreateTime *timestamppb.Timestamp `protobuf:"bytes,7,opt,name=create_time,json=createTime,proto3" json:"create_time,omitempty"` + CreateTime *timestamp.Timestamp `protobuf:"bytes,7,opt,name=create_time,json=createTime,proto3" json:"create_time,omitempty"` // Output only. The time this note was last updated. This field can be used as // a filter in list requests. - UpdateTime *timestamppb.Timestamp `protobuf:"bytes,8,opt,name=update_time,json=updateTime,proto3" json:"update_time,omitempty"` + UpdateTime *timestamp.Timestamp `protobuf:"bytes,8,opt,name=update_time,json=updateTime,proto3" json:"update_time,omitempty"` // Other notes related to this note. RelatedNoteNames []string `protobuf:"bytes,9,rep,name=related_note_names,json=relatedNoteNames,proto3" json:"related_note_names,omitempty"` // Required. Immutable. The type of analysis this note represents. @@ -441,6 +502,10 @@ type Note struct { // *Note_Discovery // *Note_AttestationAuthority // *Note_Intoto + // *Note_Sbom + // *Note_SpdxPackage + // *Note_SpdxFile + // *Note_SpdxRelationship // *Note_GitRepository Type isNote_Type `protobuf_oneof:"type"` // Signature of the "type" field. @@ -514,21 +579,21 @@ func (x *Note) GetRelatedUrl() []*common_go_proto.RelatedUrl { return nil } -func (x *Note) GetExpirationTime() *timestamppb.Timestamp { +func (x *Note) GetExpirationTime() *timestamp.Timestamp { if x != nil { return x.ExpirationTime } return nil } -func (x *Note) GetCreateTime() *timestamppb.Timestamp { +func (x *Note) GetCreateTime() *timestamp.Timestamp { if x != nil { return x.CreateTime } return nil } -func (x *Note) GetUpdateTime() *timestamppb.Timestamp { +func (x *Note) GetUpdateTime() *timestamp.Timestamp { if x != nil { return x.UpdateTime } @@ -605,6 +670,34 @@ func (x *Note) GetIntoto() *intoto_go_proto.InToto { return nil } +func (x *Note) GetSbom() *spdx_go_proto.DocumentNote { + if x, ok := x.GetType().(*Note_Sbom); ok { + return x.Sbom + } + return nil +} + +func (x *Note) GetSpdxPackage() *spdx_go_proto.PackageInfoNote { + if x, ok := x.GetType().(*Note_SpdxPackage); ok { + return x.SpdxPackage + } + return nil +} + +func (x *Note) GetSpdxFile() *spdx_go_proto.FileNote { + if x, ok := x.GetType().(*Note_SpdxFile); ok { + return x.SpdxFile + } + return nil +} + +func (x *Note) GetSpdxRelationship() *spdx_go_proto.RelationshipNote { + if x, ok := x.GetType().(*Note_SpdxRelationship); ok { + return x.SpdxRelationship + } + return nil +} + func (x *Note) GetGitRepository() *git_go_proto.Repository { if x, ok := x.GetType().(*Note_GitRepository); ok { return x.GitRepository @@ -663,6 +756,26 @@ type Note_Intoto struct { Intoto *intoto_go_proto.InToto `protobuf:"bytes,17,opt,name=intoto,proto3,oneof"` } +type Note_Sbom struct { + // A note describing a software bill of materials. + Sbom *spdx_go_proto.DocumentNote `protobuf:"bytes,18,opt,name=sbom,proto3,oneof"` +} + +type Note_SpdxPackage struct { + // A note describing an SPDX Package. + SpdxPackage *spdx_go_proto.PackageInfoNote `protobuf:"bytes,19,opt,name=spdx_package,json=spdxPackage,proto3,oneof"` +} + +type Note_SpdxFile struct { + // A note describing an SPDX File. + SpdxFile *spdx_go_proto.FileNote `protobuf:"bytes,20,opt,name=spdx_file,json=spdxFile,proto3,oneof"` +} + +type Note_SpdxRelationship struct { + // A note describing an SPDX File. + SpdxRelationship *spdx_go_proto.RelationshipNote `protobuf:"bytes,21,opt,name=spdx_relationship,json=spdxRelationship,proto3,oneof"` +} + type Note_GitRepository struct { // A note describing a git repository. // 99 is chosen as the field number to avoid possible conflicts with upstream in the future. @@ -685,6 +798,14 @@ func (*Note_AttestationAuthority) isNote_Type() {} func (*Note_Intoto) isNote_Type() {} +func (*Note_Sbom) isNote_Type() {} + +func (*Note_SpdxPackage) isNote_Type() {} + +func (*Note_SpdxFile) isNote_Type() {} + +func (*Note_SpdxRelationship) isNote_Type() {} + func (*Note_GitRepository) isNote_Type() {} // Request to get an occurrence. @@ -996,7 +1117,7 @@ type UpdateOccurrenceRequest struct { // The updated occurrence. Occurrence *Occurrence `protobuf:"bytes,2,opt,name=occurrence,proto3" json:"occurrence,omitempty"` // The fields to update. - UpdateMask *fieldmaskpb.FieldMask `protobuf:"bytes,3,opt,name=update_mask,json=updateMask,proto3" json:"update_mask,omitempty"` + UpdateMask *field_mask.FieldMask `protobuf:"bytes,3,opt,name=update_mask,json=updateMask,proto3" json:"update_mask,omitempty"` } func (x *UpdateOccurrenceRequest) Reset() { @@ -1045,7 +1166,7 @@ func (x *UpdateOccurrenceRequest) GetOccurrence() *Occurrence { return nil } -func (x *UpdateOccurrenceRequest) GetUpdateMask() *fieldmaskpb.FieldMask { +func (x *UpdateOccurrenceRequest) GetUpdateMask() *field_mask.FieldMask { if x != nil { return x.UpdateMask } @@ -1420,7 +1541,7 @@ type UpdateNoteRequest struct { // The updated note. Note *Note `protobuf:"bytes,2,opt,name=note,proto3" json:"note,omitempty"` // The fields to update. - UpdateMask *fieldmaskpb.FieldMask `protobuf:"bytes,3,opt,name=update_mask,json=updateMask,proto3" json:"update_mask,omitempty"` + UpdateMask *field_mask.FieldMask `protobuf:"bytes,3,opt,name=update_mask,json=updateMask,proto3" json:"update_mask,omitempty"` } func (x *UpdateNoteRequest) Reset() { @@ -1469,7 +1590,7 @@ func (x *UpdateNoteRequest) GetNote() *Note { return nil } -func (x *UpdateNoteRequest) GetUpdateMask() *fieldmaskpb.FieldMask { +func (x *UpdateNoteRequest) GetUpdateMask() *field_mask.FieldMask { if x != nil { return x.UpdateMask } @@ -2049,516 +2170,555 @@ var file_grafeas_proto_rawDesc = []byte{ 0x6f, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x76, 0x65, 0x6e, 0x61, 0x6e, 0x63, - 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x21, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x76, - 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x76, 0x75, 0x6c, 0x6e, 0x65, 0x72, 0x61, 0x62, 0x69, - 0x6c, 0x69, 0x74, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xb0, 0x08, 0x0a, 0x0a, 0x4f, - 0x63, 0x63, 0x75, 0x72, 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, 0x35, 0x0a, - 0x08, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x19, 0x2e, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, - 0x31, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x08, 0x72, 0x65, 0x73, 0x6f, - 0x75, 0x72, 0x63, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x6e, 0x6f, 0x74, 0x65, 0x5f, 0x6e, 0x61, 0x6d, - 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6e, 0x6f, 0x74, 0x65, 0x4e, 0x61, 0x6d, - 0x65, 0x12, 0x2d, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, - 0x19, 0x2e, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, - 0x31, 0x2e, 0x4e, 0x6f, 0x74, 0x65, 0x4b, 0x69, 0x6e, 0x64, 0x52, 0x04, 0x6b, 0x69, 0x6e, 0x64, - 0x12, 0x20, 0x0a, 0x0b, 0x72, 0x65, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, - 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x72, 0x65, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x12, 0x3b, 0x0a, 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, - 0x65, 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, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, - 0x3b, 0x0a, 0x0b, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 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, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x4e, 0x0a, 0x0d, - 0x76, 0x75, 0x6c, 0x6e, 0x65, 0x72, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x18, 0x08, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, 0x76, 0x31, - 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x76, 0x75, 0x6c, 0x6e, 0x65, 0x72, 0x61, 0x62, 0x69, 0x6c, - 0x69, 0x74, 0x79, 0x2e, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x48, 0x00, 0x52, 0x0d, 0x76, - 0x75, 0x6c, 0x6e, 0x65, 0x72, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x12, 0x36, 0x0a, 0x05, - 0x62, 0x75, 0x69, 0x6c, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x67, 0x72, - 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x62, 0x75, - 0x69, 0x6c, 0x64, 0x2e, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x48, 0x00, 0x52, 0x05, 0x62, - 0x75, 0x69, 0x6c, 0x64, 0x12, 0x45, 0x0a, 0x0d, 0x64, 0x65, 0x72, 0x69, 0x76, 0x65, 0x64, 0x5f, - 0x69, 0x6d, 0x61, 0x67, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x67, 0x72, - 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x69, 0x6d, - 0x61, 0x67, 0x65, 0x2e, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x48, 0x00, 0x52, 0x0c, 0x64, - 0x65, 0x72, 0x69, 0x76, 0x65, 0x64, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x46, 0x0a, 0x0c, 0x69, - 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0b, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x20, 0x2e, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, 0x76, 0x31, 0x62, 0x65, - 0x74, 0x61, 0x31, 0x2e, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x2e, 0x44, 0x65, 0x74, 0x61, - 0x69, 0x6c, 0x73, 0x48, 0x00, 0x52, 0x0c, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x12, 0x45, 0x0a, 0x0a, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, - 0x74, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, - 0x73, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, - 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x48, 0x00, 0x52, 0x0a, - 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x44, 0x0a, 0x0a, 0x64, 0x69, - 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x65, 0x64, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, - 0x2e, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, - 0x2e, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x2e, 0x44, 0x65, 0x74, 0x61, 0x69, - 0x6c, 0x73, 0x48, 0x00, 0x52, 0x0a, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x65, 0x64, - 0x12, 0x48, 0x0a, 0x0b, 0x61, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, - 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, - 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x61, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x2e, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x48, 0x00, 0x52, 0x0b, 0x61, - 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x39, 0x0a, 0x06, 0x69, 0x6e, - 0x74, 0x6f, 0x74, 0x6f, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x67, 0x72, 0x61, - 0x66, 0x65, 0x61, 0x73, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x69, 0x6e, 0x74, - 0x6f, 0x74, 0x6f, 0x2e, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x48, 0x00, 0x52, 0x06, 0x69, - 0x6e, 0x74, 0x6f, 0x74, 0x6f, 0x12, 0x30, 0x0a, 0x03, 0x67, 0x69, 0x74, 0x18, 0x63, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, 0x76, 0x31, 0x62, - 0x65, 0x74, 0x61, 0x31, 0x2e, 0x67, 0x69, 0x74, 0x2e, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, - 0x48, 0x00, 0x52, 0x03, 0x67, 0x69, 0x74, 0x12, 0x40, 0x0a, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, - 0x74, 0x75, 0x72, 0x65, 0x18, 0x64, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x67, 0x72, 0x61, - 0x66, 0x65, 0x61, 0x73, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x50, 0x72, 0x6f, - 0x64, 0x75, 0x63, 0x65, 0x72, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x52, 0x09, - 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x3a, 0x47, 0xea, 0x41, 0x44, 0x0a, 0x15, - 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, 0x69, 0x6f, 0x2f, 0x4f, 0x63, 0x63, 0x75, 0x72, - 0x72, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x2b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, - 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x6f, 0x63, 0x63, 0x75, 0x72, 0x72, - 0x65, 0x6e, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x6f, 0x63, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, - 0x65, 0x7d, 0x42, 0x09, 0x0a, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x22, 0x7d, 0x0a, - 0x08, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x16, 0x0a, 0x04, 0x6e, 0x61, 0x6d, - 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x02, 0x18, 0x01, 0x52, 0x04, 0x6e, 0x61, 0x6d, - 0x65, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x69, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, - 0x75, 0x72, 0x69, 0x12, 0x47, 0x0a, 0x0c, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x5f, 0x68, - 0x61, 0x73, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x67, 0x72, 0x61, 0x66, - 0x65, 0x61, 0x73, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x70, 0x72, 0x6f, 0x76, - 0x65, 0x6e, 0x61, 0x6e, 0x63, 0x65, 0x2e, 0x48, 0x61, 0x73, 0x68, 0x42, 0x02, 0x18, 0x01, 0x52, - 0x0b, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x48, 0x61, 0x73, 0x68, 0x22, 0xc9, 0x09, 0x0a, - 0x04, 0x4e, 0x6f, 0x74, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x2b, 0x0a, 0x11, 0x73, 0x68, 0x6f, - 0x72, 0x74, 0x5f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x73, 0x68, 0x6f, 0x72, 0x74, 0x44, 0x65, 0x73, 0x63, 0x72, - 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x29, 0x0a, 0x10, 0x6c, 0x6f, 0x6e, 0x67, 0x5f, 0x64, - 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0f, 0x6c, 0x6f, 0x6e, 0x67, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, - 0x6e, 0x12, 0x2d, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, - 0x19, 0x2e, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, - 0x31, 0x2e, 0x4e, 0x6f, 0x74, 0x65, 0x4b, 0x69, 0x6e, 0x64, 0x52, 0x04, 0x6b, 0x69, 0x6e, 0x64, - 0x12, 0x3c, 0x0a, 0x0b, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x75, 0x72, 0x6c, 0x18, - 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, - 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x55, - 0x72, 0x6c, 0x52, 0x0a, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x55, 0x72, 0x6c, 0x12, 0x43, - 0x0a, 0x0f, 0x65, 0x78, 0x70, 0x69, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x69, 0x6d, - 0x65, 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, 0x0e, 0x65, 0x78, 0x70, 0x69, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, - 0x69, 0x6d, 0x65, 0x12, 0x3b, 0x0a, 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, - 0x6d, 0x65, 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, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, - 0x12, 0x3b, 0x0a, 0x0b, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 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, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x2c, 0x0a, - 0x12, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x6e, 0x6f, 0x74, 0x65, 0x5f, 0x6e, 0x61, - 0x6d, 0x65, 0x73, 0x18, 0x09, 0x20, 0x03, 0x28, 0x09, 0x52, 0x10, 0x72, 0x65, 0x6c, 0x61, 0x74, - 0x65, 0x64, 0x4e, 0x6f, 0x74, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x54, 0x0a, 0x0d, 0x76, - 0x75, 0x6c, 0x6e, 0x65, 0x72, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x18, 0x0a, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, 0x76, 0x31, 0x62, - 0x65, 0x74, 0x61, 0x31, 0x2e, 0x76, 0x75, 0x6c, 0x6e, 0x65, 0x72, 0x61, 0x62, 0x69, 0x6c, 0x69, - 0x74, 0x79, 0x2e, 0x56, 0x75, 0x6c, 0x6e, 0x65, 0x72, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, - 0x48, 0x00, 0x52, 0x0d, 0x76, 0x75, 0x6c, 0x6e, 0x65, 0x72, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, - 0x79, 0x12, 0x34, 0x0a, 0x05, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x18, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x76, + 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x73, 0x70, 0x64, 0x78, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x1a, 0x21, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, + 0x2f, 0x76, 0x75, 0x6c, 0x6e, 0x65, 0x72, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xe4, 0x0a, 0x0a, 0x0a, 0x4f, 0x63, 0x63, 0x75, 0x72, 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, 0x35, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x6f, 0x75, + 0x72, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x72, 0x61, 0x66, + 0x65, 0x61, 0x73, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x6f, + 0x75, 0x72, 0x63, 0x65, 0x52, 0x08, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x1b, + 0x0a, 0x09, 0x6e, 0x6f, 0x74, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x08, 0x6e, 0x6f, 0x74, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x2d, 0x0a, 0x04, 0x6b, + 0x69, 0x6e, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x19, 0x2e, 0x67, 0x72, 0x61, 0x66, + 0x65, 0x61, 0x73, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4e, 0x6f, 0x74, 0x65, + 0x4b, 0x69, 0x6e, 0x64, 0x52, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x72, 0x65, + 0x6d, 0x65, 0x64, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0b, 0x72, 0x65, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3b, 0x0a, 0x0b, + 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 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, 0x0a, 0x63, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x3b, 0x0a, 0x0b, 0x75, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 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, 0x0a, 0x75, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x4e, 0x0a, 0x0d, 0x76, 0x75, 0x6c, 0x6e, 0x65, 0x72, + 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, + 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, + 0x76, 0x75, 0x6c, 0x6e, 0x65, 0x72, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x2e, 0x44, 0x65, + 0x74, 0x61, 0x69, 0x6c, 0x73, 0x48, 0x00, 0x52, 0x0d, 0x76, 0x75, 0x6c, 0x6e, 0x65, 0x72, 0x61, + 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x12, 0x36, 0x0a, 0x05, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x18, + 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, + 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x2e, 0x44, 0x65, + 0x74, 0x61, 0x69, 0x6c, 0x73, 0x48, 0x00, 0x52, 0x05, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x12, 0x45, + 0x0a, 0x0d, 0x64, 0x65, 0x72, 0x69, 0x76, 0x65, 0x64, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x18, + 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, + 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x2e, 0x44, 0x65, + 0x74, 0x61, 0x69, 0x6c, 0x73, 0x48, 0x00, 0x52, 0x0c, 0x64, 0x65, 0x72, 0x69, 0x76, 0x65, 0x64, + 0x49, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x46, 0x0a, 0x0c, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x67, 0x72, + 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x70, 0x61, + 0x63, 0x6b, 0x61, 0x67, 0x65, 0x2e, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x48, 0x00, 0x52, + 0x0c, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x45, 0x0a, + 0x0a, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x0c, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x23, 0x2e, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, 0x76, 0x31, 0x62, 0x65, + 0x74, 0x61, 0x31, 0x2e, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x44, + 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x48, 0x00, 0x52, 0x0a, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, + 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x44, 0x0a, 0x0a, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, + 0x65, 0x64, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x67, 0x72, 0x61, 0x66, 0x65, + 0x61, 0x73, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x64, 0x69, 0x73, 0x63, 0x6f, + 0x76, 0x65, 0x72, 0x79, 0x2e, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x48, 0x00, 0x52, 0x0a, + 0x64, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x65, 0x64, 0x12, 0x48, 0x0a, 0x0b, 0x61, 0x74, + 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x24, 0x2e, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, + 0x31, 0x2e, 0x61, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x44, 0x65, + 0x74, 0x61, 0x69, 0x6c, 0x73, 0x48, 0x00, 0x52, 0x0b, 0x61, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x39, 0x0a, 0x06, 0x69, 0x6e, 0x74, 0x6f, 0x74, 0x6f, 0x18, 0x0f, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, 0x76, + 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x69, 0x6e, 0x74, 0x6f, 0x74, 0x6f, 0x2e, 0x44, 0x65, + 0x74, 0x61, 0x69, 0x6c, 0x73, 0x48, 0x00, 0x52, 0x06, 0x69, 0x6e, 0x74, 0x6f, 0x74, 0x6f, 0x12, + 0x3e, 0x0a, 0x04, 0x73, 0x62, 0x6f, 0x6d, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, + 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, + 0x73, 0x70, 0x64, 0x78, 0x2e, 0x44, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x4f, 0x63, 0x63, + 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x48, 0x00, 0x52, 0x04, 0x73, 0x62, 0x6f, 0x6d, 0x12, + 0x50, 0x0a, 0x0c, 0x73, 0x70, 0x64, 0x78, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x18, + 0x11, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, + 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x73, 0x70, 0x64, 0x78, 0x2e, 0x50, 0x61, 0x63, + 0x6b, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x4f, 0x63, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, + 0x63, 0x65, 0x48, 0x00, 0x52, 0x0b, 0x73, 0x70, 0x64, 0x78, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, + 0x65, 0x12, 0x43, 0x0a, 0x09, 0x73, 0x70, 0x64, 0x78, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x18, 0x12, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, 0x76, + 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x73, 0x70, 0x64, 0x78, 0x2e, 0x46, 0x69, 0x6c, 0x65, + 0x4f, 0x63, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x48, 0x00, 0x52, 0x08, 0x73, 0x70, + 0x64, 0x78, 0x46, 0x69, 0x6c, 0x65, 0x12, 0x5b, 0x0a, 0x11, 0x73, 0x70, 0x64, 0x78, 0x5f, 0x72, + 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x68, 0x69, 0x70, 0x18, 0x13, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x2c, 0x2e, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, 0x76, 0x31, 0x62, 0x65, + 0x74, 0x61, 0x31, 0x2e, 0x73, 0x70, 0x64, 0x78, 0x2e, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x68, 0x69, 0x70, 0x4f, 0x63, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x48, + 0x00, 0x52, 0x10, 0x73, 0x70, 0x64, 0x78, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x68, 0x69, 0x70, 0x12, 0x30, 0x0a, 0x03, 0x67, 0x69, 0x74, 0x18, 0x63, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, - 0x61, 0x31, 0x2e, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x2e, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x48, 0x00, - 0x52, 0x05, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x12, 0x3d, 0x0a, 0x0a, 0x62, 0x61, 0x73, 0x65, 0x5f, - 0x69, 0x6d, 0x61, 0x67, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x72, - 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x69, 0x6d, - 0x61, 0x67, 0x65, 0x2e, 0x42, 0x61, 0x73, 0x69, 0x73, 0x48, 0x00, 0x52, 0x09, 0x62, 0x61, 0x73, - 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x3c, 0x0a, 0x07, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, - 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, - 0x73, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, - 0x65, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x48, 0x00, 0x52, 0x07, 0x70, 0x61, 0x63, - 0x6b, 0x61, 0x67, 0x65, 0x12, 0x48, 0x0a, 0x0a, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x61, 0x62, - 0x6c, 0x65, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x67, 0x72, 0x61, 0x66, 0x65, - 0x61, 0x73, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x64, 0x65, 0x70, 0x6c, 0x6f, - 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x61, 0x62, 0x6c, 0x65, - 0x48, 0x00, 0x52, 0x0a, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x44, - 0x0a, 0x09, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x18, 0x0f, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x24, 0x2e, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, 0x76, 0x31, 0x62, 0x65, - 0x74, 0x61, 0x31, 0x2e, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x2e, 0x44, 0x69, - 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x48, 0x00, 0x52, 0x09, 0x64, 0x69, 0x73, 0x63, 0x6f, - 0x76, 0x65, 0x72, 0x79, 0x12, 0x5d, 0x0a, 0x15, 0x61, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x5f, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x10, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, 0x76, 0x31, - 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x61, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x2e, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x48, 0x00, 0x52, 0x14, 0x61, - 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, - 0x69, 0x74, 0x79, 0x12, 0x38, 0x0a, 0x06, 0x69, 0x6e, 0x74, 0x6f, 0x74, 0x6f, 0x18, 0x11, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, 0x76, 0x31, - 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x69, 0x6e, 0x74, 0x6f, 0x74, 0x6f, 0x2e, 0x49, 0x6e, 0x54, - 0x6f, 0x74, 0x6f, 0x48, 0x00, 0x52, 0x06, 0x69, 0x6e, 0x74, 0x6f, 0x74, 0x6f, 0x12, 0x48, 0x0a, - 0x0e, 0x67, 0x69, 0x74, 0x5f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x18, - 0x63, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, - 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x67, 0x69, 0x74, 0x2e, 0x52, 0x65, 0x70, 0x6f, - 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x48, 0x00, 0x52, 0x0d, 0x67, 0x69, 0x74, 0x52, 0x65, 0x70, - 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x40, 0x0a, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, - 0x74, 0x75, 0x72, 0x65, 0x18, 0x64, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x67, 0x72, 0x61, - 0x66, 0x65, 0x61, 0x73, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x50, 0x72, 0x6f, - 0x64, 0x75, 0x63, 0x65, 0x72, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x52, 0x09, - 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x3a, 0x35, 0xea, 0x41, 0x32, 0x0a, 0x0f, - 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, 0x69, 0x6f, 0x2f, 0x4e, 0x6f, 0x74, 0x65, 0x12, - 0x1f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, - 0x63, 0x74, 0x7d, 0x2f, 0x6e, 0x6f, 0x74, 0x65, 0x73, 0x2f, 0x7b, 0x6e, 0x6f, 0x74, 0x65, 0x7d, - 0x42, 0x06, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0x49, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x4f, - 0x63, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x12, 0x31, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x1d, - 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x17, 0x0a, 0x15, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, - 0x69, 0x6f, 0x2f, 0x4f, 0x63, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x04, 0x6e, - 0x61, 0x6d, 0x65, 0x22, 0xb9, 0x01, 0x0a, 0x16, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x63, 0x63, 0x75, - 0x72, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x4b, - 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x33, - 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x2d, 0x0a, 0x2b, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x72, 0x65, 0x73, - 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x50, 0x72, 0x6f, 0x6a, - 0x65, 0x63, 0x74, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x66, - 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x66, 0x69, 0x6c, - 0x74, 0x65, 0x72, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, - 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, - 0x80, 0x01, 0x0a, 0x17, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x63, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, - 0x63, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3d, 0x0a, 0x0b, 0x6f, - 0x63, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x1b, 0x2e, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, - 0x61, 0x31, 0x2e, 0x4f, 0x63, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x0b, 0x6f, - 0x63, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x6e, 0x65, - 0x78, 0x74, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6e, 0x65, 0x78, 0x74, 0x50, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, - 0x65, 0x6e, 0x22, 0x4c, 0x0a, 0x17, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4f, 0x63, 0x63, 0x75, - 0x72, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x31, 0x0a, - 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x1d, 0xe0, 0x41, 0x02, - 0xfa, 0x41, 0x17, 0x0a, 0x15, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, 0x69, 0x6f, 0x2f, - 0x4f, 0x63, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, - 0x22, 0xa8, 0x01, 0x0a, 0x17, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, 0x63, 0x63, 0x75, 0x72, - 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x4b, 0x0a, 0x06, - 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x33, 0xe0, 0x41, - 0x02, 0xfa, 0x41, 0x2d, 0x0a, 0x2b, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x72, 0x65, 0x73, 0x6f, 0x75, - 0x72, 0x63, 0x65, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, - 0x74, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x40, 0x0a, 0x0a, 0x6f, 0x63, 0x63, - 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, + 0x61, 0x31, 0x2e, 0x67, 0x69, 0x74, 0x2e, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x48, 0x00, + 0x52, 0x03, 0x67, 0x69, 0x74, 0x12, 0x40, 0x0a, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, + 0x72, 0x65, 0x18, 0x64, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x67, 0x72, 0x61, 0x66, 0x65, + 0x61, 0x73, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x64, 0x75, + 0x63, 0x65, 0x72, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x52, 0x09, 0x73, 0x69, + 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x3a, 0x47, 0xea, 0x41, 0x44, 0x0a, 0x15, 0x67, 0x72, + 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, 0x69, 0x6f, 0x2f, 0x4f, 0x63, 0x63, 0x75, 0x72, 0x72, 0x65, + 0x6e, 0x63, 0x65, 0x12, 0x2b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, + 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x6f, 0x63, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, + 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x6f, 0x63, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x7d, + 0x42, 0x09, 0x0a, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x22, 0x7d, 0x0a, 0x08, 0x52, + 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x16, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x02, 0x18, 0x01, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, + 0x10, 0x0a, 0x03, 0x75, 0x72, 0x69, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, + 0x69, 0x12, 0x47, 0x0a, 0x0c, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x5f, 0x68, 0x61, 0x73, + 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, + 0x73, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x70, 0x72, 0x6f, 0x76, 0x65, 0x6e, + 0x61, 0x6e, 0x63, 0x65, 0x2e, 0x48, 0x61, 0x73, 0x68, 0x42, 0x02, 0x18, 0x01, 0x52, 0x0b, 0x63, + 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x48, 0x61, 0x73, 0x68, 0x22, 0xe5, 0x0b, 0x0a, 0x04, 0x4e, + 0x6f, 0x74, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x2b, 0x0a, 0x11, 0x73, 0x68, 0x6f, 0x72, 0x74, + 0x5f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x10, 0x73, 0x68, 0x6f, 0x72, 0x74, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x29, 0x0a, 0x10, 0x6c, 0x6f, 0x6e, 0x67, 0x5f, 0x64, 0x65, 0x73, + 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, + 0x6c, 0x6f, 0x6e, 0x67, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, + 0x2d, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x19, 0x2e, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, - 0x4f, 0x63, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, - 0x0a, 0x6f, 0x63, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x22, 0xcb, 0x01, 0x0a, 0x17, - 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x63, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x65, + 0x4e, 0x6f, 0x74, 0x65, 0x4b, 0x69, 0x6e, 0x64, 0x52, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x12, 0x3c, + 0x0a, 0x0b, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x05, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, 0x76, 0x31, + 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x55, 0x72, 0x6c, + 0x52, 0x0a, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x55, 0x72, 0x6c, 0x12, 0x43, 0x0a, 0x0f, + 0x65, 0x78, 0x70, 0x69, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x69, 0x6d, 0x65, 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, 0x0e, 0x65, 0x78, 0x70, 0x69, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x69, 0x6d, + 0x65, 0x12, 0x3b, 0x0a, 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, + 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, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x3b, + 0x0a, 0x0b, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 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, + 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x2c, 0x0a, 0x12, 0x72, + 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x6e, 0x6f, 0x74, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, + 0x73, 0x18, 0x09, 0x20, 0x03, 0x28, 0x09, 0x52, 0x10, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, + 0x4e, 0x6f, 0x74, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x54, 0x0a, 0x0d, 0x76, 0x75, 0x6c, + 0x6e, 0x65, 0x72, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x2c, 0x2e, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, + 0x61, 0x31, 0x2e, 0x76, 0x75, 0x6c, 0x6e, 0x65, 0x72, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, + 0x2e, 0x56, 0x75, 0x6c, 0x6e, 0x65, 0x72, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x48, 0x00, + 0x52, 0x0d, 0x76, 0x75, 0x6c, 0x6e, 0x65, 0x72, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x12, + 0x34, 0x0a, 0x05, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, + 0x2e, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, + 0x2e, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x2e, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x48, 0x00, 0x52, 0x05, + 0x62, 0x75, 0x69, 0x6c, 0x64, 0x12, 0x3d, 0x0a, 0x0a, 0x62, 0x61, 0x73, 0x65, 0x5f, 0x69, 0x6d, + 0x61, 0x67, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x72, 0x61, 0x66, + 0x65, 0x61, 0x73, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x69, 0x6d, 0x61, 0x67, + 0x65, 0x2e, 0x42, 0x61, 0x73, 0x69, 0x73, 0x48, 0x00, 0x52, 0x09, 0x62, 0x61, 0x73, 0x65, 0x49, + 0x6d, 0x61, 0x67, 0x65, 0x12, 0x3c, 0x0a, 0x07, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x18, + 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, + 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x2e, + 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x48, 0x00, 0x52, 0x07, 0x70, 0x61, 0x63, 0x6b, 0x61, + 0x67, 0x65, 0x12, 0x48, 0x0a, 0x0a, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x61, 0x62, 0x6c, 0x65, + 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, + 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, + 0x65, 0x6e, 0x74, 0x2e, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x61, 0x62, 0x6c, 0x65, 0x48, 0x00, + 0x52, 0x0a, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x44, 0x0a, 0x09, + 0x64, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x24, 0x2e, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, + 0x31, 0x2e, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x2e, 0x44, 0x69, 0x73, 0x63, + 0x6f, 0x76, 0x65, 0x72, 0x79, 0x48, 0x00, 0x52, 0x09, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, + 0x72, 0x79, 0x12, 0x5d, 0x0a, 0x15, 0x61, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x5f, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x10, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x26, 0x2e, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, 0x76, 0x31, 0x62, 0x65, + 0x74, 0x61, 0x31, 0x2e, 0x61, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, + 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x48, 0x00, 0x52, 0x14, 0x61, 0x74, 0x74, + 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, + 0x79, 0x12, 0x38, 0x0a, 0x06, 0x69, 0x6e, 0x74, 0x6f, 0x74, 0x6f, 0x18, 0x11, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1e, 0x2e, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, 0x76, 0x31, 0x62, 0x65, + 0x74, 0x61, 0x31, 0x2e, 0x69, 0x6e, 0x74, 0x6f, 0x74, 0x6f, 0x2e, 0x49, 0x6e, 0x54, 0x6f, 0x74, + 0x6f, 0x48, 0x00, 0x52, 0x06, 0x69, 0x6e, 0x74, 0x6f, 0x74, 0x6f, 0x12, 0x38, 0x0a, 0x04, 0x73, + 0x62, 0x6f, 0x6d, 0x18, 0x12, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x67, 0x72, 0x61, 0x66, + 0x65, 0x61, 0x73, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x73, 0x70, 0x64, 0x78, + 0x2e, 0x44, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x4e, 0x6f, 0x74, 0x65, 0x48, 0x00, 0x52, + 0x04, 0x73, 0x62, 0x6f, 0x6d, 0x12, 0x4a, 0x0a, 0x0c, 0x73, 0x70, 0x64, 0x78, 0x5f, 0x70, 0x61, + 0x63, 0x6b, 0x61, 0x67, 0x65, 0x18, 0x13, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x67, 0x72, + 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x73, 0x70, + 0x64, 0x78, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x4e, 0x6f, + 0x74, 0x65, 0x48, 0x00, 0x52, 0x0b, 0x73, 0x70, 0x64, 0x78, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, + 0x65, 0x12, 0x3d, 0x0a, 0x09, 0x73, 0x70, 0x64, 0x78, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x18, 0x14, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, 0x76, + 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x73, 0x70, 0x64, 0x78, 0x2e, 0x46, 0x69, 0x6c, 0x65, + 0x4e, 0x6f, 0x74, 0x65, 0x48, 0x00, 0x52, 0x08, 0x73, 0x70, 0x64, 0x78, 0x46, 0x69, 0x6c, 0x65, + 0x12, 0x55, 0x0a, 0x11, 0x73, 0x70, 0x64, 0x78, 0x5f, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x68, 0x69, 0x70, 0x18, 0x15, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x67, 0x72, + 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x73, 0x70, + 0x64, 0x78, 0x2e, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x68, 0x69, 0x70, 0x4e, + 0x6f, 0x74, 0x65, 0x48, 0x00, 0x52, 0x10, 0x73, 0x70, 0x64, 0x78, 0x52, 0x65, 0x6c, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x68, 0x69, 0x70, 0x12, 0x48, 0x0a, 0x0e, 0x67, 0x69, 0x74, 0x5f, 0x72, + 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x18, 0x63, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x1f, 0x2e, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, + 0x31, 0x2e, 0x67, 0x69, 0x74, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, + 0x48, 0x00, 0x52, 0x0d, 0x67, 0x69, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, + 0x79, 0x12, 0x40, 0x0a, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x18, 0x64, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, 0x76, + 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x65, 0x72, 0x53, + 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x52, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, + 0x75, 0x72, 0x65, 0x3a, 0x35, 0xea, 0x41, 0x32, 0x0a, 0x0f, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, + 0x73, 0x2e, 0x69, 0x6f, 0x2f, 0x4e, 0x6f, 0x74, 0x65, 0x12, 0x1f, 0x70, 0x72, 0x6f, 0x6a, 0x65, + 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x6e, 0x6f, + 0x74, 0x65, 0x73, 0x2f, 0x7b, 0x6e, 0x6f, 0x74, 0x65, 0x7d, 0x42, 0x06, 0x0a, 0x04, 0x74, 0x79, + 0x70, 0x65, 0x22, 0x49, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x4f, 0x63, 0x63, 0x75, 0x72, 0x72, 0x65, + 0x6e, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x31, 0x0a, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x1d, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x17, + 0x0a, 0x15, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, 0x69, 0x6f, 0x2f, 0x4f, 0x63, 0x63, + 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0xb9, 0x01, + 0x0a, 0x16, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x63, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x65, + 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x4b, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, + 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x33, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x2d, + 0x0a, 0x2b, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6d, + 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, + 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x06, 0x70, + 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x1b, 0x0a, + 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x61, + 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, + 0x70, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x80, 0x01, 0x0a, 0x17, 0x4c, 0x69, + 0x73, 0x74, 0x4f, 0x63, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3d, 0x0a, 0x0b, 0x6f, 0x63, 0x63, 0x75, 0x72, 0x72, 0x65, + 0x6e, 0x63, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x72, 0x61, + 0x66, 0x65, 0x61, 0x73, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4f, 0x63, 0x63, + 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x0b, 0x6f, 0x63, 0x63, 0x75, 0x72, 0x72, 0x65, + 0x6e, 0x63, 0x65, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x70, 0x61, 0x67, + 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6e, + 0x65, 0x78, 0x74, 0x50, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x4c, 0x0a, 0x17, + 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4f, 0x63, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x31, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x1d, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x17, 0x0a, 0x15, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, 0x69, 0x6f, 0x2f, 0x4f, 0x63, 0x63, 0x75, 0x72, 0x72, - 0x65, 0x6e, 0x63, 0x65, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x40, 0x0a, 0x0a, 0x6f, 0x63, - 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, - 0x2e, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, - 0x2e, 0x4f, 0x63, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x02, - 0x52, 0x0a, 0x6f, 0x63, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x3b, 0x0a, 0x0b, - 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 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, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x52, 0x0a, 0x75, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x73, 0x6b, 0x22, 0x3d, 0x0a, 0x0e, 0x47, 0x65, 0x74, - 0x4e, 0x6f, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2b, 0x0a, 0x04, 0x6e, - 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x17, 0xe0, 0x41, 0x02, 0xfa, 0x41, - 0x11, 0x0a, 0x0f, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, 0x69, 0x6f, 0x2f, 0x4e, 0x6f, - 0x74, 0x65, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x4d, 0x0a, 0x18, 0x47, 0x65, 0x74, 0x4f, - 0x63, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x4e, 0x6f, 0x74, 0x65, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x12, 0x31, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x42, 0x1d, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x17, 0x0a, 0x15, 0x67, 0x72, 0x61, 0x66, - 0x65, 0x61, 0x73, 0x2e, 0x69, 0x6f, 0x2f, 0x4f, 0x63, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, - 0x65, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0xb3, 0x01, 0x0a, 0x10, 0x4c, 0x69, 0x73, 0x74, - 0x4e, 0x6f, 0x74, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x4b, 0x0a, 0x06, - 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x33, 0xe0, 0x41, - 0x02, 0xfa, 0x41, 0x2d, 0x0a, 0x2b, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x72, 0x65, 0x73, 0x6f, 0x75, - 0x72, 0x63, 0x65, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, - 0x74, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x66, 0x69, 0x6c, - 0x74, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, - 0x72, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x1d, - 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x09, 0x70, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x68, 0x0a, - 0x11, 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x6f, 0x74, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x12, 0x2b, 0x0a, 0x05, 0x6e, 0x6f, 0x74, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x15, 0x2e, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, 0x76, 0x31, 0x62, 0x65, - 0x74, 0x61, 0x31, 0x2e, 0x4e, 0x6f, 0x74, 0x65, 0x52, 0x05, 0x6e, 0x6f, 0x74, 0x65, 0x73, 0x12, - 0x26, 0x0a, 0x0f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, - 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6e, 0x65, 0x78, 0x74, 0x50, 0x61, - 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x40, 0x0a, 0x11, 0x44, 0x65, 0x6c, 0x65, 0x74, - 0x65, 0x4e, 0x6f, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2b, 0x0a, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x17, 0xe0, 0x41, 0x02, 0xfa, - 0x41, 0x11, 0x0a, 0x0f, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, 0x69, 0x6f, 0x2f, 0x4e, - 0x6f, 0x74, 0x65, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0xae, 0x01, 0x0a, 0x11, 0x43, 0x72, - 0x65, 0x61, 0x74, 0x65, 0x4e, 0x6f, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, - 0x4b, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, - 0x33, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x2d, 0x0a, 0x2b, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x72, 0x65, - 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x50, 0x72, 0x6f, - 0x6a, 0x65, 0x63, 0x74, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x1c, 0x0a, 0x07, - 0x6e, 0x6f, 0x74, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, - 0x41, 0x02, 0x52, 0x06, 0x6e, 0x6f, 0x74, 0x65, 0x49, 0x64, 0x12, 0x2e, 0x0a, 0x04, 0x6e, 0x6f, - 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x67, 0x72, 0x61, 0x66, 0x65, - 0x61, 0x73, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4e, 0x6f, 0x74, 0x65, 0x42, - 0x03, 0xe0, 0x41, 0x02, 0x52, 0x04, 0x6e, 0x6f, 0x74, 0x65, 0x22, 0xad, 0x01, 0x0a, 0x11, 0x55, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x4e, 0x6f, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x12, 0x2b, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x17, - 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x11, 0x0a, 0x0f, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, - 0x69, 0x6f, 0x2f, 0x4e, 0x6f, 0x74, 0x65, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x2e, 0x0a, - 0x04, 0x6e, 0x6f, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x67, 0x72, - 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4e, 0x6f, - 0x74, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x04, 0x6e, 0x6f, 0x74, 0x65, 0x12, 0x3b, 0x0a, - 0x0b, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 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, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x52, 0x0a, - 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x73, 0x6b, 0x22, 0x9d, 0x01, 0x0a, 0x1a, 0x4c, - 0x69, 0x73, 0x74, 0x4e, 0x6f, 0x74, 0x65, 0x4f, 0x63, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, - 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2b, 0x0a, 0x04, 0x6e, 0x61, 0x6d, - 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x17, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x11, 0x0a, - 0x0f, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, 0x69, 0x6f, 0x2f, 0x4e, 0x6f, 0x74, 0x65, - 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x1b, - 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x70, - 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x09, 0x70, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x84, 0x01, 0x0a, 0x1b, 0x4c, - 0x69, 0x73, 0x74, 0x4e, 0x6f, 0x74, 0x65, 0x4f, 0x63, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, - 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3d, 0x0a, 0x0b, 0x6f, 0x63, - 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x1b, 0x2e, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, - 0x31, 0x2e, 0x4f, 0x63, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x0b, 0x6f, 0x63, - 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x6e, 0x65, 0x78, - 0x74, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0d, 0x6e, 0x65, 0x78, 0x74, 0x50, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, - 0x6e, 0x22, 0x87, 0x02, 0x0a, 0x17, 0x42, 0x61, 0x74, 0x63, 0x68, 0x43, 0x72, 0x65, 0x61, 0x74, - 0x65, 0x4e, 0x6f, 0x74, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x4b, 0x0a, - 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x33, 0xe0, - 0x41, 0x02, 0xfa, 0x41, 0x2d, 0x0a, 0x2b, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x72, 0x65, 0x73, 0x6f, - 0x75, 0x72, 0x63, 0x65, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x50, 0x72, 0x6f, 0x6a, 0x65, - 0x63, 0x74, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x4e, 0x0a, 0x05, 0x6e, 0x6f, - 0x74, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x67, 0x72, 0x61, 0x66, - 0x65, 0x61, 0x73, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x42, 0x61, 0x74, 0x63, - 0x68, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4e, 0x6f, 0x74, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x2e, 0x4e, 0x6f, 0x74, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x03, - 0xe0, 0x41, 0x02, 0x52, 0x05, 0x6e, 0x6f, 0x74, 0x65, 0x73, 0x1a, 0x4f, 0x0a, 0x0a, 0x4e, 0x6f, - 0x74, 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, 0x2b, 0x0a, 0x05, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x67, 0x72, 0x61, 0x66, - 0x65, 0x61, 0x73, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4e, 0x6f, 0x74, 0x65, - 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x47, 0x0a, 0x18, 0x42, - 0x61, 0x74, 0x63, 0x68, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4e, 0x6f, 0x74, 0x65, 0x73, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2b, 0x0a, 0x05, 0x6e, 0x6f, 0x74, 0x65, 0x73, - 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, - 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4e, 0x6f, 0x74, 0x65, 0x52, 0x05, 0x6e, - 0x6f, 0x74, 0x65, 0x73, 0x22, 0xb0, 0x01, 0x0a, 0x1d, 0x42, 0x61, 0x74, 0x63, 0x68, 0x43, 0x72, - 0x65, 0x61, 0x74, 0x65, 0x4f, 0x63, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x52, + 0x65, 0x6e, 0x63, 0x65, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0xa8, 0x01, 0x0a, 0x17, 0x43, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, 0x63, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x4b, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x33, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x2d, 0x0a, 0x2b, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x06, 0x70, 0x61, 0x72, - 0x65, 0x6e, 0x74, 0x12, 0x42, 0x0a, 0x0b, 0x6f, 0x63, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, - 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x72, 0x61, 0x66, 0x65, + 0x65, 0x6e, 0x74, 0x12, 0x40, 0x0a, 0x0a, 0x6f, 0x63, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, + 0x73, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4f, 0x63, 0x63, 0x75, 0x72, 0x72, + 0x65, 0x6e, 0x63, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0a, 0x6f, 0x63, 0x63, 0x75, 0x72, + 0x72, 0x65, 0x6e, 0x63, 0x65, 0x22, 0xcb, 0x01, 0x0a, 0x17, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x4f, 0x63, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x12, 0x31, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, + 0x1d, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x17, 0x0a, 0x15, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, + 0x2e, 0x69, 0x6f, 0x2f, 0x4f, 0x63, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x40, 0x0a, 0x0a, 0x6f, 0x63, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, + 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4f, 0x63, 0x63, 0x75, 0x72, - 0x72, 0x65, 0x6e, 0x63, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0b, 0x6f, 0x63, 0x63, 0x75, - 0x72, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x22, 0x5f, 0x0a, 0x1e, 0x42, 0x61, 0x74, 0x63, 0x68, - 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, 0x63, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x65, - 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3d, 0x0a, 0x0b, 0x6f, 0x63, 0x63, - 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, - 0x2e, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, - 0x2e, 0x4f, 0x63, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x0b, 0x6f, 0x63, 0x63, - 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x22, 0x90, 0x01, 0x0a, 0x29, 0x47, 0x65, 0x74, - 0x56, 0x75, 0x6c, 0x6e, 0x65, 0x72, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x4f, 0x63, 0x63, - 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x52, + 0x72, 0x65, 0x6e, 0x63, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0a, 0x6f, 0x63, 0x63, 0x75, + 0x72, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x3b, 0x0a, 0x0b, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x5f, 0x6d, 0x61, 0x73, 0x6b, 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, 0x46, 0x69, + 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x52, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4d, + 0x61, 0x73, 0x6b, 0x22, 0x3d, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x4e, 0x6f, 0x74, 0x65, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2b, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x42, 0x17, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x11, 0x0a, 0x0f, 0x67, 0x72, 0x61, + 0x66, 0x65, 0x61, 0x73, 0x2e, 0x69, 0x6f, 0x2f, 0x4e, 0x6f, 0x74, 0x65, 0x52, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x22, 0x4d, 0x0a, 0x18, 0x47, 0x65, 0x74, 0x4f, 0x63, 0x63, 0x75, 0x72, 0x72, 0x65, + 0x6e, 0x63, 0x65, 0x4e, 0x6f, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x31, + 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x1d, 0xe0, 0x41, + 0x02, 0xfa, 0x41, 0x17, 0x0a, 0x15, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, 0x69, 0x6f, + 0x2f, 0x4f, 0x63, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x22, 0xb3, 0x01, 0x0a, 0x10, 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x6f, 0x74, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x4b, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x33, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x2d, 0x0a, 0x2b, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x22, 0xdb, 0x02, 0x0a, 0x1f, - 0x56, 0x75, 0x6c, 0x6e, 0x65, 0x72, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x4f, 0x63, 0x63, - 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x12, - 0x5d, 0x0a, 0x06, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x45, 0x2e, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, - 0x31, 0x2e, 0x56, 0x75, 0x6c, 0x6e, 0x65, 0x72, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x4f, - 0x63, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, - 0x79, 0x2e, 0x46, 0x69, 0x78, 0x61, 0x62, 0x6c, 0x65, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x42, 0x79, - 0x44, 0x69, 0x67, 0x65, 0x73, 0x74, 0x52, 0x06, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x1a, 0xd8, - 0x01, 0x0a, 0x14, 0x46, 0x69, 0x78, 0x61, 0x62, 0x6c, 0x65, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x42, - 0x79, 0x44, 0x69, 0x67, 0x65, 0x73, 0x74, 0x12, 0x35, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x6f, 0x75, - 0x72, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x72, 0x61, 0x66, - 0x65, 0x61, 0x73, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x6f, - 0x75, 0x72, 0x63, 0x65, 0x52, 0x08, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x43, - 0x0a, 0x08, 0x73, 0x65, 0x76, 0x65, 0x72, 0x69, 0x74, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, - 0x32, 0x27, 0x2e, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, - 0x61, 0x31, 0x2e, 0x76, 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, 0x23, 0x0a, 0x0d, 0x66, 0x69, 0x78, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x63, - 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x66, 0x69, 0x78, 0x61, - 0x62, 0x6c, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x6f, 0x74, 0x61, - 0x6c, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x74, - 0x6f, 0x74, 0x61, 0x6c, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x32, 0xaa, 0x13, 0x0a, 0x0e, 0x47, 0x72, - 0x61, 0x66, 0x65, 0x61, 0x73, 0x56, 0x31, 0x42, 0x65, 0x74, 0x61, 0x31, 0x12, 0x8c, 0x01, 0x0a, - 0x0d, 0x47, 0x65, 0x74, 0x4f, 0x63, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x25, - 0x2e, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, - 0x2e, 0x47, 0x65, 0x74, 0x4f, 0x63, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, - 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4f, 0x63, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, - 0x63, 0x65, 0x22, 0x37, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2a, 0x12, 0x28, 0x2f, 0x76, 0x31, 0x62, - 0x65, 0x74, 0x61, 0x31, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, - 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6f, 0x63, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x65, - 0x73, 0x2f, 0x2a, 0x7d, 0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0xa6, 0x01, 0x0a, 0x0f, - 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x63, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x12, - 0x27, 0x2e, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, - 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x63, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x65, - 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x67, 0x72, 0x61, 0x66, 0x65, - 0x61, 0x73, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4f, - 0x63, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x40, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2a, 0x12, 0x28, 0x2f, 0x76, 0x31, 0x62, - 0x65, 0x74, 0x61, 0x31, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, - 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x6f, 0x63, 0x63, 0x75, 0x72, 0x72, 0x65, - 0x6e, 0x63, 0x65, 0x73, 0xda, 0x41, 0x0d, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x2c, 0x66, 0x69, - 0x6c, 0x74, 0x65, 0x72, 0x12, 0x8d, 0x01, 0x0a, 0x10, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4f, - 0x63, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x28, 0x2e, 0x67, 0x72, 0x61, 0x66, - 0x65, 0x61, 0x73, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, - 0x74, 0x65, 0x4f, 0x63, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 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, 0x37, 0x82, 0xd3, 0xe4, - 0x93, 0x02, 0x2a, 0x2a, 0x28, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x7b, 0x6e, - 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6f, - 0x63, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x2f, 0x2a, 0x7d, 0xda, 0x41, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x12, 0xab, 0x01, 0x0a, 0x10, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, - 0x63, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x28, 0x2e, 0x67, 0x72, 0x61, 0x66, - 0x65, 0x61, 0x73, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x4f, 0x63, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, 0x76, 0x31, - 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4f, 0x63, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x65, - 0x22, 0x50, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x36, 0x22, 0x28, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, - 0x61, 0x31, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, - 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x6f, 0x63, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, - 0x65, 0x73, 0x3a, 0x0a, 0x6f, 0x63, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x65, 0xda, 0x41, - 0x11, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x2c, 0x6f, 0x63, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, - 0x63, 0x65, 0x12, 0xcf, 0x01, 0x0a, 0x16, 0x42, 0x61, 0x74, 0x63, 0x68, 0x43, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x4f, 0x63, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x12, 0x2e, 0x2e, + 0x01, 0x28, 0x09, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x1b, 0x0a, 0x09, 0x70, + 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, + 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x65, + 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x61, + 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x68, 0x0a, 0x11, 0x4c, 0x69, 0x73, 0x74, 0x4e, + 0x6f, 0x74, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2b, 0x0a, 0x05, + 0x6e, 0x6f, 0x74, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x67, 0x72, + 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4e, 0x6f, + 0x74, 0x65, 0x52, 0x05, 0x6e, 0x6f, 0x74, 0x65, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x6e, 0x65, 0x78, + 0x74, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0d, 0x6e, 0x65, 0x78, 0x74, 0x50, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, + 0x6e, 0x22, 0x40, 0x0a, 0x11, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4e, 0x6f, 0x74, 0x65, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2b, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x42, 0x17, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x11, 0x0a, 0x0f, 0x67, 0x72, + 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, 0x69, 0x6f, 0x2f, 0x4e, 0x6f, 0x74, 0x65, 0x52, 0x04, 0x6e, + 0x61, 0x6d, 0x65, 0x22, 0xae, 0x01, 0x0a, 0x11, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4e, 0x6f, + 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x4b, 0x0a, 0x06, 0x70, 0x61, 0x72, + 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x33, 0xe0, 0x41, 0x02, 0xfa, 0x41, + 0x2d, 0x0a, 0x2b, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, + 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, + 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x06, + 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x1c, 0x0a, 0x07, 0x6e, 0x6f, 0x74, 0x65, 0x5f, 0x69, + 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x06, 0x6e, 0x6f, + 0x74, 0x65, 0x49, 0x64, 0x12, 0x2e, 0x0a, 0x04, 0x6e, 0x6f, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, 0x76, 0x31, 0x62, + 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4e, 0x6f, 0x74, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x04, + 0x6e, 0x6f, 0x74, 0x65, 0x22, 0xad, 0x01, 0x0a, 0x11, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4e, + 0x6f, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2b, 0x0a, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x17, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x11, + 0x0a, 0x0f, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, 0x69, 0x6f, 0x2f, 0x4e, 0x6f, 0x74, + 0x65, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x2e, 0x0a, 0x04, 0x6e, 0x6f, 0x74, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, + 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4e, 0x6f, 0x74, 0x65, 0x42, 0x03, 0xe0, 0x41, + 0x02, 0x52, 0x04, 0x6e, 0x6f, 0x74, 0x65, 0x12, 0x3b, 0x0a, 0x0b, 0x75, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 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, 0x46, + 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x52, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x4d, 0x61, 0x73, 0x6b, 0x22, 0x9d, 0x01, 0x0a, 0x1a, 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x6f, 0x74, + 0x65, 0x4f, 0x63, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x12, 0x2b, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x42, 0x17, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x11, 0x0a, 0x0f, 0x67, 0x72, 0x61, 0x66, 0x65, + 0x61, 0x73, 0x2e, 0x69, 0x6f, 0x2f, 0x4e, 0x6f, 0x74, 0x65, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x12, 0x16, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, + 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x61, 0x67, + 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, + 0x6b, 0x65, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x61, 0x67, 0x65, 0x54, + 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x84, 0x01, 0x0a, 0x1b, 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x6f, 0x74, + 0x65, 0x4f, 0x63, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3d, 0x0a, 0x0b, 0x6f, 0x63, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, + 0x63, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x72, 0x61, 0x66, + 0x65, 0x61, 0x73, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4f, 0x63, 0x63, 0x75, + 0x72, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x0b, 0x6f, 0x63, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, + 0x63, 0x65, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x70, 0x61, 0x67, 0x65, + 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6e, 0x65, + 0x78, 0x74, 0x50, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x87, 0x02, 0x0a, 0x17, + 0x42, 0x61, 0x74, 0x63, 0x68, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4e, 0x6f, 0x74, 0x65, 0x73, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x4b, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, + 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x33, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x2d, 0x0a, + 0x2b, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6d, 0x61, + 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, + 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x06, 0x70, 0x61, + 0x72, 0x65, 0x6e, 0x74, 0x12, 0x4e, 0x0a, 0x05, 0x6e, 0x6f, 0x74, 0x65, 0x73, 0x18, 0x02, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, 0x76, 0x31, + 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x42, 0x61, 0x74, 0x63, 0x68, 0x43, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x4e, 0x6f, 0x74, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x4e, 0x6f, + 0x74, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x05, 0x6e, + 0x6f, 0x74, 0x65, 0x73, 0x1a, 0x4f, 0x0a, 0x0a, 0x4e, 0x6f, 0x74, 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, 0x2b, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, 0x76, 0x31, + 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4e, 0x6f, 0x74, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x47, 0x0a, 0x18, 0x42, 0x61, 0x74, 0x63, 0x68, 0x43, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x4e, 0x6f, 0x74, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x12, 0x2b, 0x0a, 0x05, 0x6e, 0x6f, 0x74, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x15, 0x2e, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, + 0x61, 0x31, 0x2e, 0x4e, 0x6f, 0x74, 0x65, 0x52, 0x05, 0x6e, 0x6f, 0x74, 0x65, 0x73, 0x22, 0xb0, + 0x01, 0x0a, 0x1d, 0x42, 0x61, 0x74, 0x63, 0x68, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, 0x63, + 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x4b, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x42, 0x33, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x2d, 0x0a, 0x2b, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x72, + 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x50, 0x72, + 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x42, 0x0a, + 0x0b, 0x6f, 0x63, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, 0x76, 0x31, 0x62, + 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4f, 0x63, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x42, + 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0b, 0x6f, 0x63, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x65, + 0x73, 0x22, 0x5f, 0x0a, 0x1e, 0x42, 0x61, 0x74, 0x63, 0x68, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x4f, 0x63, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x3d, 0x0a, 0x0b, 0x6f, 0x63, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, + 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x72, 0x61, 0x66, 0x65, + 0x61, 0x73, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4f, 0x63, 0x63, 0x75, 0x72, + 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x0b, 0x6f, 0x63, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, + 0x65, 0x73, 0x22, 0x90, 0x01, 0x0a, 0x29, 0x47, 0x65, 0x74, 0x56, 0x75, 0x6c, 0x6e, 0x65, 0x72, + 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x4f, 0x63, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, + 0x65, 0x73, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x4b, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x42, 0x33, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x2d, 0x0a, 0x2b, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x72, + 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x50, 0x72, + 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x16, 0x0a, + 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x66, + 0x69, 0x6c, 0x74, 0x65, 0x72, 0x22, 0xdb, 0x02, 0x0a, 0x1f, 0x56, 0x75, 0x6c, 0x6e, 0x65, 0x72, + 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x4f, 0x63, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, + 0x65, 0x73, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x12, 0x5d, 0x0a, 0x06, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x45, 0x2e, 0x67, 0x72, 0x61, 0x66, + 0x65, 0x61, 0x73, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x56, 0x75, 0x6c, 0x6e, + 0x65, 0x72, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x4f, 0x63, 0x63, 0x75, 0x72, 0x72, 0x65, + 0x6e, 0x63, 0x65, 0x73, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x2e, 0x46, 0x69, 0x78, 0x61, + 0x62, 0x6c, 0x65, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x42, 0x79, 0x44, 0x69, 0x67, 0x65, 0x73, 0x74, + 0x52, 0x06, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x1a, 0xd8, 0x01, 0x0a, 0x14, 0x46, 0x69, 0x78, + 0x61, 0x62, 0x6c, 0x65, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x42, 0x79, 0x44, 0x69, 0x67, 0x65, 0x73, + 0x74, 0x12, 0x35, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, 0x76, 0x31, + 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x08, + 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x43, 0x0a, 0x08, 0x73, 0x65, 0x76, 0x65, + 0x72, 0x69, 0x74, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x27, 0x2e, 0x67, 0x72, 0x61, + 0x66, 0x65, 0x61, 0x73, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x76, 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, 0x23, 0x0a, + 0x0d, 0x66, 0x69, 0x78, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x66, 0x69, 0x78, 0x61, 0x62, 0x6c, 0x65, 0x43, 0x6f, 0x75, + 0x6e, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x63, 0x6f, 0x75, 0x6e, + 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x43, 0x6f, + 0x75, 0x6e, 0x74, 0x32, 0xaa, 0x13, 0x0a, 0x0e, 0x47, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x56, + 0x31, 0x42, 0x65, 0x74, 0x61, 0x31, 0x12, 0x8c, 0x01, 0x0a, 0x0d, 0x47, 0x65, 0x74, 0x4f, 0x63, + 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x25, 0x2e, 0x67, 0x72, 0x61, 0x66, 0x65, + 0x61, 0x73, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4f, 0x63, + 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x1b, 0x2e, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, + 0x31, 0x2e, 0x4f, 0x63, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x22, 0x37, 0x82, 0xd3, + 0xe4, 0x93, 0x02, 0x2a, 0x12, 0x28, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x7b, + 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, + 0x6f, 0x63, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x2f, 0x2a, 0x7d, 0xda, 0x41, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0xa6, 0x01, 0x0a, 0x0f, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x63, + 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x12, 0x27, 0x2e, 0x67, 0x72, 0x61, 0x66, + 0x65, 0x61, 0x73, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, + 0x4f, 0x63, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, 0x76, 0x31, 0x62, + 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x63, 0x63, 0x75, 0x72, 0x72, 0x65, + 0x6e, 0x63, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x40, 0x82, 0xd3, + 0xe4, 0x93, 0x02, 0x2a, 0x12, 0x28, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x7b, + 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, + 0x2a, 0x7d, 0x2f, 0x6f, 0x63, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0xda, 0x41, + 0x0d, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x2c, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x8d, + 0x01, 0x0a, 0x10, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4f, 0x63, 0x63, 0x75, 0x72, 0x72, 0x65, + 0x6e, 0x63, 0x65, 0x12, 0x28, 0x2e, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, 0x76, 0x31, + 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4f, 0x63, 0x63, 0x75, + 0x72, 0x72, 0x65, 0x6e, 0x63, 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, 0x37, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2a, 0x2a, 0x28, 0x2f, + 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, + 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6f, 0x63, 0x63, 0x75, 0x72, 0x72, 0x65, + 0x6e, 0x63, 0x65, 0x73, 0x2f, 0x2a, 0x7d, 0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0xab, + 0x01, 0x0a, 0x10, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, 0x63, 0x63, 0x75, 0x72, 0x72, 0x65, + 0x6e, 0x63, 0x65, 0x12, 0x28, 0x2e, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, 0x76, 0x31, + 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, 0x63, 0x63, 0x75, + 0x72, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, - 0x42, 0x61, 0x74, 0x63, 0x68, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, 0x63, 0x63, 0x75, 0x72, - 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e, + 0x4f, 0x63, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x22, 0x50, 0x82, 0xd3, 0xe4, 0x93, + 0x02, 0x36, 0x22, 0x28, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x7b, 0x70, 0x61, + 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x7d, + 0x2f, 0x6f, 0x63, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x3a, 0x0a, 0x6f, 0x63, + 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x65, 0xda, 0x41, 0x11, 0x70, 0x61, 0x72, 0x65, 0x6e, + 0x74, 0x2c, 0x6f, 0x63, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x12, 0xcf, 0x01, 0x0a, + 0x16, 0x42, 0x61, 0x74, 0x63, 0x68, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, 0x63, 0x63, 0x75, + 0x72, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x12, 0x2e, 0x2e, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, + 0x73, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x42, 0x61, 0x74, 0x63, 0x68, 0x43, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, 0x63, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, + 0x73, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x42, 0x61, 0x74, 0x63, 0x68, 0x43, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, 0x63, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x54, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x39, + 0x22, 0x34, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, + 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x6f, + 0x63, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x3a, 0x62, 0x61, 0x74, 0x63, 0x68, + 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x3a, 0x01, 0x2a, 0xda, 0x41, 0x12, 0x70, 0x61, 0x72, 0x65, + 0x6e, 0x74, 0x2c, 0x6f, 0x63, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x12, 0xb5, + 0x01, 0x0a, 0x10, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x63, 0x63, 0x75, 0x72, 0x72, 0x65, + 0x6e, 0x63, 0x65, 0x12, 0x28, 0x2e, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, 0x76, 0x31, + 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x63, 0x63, 0x75, + 0x72, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, - 0x42, 0x61, 0x74, 0x63, 0x68, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, 0x63, 0x63, 0x75, 0x72, - 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x54, - 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x39, 0x22, 0x34, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, - 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, - 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x6f, 0x63, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, - 0x3a, 0x62, 0x61, 0x74, 0x63, 0x68, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x3a, 0x01, 0x2a, 0xda, - 0x41, 0x12, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x2c, 0x6f, 0x63, 0x63, 0x75, 0x72, 0x72, 0x65, - 0x6e, 0x63, 0x65, 0x73, 0x12, 0xb5, 0x01, 0x0a, 0x10, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, - 0x63, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x28, 0x2e, 0x67, 0x72, 0x61, 0x66, - 0x65, 0x61, 0x73, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, - 0x74, 0x65, 0x4f, 0x63, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, 0x76, 0x31, - 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4f, 0x63, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x65, - 0x22, 0x5a, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x36, 0x32, 0x28, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, + 0x4f, 0x63, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x22, 0x5a, 0x82, 0xd3, 0xe4, 0x93, + 0x02, 0x36, 0x32, 0x28, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x7b, 0x6e, 0x61, + 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6f, 0x63, + 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x0a, 0x6f, 0x63, + 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x65, 0xda, 0x41, 0x1b, 0x6e, 0x61, 0x6d, 0x65, 0x2c, + 0x6f, 0x63, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x2c, 0x75, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x12, 0x94, 0x01, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x4f, 0x63, + 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x4e, 0x6f, 0x74, 0x65, 0x12, 0x29, 0x2e, 0x67, + 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x47, + 0x65, 0x74, 0x4f, 0x63, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x4e, 0x6f, 0x74, 0x65, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x15, 0x2e, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, + 0x73, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4e, 0x6f, 0x74, 0x65, 0x22, 0x3d, + 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x30, 0x12, 0x2e, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, + 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, + 0x2a, 0x2f, 0x6f, 0x63, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x2f, 0x2a, 0x7d, + 0x2f, 0x6e, 0x6f, 0x74, 0x65, 0x73, 0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x74, 0x0a, + 0x07, 0x47, 0x65, 0x74, 0x4e, 0x6f, 0x74, 0x65, 0x12, 0x1f, 0x2e, 0x67, 0x72, 0x61, 0x66, 0x65, + 0x61, 0x73, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4e, 0x6f, + 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x15, 0x2e, 0x67, 0x72, 0x61, 0x66, + 0x65, 0x61, 0x73, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4e, 0x6f, 0x74, 0x65, + 0x22, 0x31, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x24, 0x12, 0x22, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, - 0x73, 0x2f, 0x2a, 0x2f, 0x6f, 0x63, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x2f, - 0x2a, 0x7d, 0x3a, 0x0a, 0x6f, 0x63, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x65, 0xda, 0x41, - 0x1b, 0x6e, 0x61, 0x6d, 0x65, 0x2c, 0x6f, 0x63, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x65, - 0x2c, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x12, 0x94, 0x01, 0x0a, - 0x11, 0x47, 0x65, 0x74, 0x4f, 0x63, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x4e, 0x6f, - 0x74, 0x65, 0x12, 0x29, 0x2e, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, 0x76, 0x31, 0x62, - 0x65, 0x74, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4f, 0x63, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, - 0x63, 0x65, 0x4e, 0x6f, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x15, 0x2e, - 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, - 0x4e, 0x6f, 0x74, 0x65, 0x22, 0x3d, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x30, 0x12, 0x2e, 0x2f, 0x76, - 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, - 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6f, 0x63, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, - 0x63, 0x65, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x6e, 0x6f, 0x74, 0x65, 0x73, 0xda, 0x41, 0x04, 0x6e, - 0x61, 0x6d, 0x65, 0x12, 0x74, 0x0a, 0x07, 0x47, 0x65, 0x74, 0x4e, 0x6f, 0x74, 0x65, 0x12, 0x1f, - 0x2e, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, - 0x2e, 0x47, 0x65, 0x74, 0x4e, 0x6f, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x15, 0x2e, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, - 0x31, 0x2e, 0x4e, 0x6f, 0x74, 0x65, 0x22, 0x31, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x24, 0x12, 0x22, - 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, - 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6e, 0x6f, 0x74, 0x65, 0x73, 0x2f, - 0x2a, 0x7d, 0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x8e, 0x01, 0x0a, 0x09, 0x4c, 0x69, - 0x73, 0x74, 0x4e, 0x6f, 0x74, 0x65, 0x73, 0x12, 0x21, 0x2e, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, - 0x73, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x6f, - 0x74, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x67, 0x72, 0x61, - 0x66, 0x65, 0x61, 0x73, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, - 0x74, 0x4e, 0x6f, 0x74, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x3a, - 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x24, 0x12, 0x22, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, - 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, - 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x6e, 0x6f, 0x74, 0x65, 0x73, 0xda, 0x41, 0x0d, 0x70, 0x61, 0x72, - 0x65, 0x6e, 0x74, 0x2c, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x7b, 0x0a, 0x0a, 0x44, 0x65, - 0x6c, 0x65, 0x74, 0x65, 0x4e, 0x6f, 0x74, 0x65, 0x12, 0x22, 0x2e, 0x67, 0x72, 0x61, 0x66, 0x65, - 0x61, 0x73, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, - 0x65, 0x4e, 0x6f, 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, 0x31, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x24, 0x2a, 0x22, 0x2f, 0x76, - 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, - 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6e, 0x6f, 0x74, 0x65, 0x73, 0x2f, 0x2a, 0x7d, - 0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x8f, 0x01, 0x0a, 0x0a, 0x43, 0x72, 0x65, 0x61, + 0x73, 0x2f, 0x2a, 0x2f, 0x6e, 0x6f, 0x74, 0x65, 0x73, 0x2f, 0x2a, 0x7d, 0xda, 0x41, 0x04, 0x6e, + 0x61, 0x6d, 0x65, 0x12, 0x8e, 0x01, 0x0a, 0x09, 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x6f, 0x74, 0x65, + 0x73, 0x12, 0x21, 0x2e, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, 0x76, 0x31, 0x62, 0x65, + 0x74, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x6f, 0x74, 0x65, 0x73, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, 0x76, + 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x6f, 0x74, 0x65, 0x73, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x3a, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x24, + 0x12, 0x22, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, + 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x6e, + 0x6f, 0x74, 0x65, 0x73, 0xda, 0x41, 0x0d, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x2c, 0x66, 0x69, + 0x6c, 0x74, 0x65, 0x72, 0x12, 0x7b, 0x0a, 0x0a, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4e, 0x6f, + 0x74, 0x65, 0x12, 0x22, 0x2e, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, 0x76, 0x31, 0x62, + 0x65, 0x74, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4e, 0x6f, 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, 0x31, + 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x24, 0x2a, 0x22, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, + 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, + 0x2a, 0x2f, 0x6e, 0x6f, 0x74, 0x65, 0x73, 0x2f, 0x2a, 0x7d, 0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x12, 0x8f, 0x01, 0x0a, 0x0a, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4e, 0x6f, 0x74, 0x65, + 0x12, 0x22, 0x2e, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, + 0x61, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4e, 0x6f, 0x74, 0x65, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x15, 0x2e, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, 0x76, + 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4e, 0x6f, 0x74, 0x65, 0x22, 0x46, 0x82, 0xd3, 0xe4, + 0x93, 0x02, 0x2a, 0x22, 0x22, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x7b, 0x70, + 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, + 0x7d, 0x2f, 0x6e, 0x6f, 0x74, 0x65, 0x73, 0x3a, 0x04, 0x6e, 0x6f, 0x74, 0x65, 0xda, 0x41, 0x13, + 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x2c, 0x6e, 0x6f, 0x74, 0x65, 0x5f, 0x69, 0x64, 0x2c, 0x6e, + 0x6f, 0x74, 0x65, 0x12, 0xb1, 0x01, 0x0a, 0x10, 0x42, 0x61, 0x74, 0x63, 0x68, 0x43, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x4e, 0x6f, 0x74, 0x65, 0x73, 0x12, 0x28, 0x2e, 0x67, 0x72, 0x61, 0x66, 0x65, + 0x61, 0x73, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x42, 0x61, 0x74, 0x63, 0x68, + 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4e, 0x6f, 0x74, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, 0x76, 0x31, 0x62, + 0x65, 0x74, 0x61, 0x31, 0x2e, 0x42, 0x61, 0x74, 0x63, 0x68, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x4e, 0x6f, 0x74, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x48, 0x82, + 0xd3, 0xe4, 0x93, 0x02, 0x33, 0x22, 0x2e, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, + 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, + 0x2f, 0x2a, 0x7d, 0x2f, 0x6e, 0x6f, 0x74, 0x65, 0x73, 0x3a, 0x62, 0x61, 0x74, 0x63, 0x68, 0x43, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x3a, 0x01, 0x2a, 0xda, 0x41, 0x0c, 0x70, 0x61, 0x72, 0x65, 0x6e, + 0x74, 0x2c, 0x6e, 0x6f, 0x74, 0x65, 0x73, 0x12, 0x91, 0x01, 0x0a, 0x0a, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4e, 0x6f, 0x74, 0x65, 0x12, 0x22, 0x2e, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, - 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4e, + 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4e, 0x6f, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x15, 0x2e, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4e, 0x6f, 0x74, - 0x65, 0x22, 0x46, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2a, 0x22, 0x22, 0x2f, 0x76, 0x31, 0x62, 0x65, - 0x74, 0x61, 0x31, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, - 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x6e, 0x6f, 0x74, 0x65, 0x73, 0x3a, 0x04, 0x6e, - 0x6f, 0x74, 0x65, 0xda, 0x41, 0x13, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x2c, 0x6e, 0x6f, 0x74, - 0x65, 0x5f, 0x69, 0x64, 0x2c, 0x6e, 0x6f, 0x74, 0x65, 0x12, 0xb1, 0x01, 0x0a, 0x10, 0x42, 0x61, - 0x74, 0x63, 0x68, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4e, 0x6f, 0x74, 0x65, 0x73, 0x12, 0x28, - 0x2e, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, - 0x2e, 0x42, 0x61, 0x74, 0x63, 0x68, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4e, 0x6f, 0x74, 0x65, - 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x67, 0x72, 0x61, 0x66, 0x65, - 0x61, 0x73, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x42, 0x61, 0x74, 0x63, 0x68, - 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4e, 0x6f, 0x74, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0x48, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x33, 0x22, 0x2e, 0x2f, 0x76, 0x31, - 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, - 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x6e, 0x6f, 0x74, 0x65, 0x73, 0x3a, - 0x62, 0x61, 0x74, 0x63, 0x68, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x3a, 0x01, 0x2a, 0xda, 0x41, - 0x0c, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x2c, 0x6e, 0x6f, 0x74, 0x65, 0x73, 0x12, 0x91, 0x01, - 0x0a, 0x0a, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4e, 0x6f, 0x74, 0x65, 0x12, 0x22, 0x2e, 0x67, - 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x55, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x4e, 0x6f, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x15, 0x2e, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, - 0x61, 0x31, 0x2e, 0x4e, 0x6f, 0x74, 0x65, 0x22, 0x48, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2a, 0x32, - 0x22, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, - 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6e, 0x6f, 0x74, 0x65, 0x73, - 0x2f, 0x2a, 0x7d, 0x3a, 0x04, 0x6e, 0x6f, 0x74, 0x65, 0xda, 0x41, 0x15, 0x6e, 0x61, 0x6d, 0x65, - 0x2c, 0x6e, 0x6f, 0x74, 0x65, 0x2c, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6d, 0x61, 0x73, - 0x6b, 0x12, 0xb6, 0x01, 0x0a, 0x13, 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x6f, 0x74, 0x65, 0x4f, 0x63, - 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x12, 0x2b, 0x2e, 0x67, 0x72, 0x61, 0x66, - 0x65, 0x61, 0x73, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, - 0x4e, 0x6f, 0x74, 0x65, 0x4f, 0x63, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, - 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x6f, 0x74, - 0x65, 0x4f, 0x63, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x44, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x30, 0x12, 0x2e, 0x2f, 0x76, - 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, - 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6e, 0x6f, 0x74, 0x65, 0x73, 0x2f, 0x2a, 0x7d, - 0x2f, 0x6f, 0x63, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0xda, 0x41, 0x0b, 0x6e, - 0x61, 0x6d, 0x65, 0x2c, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0xe9, 0x01, 0x0a, 0x22, 0x47, - 0x65, 0x74, 0x56, 0x75, 0x6c, 0x6e, 0x65, 0x72, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x4f, - 0x63, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, - 0x79, 0x12, 0x3a, 0x2e, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, 0x76, 0x31, 0x62, 0x65, - 0x74, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x56, 0x75, 0x6c, 0x6e, 0x65, 0x72, 0x61, 0x62, 0x69, - 0x6c, 0x69, 0x74, 0x79, 0x4f, 0x63, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x53, - 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x30, 0x2e, - 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, - 0x56, 0x75, 0x6c, 0x6e, 0x65, 0x72, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x4f, 0x63, 0x63, - 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x22, - 0x55, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3f, 0x12, 0x3d, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, - 0x31, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, - 0x74, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x6f, 0x63, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x65, - 0x73, 0x3a, 0x76, 0x75, 0x6c, 0x6e, 0x65, 0x72, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x53, - 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0xda, 0x41, 0x0d, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x2c, - 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x42, 0x57, 0x0a, 0x12, 0x69, 0x6f, 0x2e, 0x67, 0x72, 0x61, - 0x66, 0x65, 0x61, 0x73, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x50, 0x01, 0x5a, 0x39, - 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x72, 0x61, 0x66, 0x65, - 0x61, 0x73, 0x2f, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, - 0x5f, 0x67, 0x6f, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0xa2, 0x02, 0x03, 0x47, 0x52, 0x41, 0x62, - 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x65, 0x22, 0x48, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2a, 0x32, 0x22, 0x2f, 0x76, 0x31, 0x62, 0x65, + 0x74, 0x61, 0x31, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, + 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6e, 0x6f, 0x74, 0x65, 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x04, 0x6e, + 0x6f, 0x74, 0x65, 0xda, 0x41, 0x15, 0x6e, 0x61, 0x6d, 0x65, 0x2c, 0x6e, 0x6f, 0x74, 0x65, 0x2c, + 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x12, 0xb6, 0x01, 0x0a, 0x13, + 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x6f, 0x74, 0x65, 0x4f, 0x63, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, + 0x63, 0x65, 0x73, 0x12, 0x2b, 0x2e, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, 0x76, 0x31, + 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x6f, 0x74, 0x65, 0x4f, 0x63, + 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x2c, 0x2e, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, + 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x6f, 0x74, 0x65, 0x4f, 0x63, 0x63, 0x75, 0x72, + 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x44, + 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x30, 0x12, 0x2e, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, + 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, + 0x2a, 0x2f, 0x6e, 0x6f, 0x74, 0x65, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x6f, 0x63, 0x63, 0x75, 0x72, + 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0xda, 0x41, 0x0b, 0x6e, 0x61, 0x6d, 0x65, 0x2c, 0x66, 0x69, + 0x6c, 0x74, 0x65, 0x72, 0x12, 0xe9, 0x01, 0x0a, 0x22, 0x47, 0x65, 0x74, 0x56, 0x75, 0x6c, 0x6e, + 0x65, 0x72, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x4f, 0x63, 0x63, 0x75, 0x72, 0x72, 0x65, + 0x6e, 0x63, 0x65, 0x73, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x12, 0x3a, 0x2e, 0x67, 0x72, + 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x47, 0x65, + 0x74, 0x56, 0x75, 0x6c, 0x6e, 0x65, 0x72, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x4f, 0x63, + 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x30, 0x2e, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, + 0x73, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x56, 0x75, 0x6c, 0x6e, 0x65, 0x72, + 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x4f, 0x63, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, + 0x65, 0x73, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x22, 0x55, 0x82, 0xd3, 0xe4, 0x93, 0x02, + 0x3f, 0x12, 0x3d, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x7b, 0x70, 0x61, 0x72, + 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, + 0x6f, 0x63, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x3a, 0x76, 0x75, 0x6c, 0x6e, + 0x65, 0x72, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, + 0xda, 0x41, 0x0d, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x2c, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, + 0x42, 0x57, 0x0a, 0x12, 0x69, 0x6f, 0x2e, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, 0x76, + 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x50, 0x01, 0x5a, 0x39, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, + 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x2f, 0x67, 0x72, 0x61, + 0x66, 0x65, 0x61, 0x73, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, + 0x61, 0x31, 0x2f, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x5f, 0x67, 0x6f, 0x5f, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0xa2, 0x02, 0x03, 0x47, 0x52, 0x41, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x33, } var ( @@ -2602,7 +2762,7 @@ var file_grafeas_proto_goTypes = []interface{}{ nil, // 24: grafeas.v1beta1.BatchCreateNotesRequest.NotesEntry (*VulnerabilityOccurrencesSummary_FixableTotalByDigest)(nil), // 25: grafeas.v1beta1.VulnerabilityOccurrencesSummary.FixableTotalByDigest (common_go_proto.NoteKind)(0), // 26: grafeas.v1beta1.NoteKind - (*timestamppb.Timestamp)(nil), // 27: google.protobuf.Timestamp + (*timestamp.Timestamp)(nil), // 27: google.protobuf.Timestamp (*vulnerability_go_proto.Details)(nil), // 28: grafeas.v1beta1.vulnerability.Details (*build_go_proto.Details)(nil), // 29: grafeas.v1beta1.build.Details (*image_go_proto.Details)(nil), // 30: grafeas.v1beta1.image.Details @@ -2611,22 +2771,30 @@ var file_grafeas_proto_goTypes = []interface{}{ (*discovery_go_proto.Details)(nil), // 33: grafeas.v1beta1.discovery.Details (*attestation_go_proto.Details)(nil), // 34: grafeas.v1beta1.attestation.Details (*intoto_go_proto.Details)(nil), // 35: grafeas.v1beta1.intoto.Details - (*git_go_proto.Details)(nil), // 36: grafeas.v1beta1.git.Details - (*common_go_proto.ProducerSignature)(nil), // 37: grafeas.v1beta1.ProducerSignature - (*provenance_go_proto.Hash)(nil), // 38: grafeas.v1beta1.provenance.Hash - (*common_go_proto.RelatedUrl)(nil), // 39: grafeas.v1beta1.RelatedUrl - (*vulnerability_go_proto.Vulnerability)(nil), // 40: grafeas.v1beta1.vulnerability.Vulnerability - (*build_go_proto.Build)(nil), // 41: grafeas.v1beta1.build.Build - (*image_go_proto.Basis)(nil), // 42: grafeas.v1beta1.image.Basis - (*package_go_proto.Package)(nil), // 43: grafeas.v1beta1.package.Package - (*deployment_go_proto.Deployable)(nil), // 44: grafeas.v1beta1.deployment.Deployable - (*discovery_go_proto.Discovery)(nil), // 45: grafeas.v1beta1.discovery.Discovery - (*attestation_go_proto.Authority)(nil), // 46: grafeas.v1beta1.attestation.Authority - (*intoto_go_proto.InToto)(nil), // 47: grafeas.v1beta1.intoto.InToto - (*git_go_proto.Repository)(nil), // 48: grafeas.v1beta1.git.Repository - (*fieldmaskpb.FieldMask)(nil), // 49: google.protobuf.FieldMask - (vulnerability_go_proto.Severity)(0), // 50: grafeas.v1beta1.vulnerability.Severity - (*emptypb.Empty)(nil), // 51: google.protobuf.Empty + (*spdx_go_proto.DocumentOccurrence)(nil), // 36: grafeas.v1beta1.spdx.DocumentOccurrence + (*spdx_go_proto.PackageInfoOccurrence)(nil), // 37: grafeas.v1beta1.spdx.PackageInfoOccurrence + (*spdx_go_proto.FileOccurrence)(nil), // 38: grafeas.v1beta1.spdx.FileOccurrence + (*spdx_go_proto.RelationshipOccurrence)(nil), // 39: grafeas.v1beta1.spdx.RelationshipOccurrence + (*git_go_proto.Details)(nil), // 40: grafeas.v1beta1.git.Details + (*common_go_proto.ProducerSignature)(nil), // 41: grafeas.v1beta1.ProducerSignature + (*provenance_go_proto.Hash)(nil), // 42: grafeas.v1beta1.provenance.Hash + (*common_go_proto.RelatedUrl)(nil), // 43: grafeas.v1beta1.RelatedUrl + (*vulnerability_go_proto.Vulnerability)(nil), // 44: grafeas.v1beta1.vulnerability.Vulnerability + (*build_go_proto.Build)(nil), // 45: grafeas.v1beta1.build.Build + (*image_go_proto.Basis)(nil), // 46: grafeas.v1beta1.image.Basis + (*package_go_proto.Package)(nil), // 47: grafeas.v1beta1.package.Package + (*deployment_go_proto.Deployable)(nil), // 48: grafeas.v1beta1.deployment.Deployable + (*discovery_go_proto.Discovery)(nil), // 49: grafeas.v1beta1.discovery.Discovery + (*attestation_go_proto.Authority)(nil), // 50: grafeas.v1beta1.attestation.Authority + (*intoto_go_proto.InToto)(nil), // 51: grafeas.v1beta1.intoto.InToto + (*spdx_go_proto.DocumentNote)(nil), // 52: grafeas.v1beta1.spdx.DocumentNote + (*spdx_go_proto.PackageInfoNote)(nil), // 53: grafeas.v1beta1.spdx.PackageInfoNote + (*spdx_go_proto.FileNote)(nil), // 54: grafeas.v1beta1.spdx.FileNote + (*spdx_go_proto.RelationshipNote)(nil), // 55: grafeas.v1beta1.spdx.RelationshipNote + (*git_go_proto.Repository)(nil), // 56: grafeas.v1beta1.git.Repository + (*field_mask.FieldMask)(nil), // 57: google.protobuf.FieldMask + (vulnerability_go_proto.Severity)(0), // 58: grafeas.v1beta1.vulnerability.Severity + (*empty.Empty)(nil), // 59: google.protobuf.Empty } var file_grafeas_proto_depIdxs = []int32{ 1, // 0: grafeas.v1beta1.Occurrence.resource:type_name -> grafeas.v1beta1.Resource @@ -2641,76 +2809,84 @@ var file_grafeas_proto_depIdxs = []int32{ 33, // 9: grafeas.v1beta1.Occurrence.discovered:type_name -> grafeas.v1beta1.discovery.Details 34, // 10: grafeas.v1beta1.Occurrence.attestation:type_name -> grafeas.v1beta1.attestation.Details 35, // 11: grafeas.v1beta1.Occurrence.intoto:type_name -> grafeas.v1beta1.intoto.Details - 36, // 12: grafeas.v1beta1.Occurrence.git:type_name -> grafeas.v1beta1.git.Details - 37, // 13: grafeas.v1beta1.Occurrence.signature:type_name -> grafeas.v1beta1.ProducerSignature - 38, // 14: grafeas.v1beta1.Resource.content_hash:type_name -> grafeas.v1beta1.provenance.Hash - 26, // 15: grafeas.v1beta1.Note.kind:type_name -> grafeas.v1beta1.NoteKind - 39, // 16: grafeas.v1beta1.Note.related_url:type_name -> grafeas.v1beta1.RelatedUrl - 27, // 17: grafeas.v1beta1.Note.expiration_time:type_name -> google.protobuf.Timestamp - 27, // 18: grafeas.v1beta1.Note.create_time:type_name -> google.protobuf.Timestamp - 27, // 19: grafeas.v1beta1.Note.update_time:type_name -> google.protobuf.Timestamp - 40, // 20: grafeas.v1beta1.Note.vulnerability:type_name -> grafeas.v1beta1.vulnerability.Vulnerability - 41, // 21: grafeas.v1beta1.Note.build:type_name -> grafeas.v1beta1.build.Build - 42, // 22: grafeas.v1beta1.Note.base_image:type_name -> grafeas.v1beta1.image.Basis - 43, // 23: grafeas.v1beta1.Note.package:type_name -> grafeas.v1beta1.package.Package - 44, // 24: grafeas.v1beta1.Note.deployable:type_name -> grafeas.v1beta1.deployment.Deployable - 45, // 25: grafeas.v1beta1.Note.discovery:type_name -> grafeas.v1beta1.discovery.Discovery - 46, // 26: grafeas.v1beta1.Note.attestation_authority:type_name -> grafeas.v1beta1.attestation.Authority - 47, // 27: grafeas.v1beta1.Note.intoto:type_name -> grafeas.v1beta1.intoto.InToto - 48, // 28: grafeas.v1beta1.Note.git_repository:type_name -> grafeas.v1beta1.git.Repository - 37, // 29: grafeas.v1beta1.Note.signature:type_name -> grafeas.v1beta1.ProducerSignature - 0, // 30: grafeas.v1beta1.ListOccurrencesResponse.occurrences:type_name -> grafeas.v1beta1.Occurrence - 0, // 31: grafeas.v1beta1.CreateOccurrenceRequest.occurrence:type_name -> grafeas.v1beta1.Occurrence - 0, // 32: grafeas.v1beta1.UpdateOccurrenceRequest.occurrence:type_name -> grafeas.v1beta1.Occurrence - 49, // 33: grafeas.v1beta1.UpdateOccurrenceRequest.update_mask:type_name -> google.protobuf.FieldMask - 2, // 34: grafeas.v1beta1.ListNotesResponse.notes:type_name -> grafeas.v1beta1.Note - 2, // 35: grafeas.v1beta1.CreateNoteRequest.note:type_name -> grafeas.v1beta1.Note - 2, // 36: grafeas.v1beta1.UpdateNoteRequest.note:type_name -> grafeas.v1beta1.Note - 49, // 37: grafeas.v1beta1.UpdateNoteRequest.update_mask:type_name -> google.protobuf.FieldMask - 0, // 38: grafeas.v1beta1.ListNoteOccurrencesResponse.occurrences:type_name -> grafeas.v1beta1.Occurrence - 24, // 39: grafeas.v1beta1.BatchCreateNotesRequest.notes:type_name -> grafeas.v1beta1.BatchCreateNotesRequest.NotesEntry - 2, // 40: grafeas.v1beta1.BatchCreateNotesResponse.notes:type_name -> grafeas.v1beta1.Note - 0, // 41: grafeas.v1beta1.BatchCreateOccurrencesRequest.occurrences:type_name -> grafeas.v1beta1.Occurrence - 0, // 42: grafeas.v1beta1.BatchCreateOccurrencesResponse.occurrences:type_name -> grafeas.v1beta1.Occurrence - 25, // 43: grafeas.v1beta1.VulnerabilityOccurrencesSummary.counts:type_name -> grafeas.v1beta1.VulnerabilityOccurrencesSummary.FixableTotalByDigest - 2, // 44: grafeas.v1beta1.BatchCreateNotesRequest.NotesEntry.value:type_name -> grafeas.v1beta1.Note - 1, // 45: grafeas.v1beta1.VulnerabilityOccurrencesSummary.FixableTotalByDigest.resource:type_name -> grafeas.v1beta1.Resource - 50, // 46: grafeas.v1beta1.VulnerabilityOccurrencesSummary.FixableTotalByDigest.severity:type_name -> grafeas.v1beta1.vulnerability.Severity - 3, // 47: grafeas.v1beta1.GrafeasV1Beta1.GetOccurrence:input_type -> grafeas.v1beta1.GetOccurrenceRequest - 4, // 48: grafeas.v1beta1.GrafeasV1Beta1.ListOccurrences:input_type -> grafeas.v1beta1.ListOccurrencesRequest - 6, // 49: grafeas.v1beta1.GrafeasV1Beta1.DeleteOccurrence:input_type -> grafeas.v1beta1.DeleteOccurrenceRequest - 7, // 50: grafeas.v1beta1.GrafeasV1Beta1.CreateOccurrence:input_type -> grafeas.v1beta1.CreateOccurrenceRequest - 20, // 51: grafeas.v1beta1.GrafeasV1Beta1.BatchCreateOccurrences:input_type -> grafeas.v1beta1.BatchCreateOccurrencesRequest - 8, // 52: grafeas.v1beta1.GrafeasV1Beta1.UpdateOccurrence:input_type -> grafeas.v1beta1.UpdateOccurrenceRequest - 10, // 53: grafeas.v1beta1.GrafeasV1Beta1.GetOccurrenceNote:input_type -> grafeas.v1beta1.GetOccurrenceNoteRequest - 9, // 54: grafeas.v1beta1.GrafeasV1Beta1.GetNote:input_type -> grafeas.v1beta1.GetNoteRequest - 11, // 55: grafeas.v1beta1.GrafeasV1Beta1.ListNotes:input_type -> grafeas.v1beta1.ListNotesRequest - 13, // 56: grafeas.v1beta1.GrafeasV1Beta1.DeleteNote:input_type -> grafeas.v1beta1.DeleteNoteRequest - 14, // 57: grafeas.v1beta1.GrafeasV1Beta1.CreateNote:input_type -> grafeas.v1beta1.CreateNoteRequest - 18, // 58: grafeas.v1beta1.GrafeasV1Beta1.BatchCreateNotes:input_type -> grafeas.v1beta1.BatchCreateNotesRequest - 15, // 59: grafeas.v1beta1.GrafeasV1Beta1.UpdateNote:input_type -> grafeas.v1beta1.UpdateNoteRequest - 16, // 60: grafeas.v1beta1.GrafeasV1Beta1.ListNoteOccurrences:input_type -> grafeas.v1beta1.ListNoteOccurrencesRequest - 22, // 61: grafeas.v1beta1.GrafeasV1Beta1.GetVulnerabilityOccurrencesSummary:input_type -> grafeas.v1beta1.GetVulnerabilityOccurrencesSummaryRequest - 0, // 62: grafeas.v1beta1.GrafeasV1Beta1.GetOccurrence:output_type -> grafeas.v1beta1.Occurrence - 5, // 63: grafeas.v1beta1.GrafeasV1Beta1.ListOccurrences:output_type -> grafeas.v1beta1.ListOccurrencesResponse - 51, // 64: grafeas.v1beta1.GrafeasV1Beta1.DeleteOccurrence:output_type -> google.protobuf.Empty - 0, // 65: grafeas.v1beta1.GrafeasV1Beta1.CreateOccurrence:output_type -> grafeas.v1beta1.Occurrence - 21, // 66: grafeas.v1beta1.GrafeasV1Beta1.BatchCreateOccurrences:output_type -> grafeas.v1beta1.BatchCreateOccurrencesResponse - 0, // 67: grafeas.v1beta1.GrafeasV1Beta1.UpdateOccurrence:output_type -> grafeas.v1beta1.Occurrence - 2, // 68: grafeas.v1beta1.GrafeasV1Beta1.GetOccurrenceNote:output_type -> grafeas.v1beta1.Note - 2, // 69: grafeas.v1beta1.GrafeasV1Beta1.GetNote:output_type -> grafeas.v1beta1.Note - 12, // 70: grafeas.v1beta1.GrafeasV1Beta1.ListNotes:output_type -> grafeas.v1beta1.ListNotesResponse - 51, // 71: grafeas.v1beta1.GrafeasV1Beta1.DeleteNote:output_type -> google.protobuf.Empty - 2, // 72: grafeas.v1beta1.GrafeasV1Beta1.CreateNote:output_type -> grafeas.v1beta1.Note - 19, // 73: grafeas.v1beta1.GrafeasV1Beta1.BatchCreateNotes:output_type -> grafeas.v1beta1.BatchCreateNotesResponse - 2, // 74: grafeas.v1beta1.GrafeasV1Beta1.UpdateNote:output_type -> grafeas.v1beta1.Note - 17, // 75: grafeas.v1beta1.GrafeasV1Beta1.ListNoteOccurrences:output_type -> grafeas.v1beta1.ListNoteOccurrencesResponse - 23, // 76: grafeas.v1beta1.GrafeasV1Beta1.GetVulnerabilityOccurrencesSummary:output_type -> grafeas.v1beta1.VulnerabilityOccurrencesSummary - 62, // [62:77] is the sub-list for method output_type - 47, // [47:62] is the sub-list for method input_type - 47, // [47:47] is the sub-list for extension type_name - 47, // [47:47] is the sub-list for extension extendee - 0, // [0:47] is the sub-list for field type_name + 36, // 12: grafeas.v1beta1.Occurrence.sbom:type_name -> grafeas.v1beta1.spdx.DocumentOccurrence + 37, // 13: grafeas.v1beta1.Occurrence.spdx_package:type_name -> grafeas.v1beta1.spdx.PackageInfoOccurrence + 38, // 14: grafeas.v1beta1.Occurrence.spdx_file:type_name -> grafeas.v1beta1.spdx.FileOccurrence + 39, // 15: grafeas.v1beta1.Occurrence.spdx_relationship:type_name -> grafeas.v1beta1.spdx.RelationshipOccurrence + 40, // 16: grafeas.v1beta1.Occurrence.git:type_name -> grafeas.v1beta1.git.Details + 41, // 17: grafeas.v1beta1.Occurrence.signature:type_name -> grafeas.v1beta1.ProducerSignature + 42, // 18: grafeas.v1beta1.Resource.content_hash:type_name -> grafeas.v1beta1.provenance.Hash + 26, // 19: grafeas.v1beta1.Note.kind:type_name -> grafeas.v1beta1.NoteKind + 43, // 20: grafeas.v1beta1.Note.related_url:type_name -> grafeas.v1beta1.RelatedUrl + 27, // 21: grafeas.v1beta1.Note.expiration_time:type_name -> google.protobuf.Timestamp + 27, // 22: grafeas.v1beta1.Note.create_time:type_name -> google.protobuf.Timestamp + 27, // 23: grafeas.v1beta1.Note.update_time:type_name -> google.protobuf.Timestamp + 44, // 24: grafeas.v1beta1.Note.vulnerability:type_name -> grafeas.v1beta1.vulnerability.Vulnerability + 45, // 25: grafeas.v1beta1.Note.build:type_name -> grafeas.v1beta1.build.Build + 46, // 26: grafeas.v1beta1.Note.base_image:type_name -> grafeas.v1beta1.image.Basis + 47, // 27: grafeas.v1beta1.Note.package:type_name -> grafeas.v1beta1.package.Package + 48, // 28: grafeas.v1beta1.Note.deployable:type_name -> grafeas.v1beta1.deployment.Deployable + 49, // 29: grafeas.v1beta1.Note.discovery:type_name -> grafeas.v1beta1.discovery.Discovery + 50, // 30: grafeas.v1beta1.Note.attestation_authority:type_name -> grafeas.v1beta1.attestation.Authority + 51, // 31: grafeas.v1beta1.Note.intoto:type_name -> grafeas.v1beta1.intoto.InToto + 52, // 32: grafeas.v1beta1.Note.sbom:type_name -> grafeas.v1beta1.spdx.DocumentNote + 53, // 33: grafeas.v1beta1.Note.spdx_package:type_name -> grafeas.v1beta1.spdx.PackageInfoNote + 54, // 34: grafeas.v1beta1.Note.spdx_file:type_name -> grafeas.v1beta1.spdx.FileNote + 55, // 35: grafeas.v1beta1.Note.spdx_relationship:type_name -> grafeas.v1beta1.spdx.RelationshipNote + 56, // 36: grafeas.v1beta1.Note.git_repository:type_name -> grafeas.v1beta1.git.Repository + 41, // 37: grafeas.v1beta1.Note.signature:type_name -> grafeas.v1beta1.ProducerSignature + 0, // 38: grafeas.v1beta1.ListOccurrencesResponse.occurrences:type_name -> grafeas.v1beta1.Occurrence + 0, // 39: grafeas.v1beta1.CreateOccurrenceRequest.occurrence:type_name -> grafeas.v1beta1.Occurrence + 0, // 40: grafeas.v1beta1.UpdateOccurrenceRequest.occurrence:type_name -> grafeas.v1beta1.Occurrence + 57, // 41: grafeas.v1beta1.UpdateOccurrenceRequest.update_mask:type_name -> google.protobuf.FieldMask + 2, // 42: grafeas.v1beta1.ListNotesResponse.notes:type_name -> grafeas.v1beta1.Note + 2, // 43: grafeas.v1beta1.CreateNoteRequest.note:type_name -> grafeas.v1beta1.Note + 2, // 44: grafeas.v1beta1.UpdateNoteRequest.note:type_name -> grafeas.v1beta1.Note + 57, // 45: grafeas.v1beta1.UpdateNoteRequest.update_mask:type_name -> google.protobuf.FieldMask + 0, // 46: grafeas.v1beta1.ListNoteOccurrencesResponse.occurrences:type_name -> grafeas.v1beta1.Occurrence + 24, // 47: grafeas.v1beta1.BatchCreateNotesRequest.notes:type_name -> grafeas.v1beta1.BatchCreateNotesRequest.NotesEntry + 2, // 48: grafeas.v1beta1.BatchCreateNotesResponse.notes:type_name -> grafeas.v1beta1.Note + 0, // 49: grafeas.v1beta1.BatchCreateOccurrencesRequest.occurrences:type_name -> grafeas.v1beta1.Occurrence + 0, // 50: grafeas.v1beta1.BatchCreateOccurrencesResponse.occurrences:type_name -> grafeas.v1beta1.Occurrence + 25, // 51: grafeas.v1beta1.VulnerabilityOccurrencesSummary.counts:type_name -> grafeas.v1beta1.VulnerabilityOccurrencesSummary.FixableTotalByDigest + 2, // 52: grafeas.v1beta1.BatchCreateNotesRequest.NotesEntry.value:type_name -> grafeas.v1beta1.Note + 1, // 53: grafeas.v1beta1.VulnerabilityOccurrencesSummary.FixableTotalByDigest.resource:type_name -> grafeas.v1beta1.Resource + 58, // 54: grafeas.v1beta1.VulnerabilityOccurrencesSummary.FixableTotalByDigest.severity:type_name -> grafeas.v1beta1.vulnerability.Severity + 3, // 55: grafeas.v1beta1.GrafeasV1Beta1.GetOccurrence:input_type -> grafeas.v1beta1.GetOccurrenceRequest + 4, // 56: grafeas.v1beta1.GrafeasV1Beta1.ListOccurrences:input_type -> grafeas.v1beta1.ListOccurrencesRequest + 6, // 57: grafeas.v1beta1.GrafeasV1Beta1.DeleteOccurrence:input_type -> grafeas.v1beta1.DeleteOccurrenceRequest + 7, // 58: grafeas.v1beta1.GrafeasV1Beta1.CreateOccurrence:input_type -> grafeas.v1beta1.CreateOccurrenceRequest + 20, // 59: grafeas.v1beta1.GrafeasV1Beta1.BatchCreateOccurrences:input_type -> grafeas.v1beta1.BatchCreateOccurrencesRequest + 8, // 60: grafeas.v1beta1.GrafeasV1Beta1.UpdateOccurrence:input_type -> grafeas.v1beta1.UpdateOccurrenceRequest + 10, // 61: grafeas.v1beta1.GrafeasV1Beta1.GetOccurrenceNote:input_type -> grafeas.v1beta1.GetOccurrenceNoteRequest + 9, // 62: grafeas.v1beta1.GrafeasV1Beta1.GetNote:input_type -> grafeas.v1beta1.GetNoteRequest + 11, // 63: grafeas.v1beta1.GrafeasV1Beta1.ListNotes:input_type -> grafeas.v1beta1.ListNotesRequest + 13, // 64: grafeas.v1beta1.GrafeasV1Beta1.DeleteNote:input_type -> grafeas.v1beta1.DeleteNoteRequest + 14, // 65: grafeas.v1beta1.GrafeasV1Beta1.CreateNote:input_type -> grafeas.v1beta1.CreateNoteRequest + 18, // 66: grafeas.v1beta1.GrafeasV1Beta1.BatchCreateNotes:input_type -> grafeas.v1beta1.BatchCreateNotesRequest + 15, // 67: grafeas.v1beta1.GrafeasV1Beta1.UpdateNote:input_type -> grafeas.v1beta1.UpdateNoteRequest + 16, // 68: grafeas.v1beta1.GrafeasV1Beta1.ListNoteOccurrences:input_type -> grafeas.v1beta1.ListNoteOccurrencesRequest + 22, // 69: grafeas.v1beta1.GrafeasV1Beta1.GetVulnerabilityOccurrencesSummary:input_type -> grafeas.v1beta1.GetVulnerabilityOccurrencesSummaryRequest + 0, // 70: grafeas.v1beta1.GrafeasV1Beta1.GetOccurrence:output_type -> grafeas.v1beta1.Occurrence + 5, // 71: grafeas.v1beta1.GrafeasV1Beta1.ListOccurrences:output_type -> grafeas.v1beta1.ListOccurrencesResponse + 59, // 72: grafeas.v1beta1.GrafeasV1Beta1.DeleteOccurrence:output_type -> google.protobuf.Empty + 0, // 73: grafeas.v1beta1.GrafeasV1Beta1.CreateOccurrence:output_type -> grafeas.v1beta1.Occurrence + 21, // 74: grafeas.v1beta1.GrafeasV1Beta1.BatchCreateOccurrences:output_type -> grafeas.v1beta1.BatchCreateOccurrencesResponse + 0, // 75: grafeas.v1beta1.GrafeasV1Beta1.UpdateOccurrence:output_type -> grafeas.v1beta1.Occurrence + 2, // 76: grafeas.v1beta1.GrafeasV1Beta1.GetOccurrenceNote:output_type -> grafeas.v1beta1.Note + 2, // 77: grafeas.v1beta1.GrafeasV1Beta1.GetNote:output_type -> grafeas.v1beta1.Note + 12, // 78: grafeas.v1beta1.GrafeasV1Beta1.ListNotes:output_type -> grafeas.v1beta1.ListNotesResponse + 59, // 79: grafeas.v1beta1.GrafeasV1Beta1.DeleteNote:output_type -> google.protobuf.Empty + 2, // 80: grafeas.v1beta1.GrafeasV1Beta1.CreateNote:output_type -> grafeas.v1beta1.Note + 19, // 81: grafeas.v1beta1.GrafeasV1Beta1.BatchCreateNotes:output_type -> grafeas.v1beta1.BatchCreateNotesResponse + 2, // 82: grafeas.v1beta1.GrafeasV1Beta1.UpdateNote:output_type -> grafeas.v1beta1.Note + 17, // 83: grafeas.v1beta1.GrafeasV1Beta1.ListNoteOccurrences:output_type -> grafeas.v1beta1.ListNoteOccurrencesResponse + 23, // 84: grafeas.v1beta1.GrafeasV1Beta1.GetVulnerabilityOccurrencesSummary:output_type -> grafeas.v1beta1.VulnerabilityOccurrencesSummary + 70, // [70:85] is the sub-list for method output_type + 55, // [55:70] is the sub-list for method input_type + 55, // [55:55] is the sub-list for extension type_name + 55, // [55:55] is the sub-list for extension extendee + 0, // [0:55] is the sub-list for field type_name } func init() { file_grafeas_proto_init() } @@ -3029,6 +3205,10 @@ func file_grafeas_proto_init() { (*Occurrence_Discovered)(nil), (*Occurrence_Attestation)(nil), (*Occurrence_Intoto)(nil), + (*Occurrence_Sbom)(nil), + (*Occurrence_SpdxPackage)(nil), + (*Occurrence_SpdxFile)(nil), + (*Occurrence_SpdxRelationship)(nil), (*Occurrence_Git)(nil), } file_grafeas_proto_msgTypes[2].OneofWrappers = []interface{}{ @@ -3040,6 +3220,10 @@ func file_grafeas_proto_init() { (*Note_Discovery)(nil), (*Note_AttestationAuthority)(nil), (*Note_Intoto)(nil), + (*Note_Sbom)(nil), + (*Note_SpdxPackage)(nil), + (*Note_SpdxFile)(nil), + (*Note_SpdxRelationship)(nil), (*Note_GitRepository)(nil), } type x struct{} diff --git a/proto/v1beta1/grafeas_go_proto/grafeas_grpc.pb.go b/proto/v1beta1/grafeas_go_proto/grafeas_grpc.pb.go index 87a86151..feb45b9c 100644 --- a/proto/v1beta1/grafeas_go_proto/grafeas_grpc.pb.go +++ b/proto/v1beta1/grafeas_go_proto/grafeas_grpc.pb.go @@ -4,10 +4,10 @@ package grafeas_go_proto import ( context "context" + empty "github.com/golang/protobuf/ptypes/empty" 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 @@ -25,7 +25,7 @@ type GrafeasV1Beta1Client interface { // Deletes the specified occurrence. For example, use this method to delete an // occurrence when the occurrence is no longer applicable for the given // resource. - DeleteOccurrence(ctx context.Context, in *DeleteOccurrenceRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) + DeleteOccurrence(ctx context.Context, in *DeleteOccurrenceRequest, opts ...grpc.CallOption) (*empty.Empty, error) // Creates a new occurrence. CreateOccurrence(ctx context.Context, in *CreateOccurrenceRequest, opts ...grpc.CallOption) (*Occurrence, error) // Creates new occurrences in batch. @@ -40,7 +40,7 @@ type GrafeasV1Beta1Client interface { // Lists notes for the specified project. ListNotes(ctx context.Context, in *ListNotesRequest, opts ...grpc.CallOption) (*ListNotesResponse, error) // Deletes the specified note. - DeleteNote(ctx context.Context, in *DeleteNoteRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) + DeleteNote(ctx context.Context, in *DeleteNoteRequest, opts ...grpc.CallOption) (*empty.Empty, error) // Creates a new note. CreateNote(ctx context.Context, in *CreateNoteRequest, opts ...grpc.CallOption) (*Note, error) // Creates new notes in batch. @@ -81,8 +81,8 @@ func (c *grafeasV1Beta1Client) ListOccurrences(ctx context.Context, in *ListOccu return out, nil } -func (c *grafeasV1Beta1Client) DeleteOccurrence(ctx context.Context, in *DeleteOccurrenceRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) { - out := new(emptypb.Empty) +func (c *grafeasV1Beta1Client) DeleteOccurrence(ctx context.Context, in *DeleteOccurrenceRequest, opts ...grpc.CallOption) (*empty.Empty, error) { + out := new(empty.Empty) err := c.cc.Invoke(ctx, "/grafeas.v1beta1.GrafeasV1Beta1/DeleteOccurrence", in, out, opts...) if err != nil { return nil, err @@ -144,8 +144,8 @@ func (c *grafeasV1Beta1Client) ListNotes(ctx context.Context, in *ListNotesReque return out, nil } -func (c *grafeasV1Beta1Client) DeleteNote(ctx context.Context, in *DeleteNoteRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) { - out := new(emptypb.Empty) +func (c *grafeasV1Beta1Client) DeleteNote(ctx context.Context, in *DeleteNoteRequest, opts ...grpc.CallOption) (*empty.Empty, error) { + out := new(empty.Empty) err := c.cc.Invoke(ctx, "/grafeas.v1beta1.GrafeasV1Beta1/DeleteNote", in, out, opts...) if err != nil { return nil, err @@ -209,7 +209,7 @@ type GrafeasV1Beta1Server interface { // Deletes the specified occurrence. For example, use this method to delete an // occurrence when the occurrence is no longer applicable for the given // resource. - DeleteOccurrence(context.Context, *DeleteOccurrenceRequest) (*emptypb.Empty, error) + DeleteOccurrence(context.Context, *DeleteOccurrenceRequest) (*empty.Empty, error) // Creates a new occurrence. CreateOccurrence(context.Context, *CreateOccurrenceRequest) (*Occurrence, error) // Creates new occurrences in batch. @@ -224,7 +224,7 @@ type GrafeasV1Beta1Server interface { // Lists notes for the specified project. ListNotes(context.Context, *ListNotesRequest) (*ListNotesResponse, error) // Deletes the specified note. - DeleteNote(context.Context, *DeleteNoteRequest) (*emptypb.Empty, error) + DeleteNote(context.Context, *DeleteNoteRequest) (*empty.Empty, error) // Creates a new note. CreateNote(context.Context, *CreateNoteRequest) (*Note, error) // Creates new notes in batch. @@ -249,7 +249,7 @@ func (UnimplementedGrafeasV1Beta1Server) GetOccurrence(context.Context, *GetOccu func (UnimplementedGrafeasV1Beta1Server) ListOccurrences(context.Context, *ListOccurrencesRequest) (*ListOccurrencesResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method ListOccurrences not implemented") } -func (UnimplementedGrafeasV1Beta1Server) DeleteOccurrence(context.Context, *DeleteOccurrenceRequest) (*emptypb.Empty, error) { +func (UnimplementedGrafeasV1Beta1Server) DeleteOccurrence(context.Context, *DeleteOccurrenceRequest) (*empty.Empty, error) { return nil, status.Errorf(codes.Unimplemented, "method DeleteOccurrence not implemented") } func (UnimplementedGrafeasV1Beta1Server) CreateOccurrence(context.Context, *CreateOccurrenceRequest) (*Occurrence, error) { @@ -270,7 +270,7 @@ func (UnimplementedGrafeasV1Beta1Server) GetNote(context.Context, *GetNoteReques func (UnimplementedGrafeasV1Beta1Server) ListNotes(context.Context, *ListNotesRequest) (*ListNotesResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method ListNotes not implemented") } -func (UnimplementedGrafeasV1Beta1Server) DeleteNote(context.Context, *DeleteNoteRequest) (*emptypb.Empty, error) { +func (UnimplementedGrafeasV1Beta1Server) DeleteNote(context.Context, *DeleteNoteRequest) (*empty.Empty, error) { return nil, status.Errorf(codes.Unimplemented, "method DeleteNote not implemented") } func (UnimplementedGrafeasV1Beta1Server) CreateNote(context.Context, *CreateNoteRequest) (*Note, error) { diff --git a/proto/v1beta1/image_go_proto/image.pb.go b/proto/v1beta1/image_go_proto/image.pb.go index 20cae3cb..3c481d35 100644 --- a/proto/v1beta1/image_go_proto/image.pb.go +++ b/proto/v1beta1/image_go_proto/image.pb.go @@ -15,7 +15,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: // protoc-gen-go v1.25.0 -// protoc v3.14.0 +// protoc v3.13.0 // source: image.proto package image_go_proto diff --git a/proto/v1beta1/intoto_go_proto/intoto.pb.go b/proto/v1beta1/intoto_go_proto/intoto.pb.go index ac413613..e97c3aa5 100644 --- a/proto/v1beta1/intoto_go_proto/intoto.pb.go +++ b/proto/v1beta1/intoto_go_proto/intoto.pb.go @@ -15,7 +15,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: // protoc-gen-go v1.25.0 -// protoc v3.14.0 +// protoc v3.13.0 // source: intoto.proto package intoto_go_proto diff --git a/proto/v1beta1/package.proto b/proto/v1beta1/package.proto index 19282583..dd4c38e5 100644 --- a/proto/v1beta1/package.proto +++ b/proto/v1beta1/package.proto @@ -115,6 +115,14 @@ message Version { // The iteration of the package build from the above version. string revision = 3; + // Whether this version is specifying part of an inclusive range. Grafeas + // does not have the capability to specify version ranges; instead we have + // fields that specify start version and end versions. At times this is + // insufficient - we also need to specify whether the version is included in + // the range or is excluded from the range. This boolean is expected to be set + // to true when the version is included in a range. + bool inclusive = 6; + // Whether this is an ordinary package version or a sentinel MIN/MAX version. enum VersionKind { // Unknown. diff --git a/proto/v1beta1/package_go_proto/package.pb.go b/proto/v1beta1/package_go_proto/package.pb.go index ce2fc23d..0fc67b04 100644 --- a/proto/v1beta1/package_go_proto/package.pb.go +++ b/proto/v1beta1/package_go_proto/package.pb.go @@ -15,7 +15,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: // protoc-gen-go v1.25.0 -// protoc v3.14.0 +// protoc v3.13.0 // source: package.proto package package_go_proto @@ -564,6 +564,13 @@ type Version struct { Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` // The iteration of the package build from the above version. Revision string `protobuf:"bytes,3,opt,name=revision,proto3" json:"revision,omitempty"` + // Whether this version is specifying part of an inclusive range. Grafeas + // does not have the capability to specify version ranges; instead we have + // fields that specify start version and end versions. At times this is + // insufficient - we also need to specify whether the version is included in + // the range or is excluded from the range. This boolean is expected to be set + // to true when the version is included in a range. + Inclusive bool `protobuf:"varint,6,opt,name=inclusive,proto3" json:"inclusive,omitempty"` // Required. Distinguishes between sentinel MIN/MAX versions and normal // versions. Kind Version_VersionKind `protobuf:"varint,4,opt,name=kind,proto3,enum=grafeas.v1beta1.package.Version_VersionKind" json:"kind,omitempty"` @@ -622,6 +629,13 @@ func (x *Version) GetRevision() string { return "" } +func (x *Version) GetInclusive() bool { + if x != nil { + return x.Inclusive + } + return false +} + func (x *Version) GetKind() Version_VersionKind { if x != nil { return x.Kind @@ -741,40 +755,42 @@ var file_package_proto_rawDesc = []byte{ 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x2e, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x08, 0x6c, 0x6f, - 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xe4, 0x01, 0x0a, 0x07, 0x56, 0x65, 0x72, 0x73, 0x69, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x82, 0x02, 0x0a, 0x07, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, - 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x40, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2c, 0x2e, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, - 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, - 0x2e, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, - 0x4b, 0x69, 0x6e, 0x64, 0x52, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x22, 0x51, 0x0a, 0x0b, 0x56, 0x65, - 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x4b, 0x69, 0x6e, 0x64, 0x12, 0x1c, 0x0a, 0x18, 0x56, 0x45, 0x52, - 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, - 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x4e, 0x4f, 0x52, 0x4d, 0x41, - 0x4c, 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x4d, 0x49, 0x4e, 0x49, 0x4d, 0x55, 0x4d, 0x10, 0x02, - 0x12, 0x0b, 0x0a, 0x07, 0x4d, 0x41, 0x58, 0x49, 0x4d, 0x55, 0x4d, 0x10, 0x03, 0x22, 0x8b, 0x01, - 0x0a, 0x04, 0x48, 0x61, 0x73, 0x68, 0x12, 0x3a, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0e, 0x32, 0x26, 0x2e, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, 0x76, - 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x2e, 0x48, - 0x61, 0x73, 0x68, 0x2e, 0x48, 0x61, 0x73, 0x68, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, - 0x70, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x0c, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x31, 0x0a, 0x08, 0x48, 0x61, 0x73, 0x68, - 0x54, 0x79, 0x70, 0x65, 0x12, 0x19, 0x0a, 0x15, 0x48, 0x41, 0x53, 0x48, 0x5f, 0x54, 0x59, 0x50, - 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, - 0x0a, 0x0a, 0x06, 0x53, 0x48, 0x41, 0x32, 0x35, 0x36, 0x10, 0x01, 0x2a, 0x3e, 0x0a, 0x0c, 0x41, - 0x72, 0x63, 0x68, 0x69, 0x74, 0x65, 0x63, 0x74, 0x75, 0x72, 0x65, 0x12, 0x1c, 0x0a, 0x18, 0x41, - 0x52, 0x43, 0x48, 0x49, 0x54, 0x45, 0x43, 0x54, 0x55, 0x52, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, - 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x07, 0x0a, 0x03, 0x58, 0x38, 0x36, - 0x10, 0x01, 0x12, 0x07, 0x0a, 0x03, 0x58, 0x36, 0x34, 0x10, 0x02, 0x42, 0x5b, 0x0a, 0x16, 0x69, - 0x6f, 0x2e, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, - 0x31, 0x2e, 0x70, 0x6b, 0x67, 0x50, 0x01, 0x5a, 0x39, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, - 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x2f, 0x67, 0x72, 0x61, 0x66, - 0x65, 0x61, 0x73, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, - 0x31, 0x2f, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x5f, 0x67, 0x6f, 0x5f, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0xa2, 0x02, 0x03, 0x47, 0x52, 0x41, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1c, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x6c, + 0x75, 0x73, 0x69, 0x76, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x69, 0x6e, 0x63, + 0x6c, 0x75, 0x73, 0x69, 0x76, 0x65, 0x12, 0x40, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2c, 0x2e, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, 0x76, + 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x2e, 0x56, + 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x4b, 0x69, + 0x6e, 0x64, 0x52, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x22, 0x51, 0x0a, 0x0b, 0x56, 0x65, 0x72, 0x73, + 0x69, 0x6f, 0x6e, 0x4b, 0x69, 0x6e, 0x64, 0x12, 0x1c, 0x0a, 0x18, 0x56, 0x45, 0x52, 0x53, 0x49, + 0x4f, 0x4e, 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, + 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x4e, 0x4f, 0x52, 0x4d, 0x41, 0x4c, 0x10, + 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x4d, 0x49, 0x4e, 0x49, 0x4d, 0x55, 0x4d, 0x10, 0x02, 0x12, 0x0b, + 0x0a, 0x07, 0x4d, 0x41, 0x58, 0x49, 0x4d, 0x55, 0x4d, 0x10, 0x03, 0x22, 0x8b, 0x01, 0x0a, 0x04, + 0x48, 0x61, 0x73, 0x68, 0x12, 0x3a, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0e, 0x32, 0x26, 0x2e, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, 0x76, 0x31, 0x62, + 0x65, 0x74, 0x61, 0x31, 0x2e, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x2e, 0x48, 0x61, 0x73, + 0x68, 0x2e, 0x48, 0x61, 0x73, 0x68, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, + 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, + 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x31, 0x0a, 0x08, 0x48, 0x61, 0x73, 0x68, 0x54, 0x79, + 0x70, 0x65, 0x12, 0x19, 0x0a, 0x15, 0x48, 0x41, 0x53, 0x48, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, + 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0a, 0x0a, + 0x06, 0x53, 0x48, 0x41, 0x32, 0x35, 0x36, 0x10, 0x01, 0x2a, 0x3e, 0x0a, 0x0c, 0x41, 0x72, 0x63, + 0x68, 0x69, 0x74, 0x65, 0x63, 0x74, 0x75, 0x72, 0x65, 0x12, 0x1c, 0x0a, 0x18, 0x41, 0x52, 0x43, + 0x48, 0x49, 0x54, 0x45, 0x43, 0x54, 0x55, 0x52, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, + 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x07, 0x0a, 0x03, 0x58, 0x38, 0x36, 0x10, 0x01, + 0x12, 0x07, 0x0a, 0x03, 0x58, 0x36, 0x34, 0x10, 0x02, 0x42, 0x5b, 0x0a, 0x16, 0x69, 0x6f, 0x2e, + 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, + 0x70, 0x6b, 0x67, 0x50, 0x01, 0x5a, 0x39, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, + 0x6d, 0x2f, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x2f, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, + 0x73, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, + 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x5f, 0x67, 0x6f, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0xa2, 0x02, 0x03, 0x47, 0x52, 0x41, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( diff --git a/proto/v1beta1/project_go_proto/project.pb.go b/proto/v1beta1/project_go_proto/project.pb.go index a38b7db0..cff982ec 100644 --- a/proto/v1beta1/project_go_proto/project.pb.go +++ b/proto/v1beta1/project_go_proto/project.pb.go @@ -15,17 +15,17 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: // protoc-gen-go v1.25.0 -// protoc v3.14.0 +// protoc v3.13.0 // source: project.proto package project_go_proto import ( proto "github.com/golang/protobuf/proto" + empty "github.com/golang/protobuf/ptypes/empty" _ "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" ) @@ -463,7 +463,7 @@ var file_project_proto_goTypes = []interface{}{ (*DeleteProjectRequest)(nil), // 3: grafeas.v1beta1.project.DeleteProjectRequest (*ListProjectsResponse)(nil), // 4: grafeas.v1beta1.project.ListProjectsResponse (*Project)(nil), // 5: grafeas.v1beta1.project.Project - (*emptypb.Empty)(nil), // 6: google.protobuf.Empty + (*empty.Empty)(nil), // 6: google.protobuf.Empty } var file_project_proto_depIdxs = []int32{ 5, // 0: grafeas.v1beta1.project.CreateProjectRequest.project:type_name -> grafeas.v1beta1.project.Project diff --git a/proto/v1beta1/project_go_proto/project_grpc.pb.go b/proto/v1beta1/project_go_proto/project_grpc.pb.go index 92222064..b95d0fbf 100644 --- a/proto/v1beta1/project_go_proto/project_grpc.pb.go +++ b/proto/v1beta1/project_go_proto/project_grpc.pb.go @@ -4,10 +4,10 @@ package project_go_proto import ( context "context" + empty "github.com/golang/protobuf/ptypes/empty" 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 @@ -25,7 +25,7 @@ type ProjectsClient interface { // Lists projects. ListProjects(ctx context.Context, in *ListProjectsRequest, opts ...grpc.CallOption) (*ListProjectsResponse, error) // Deletes the specified project. - DeleteProject(ctx context.Context, in *DeleteProjectRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) + DeleteProject(ctx context.Context, in *DeleteProjectRequest, opts ...grpc.CallOption) (*empty.Empty, error) } type projectsClient struct { @@ -63,8 +63,8 @@ func (c *projectsClient) ListProjects(ctx context.Context, in *ListProjectsReque return out, nil } -func (c *projectsClient) DeleteProject(ctx context.Context, in *DeleteProjectRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) { - out := new(emptypb.Empty) +func (c *projectsClient) DeleteProject(ctx context.Context, in *DeleteProjectRequest, opts ...grpc.CallOption) (*empty.Empty, error) { + out := new(empty.Empty) err := c.cc.Invoke(ctx, "/grafeas.v1beta1.project.Projects/DeleteProject", in, out, opts...) if err != nil { return nil, err @@ -83,7 +83,7 @@ type ProjectsServer interface { // Lists projects. ListProjects(context.Context, *ListProjectsRequest) (*ListProjectsResponse, error) // Deletes the specified project. - DeleteProject(context.Context, *DeleteProjectRequest) (*emptypb.Empty, error) + DeleteProject(context.Context, *DeleteProjectRequest) (*empty.Empty, error) } // UnimplementedProjectsServer should be embedded to have forward compatible implementations. @@ -99,7 +99,7 @@ func (UnimplementedProjectsServer) GetProject(context.Context, *GetProjectReques func (UnimplementedProjectsServer) ListProjects(context.Context, *ListProjectsRequest) (*ListProjectsResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method ListProjects not implemented") } -func (UnimplementedProjectsServer) DeleteProject(context.Context, *DeleteProjectRequest) (*emptypb.Empty, error) { +func (UnimplementedProjectsServer) DeleteProject(context.Context, *DeleteProjectRequest) (*empty.Empty, error) { return nil, status.Errorf(codes.Unimplemented, "method DeleteProject not implemented") } diff --git a/proto/v1beta1/provenance_go_proto/provenance.pb.go b/proto/v1beta1/provenance_go_proto/provenance.pb.go index d5097f91..97c0ef8c 100644 --- a/proto/v1beta1/provenance_go_proto/provenance.pb.go +++ b/proto/v1beta1/provenance_go_proto/provenance.pb.go @@ -15,17 +15,17 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: // protoc-gen-go v1.25.0 -// protoc v3.14.0 +// protoc v3.13.0 // source: provenance.proto package provenance_go_proto import ( proto "github.com/golang/protobuf/proto" + timestamp "github.com/golang/protobuf/ptypes/timestamp" source_go_proto "github.com/grafeas/grafeas/proto/v1beta1/source_go_proto" 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" ) @@ -106,11 +106,11 @@ type BuildProvenance struct { // Output of the build. BuiltArtifacts []*Artifact `protobuf:"bytes,4,rep,name=built_artifacts,json=builtArtifacts,proto3" json:"built_artifacts,omitempty"` // Time at which the build was created. - CreateTime *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=create_time,json=createTime,proto3" json:"create_time,omitempty"` + CreateTime *timestamp.Timestamp `protobuf:"bytes,5,opt,name=create_time,json=createTime,proto3" json:"create_time,omitempty"` // Time at which execution of the build was started. - StartTime *timestamppb.Timestamp `protobuf:"bytes,6,opt,name=start_time,json=startTime,proto3" json:"start_time,omitempty"` + StartTime *timestamp.Timestamp `protobuf:"bytes,6,opt,name=start_time,json=startTime,proto3" json:"start_time,omitempty"` // Time at which execution of the build was finished. - EndTime *timestamppb.Timestamp `protobuf:"bytes,7,opt,name=end_time,json=endTime,proto3" json:"end_time,omitempty"` + EndTime *timestamp.Timestamp `protobuf:"bytes,7,opt,name=end_time,json=endTime,proto3" json:"end_time,omitempty"` // E-mail address of the user who initiated this build. Note that this was the // user's e-mail address at the time the build was initiated; this address may // not represent the same end-user for all time. @@ -188,21 +188,21 @@ func (x *BuildProvenance) GetBuiltArtifacts() []*Artifact { return nil } -func (x *BuildProvenance) GetCreateTime() *timestamppb.Timestamp { +func (x *BuildProvenance) GetCreateTime() *timestamp.Timestamp { if x != nil { return x.CreateTime } return nil } -func (x *BuildProvenance) GetStartTime() *timestamppb.Timestamp { +func (x *BuildProvenance) GetStartTime() *timestamp.Timestamp { if x != nil { return x.StartTime } return nil } -func (x *BuildProvenance) GetEndTime() *timestamppb.Timestamp { +func (x *BuildProvenance) GetEndTime() *timestamp.Timestamp { if x != nil { return x.EndTime } @@ -759,7 +759,7 @@ var file_provenance_proto_goTypes = []interface{}{ (*Artifact)(nil), // 6: grafeas.v1beta1.provenance.Artifact nil, // 7: grafeas.v1beta1.provenance.BuildProvenance.BuildOptionsEntry nil, // 8: grafeas.v1beta1.provenance.Source.FileHashesEntry - (*timestamppb.Timestamp)(nil), // 9: google.protobuf.Timestamp + (*timestamp.Timestamp)(nil), // 9: google.protobuf.Timestamp (*source_go_proto.SourceContext)(nil), // 10: grafeas.v1beta1.source.SourceContext } var file_provenance_proto_depIdxs = []int32{ diff --git a/proto/v1beta1/source_go_proto/source.pb.go b/proto/v1beta1/source_go_proto/source.pb.go index b97b8959..5e54be65 100644 --- a/proto/v1beta1/source_go_proto/source.pb.go +++ b/proto/v1beta1/source_go_proto/source.pb.go @@ -15,7 +15,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: // protoc-gen-go v1.25.0 -// protoc v3.14.0 +// protoc v3.13.0 // source: source.proto package source_go_proto diff --git a/proto/v1beta1/spdx.proto b/proto/v1beta1/spdx.proto new file mode 100644 index 00000000..7c43c0ac --- /dev/null +++ b/proto/v1beta1/spdx.proto @@ -0,0 +1,409 @@ +// Copyright 2021 The Grafeas Authors. All rights reserved. +// +// 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 grafeas.v1beta1.spdx; + +import "google/api/field_behavior.proto"; +import "google/protobuf/timestamp.proto"; + +option go_package = "github.com/grafeas/grafeas/proto/v1beta1/spdx_go_proto"; +option java_multiple_files = true; +option java_package = "io.grafeas.v1beta1.spdx"; +option objc_class_prefix = "GRA"; + +// DocumentNote represents an SPDX Document Creation Infromation section: +// https://spdx.github.io/spdx-spec/2-document-creation-information/ +message DocumentNote { + // Provide a reference number that can be used to understand how to parse and + // interpret the rest of the file + string spdx_version = 1; + // Compliance with the SPDX specification includes populating the SPDX fields + // therein with data related to such fields ("SPDX-Metadata") + string data_licence = 2; +} + +// DocumentOccurrence represents an SPDX Document Creation Information +// section: https://spdx.github.io/spdx-spec/2-document-creation-information/ +message DocumentOccurrence { + // Identify the current SPDX document which may be referenced in relationships + // by other files, packages internally and documents externally + string id = 1; + // Identify name of this document as designated by creator + string title = 2; + // Provide an SPDX document specific namespace as a unique absolute Uniform + // Resource Identifier (URI) as specified in RFC-3986, with the exception of + // the ‘#’ delimiter + string namespace = 3; + // Identify any external SPDX documents referenced within this SPDX document + repeated string external_document_refs = 4; + // A field for creators of the SPDX file to provide the version of + // the SPDX License List used when the SPDX file was created + string license_list_version = 5; + // Identify who (or what, in the case of a tool) created the SPDX file. If the + // SPDX file was created by an individual, indicate the person's name + repeated string creators = 6; + // Identify when the SPDX file was originally created. The date is to be + // specified according to combined date and time in UTC format as specified in + // ISO 8601 standard + google.protobuf.Timestamp create_time = 7; + // A field for creators of the SPDX file to provide general comments + // about the creation of the SPDX file or any other relevant comment not + // included in the other fields + string creator_comment = 8; + // A field for creators of the SPDX file content to provide comments + // to the consumers of the SPDX document + string document_comment = 9; +} + +// FileNote represents an SPDX File Information +// section: https://spdx.github.io/spdx-spec/4-file-information/ +message FileNote { + // Identify the full path and filename that corresponds to the file + // information in this section + string title = 1; + + // File Type is intrinsic to the file, independent of how the file is being + // used + enum FileType { + // Unspecified + FILE_TYPE_UNSPECIFIED = 0; + // The file is human readable source code (.c, .html, etc.) + SOURCE = 1; + // The file is a compiled object, target image or binary executable (.o, .a, + // etc.) + BINARY = 2; + // The file represents an archive (.tar, .jar, etc.) + ARCHIVE = 3; + // The file is associated with a specific application type (MIME type of + // application/*) + APPLICATION = 4; + // The file is associated with an audio file (MIME type of audio/* , e.g. + // .mp3) + AUDIO = 5; + // The file is associated with an picture image file (MIME type of image/*, + // e.g., .jpg, .gif) + IMAGE = 6; + // The file is human readable text file (MIME type of text/*) + TEXT = 7; + // The file is associated with a video file type (MIME type of video/*) + VIDEO = 8; + // The file serves as documentation + DOCUMENTATION = 9; + // The file is an SPDX document + SPDX = 10; + // The file doesn't fit into the above categories (generated artifacts, data + // files, etc.) + OTHER = 11; + } + // This field provides information about the type of file identified + FileType file_type = 2; + // Provide a unique identifier to match analysis information on each specific + // file in a package + repeated string checksum = 3; +} + +// FileOccurrence represents an SPDX File Information +// section: https://spdx.github.io/spdx-spec/4-file-information/ +message FileOccurrence { + // Uniquely identify any element in an SPDX document which may be referenced + // by other elements + string id = 1; + + // This field contains the license the SPDX file creator has concluded as + // governing the file or alternative values if the governing license cannot be + // determined + License license_concluded = 2; + // This field contains the license information actually found in the file, if + // any + repeated string files_license_info = 3; + // Identify the copyright holder of the file, as well as any dates present + string copyright = 4; + // This field provides a place for the SPDX file creator to record any general + // comments about the file + string comment = 5; + // This field provides a place for the SPDX file creator to record license + // notices or other such related notices found in the file + string notice = 6; + // This field provides a place for the SPDX file creator to record file + // contributors + repeated string contributors = 7; + // This field provides a place for the SPDX data creator to record, at the + // file level, acknowledgements that may be needed to be communicated in + // some contexts + repeated string attributions = 8; +} + +// License information: https://spdx.github.io/spdx-spec/3-package-information/#315-declared-license +message License { + // Expression: https://spdx.github.io/spdx-spec/appendix-IV-SPDX-license-expressions/ + string expression = 1; + // Comments + string comments = 2; +} + +// PackageInfoNote represents an SPDX Package Information +// section: https://spdx.github.io/spdx-spec/3-package-information/ +message PackageInfoNote { + // Identify the full name of the package as given by the Package Originator + string title = 1; + // Identify the version of the package + string version = 2; + // Identify the actual distribution source for the package/directory + // identified in the SPDX file + string supplier = 3; + // If the package identified in the SPDX file originated from a different + // person or organization than identified as Package Supplier, this field + // identifies from where or whom the package originally came + string originator = 4; + // This section identifies the download Universal Resource Locator (URL), or + // a specific location within a version control system (VCS) for the package + // at the time that the SPDX file was created + string download_location = 5; + // Indicates whether the file content of this package has been available for + // or subjected to analysis when creating the SPDX document + bool analyzed = 6; + // This field provides an independently reproducible mechanism identifying + // specific contents of a package based on the actual files (except the SPDX + // file itself, if it is included in the package) that make up each package + // and that correlates to the data in this SPDX file + string verification_code = 7; + // Provide an independently reproducible mechanism that permits unique + // identification of a specific package that correlates to the data in this + // SPDX file + string checksum = 8; + // Provide a place for the SPDX file creator to record a web site that serves + // as the package's home page + string home_page = 9; + // Contain the license the SPDX file creator has concluded as governing the + // This field is to contain a list of all licenses found in the package. The + // relationship between licenses (i.e., conjunctive, disjunctive) is not + // specified in this field – it is simply a listing of all licenses found + repeated string files_license_info = 10; + // List the licenses that have been declared by the authors of the package + License license_declared = 11; + // Identify the copyright holders of the package, as well as any dates present + string copyright = 12; + // A short description of the package + string summary_description = 13; + // A more detailed description of the package + string detailed_description = 14; + + // An External Reference allows a Package to reference an external source of + // additional information, metadata, enumerations, asset identifiers, or + // downloadable content believed to be relevant to the Package + message ExternalRef { + // The category of the external reference + enum Category { + // Unspecified + CATEGORY_UNSPECIFIED = 0; + // Security (e.g. cpe22Type, cpe23Type) + SECURITY = 1; + // Package Manager (e.g. maven-central, npm, nuget, bower, purl) + PACKAGE_MANAGER = 2; + // Persistent-Id (e.g. swh) + PERSISTENT_ID = 3; + // Other + OTHER = 4; + } + + // An External Reference allows a Package to reference an external source of + // additional information, metadata, enumerations, asset identifiers, or + // downloadable content believed to be relevant to the Package + Category category = 1; + // Type of category (e.g. 'npm' for the PACKAGE_MANAGER category) + string type = 2; + // The unique string with no spaces necessary to access the package-specific + // information, metadata, or content within the target location + string locator = 3; + // Human-readable information about the purpose and target of the reference + string comment = 4; + } + // ExternalRef + repeated ExternalRef external_refs = 15; + // A place for the SPDX data creator to record, at the package level, + // acknowledgements that may be needed to be communicated in some contexts + string attribution = 16; + // The type of package: OS, MAVEN, GO, GO_STDLIB, etc. + string package_type = 17; +} + +// PackageInfoOccurrence represents an SPDX Package Information +// section: https://spdx.github.io/spdx-spec/3-package-information/ +message PackageInfoOccurrence { + // Uniquely identify any element in an SPDX document which may be referenced + // by other elements + string id = 1; + // Provide the actual file name of the package, or path of the directory being + // treated as a package + string filename = 2; + // Provide a place for the SPDX file creator to record any relevant background + // information or additional comments about the origin of the package + string source_info = 3; + // package or alternative values, if the governing license cannot be + // determined + License license_concluded = 4; + // A place for the SPDX file creator to record any general + // comments about the package being described + string comment = 5; + // The type of package: OS, MAVEN, GO, GO_STDLIB, etc. + string package_type = 6 [(google.api.field_behavior) = OUTPUT_ONLY]; + // Identify the full name of the package as given by the Package Originator + string title = 7 [(google.api.field_behavior) = OUTPUT_ONLY]; + // Identify the version of the package + string version = 8 [(google.api.field_behavior) = OUTPUT_ONLY]; + // Provide a place for the SPDX file creator to record a web site that serves + // as the package's home page + string home_page = 9 [(google.api.field_behavior) = OUTPUT_ONLY]; + // A short description of the package + string summary_description = 10 [(google.api.field_behavior) = OUTPUT_ONLY]; +} + +// RelationshipNote represents an SPDX Relationship +// section: +// https://spdx.github.io/spdx-spec/7-relationships-between-SPDX-elements/ +message RelationshipNote { + // The type of relationship between the source and target SPDX elements + RelationshipType type = 1; +} + +// RelationshipOccurrence represents an SPDX Relationship +// section: +// https://spdx.github.io/spdx-spec/7-relationships-between-SPDX-elements/ +message RelationshipOccurrence { + // Also referred to as SPDXRef-A + // The source SPDX element (file, package, etc) + string source = 1; + // Also referred to as SPDXRef-B + // The target SPDC element (file, package, etc) + // In cases where there are "known unknowns", the use of the keyword + // NOASSERTION can be used The keywords NONE can be used to indicate that an + // SPDX element (package/file/snippet) has no other elements connected by + // some relationship to it + string target = 2; + + // The type of relationship between the source and target SPDX elements + RelationshipType type = 3 [(google.api.field_behavior) = OUTPUT_ONLY]; + // A place for the SPDX file creator to record any general comments about + // the relationship + string comment = 4; +} + +// The type of relationship between the source and target SPDX elements +// RelationshipOccurrence represents an SPDX Relationship section: +// https://spdx.github.io/spdx-spec/7-relationships-between-SPDX-elements/ +enum RelationshipType { + // Unspecified + RELATIONSHIP_TYPE_UNSPECIFIED = 0; + // Is to be used when SPDXRef-DOCUMENT describes SPDXRef-A + DESCRIBES = 1; + // Is to be used when SPDXRef-A is described by SPDXREF-Document + DESCRIBED_BY = 2; + // Is to be used when SPDXRef-A contains SPDXRef-B + CONTAINS = 3; + // Is to be used when SPDXRef-A is contained by SPDXRef-B + CONTAINED_BY = 4; + // Is to be used when SPDXRef-A depends on SPDXRef-B + DEPENDS_ON = 5; + // Is to be used when SPDXRef-A is dependency of SPDXRef-B + DEPENDENCY_OF = 6; + // Is to be used when SPDXRef-A is a manifest file that lists a set of + // dependencies for SPDXRef-B + DEPENDENCY_MANIFEST_OF = 7; + // Is to be used when SPDXRef-A is a build dependency of SPDXRef-B + BUILD_DEPENDENCY_OF = 8; + // Is to be used when SPDXRef-A is a development dependency of SPDXRef-B + DEV_DEPENDENCY_OF = 9; + // Is to be used when SPDXRef-A is an optional dependency of SPDXRef-B + OPTIONAL_DEPENDENCY_OF = 10; + // Is to be used when SPDXRef-A is a to be provided dependency of + // SPDXRef-B + PROVIDED_DEPENDENCY_OF = 11; + // Is to be used when SPDXRef-A is a test dependency of SPDXRef-B + TEST_DEPENDENCY_OF = 12; + // Is to be used when SPDXRef-A is a dependency required for the execution + // of SPDXRef-B + RUNTIME_DEPENDENCY_OF = 13; + // Is to be used when SPDXRef-A is an example of SPDXRef-B + EXAMPLE_OF = 14; + // Is to be used when SPDXRef-A generates SPDXRef-B + GENERATES = 15; + // Is to be used when SPDXRef-A was generated from SPDXRef-B + GENERATED_FROM = 16; + // Is to be used when SPDXRef-A is an ancestor (same lineage but + // pre-dates) SPDXRef-B + ANCESTOR_OF = 17; + // Is to be used when SPDXRef-A is a descendant of (same lineage but + // postdates) SPDXRef-B + DESCENDANT_OF = 18; + // Is to be used when SPDXRef-A is a variant of (same lineage but not + // clear which came first) SPDXRef-B + VARIANT_OF = 19; + // Is to be used when distributing SPDXRef-A requires that SPDXRef-B also + // be distributed + DISTRIBUTION_ARTIFACT = 20; + // Is to be used when SPDXRef-A is a patch file for (to be applied to) + // SPDXRef-B + PATCH_FOR = 21; + // Is to be used when SPDXRef-A is a patch file that has been applied to + // SPDXRef-B + PATCH_APPLIED = 22; + // Is to be used when SPDXRef-A is an exact copy of SPDXRef-B + COPY_OF = 23; + // Is to be used when SPDXRef-A is a file that was added to SPDXRef-B + FILE_ADDED = 24; + // Is to be used when SPDXRef-A is a file that was deleted from SPDXRef-B + FILE_DELETED = 25; + // Is to be used when SPDXRef-A is a file that was modified from SPDXRef-B + FILE_MODIFIED = 26; + // Is to be used when SPDXRef-A is expanded from the archive SPDXRef-B + EXPANDED_FROM_ARCHIVE = 27; + // Is to be used when SPDXRef-A dynamically links to SPDXRef-B + DYNAMIC_LINK = 28; + // Is to be used when SPDXRef-A statically links to SPDXRef-B + STATIC_LINK = 29; + // Is to be used when SPDXRef-A is a data file used in SPDXRef-B + DATA_FILE_OF = 30; + // Is to be used when SPDXRef-A is a test case used in testing SPDXRef-B + TEST_CASE_OF = 31; + // Is to be used when SPDXRef-A is used to build SPDXRef-B + BUILD_TOOL_OF = 32; + // Is to be used when SPDXRef-A is used as a development tool for + // SPDXRef-B + DEV_TOOL_OF = 33; + // Is to be used when SPDXRef-A is used for testing SPDXRef-B + TEST_OF = 34; + // Is to be used when SPDXRef-A is used as a test tool for SPDXRef-B + TEST_TOOL_OF = 35; + // Is to be used when SPDXRef-A provides documentation of SPDXRef-B + DOCUMENTATION_OF = 36; + // Is to be used when SPDXRef-A is an optional component of SPDXRef-B + OPTIONAL_COMPONENT_OF = 37; + // Is to be used when SPDXRef-A is a metafile of SPDXRef-B + METAFILE_OF = 38; + // Is to be used when SPDXRef-A is used as a package as part of SPDXRef-B + PACKAGE_OF = 39; + // Is to be used when (current) SPDXRef-DOCUMENT amends the SPDX + // information in SPDXRef-B + AMENDS = 40; + // Is to be used when SPDXRef-A is a prerequisite for SPDXRef-B + PREREQUISITE_FOR = 41; + // Is to be used when SPDXRef-A has as a prerequisite SPDXRef-B + HAS_PREREQUISITE = 42; + // Is to be used for a relationship which has not been defined in the + // formal SPDX specification. A description of the relationship should be + // included in the Relationship comments field + OTHER = 43; +} diff --git a/proto/v1beta1/spdx_go_proto/spdx.pb.go b/proto/v1beta1/spdx_go_proto/spdx.pb.go new file mode 100644 index 00000000..e562f2f3 --- /dev/null +++ b/proto/v1beta1/spdx_go_proto/spdx.pb.go @@ -0,0 +1,1878 @@ +// Copyright 2021 The Grafeas Authors. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.25.0 +// protoc v3.13.0 +// source: spdx.proto + +package spdx_go_proto + +import ( + proto "github.com/golang/protobuf/proto" + timestamp "github.com/golang/protobuf/ptypes/timestamp" + _ "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) +) + +// This is a compile-time assertion that a sufficiently up-to-date version +// of the legacy proto package is being used. +const _ = proto.ProtoPackageIsVersion4 + +// The type of relationship between the source and target SPDX elements +// RelationshipOccurrence represents an SPDX Relationship section: +// https://spdx.github.io/spdx-spec/7-relationships-between-SPDX-elements/ +type RelationshipType int32 + +const ( + // Unspecified + RelationshipType_RELATIONSHIP_TYPE_UNSPECIFIED RelationshipType = 0 + // Is to be used when SPDXRef-DOCUMENT describes SPDXRef-A + RelationshipType_DESCRIBES RelationshipType = 1 + // Is to be used when SPDXRef-A is described by SPDXREF-Document + RelationshipType_DESCRIBED_BY RelationshipType = 2 + // Is to be used when SPDXRef-A contains SPDXRef-B + RelationshipType_CONTAINS RelationshipType = 3 + // Is to be used when SPDXRef-A is contained by SPDXRef-B + RelationshipType_CONTAINED_BY RelationshipType = 4 + // Is to be used when SPDXRef-A depends on SPDXRef-B + RelationshipType_DEPENDS_ON RelationshipType = 5 + // Is to be used when SPDXRef-A is dependency of SPDXRef-B + RelationshipType_DEPENDENCY_OF RelationshipType = 6 + // Is to be used when SPDXRef-A is a manifest file that lists a set of + // dependencies for SPDXRef-B + RelationshipType_DEPENDENCY_MANIFEST_OF RelationshipType = 7 + // Is to be used when SPDXRef-A is a build dependency of SPDXRef-B + RelationshipType_BUILD_DEPENDENCY_OF RelationshipType = 8 + // Is to be used when SPDXRef-A is a development dependency of SPDXRef-B + RelationshipType_DEV_DEPENDENCY_OF RelationshipType = 9 + // Is to be used when SPDXRef-A is an optional dependency of SPDXRef-B + RelationshipType_OPTIONAL_DEPENDENCY_OF RelationshipType = 10 + // Is to be used when SPDXRef-A is a to be provided dependency of + // SPDXRef-B + RelationshipType_PROVIDED_DEPENDENCY_OF RelationshipType = 11 + // Is to be used when SPDXRef-A is a test dependency of SPDXRef-B + RelationshipType_TEST_DEPENDENCY_OF RelationshipType = 12 + // Is to be used when SPDXRef-A is a dependency required for the execution + // of SPDXRef-B + RelationshipType_RUNTIME_DEPENDENCY_OF RelationshipType = 13 + // Is to be used when SPDXRef-A is an example of SPDXRef-B + RelationshipType_EXAMPLE_OF RelationshipType = 14 + // Is to be used when SPDXRef-A generates SPDXRef-B + RelationshipType_GENERATES RelationshipType = 15 + // Is to be used when SPDXRef-A was generated from SPDXRef-B + RelationshipType_GENERATED_FROM RelationshipType = 16 + // Is to be used when SPDXRef-A is an ancestor (same lineage but + // pre-dates) SPDXRef-B + RelationshipType_ANCESTOR_OF RelationshipType = 17 + // Is to be used when SPDXRef-A is a descendant of (same lineage but + // postdates) SPDXRef-B + RelationshipType_DESCENDANT_OF RelationshipType = 18 + // Is to be used when SPDXRef-A is a variant of (same lineage but not + // clear which came first) SPDXRef-B + RelationshipType_VARIANT_OF RelationshipType = 19 + // Is to be used when distributing SPDXRef-A requires that SPDXRef-B also + // be distributed + RelationshipType_DISTRIBUTION_ARTIFACT RelationshipType = 20 + // Is to be used when SPDXRef-A is a patch file for (to be applied to) + // SPDXRef-B + RelationshipType_PATCH_FOR RelationshipType = 21 + // Is to be used when SPDXRef-A is a patch file that has been applied to + // SPDXRef-B + RelationshipType_PATCH_APPLIED RelationshipType = 22 + // Is to be used when SPDXRef-A is an exact copy of SPDXRef-B + RelationshipType_COPY_OF RelationshipType = 23 + // Is to be used when SPDXRef-A is a file that was added to SPDXRef-B + RelationshipType_FILE_ADDED RelationshipType = 24 + // Is to be used when SPDXRef-A is a file that was deleted from SPDXRef-B + RelationshipType_FILE_DELETED RelationshipType = 25 + // Is to be used when SPDXRef-A is a file that was modified from SPDXRef-B + RelationshipType_FILE_MODIFIED RelationshipType = 26 + // Is to be used when SPDXRef-A is expanded from the archive SPDXRef-B + RelationshipType_EXPANDED_FROM_ARCHIVE RelationshipType = 27 + // Is to be used when SPDXRef-A dynamically links to SPDXRef-B + RelationshipType_DYNAMIC_LINK RelationshipType = 28 + // Is to be used when SPDXRef-A statically links to SPDXRef-B + RelationshipType_STATIC_LINK RelationshipType = 29 + // Is to be used when SPDXRef-A is a data file used in SPDXRef-B + RelationshipType_DATA_FILE_OF RelationshipType = 30 + // Is to be used when SPDXRef-A is a test case used in testing SPDXRef-B + RelationshipType_TEST_CASE_OF RelationshipType = 31 + // Is to be used when SPDXRef-A is used to build SPDXRef-B + RelationshipType_BUILD_TOOL_OF RelationshipType = 32 + // Is to be used when SPDXRef-A is used as a development tool for + // SPDXRef-B + RelationshipType_DEV_TOOL_OF RelationshipType = 33 + // Is to be used when SPDXRef-A is used for testing SPDXRef-B + RelationshipType_TEST_OF RelationshipType = 34 + // Is to be used when SPDXRef-A is used as a test tool for SPDXRef-B + RelationshipType_TEST_TOOL_OF RelationshipType = 35 + // Is to be used when SPDXRef-A provides documentation of SPDXRef-B + RelationshipType_DOCUMENTATION_OF RelationshipType = 36 + // Is to be used when SPDXRef-A is an optional component of SPDXRef-B + RelationshipType_OPTIONAL_COMPONENT_OF RelationshipType = 37 + // Is to be used when SPDXRef-A is a metafile of SPDXRef-B + RelationshipType_METAFILE_OF RelationshipType = 38 + // Is to be used when SPDXRef-A is used as a package as part of SPDXRef-B + RelationshipType_PACKAGE_OF RelationshipType = 39 + // Is to be used when (current) SPDXRef-DOCUMENT amends the SPDX + // information in SPDXRef-B + RelationshipType_AMENDS RelationshipType = 40 + // Is to be used when SPDXRef-A is a prerequisite for SPDXRef-B + RelationshipType_PREREQUISITE_FOR RelationshipType = 41 + // Is to be used when SPDXRef-A has as a prerequisite SPDXRef-B + RelationshipType_HAS_PREREQUISITE RelationshipType = 42 + // Is to be used for a relationship which has not been defined in the + // formal SPDX specification. A description of the relationship should be + // included in the Relationship comments field + RelationshipType_OTHER RelationshipType = 43 +) + +// Enum value maps for RelationshipType. +var ( + RelationshipType_name = map[int32]string{ + 0: "RELATIONSHIP_TYPE_UNSPECIFIED", + 1: "DESCRIBES", + 2: "DESCRIBED_BY", + 3: "CONTAINS", + 4: "CONTAINED_BY", + 5: "DEPENDS_ON", + 6: "DEPENDENCY_OF", + 7: "DEPENDENCY_MANIFEST_OF", + 8: "BUILD_DEPENDENCY_OF", + 9: "DEV_DEPENDENCY_OF", + 10: "OPTIONAL_DEPENDENCY_OF", + 11: "PROVIDED_DEPENDENCY_OF", + 12: "TEST_DEPENDENCY_OF", + 13: "RUNTIME_DEPENDENCY_OF", + 14: "EXAMPLE_OF", + 15: "GENERATES", + 16: "GENERATED_FROM", + 17: "ANCESTOR_OF", + 18: "DESCENDANT_OF", + 19: "VARIANT_OF", + 20: "DISTRIBUTION_ARTIFACT", + 21: "PATCH_FOR", + 22: "PATCH_APPLIED", + 23: "COPY_OF", + 24: "FILE_ADDED", + 25: "FILE_DELETED", + 26: "FILE_MODIFIED", + 27: "EXPANDED_FROM_ARCHIVE", + 28: "DYNAMIC_LINK", + 29: "STATIC_LINK", + 30: "DATA_FILE_OF", + 31: "TEST_CASE_OF", + 32: "BUILD_TOOL_OF", + 33: "DEV_TOOL_OF", + 34: "TEST_OF", + 35: "TEST_TOOL_OF", + 36: "DOCUMENTATION_OF", + 37: "OPTIONAL_COMPONENT_OF", + 38: "METAFILE_OF", + 39: "PACKAGE_OF", + 40: "AMENDS", + 41: "PREREQUISITE_FOR", + 42: "HAS_PREREQUISITE", + 43: "OTHER", + } + RelationshipType_value = map[string]int32{ + "RELATIONSHIP_TYPE_UNSPECIFIED": 0, + "DESCRIBES": 1, + "DESCRIBED_BY": 2, + "CONTAINS": 3, + "CONTAINED_BY": 4, + "DEPENDS_ON": 5, + "DEPENDENCY_OF": 6, + "DEPENDENCY_MANIFEST_OF": 7, + "BUILD_DEPENDENCY_OF": 8, + "DEV_DEPENDENCY_OF": 9, + "OPTIONAL_DEPENDENCY_OF": 10, + "PROVIDED_DEPENDENCY_OF": 11, + "TEST_DEPENDENCY_OF": 12, + "RUNTIME_DEPENDENCY_OF": 13, + "EXAMPLE_OF": 14, + "GENERATES": 15, + "GENERATED_FROM": 16, + "ANCESTOR_OF": 17, + "DESCENDANT_OF": 18, + "VARIANT_OF": 19, + "DISTRIBUTION_ARTIFACT": 20, + "PATCH_FOR": 21, + "PATCH_APPLIED": 22, + "COPY_OF": 23, + "FILE_ADDED": 24, + "FILE_DELETED": 25, + "FILE_MODIFIED": 26, + "EXPANDED_FROM_ARCHIVE": 27, + "DYNAMIC_LINK": 28, + "STATIC_LINK": 29, + "DATA_FILE_OF": 30, + "TEST_CASE_OF": 31, + "BUILD_TOOL_OF": 32, + "DEV_TOOL_OF": 33, + "TEST_OF": 34, + "TEST_TOOL_OF": 35, + "DOCUMENTATION_OF": 36, + "OPTIONAL_COMPONENT_OF": 37, + "METAFILE_OF": 38, + "PACKAGE_OF": 39, + "AMENDS": 40, + "PREREQUISITE_FOR": 41, + "HAS_PREREQUISITE": 42, + "OTHER": 43, + } +) + +func (x RelationshipType) Enum() *RelationshipType { + p := new(RelationshipType) + *p = x + return p +} + +func (x RelationshipType) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (RelationshipType) Descriptor() protoreflect.EnumDescriptor { + return file_spdx_proto_enumTypes[0].Descriptor() +} + +func (RelationshipType) Type() protoreflect.EnumType { + return &file_spdx_proto_enumTypes[0] +} + +func (x RelationshipType) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use RelationshipType.Descriptor instead. +func (RelationshipType) EnumDescriptor() ([]byte, []int) { + return file_spdx_proto_rawDescGZIP(), []int{0} +} + +// File Type is intrinsic to the file, independent of how the file is being +// used +type FileNote_FileType int32 + +const ( + // Unspecified + FileNote_FILE_TYPE_UNSPECIFIED FileNote_FileType = 0 + // The file is human readable source code (.c, .html, etc.) + FileNote_SOURCE FileNote_FileType = 1 + // The file is a compiled object, target image or binary executable (.o, .a, + // etc.) + FileNote_BINARY FileNote_FileType = 2 + // The file represents an archive (.tar, .jar, etc.) + FileNote_ARCHIVE FileNote_FileType = 3 + // The file is associated with a specific application type (MIME type of + // application/*) + FileNote_APPLICATION FileNote_FileType = 4 + // The file is associated with an audio file (MIME type of audio/* , e.g. + // .mp3) + FileNote_AUDIO FileNote_FileType = 5 + // The file is associated with an picture image file (MIME type of image/*, + // e.g., .jpg, .gif) + FileNote_IMAGE FileNote_FileType = 6 + // The file is human readable text file (MIME type of text/*) + FileNote_TEXT FileNote_FileType = 7 + // The file is associated with a video file type (MIME type of video/*) + FileNote_VIDEO FileNote_FileType = 8 + // The file serves as documentation + FileNote_DOCUMENTATION FileNote_FileType = 9 + // The file is an SPDX document + FileNote_SPDX FileNote_FileType = 10 + // The file doesn't fit into the above categories (generated artifacts, data + // files, etc.) + FileNote_OTHER FileNote_FileType = 11 +) + +// Enum value maps for FileNote_FileType. +var ( + FileNote_FileType_name = map[int32]string{ + 0: "FILE_TYPE_UNSPECIFIED", + 1: "SOURCE", + 2: "BINARY", + 3: "ARCHIVE", + 4: "APPLICATION", + 5: "AUDIO", + 6: "IMAGE", + 7: "TEXT", + 8: "VIDEO", + 9: "DOCUMENTATION", + 10: "SPDX", + 11: "OTHER", + } + FileNote_FileType_value = map[string]int32{ + "FILE_TYPE_UNSPECIFIED": 0, + "SOURCE": 1, + "BINARY": 2, + "ARCHIVE": 3, + "APPLICATION": 4, + "AUDIO": 5, + "IMAGE": 6, + "TEXT": 7, + "VIDEO": 8, + "DOCUMENTATION": 9, + "SPDX": 10, + "OTHER": 11, + } +) + +func (x FileNote_FileType) Enum() *FileNote_FileType { + p := new(FileNote_FileType) + *p = x + return p +} + +func (x FileNote_FileType) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (FileNote_FileType) Descriptor() protoreflect.EnumDescriptor { + return file_spdx_proto_enumTypes[1].Descriptor() +} + +func (FileNote_FileType) Type() protoreflect.EnumType { + return &file_spdx_proto_enumTypes[1] +} + +func (x FileNote_FileType) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use FileNote_FileType.Descriptor instead. +func (FileNote_FileType) EnumDescriptor() ([]byte, []int) { + return file_spdx_proto_rawDescGZIP(), []int{2, 0} +} + +// The category of the external reference +type PackageInfoNote_ExternalRef_Category int32 + +const ( + // Unspecified + PackageInfoNote_ExternalRef_CATEGORY_UNSPECIFIED PackageInfoNote_ExternalRef_Category = 0 + // Security (e.g. cpe22Type, cpe23Type) + PackageInfoNote_ExternalRef_SECURITY PackageInfoNote_ExternalRef_Category = 1 + // Package Manager (e.g. maven-central, npm, nuget, bower, purl) + PackageInfoNote_ExternalRef_PACKAGE_MANAGER PackageInfoNote_ExternalRef_Category = 2 + // Persistent-Id (e.g. swh) + PackageInfoNote_ExternalRef_PERSISTENT_ID PackageInfoNote_ExternalRef_Category = 3 + // Other + PackageInfoNote_ExternalRef_OTHER PackageInfoNote_ExternalRef_Category = 4 +) + +// Enum value maps for PackageInfoNote_ExternalRef_Category. +var ( + PackageInfoNote_ExternalRef_Category_name = map[int32]string{ + 0: "CATEGORY_UNSPECIFIED", + 1: "SECURITY", + 2: "PACKAGE_MANAGER", + 3: "PERSISTENT_ID", + 4: "OTHER", + } + PackageInfoNote_ExternalRef_Category_value = map[string]int32{ + "CATEGORY_UNSPECIFIED": 0, + "SECURITY": 1, + "PACKAGE_MANAGER": 2, + "PERSISTENT_ID": 3, + "OTHER": 4, + } +) + +func (x PackageInfoNote_ExternalRef_Category) Enum() *PackageInfoNote_ExternalRef_Category { + p := new(PackageInfoNote_ExternalRef_Category) + *p = x + return p +} + +func (x PackageInfoNote_ExternalRef_Category) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (PackageInfoNote_ExternalRef_Category) Descriptor() protoreflect.EnumDescriptor { + return file_spdx_proto_enumTypes[2].Descriptor() +} + +func (PackageInfoNote_ExternalRef_Category) Type() protoreflect.EnumType { + return &file_spdx_proto_enumTypes[2] +} + +func (x PackageInfoNote_ExternalRef_Category) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use PackageInfoNote_ExternalRef_Category.Descriptor instead. +func (PackageInfoNote_ExternalRef_Category) EnumDescriptor() ([]byte, []int) { + return file_spdx_proto_rawDescGZIP(), []int{5, 0, 0} +} + +// DocumentNote represents an SPDX Document Creation Infromation section: +// https://spdx.github.io/spdx-spec/2-document-creation-information/ +type DocumentNote struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Provide a reference number that can be used to understand how to parse and + // interpret the rest of the file + SpdxVersion string `protobuf:"bytes,1,opt,name=spdx_version,json=spdxVersion,proto3" json:"spdx_version,omitempty"` + // Compliance with the SPDX specification includes populating the SPDX fields + // therein with data related to such fields ("SPDX-Metadata") + DataLicence string `protobuf:"bytes,2,opt,name=data_licence,json=dataLicence,proto3" json:"data_licence,omitempty"` +} + +func (x *DocumentNote) Reset() { + *x = DocumentNote{} + if protoimpl.UnsafeEnabled { + mi := &file_spdx_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DocumentNote) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DocumentNote) ProtoMessage() {} + +func (x *DocumentNote) ProtoReflect() protoreflect.Message { + mi := &file_spdx_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 DocumentNote.ProtoReflect.Descriptor instead. +func (*DocumentNote) Descriptor() ([]byte, []int) { + return file_spdx_proto_rawDescGZIP(), []int{0} +} + +func (x *DocumentNote) GetSpdxVersion() string { + if x != nil { + return x.SpdxVersion + } + return "" +} + +func (x *DocumentNote) GetDataLicence() string { + if x != nil { + return x.DataLicence + } + return "" +} + +// DocumentOccurrence represents an SPDX Document Creation Information +// section: https://spdx.github.io/spdx-spec/2-document-creation-information/ +type DocumentOccurrence struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Identify the current SPDX document which may be referenced in relationships + // by other files, packages internally and documents externally + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + // Identify name of this document as designated by creator + Title string `protobuf:"bytes,2,opt,name=title,proto3" json:"title,omitempty"` + // Provide an SPDX document specific namespace as a unique absolute Uniform + // Resource Identifier (URI) as specified in RFC-3986, with the exception of + // the ‘#’ delimiter + Namespace string `protobuf:"bytes,3,opt,name=namespace,proto3" json:"namespace,omitempty"` + // Identify any external SPDX documents referenced within this SPDX document + ExternalDocumentRefs []string `protobuf:"bytes,4,rep,name=external_document_refs,json=externalDocumentRefs,proto3" json:"external_document_refs,omitempty"` + // A field for creators of the SPDX file to provide the version of + // the SPDX License List used when the SPDX file was created + LicenseListVersion string `protobuf:"bytes,5,opt,name=license_list_version,json=licenseListVersion,proto3" json:"license_list_version,omitempty"` + // Identify who (or what, in the case of a tool) created the SPDX file. If the + // SPDX file was created by an individual, indicate the person's name + Creators []string `protobuf:"bytes,6,rep,name=creators,proto3" json:"creators,omitempty"` + // Identify when the SPDX file was originally created. The date is to be + // specified according to combined date and time in UTC format as specified in + // ISO 8601 standard + CreateTime *timestamp.Timestamp `protobuf:"bytes,7,opt,name=create_time,json=createTime,proto3" json:"create_time,omitempty"` + // A field for creators of the SPDX file to provide general comments + // about the creation of the SPDX file or any other relevant comment not + // included in the other fields + CreatorComment string `protobuf:"bytes,8,opt,name=creator_comment,json=creatorComment,proto3" json:"creator_comment,omitempty"` + // A field for creators of the SPDX file content to provide comments + // to the consumers of the SPDX document + DocumentComment string `protobuf:"bytes,9,opt,name=document_comment,json=documentComment,proto3" json:"document_comment,omitempty"` +} + +func (x *DocumentOccurrence) Reset() { + *x = DocumentOccurrence{} + if protoimpl.UnsafeEnabled { + mi := &file_spdx_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DocumentOccurrence) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DocumentOccurrence) ProtoMessage() {} + +func (x *DocumentOccurrence) ProtoReflect() protoreflect.Message { + mi := &file_spdx_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 DocumentOccurrence.ProtoReflect.Descriptor instead. +func (*DocumentOccurrence) Descriptor() ([]byte, []int) { + return file_spdx_proto_rawDescGZIP(), []int{1} +} + +func (x *DocumentOccurrence) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +func (x *DocumentOccurrence) GetTitle() string { + if x != nil { + return x.Title + } + return "" +} + +func (x *DocumentOccurrence) GetNamespace() string { + if x != nil { + return x.Namespace + } + return "" +} + +func (x *DocumentOccurrence) GetExternalDocumentRefs() []string { + if x != nil { + return x.ExternalDocumentRefs + } + return nil +} + +func (x *DocumentOccurrence) GetLicenseListVersion() string { + if x != nil { + return x.LicenseListVersion + } + return "" +} + +func (x *DocumentOccurrence) GetCreators() []string { + if x != nil { + return x.Creators + } + return nil +} + +func (x *DocumentOccurrence) GetCreateTime() *timestamp.Timestamp { + if x != nil { + return x.CreateTime + } + return nil +} + +func (x *DocumentOccurrence) GetCreatorComment() string { + if x != nil { + return x.CreatorComment + } + return "" +} + +func (x *DocumentOccurrence) GetDocumentComment() string { + if x != nil { + return x.DocumentComment + } + return "" +} + +// FileNote represents an SPDX File Information +// section: https://spdx.github.io/spdx-spec/4-file-information/ +type FileNote struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Identify the full path and filename that corresponds to the file + // information in this section + Title string `protobuf:"bytes,1,opt,name=title,proto3" json:"title,omitempty"` + // This field provides information about the type of file identified + FileType FileNote_FileType `protobuf:"varint,2,opt,name=file_type,json=fileType,proto3,enum=grafeas.v1beta1.spdx.FileNote_FileType" json:"file_type,omitempty"` + // Provide a unique identifier to match analysis information on each specific + // file in a package + Checksum []string `protobuf:"bytes,3,rep,name=checksum,proto3" json:"checksum,omitempty"` +} + +func (x *FileNote) Reset() { + *x = FileNote{} + if protoimpl.UnsafeEnabled { + mi := &file_spdx_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *FileNote) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*FileNote) ProtoMessage() {} + +func (x *FileNote) ProtoReflect() protoreflect.Message { + mi := &file_spdx_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 FileNote.ProtoReflect.Descriptor instead. +func (*FileNote) Descriptor() ([]byte, []int) { + return file_spdx_proto_rawDescGZIP(), []int{2} +} + +func (x *FileNote) GetTitle() string { + if x != nil { + return x.Title + } + return "" +} + +func (x *FileNote) GetFileType() FileNote_FileType { + if x != nil { + return x.FileType + } + return FileNote_FILE_TYPE_UNSPECIFIED +} + +func (x *FileNote) GetChecksum() []string { + if x != nil { + return x.Checksum + } + return nil +} + +// FileOccurrence represents an SPDX File Information +// section: https://spdx.github.io/spdx-spec/4-file-information/ +type FileOccurrence struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Uniquely identify any element in an SPDX document which may be referenced + // by other elements + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + // This field contains the license the SPDX file creator has concluded as + // governing the file or alternative values if the governing license cannot be + // determined + LicenseConcluded *License `protobuf:"bytes,2,opt,name=license_concluded,json=licenseConcluded,proto3" json:"license_concluded,omitempty"` + // This field contains the license information actually found in the file, if + // any + FilesLicenseInfo []string `protobuf:"bytes,3,rep,name=files_license_info,json=filesLicenseInfo,proto3" json:"files_license_info,omitempty"` + // Identify the copyright holder of the file, as well as any dates present + Copyright string `protobuf:"bytes,4,opt,name=copyright,proto3" json:"copyright,omitempty"` + // This field provides a place for the SPDX file creator to record any general + // comments about the file + Comment string `protobuf:"bytes,5,opt,name=comment,proto3" json:"comment,omitempty"` + // This field provides a place for the SPDX file creator to record license + // notices or other such related notices found in the file + Notice string `protobuf:"bytes,6,opt,name=notice,proto3" json:"notice,omitempty"` + // This field provides a place for the SPDX file creator to record file + // contributors + Contributors []string `protobuf:"bytes,7,rep,name=contributors,proto3" json:"contributors,omitempty"` + // This field provides a place for the SPDX data creator to record, at the + // file level, acknowledgements that may be needed to be communicated in + // some contexts + Attributions []string `protobuf:"bytes,8,rep,name=attributions,proto3" json:"attributions,omitempty"` +} + +func (x *FileOccurrence) Reset() { + *x = FileOccurrence{} + if protoimpl.UnsafeEnabled { + mi := &file_spdx_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *FileOccurrence) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*FileOccurrence) ProtoMessage() {} + +func (x *FileOccurrence) ProtoReflect() protoreflect.Message { + mi := &file_spdx_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 FileOccurrence.ProtoReflect.Descriptor instead. +func (*FileOccurrence) Descriptor() ([]byte, []int) { + return file_spdx_proto_rawDescGZIP(), []int{3} +} + +func (x *FileOccurrence) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +func (x *FileOccurrence) GetLicenseConcluded() *License { + if x != nil { + return x.LicenseConcluded + } + return nil +} + +func (x *FileOccurrence) GetFilesLicenseInfo() []string { + if x != nil { + return x.FilesLicenseInfo + } + return nil +} + +func (x *FileOccurrence) GetCopyright() string { + if x != nil { + return x.Copyright + } + return "" +} + +func (x *FileOccurrence) GetComment() string { + if x != nil { + return x.Comment + } + return "" +} + +func (x *FileOccurrence) GetNotice() string { + if x != nil { + return x.Notice + } + return "" +} + +func (x *FileOccurrence) GetContributors() []string { + if x != nil { + return x.Contributors + } + return nil +} + +func (x *FileOccurrence) GetAttributions() []string { + if x != nil { + return x.Attributions + } + return nil +} + +// License information: https://spdx.github.io/spdx-spec/3-package-information/#315-declared-license +type License struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Expression: https://spdx.github.io/spdx-spec/appendix-IV-SPDX-license-expressions/ + Expression string `protobuf:"bytes,1,opt,name=expression,proto3" json:"expression,omitempty"` + // Comments + Comments string `protobuf:"bytes,2,opt,name=comments,proto3" json:"comments,omitempty"` +} + +func (x *License) Reset() { + *x = License{} + if protoimpl.UnsafeEnabled { + mi := &file_spdx_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *License) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*License) ProtoMessage() {} + +func (x *License) ProtoReflect() protoreflect.Message { + mi := &file_spdx_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 License.ProtoReflect.Descriptor instead. +func (*License) Descriptor() ([]byte, []int) { + return file_spdx_proto_rawDescGZIP(), []int{4} +} + +func (x *License) GetExpression() string { + if x != nil { + return x.Expression + } + return "" +} + +func (x *License) GetComments() string { + if x != nil { + return x.Comments + } + return "" +} + +// PackageInfoNote represents an SPDX Package Information +// section: https://spdx.github.io/spdx-spec/3-package-information/ +type PackageInfoNote struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Identify the full name of the package as given by the Package Originator + Title string `protobuf:"bytes,1,opt,name=title,proto3" json:"title,omitempty"` + // Identify the version of the package + Version string `protobuf:"bytes,2,opt,name=version,proto3" json:"version,omitempty"` + // Identify the actual distribution source for the package/directory + // identified in the SPDX file + Supplier string `protobuf:"bytes,3,opt,name=supplier,proto3" json:"supplier,omitempty"` + // If the package identified in the SPDX file originated from a different + // person or organization than identified as Package Supplier, this field + // identifies from where or whom the package originally came + Originator string `protobuf:"bytes,4,opt,name=originator,proto3" json:"originator,omitempty"` + // This section identifies the download Universal Resource Locator (URL), or + // a specific location within a version control system (VCS) for the package + // at the time that the SPDX file was created + DownloadLocation string `protobuf:"bytes,5,opt,name=download_location,json=downloadLocation,proto3" json:"download_location,omitempty"` + // Indicates whether the file content of this package has been available for + // or subjected to analysis when creating the SPDX document + Analyzed bool `protobuf:"varint,6,opt,name=analyzed,proto3" json:"analyzed,omitempty"` + // This field provides an independently reproducible mechanism identifying + // specific contents of a package based on the actual files (except the SPDX + // file itself, if it is included in the package) that make up each package + // and that correlates to the data in this SPDX file + VerificationCode string `protobuf:"bytes,7,opt,name=verification_code,json=verificationCode,proto3" json:"verification_code,omitempty"` + // Provide an independently reproducible mechanism that permits unique + // identification of a specific package that correlates to the data in this + // SPDX file + Checksum string `protobuf:"bytes,8,opt,name=checksum,proto3" json:"checksum,omitempty"` + // Provide a place for the SPDX file creator to record a web site that serves + // as the package's home page + HomePage string `protobuf:"bytes,9,opt,name=home_page,json=homePage,proto3" json:"home_page,omitempty"` + // Contain the license the SPDX file creator has concluded as governing the + // This field is to contain a list of all licenses found in the package. The + // relationship between licenses (i.e., conjunctive, disjunctive) is not + // specified in this field – it is simply a listing of all licenses found + FilesLicenseInfo []string `protobuf:"bytes,10,rep,name=files_license_info,json=filesLicenseInfo,proto3" json:"files_license_info,omitempty"` + // List the licenses that have been declared by the authors of the package + LicenseDeclared *License `protobuf:"bytes,11,opt,name=license_declared,json=licenseDeclared,proto3" json:"license_declared,omitempty"` + // Identify the copyright holders of the package, as well as any dates present + Copyright string `protobuf:"bytes,12,opt,name=copyright,proto3" json:"copyright,omitempty"` + // A short description of the package + SummaryDescription string `protobuf:"bytes,13,opt,name=summary_description,json=summaryDescription,proto3" json:"summary_description,omitempty"` + // A more detailed description of the package + DetailedDescription string `protobuf:"bytes,14,opt,name=detailed_description,json=detailedDescription,proto3" json:"detailed_description,omitempty"` + // ExternalRef + ExternalRefs []*PackageInfoNote_ExternalRef `protobuf:"bytes,15,rep,name=external_refs,json=externalRefs,proto3" json:"external_refs,omitempty"` + // A place for the SPDX data creator to record, at the package level, + // acknowledgements that may be needed to be communicated in some contexts + Attribution string `protobuf:"bytes,16,opt,name=attribution,proto3" json:"attribution,omitempty"` + // The type of package: OS, MAVEN, GO, GO_STDLIB, etc. + PackageType string `protobuf:"bytes,17,opt,name=package_type,json=packageType,proto3" json:"package_type,omitempty"` +} + +func (x *PackageInfoNote) Reset() { + *x = PackageInfoNote{} + if protoimpl.UnsafeEnabled { + mi := &file_spdx_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PackageInfoNote) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PackageInfoNote) ProtoMessage() {} + +func (x *PackageInfoNote) ProtoReflect() protoreflect.Message { + mi := &file_spdx_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 PackageInfoNote.ProtoReflect.Descriptor instead. +func (*PackageInfoNote) Descriptor() ([]byte, []int) { + return file_spdx_proto_rawDescGZIP(), []int{5} +} + +func (x *PackageInfoNote) GetTitle() string { + if x != nil { + return x.Title + } + return "" +} + +func (x *PackageInfoNote) GetVersion() string { + if x != nil { + return x.Version + } + return "" +} + +func (x *PackageInfoNote) GetSupplier() string { + if x != nil { + return x.Supplier + } + return "" +} + +func (x *PackageInfoNote) GetOriginator() string { + if x != nil { + return x.Originator + } + return "" +} + +func (x *PackageInfoNote) GetDownloadLocation() string { + if x != nil { + return x.DownloadLocation + } + return "" +} + +func (x *PackageInfoNote) GetAnalyzed() bool { + if x != nil { + return x.Analyzed + } + return false +} + +func (x *PackageInfoNote) GetVerificationCode() string { + if x != nil { + return x.VerificationCode + } + return "" +} + +func (x *PackageInfoNote) GetChecksum() string { + if x != nil { + return x.Checksum + } + return "" +} + +func (x *PackageInfoNote) GetHomePage() string { + if x != nil { + return x.HomePage + } + return "" +} + +func (x *PackageInfoNote) GetFilesLicenseInfo() []string { + if x != nil { + return x.FilesLicenseInfo + } + return nil +} + +func (x *PackageInfoNote) GetLicenseDeclared() *License { + if x != nil { + return x.LicenseDeclared + } + return nil +} + +func (x *PackageInfoNote) GetCopyright() string { + if x != nil { + return x.Copyright + } + return "" +} + +func (x *PackageInfoNote) GetSummaryDescription() string { + if x != nil { + return x.SummaryDescription + } + return "" +} + +func (x *PackageInfoNote) GetDetailedDescription() string { + if x != nil { + return x.DetailedDescription + } + return "" +} + +func (x *PackageInfoNote) GetExternalRefs() []*PackageInfoNote_ExternalRef { + if x != nil { + return x.ExternalRefs + } + return nil +} + +func (x *PackageInfoNote) GetAttribution() string { + if x != nil { + return x.Attribution + } + return "" +} + +func (x *PackageInfoNote) GetPackageType() string { + if x != nil { + return x.PackageType + } + return "" +} + +// PackageInfoOccurrence represents an SPDX Package Information +// section: https://spdx.github.io/spdx-spec/3-package-information/ +type PackageInfoOccurrence struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Uniquely identify any element in an SPDX document which may be referenced + // by other elements + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + // Provide the actual file name of the package, or path of the directory being + // treated as a package + Filename string `protobuf:"bytes,2,opt,name=filename,proto3" json:"filename,omitempty"` + // Provide a place for the SPDX file creator to record any relevant background + // information or additional comments about the origin of the package + SourceInfo string `protobuf:"bytes,3,opt,name=source_info,json=sourceInfo,proto3" json:"source_info,omitempty"` + // package or alternative values, if the governing license cannot be + // determined + LicenseConcluded *License `protobuf:"bytes,4,opt,name=license_concluded,json=licenseConcluded,proto3" json:"license_concluded,omitempty"` + // A place for the SPDX file creator to record any general + // comments about the package being described + Comment string `protobuf:"bytes,5,opt,name=comment,proto3" json:"comment,omitempty"` + // The type of package: OS, MAVEN, GO, GO_STDLIB, etc. + PackageType string `protobuf:"bytes,6,opt,name=package_type,json=packageType,proto3" json:"package_type,omitempty"` + // Identify the full name of the package as given by the Package Originator + Title string `protobuf:"bytes,7,opt,name=title,proto3" json:"title,omitempty"` + // Identify the version of the package + Version string `protobuf:"bytes,8,opt,name=version,proto3" json:"version,omitempty"` + // Provide a place for the SPDX file creator to record a web site that serves + // as the package's home page + HomePage string `protobuf:"bytes,9,opt,name=home_page,json=homePage,proto3" json:"home_page,omitempty"` + // A short description of the package + SummaryDescription string `protobuf:"bytes,10,opt,name=summary_description,json=summaryDescription,proto3" json:"summary_description,omitempty"` +} + +func (x *PackageInfoOccurrence) Reset() { + *x = PackageInfoOccurrence{} + if protoimpl.UnsafeEnabled { + mi := &file_spdx_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PackageInfoOccurrence) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PackageInfoOccurrence) ProtoMessage() {} + +func (x *PackageInfoOccurrence) ProtoReflect() protoreflect.Message { + mi := &file_spdx_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 PackageInfoOccurrence.ProtoReflect.Descriptor instead. +func (*PackageInfoOccurrence) Descriptor() ([]byte, []int) { + return file_spdx_proto_rawDescGZIP(), []int{6} +} + +func (x *PackageInfoOccurrence) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +func (x *PackageInfoOccurrence) GetFilename() string { + if x != nil { + return x.Filename + } + return "" +} + +func (x *PackageInfoOccurrence) GetSourceInfo() string { + if x != nil { + return x.SourceInfo + } + return "" +} + +func (x *PackageInfoOccurrence) GetLicenseConcluded() *License { + if x != nil { + return x.LicenseConcluded + } + return nil +} + +func (x *PackageInfoOccurrence) GetComment() string { + if x != nil { + return x.Comment + } + return "" +} + +func (x *PackageInfoOccurrence) GetPackageType() string { + if x != nil { + return x.PackageType + } + return "" +} + +func (x *PackageInfoOccurrence) GetTitle() string { + if x != nil { + return x.Title + } + return "" +} + +func (x *PackageInfoOccurrence) GetVersion() string { + if x != nil { + return x.Version + } + return "" +} + +func (x *PackageInfoOccurrence) GetHomePage() string { + if x != nil { + return x.HomePage + } + return "" +} + +func (x *PackageInfoOccurrence) GetSummaryDescription() string { + if x != nil { + return x.SummaryDescription + } + return "" +} + +// RelationshipNote represents an SPDX Relationship +// section: +// https://spdx.github.io/spdx-spec/7-relationships-between-SPDX-elements/ +type RelationshipNote struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The type of relationship between the source and target SPDX elements + Type RelationshipType `protobuf:"varint,1,opt,name=type,proto3,enum=grafeas.v1beta1.spdx.RelationshipType" json:"type,omitempty"` +} + +func (x *RelationshipNote) Reset() { + *x = RelationshipNote{} + if protoimpl.UnsafeEnabled { + mi := &file_spdx_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *RelationshipNote) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*RelationshipNote) ProtoMessage() {} + +func (x *RelationshipNote) ProtoReflect() protoreflect.Message { + mi := &file_spdx_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 RelationshipNote.ProtoReflect.Descriptor instead. +func (*RelationshipNote) Descriptor() ([]byte, []int) { + return file_spdx_proto_rawDescGZIP(), []int{7} +} + +func (x *RelationshipNote) GetType() RelationshipType { + if x != nil { + return x.Type + } + return RelationshipType_RELATIONSHIP_TYPE_UNSPECIFIED +} + +// RelationshipOccurrence represents an SPDX Relationship +// section: +// https://spdx.github.io/spdx-spec/7-relationships-between-SPDX-elements/ +type RelationshipOccurrence struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Also referred to as SPDXRef-A + // The source SPDX element (file, package, etc) + Source string `protobuf:"bytes,1,opt,name=source,proto3" json:"source,omitempty"` + // Also referred to as SPDXRef-B + // The target SPDC element (file, package, etc) + // In cases where there are "known unknowns", the use of the keyword + // NOASSERTION can be used The keywords NONE can be used to indicate that an + // SPDX element (package/file/snippet) has no other elements connected by + // some relationship to it + Target string `protobuf:"bytes,2,opt,name=target,proto3" json:"target,omitempty"` + // The type of relationship between the source and target SPDX elements + Type RelationshipType `protobuf:"varint,3,opt,name=type,proto3,enum=grafeas.v1beta1.spdx.RelationshipType" json:"type,omitempty"` + // A place for the SPDX file creator to record any general comments about + // the relationship + Comment string `protobuf:"bytes,4,opt,name=comment,proto3" json:"comment,omitempty"` +} + +func (x *RelationshipOccurrence) Reset() { + *x = RelationshipOccurrence{} + if protoimpl.UnsafeEnabled { + mi := &file_spdx_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *RelationshipOccurrence) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*RelationshipOccurrence) ProtoMessage() {} + +func (x *RelationshipOccurrence) ProtoReflect() protoreflect.Message { + mi := &file_spdx_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 RelationshipOccurrence.ProtoReflect.Descriptor instead. +func (*RelationshipOccurrence) Descriptor() ([]byte, []int) { + return file_spdx_proto_rawDescGZIP(), []int{8} +} + +func (x *RelationshipOccurrence) GetSource() string { + if x != nil { + return x.Source + } + return "" +} + +func (x *RelationshipOccurrence) GetTarget() string { + if x != nil { + return x.Target + } + return "" +} + +func (x *RelationshipOccurrence) GetType() RelationshipType { + if x != nil { + return x.Type + } + return RelationshipType_RELATIONSHIP_TYPE_UNSPECIFIED +} + +func (x *RelationshipOccurrence) GetComment() string { + if x != nil { + return x.Comment + } + return "" +} + +// An External Reference allows a Package to reference an external source of +// additional information, metadata, enumerations, asset identifiers, or +// downloadable content believed to be relevant to the Package +type PackageInfoNote_ExternalRef struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // An External Reference allows a Package to reference an external source of + // additional information, metadata, enumerations, asset identifiers, or + // downloadable content believed to be relevant to the Package + Category PackageInfoNote_ExternalRef_Category `protobuf:"varint,1,opt,name=category,proto3,enum=grafeas.v1beta1.spdx.PackageInfoNote_ExternalRef_Category" json:"category,omitempty"` + // Type of category (e.g. 'npm' for the PACKAGE_MANAGER category) + Type string `protobuf:"bytes,2,opt,name=type,proto3" json:"type,omitempty"` + // The unique string with no spaces necessary to access the package-specific + // information, metadata, or content within the target location + Locator string `protobuf:"bytes,3,opt,name=locator,proto3" json:"locator,omitempty"` + // Human-readable information about the purpose and target of the reference + Comment string `protobuf:"bytes,4,opt,name=comment,proto3" json:"comment,omitempty"` +} + +func (x *PackageInfoNote_ExternalRef) Reset() { + *x = PackageInfoNote_ExternalRef{} + if protoimpl.UnsafeEnabled { + mi := &file_spdx_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PackageInfoNote_ExternalRef) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PackageInfoNote_ExternalRef) ProtoMessage() {} + +func (x *PackageInfoNote_ExternalRef) ProtoReflect() protoreflect.Message { + mi := &file_spdx_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 PackageInfoNote_ExternalRef.ProtoReflect.Descriptor instead. +func (*PackageInfoNote_ExternalRef) Descriptor() ([]byte, []int) { + return file_spdx_proto_rawDescGZIP(), []int{5, 0} +} + +func (x *PackageInfoNote_ExternalRef) GetCategory() PackageInfoNote_ExternalRef_Category { + if x != nil { + return x.Category + } + return PackageInfoNote_ExternalRef_CATEGORY_UNSPECIFIED +} + +func (x *PackageInfoNote_ExternalRef) GetType() string { + if x != nil { + return x.Type + } + return "" +} + +func (x *PackageInfoNote_ExternalRef) GetLocator() string { + if x != nil { + return x.Locator + } + return "" +} + +func (x *PackageInfoNote_ExternalRef) GetComment() string { + if x != nil { + return x.Comment + } + return "" +} + +var File_spdx_proto protoreflect.FileDescriptor + +var file_spdx_proto_rawDesc = []byte{ + 0x0a, 0x0a, 0x73, 0x70, 0x64, 0x78, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x14, 0x67, 0x72, + 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x73, 0x70, + 0x64, 0x78, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x66, + 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x62, 0x65, 0x68, 0x61, 0x76, 0x69, 0x6f, 0x72, 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, 0x54, 0x0a, 0x0c, 0x44, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, + 0x4e, 0x6f, 0x74, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x70, 0x64, 0x78, 0x5f, 0x76, 0x65, 0x72, + 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x73, 0x70, 0x64, 0x78, + 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x21, 0x0a, 0x0c, 0x64, 0x61, 0x74, 0x61, 0x5f, + 0x6c, 0x69, 0x63, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, + 0x61, 0x74, 0x61, 0x4c, 0x69, 0x63, 0x65, 0x6e, 0x63, 0x65, 0x22, 0xed, 0x02, 0x0a, 0x12, 0x44, + 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x4f, 0x63, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, + 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, + 0x64, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, + 0x70, 0x61, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, + 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x34, 0x0a, 0x16, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, + 0x6c, 0x5f, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x72, 0x65, 0x66, 0x73, 0x18, + 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x14, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x44, + 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x66, 0x73, 0x12, 0x30, 0x0a, 0x14, 0x6c, + 0x69, 0x63, 0x65, 0x6e, 0x73, 0x65, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x5f, 0x76, 0x65, 0x72, 0x73, + 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x6c, 0x69, 0x63, 0x65, 0x6e, + 0x73, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1a, 0x0a, + 0x08, 0x63, 0x72, 0x65, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x09, 0x52, + 0x08, 0x63, 0x72, 0x65, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x12, 0x3b, 0x0a, 0x0b, 0x63, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 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, 0x0a, 0x63, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x27, 0x0a, 0x0f, 0x63, 0x72, 0x65, 0x61, 0x74, 0x6f, + 0x72, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0e, 0x63, 0x72, 0x65, 0x61, 0x74, 0x6f, 0x72, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x12, + 0x29, 0x0a, 0x10, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, + 0x65, 0x6e, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x64, 0x6f, 0x63, 0x75, 0x6d, + 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x22, 0xb3, 0x02, 0x0a, 0x08, 0x46, + 0x69, 0x6c, 0x65, 0x4e, 0x6f, 0x74, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x44, 0x0a, + 0x09, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, + 0x32, 0x27, 0x2e, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, + 0x61, 0x31, 0x2e, 0x73, 0x70, 0x64, 0x78, 0x2e, 0x46, 0x69, 0x6c, 0x65, 0x4e, 0x6f, 0x74, 0x65, + 0x2e, 0x46, 0x69, 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, 0x52, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x54, + 0x79, 0x70, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x18, + 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x22, + 0xae, 0x01, 0x0a, 0x08, 0x46, 0x69, 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x19, 0x0a, 0x15, + 0x46, 0x49, 0x4c, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, + 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x53, 0x4f, 0x55, 0x52, 0x43, + 0x45, 0x10, 0x01, 0x12, 0x0a, 0x0a, 0x06, 0x42, 0x49, 0x4e, 0x41, 0x52, 0x59, 0x10, 0x02, 0x12, + 0x0b, 0x0a, 0x07, 0x41, 0x52, 0x43, 0x48, 0x49, 0x56, 0x45, 0x10, 0x03, 0x12, 0x0f, 0x0a, 0x0b, + 0x41, 0x50, 0x50, 0x4c, 0x49, 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x04, 0x12, 0x09, 0x0a, + 0x05, 0x41, 0x55, 0x44, 0x49, 0x4f, 0x10, 0x05, 0x12, 0x09, 0x0a, 0x05, 0x49, 0x4d, 0x41, 0x47, + 0x45, 0x10, 0x06, 0x12, 0x08, 0x0a, 0x04, 0x54, 0x45, 0x58, 0x54, 0x10, 0x07, 0x12, 0x09, 0x0a, + 0x05, 0x56, 0x49, 0x44, 0x45, 0x4f, 0x10, 0x08, 0x12, 0x11, 0x0a, 0x0d, 0x44, 0x4f, 0x43, 0x55, + 0x4d, 0x45, 0x4e, 0x54, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x09, 0x12, 0x08, 0x0a, 0x04, 0x53, + 0x50, 0x44, 0x58, 0x10, 0x0a, 0x12, 0x09, 0x0a, 0x05, 0x4f, 0x54, 0x48, 0x45, 0x52, 0x10, 0x0b, + 0x22, 0xb2, 0x02, 0x0a, 0x0e, 0x46, 0x69, 0x6c, 0x65, 0x4f, 0x63, 0x63, 0x75, 0x72, 0x72, 0x65, + 0x6e, 0x63, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x02, 0x69, 0x64, 0x12, 0x4a, 0x0a, 0x11, 0x6c, 0x69, 0x63, 0x65, 0x6e, 0x73, 0x65, 0x5f, 0x63, + 0x6f, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, + 0x2e, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, + 0x2e, 0x73, 0x70, 0x64, 0x78, 0x2e, 0x4c, 0x69, 0x63, 0x65, 0x6e, 0x73, 0x65, 0x52, 0x10, 0x6c, + 0x69, 0x63, 0x65, 0x6e, 0x73, 0x65, 0x43, 0x6f, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x64, 0x12, + 0x2c, 0x0a, 0x12, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x5f, 0x6c, 0x69, 0x63, 0x65, 0x6e, 0x73, 0x65, + 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x10, 0x66, 0x69, 0x6c, + 0x65, 0x73, 0x4c, 0x69, 0x63, 0x65, 0x6e, 0x73, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1c, 0x0a, + 0x09, 0x63, 0x6f, 0x70, 0x79, 0x72, 0x69, 0x67, 0x68, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x09, 0x63, 0x6f, 0x70, 0x79, 0x72, 0x69, 0x67, 0x68, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x63, + 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, + 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x6e, 0x6f, 0x74, 0x69, 0x63, 0x65, 0x18, + 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6e, 0x6f, 0x74, 0x69, 0x63, 0x65, 0x12, 0x22, 0x0a, + 0x0c, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x6f, 0x72, 0x73, 0x18, 0x07, 0x20, + 0x03, 0x28, 0x09, 0x52, 0x0c, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x6f, 0x72, + 0x73, 0x12, 0x22, 0x0a, 0x0c, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0c, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x45, 0x0a, 0x07, 0x4c, 0x69, 0x63, 0x65, 0x6e, 0x73, 0x65, + 0x12, 0x1e, 0x0a, 0x0a, 0x65, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x65, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, + 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x08, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x22, 0xda, 0x07, 0x0a, + 0x0f, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x4e, 0x6f, 0x74, 0x65, + 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x05, 0x74, 0x69, 0x74, 0x6c, 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, 0x1a, 0x0a, 0x08, 0x73, 0x75, 0x70, 0x70, 0x6c, 0x69, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x08, 0x73, 0x75, 0x70, 0x70, 0x6c, 0x69, 0x65, 0x72, 0x12, 0x1e, 0x0a, 0x0a, + 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0a, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x2b, 0x0a, 0x11, + 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, + 0x64, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x61, 0x6e, 0x61, + 0x6c, 0x79, 0x7a, 0x65, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x61, 0x6e, 0x61, + 0x6c, 0x79, 0x7a, 0x65, 0x64, 0x12, 0x2b, 0x0a, 0x11, 0x76, 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x10, 0x76, 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, + 0x64, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x18, 0x08, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x12, 0x1b, + 0x0a, 0x09, 0x68, 0x6f, 0x6d, 0x65, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x08, 0x68, 0x6f, 0x6d, 0x65, 0x50, 0x61, 0x67, 0x65, 0x12, 0x2c, 0x0a, 0x12, 0x66, + 0x69, 0x6c, 0x65, 0x73, 0x5f, 0x6c, 0x69, 0x63, 0x65, 0x6e, 0x73, 0x65, 0x5f, 0x69, 0x6e, 0x66, + 0x6f, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x09, 0x52, 0x10, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x4c, 0x69, + 0x63, 0x65, 0x6e, 0x73, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x48, 0x0a, 0x10, 0x6c, 0x69, 0x63, + 0x65, 0x6e, 0x73, 0x65, 0x5f, 0x64, 0x65, 0x63, 0x6c, 0x61, 0x72, 0x65, 0x64, 0x18, 0x0b, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, 0x76, 0x31, + 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x73, 0x70, 0x64, 0x78, 0x2e, 0x4c, 0x69, 0x63, 0x65, 0x6e, + 0x73, 0x65, 0x52, 0x0f, 0x6c, 0x69, 0x63, 0x65, 0x6e, 0x73, 0x65, 0x44, 0x65, 0x63, 0x6c, 0x61, + 0x72, 0x65, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x6f, 0x70, 0x79, 0x72, 0x69, 0x67, 0x68, 0x74, + 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6f, 0x70, 0x79, 0x72, 0x69, 0x67, 0x68, + 0x74, 0x12, 0x2f, 0x0a, 0x13, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x5f, 0x64, 0x65, 0x73, + 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, + 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x12, 0x31, 0x0a, 0x14, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x5f, 0x64, + 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x13, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x56, 0x0a, 0x0d, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, + 0x6c, 0x5f, 0x72, 0x65, 0x66, 0x73, 0x18, 0x0f, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x67, + 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x73, + 0x70, 0x64, 0x78, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x4e, + 0x6f, 0x74, 0x65, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x52, 0x65, 0x66, 0x52, + 0x0c, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x52, 0x65, 0x66, 0x73, 0x12, 0x20, 0x0a, + 0x0b, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x10, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0b, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x12, + 0x21, 0x0a, 0x0c, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, + 0x11, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x54, 0x79, + 0x70, 0x65, 0x1a, 0x94, 0x02, 0x0a, 0x0b, 0x45, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x52, + 0x65, 0x66, 0x12, 0x56, 0x0a, 0x08, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0e, 0x32, 0x3a, 0x2e, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, 0x76, + 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x73, 0x70, 0x64, 0x78, 0x2e, 0x50, 0x61, 0x63, 0x6b, + 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x4e, 0x6f, 0x74, 0x65, 0x2e, 0x45, 0x78, 0x74, 0x65, + 0x72, 0x6e, 0x61, 0x6c, 0x52, 0x65, 0x66, 0x2e, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, + 0x52, 0x08, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, + 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x18, + 0x0a, 0x07, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x07, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6d, 0x6d, + 0x65, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x65, + 0x6e, 0x74, 0x22, 0x65, 0x0a, 0x08, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x12, 0x18, + 0x0a, 0x14, 0x43, 0x41, 0x54, 0x45, 0x47, 0x4f, 0x52, 0x59, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, + 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0c, 0x0a, 0x08, 0x53, 0x45, 0x43, 0x55, + 0x52, 0x49, 0x54, 0x59, 0x10, 0x01, 0x12, 0x13, 0x0a, 0x0f, 0x50, 0x41, 0x43, 0x4b, 0x41, 0x47, + 0x45, 0x5f, 0x4d, 0x41, 0x4e, 0x41, 0x47, 0x45, 0x52, 0x10, 0x02, 0x12, 0x11, 0x0a, 0x0d, 0x50, + 0x45, 0x52, 0x53, 0x49, 0x53, 0x54, 0x45, 0x4e, 0x54, 0x5f, 0x49, 0x44, 0x10, 0x03, 0x12, 0x09, + 0x0a, 0x05, 0x4f, 0x54, 0x48, 0x45, 0x52, 0x10, 0x04, 0x22, 0x84, 0x03, 0x0a, 0x15, 0x50, 0x61, + 0x63, 0x6b, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x4f, 0x63, 0x63, 0x75, 0x72, 0x72, 0x65, + 0x6e, 0x63, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x02, 0x69, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x12, + 0x1f, 0x0a, 0x0b, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x49, 0x6e, 0x66, 0x6f, + 0x12, 0x4a, 0x0a, 0x11, 0x6c, 0x69, 0x63, 0x65, 0x6e, 0x73, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x63, + 0x6c, 0x75, 0x64, 0x65, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x67, 0x72, + 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x73, 0x70, + 0x64, 0x78, 0x2e, 0x4c, 0x69, 0x63, 0x65, 0x6e, 0x73, 0x65, 0x52, 0x10, 0x6c, 0x69, 0x63, 0x65, + 0x6e, 0x73, 0x65, 0x43, 0x6f, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x64, 0x12, 0x18, 0x0a, 0x07, + 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, + 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x26, 0x0a, 0x0c, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, + 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, + 0x03, 0x52, 0x0b, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x19, + 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, + 0x41, 0x03, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x1d, 0x0a, 0x07, 0x76, 0x65, 0x72, + 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, + 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x20, 0x0a, 0x09, 0x68, 0x6f, 0x6d, 0x65, + 0x5f, 0x70, 0x61, 0x67, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x03, + 0x52, 0x08, 0x68, 0x6f, 0x6d, 0x65, 0x50, 0x61, 0x67, 0x65, 0x12, 0x34, 0x0a, 0x13, 0x73, 0x75, + 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x5f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x12, 0x73, 0x75, + 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x22, 0x4e, 0x0a, 0x10, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x68, 0x69, 0x70, + 0x4e, 0x6f, 0x74, 0x65, 0x12, 0x3a, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0e, 0x32, 0x26, 0x2e, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, 0x76, 0x31, 0x62, + 0x65, 0x74, 0x61, 0x31, 0x2e, 0x73, 0x70, 0x64, 0x78, 0x2e, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x68, 0x69, 0x70, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, + 0x22, 0xa3, 0x01, 0x0a, 0x16, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x68, 0x69, + 0x70, 0x4f, 0x63, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x65, 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, 0x16, 0x0a, 0x06, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x12, 0x3f, 0x0a, 0x04, 0x74, + 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x26, 0x2e, 0x67, 0x72, 0x61, 0x66, + 0x65, 0x61, 0x73, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x73, 0x70, 0x64, 0x78, + 0x2e, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x68, 0x69, 0x70, 0x54, 0x79, 0x70, + 0x65, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x18, 0x0a, 0x07, + 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, + 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x2a, 0xf0, 0x06, 0x0a, 0x10, 0x52, 0x65, 0x6c, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x68, 0x69, 0x70, 0x54, 0x79, 0x70, 0x65, 0x12, 0x21, 0x0a, 0x1d, 0x52, + 0x45, 0x4c, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x53, 0x48, 0x49, 0x50, 0x5f, 0x54, 0x59, 0x50, 0x45, + 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0d, + 0x0a, 0x09, 0x44, 0x45, 0x53, 0x43, 0x52, 0x49, 0x42, 0x45, 0x53, 0x10, 0x01, 0x12, 0x10, 0x0a, + 0x0c, 0x44, 0x45, 0x53, 0x43, 0x52, 0x49, 0x42, 0x45, 0x44, 0x5f, 0x42, 0x59, 0x10, 0x02, 0x12, + 0x0c, 0x0a, 0x08, 0x43, 0x4f, 0x4e, 0x54, 0x41, 0x49, 0x4e, 0x53, 0x10, 0x03, 0x12, 0x10, 0x0a, + 0x0c, 0x43, 0x4f, 0x4e, 0x54, 0x41, 0x49, 0x4e, 0x45, 0x44, 0x5f, 0x42, 0x59, 0x10, 0x04, 0x12, + 0x0e, 0x0a, 0x0a, 0x44, 0x45, 0x50, 0x45, 0x4e, 0x44, 0x53, 0x5f, 0x4f, 0x4e, 0x10, 0x05, 0x12, + 0x11, 0x0a, 0x0d, 0x44, 0x45, 0x50, 0x45, 0x4e, 0x44, 0x45, 0x4e, 0x43, 0x59, 0x5f, 0x4f, 0x46, + 0x10, 0x06, 0x12, 0x1a, 0x0a, 0x16, 0x44, 0x45, 0x50, 0x45, 0x4e, 0x44, 0x45, 0x4e, 0x43, 0x59, + 0x5f, 0x4d, 0x41, 0x4e, 0x49, 0x46, 0x45, 0x53, 0x54, 0x5f, 0x4f, 0x46, 0x10, 0x07, 0x12, 0x17, + 0x0a, 0x13, 0x42, 0x55, 0x49, 0x4c, 0x44, 0x5f, 0x44, 0x45, 0x50, 0x45, 0x4e, 0x44, 0x45, 0x4e, + 0x43, 0x59, 0x5f, 0x4f, 0x46, 0x10, 0x08, 0x12, 0x15, 0x0a, 0x11, 0x44, 0x45, 0x56, 0x5f, 0x44, + 0x45, 0x50, 0x45, 0x4e, 0x44, 0x45, 0x4e, 0x43, 0x59, 0x5f, 0x4f, 0x46, 0x10, 0x09, 0x12, 0x1a, + 0x0a, 0x16, 0x4f, 0x50, 0x54, 0x49, 0x4f, 0x4e, 0x41, 0x4c, 0x5f, 0x44, 0x45, 0x50, 0x45, 0x4e, + 0x44, 0x45, 0x4e, 0x43, 0x59, 0x5f, 0x4f, 0x46, 0x10, 0x0a, 0x12, 0x1a, 0x0a, 0x16, 0x50, 0x52, + 0x4f, 0x56, 0x49, 0x44, 0x45, 0x44, 0x5f, 0x44, 0x45, 0x50, 0x45, 0x4e, 0x44, 0x45, 0x4e, 0x43, + 0x59, 0x5f, 0x4f, 0x46, 0x10, 0x0b, 0x12, 0x16, 0x0a, 0x12, 0x54, 0x45, 0x53, 0x54, 0x5f, 0x44, + 0x45, 0x50, 0x45, 0x4e, 0x44, 0x45, 0x4e, 0x43, 0x59, 0x5f, 0x4f, 0x46, 0x10, 0x0c, 0x12, 0x19, + 0x0a, 0x15, 0x52, 0x55, 0x4e, 0x54, 0x49, 0x4d, 0x45, 0x5f, 0x44, 0x45, 0x50, 0x45, 0x4e, 0x44, + 0x45, 0x4e, 0x43, 0x59, 0x5f, 0x4f, 0x46, 0x10, 0x0d, 0x12, 0x0e, 0x0a, 0x0a, 0x45, 0x58, 0x41, + 0x4d, 0x50, 0x4c, 0x45, 0x5f, 0x4f, 0x46, 0x10, 0x0e, 0x12, 0x0d, 0x0a, 0x09, 0x47, 0x45, 0x4e, + 0x45, 0x52, 0x41, 0x54, 0x45, 0x53, 0x10, 0x0f, 0x12, 0x12, 0x0a, 0x0e, 0x47, 0x45, 0x4e, 0x45, + 0x52, 0x41, 0x54, 0x45, 0x44, 0x5f, 0x46, 0x52, 0x4f, 0x4d, 0x10, 0x10, 0x12, 0x0f, 0x0a, 0x0b, + 0x41, 0x4e, 0x43, 0x45, 0x53, 0x54, 0x4f, 0x52, 0x5f, 0x4f, 0x46, 0x10, 0x11, 0x12, 0x11, 0x0a, + 0x0d, 0x44, 0x45, 0x53, 0x43, 0x45, 0x4e, 0x44, 0x41, 0x4e, 0x54, 0x5f, 0x4f, 0x46, 0x10, 0x12, + 0x12, 0x0e, 0x0a, 0x0a, 0x56, 0x41, 0x52, 0x49, 0x41, 0x4e, 0x54, 0x5f, 0x4f, 0x46, 0x10, 0x13, + 0x12, 0x19, 0x0a, 0x15, 0x44, 0x49, 0x53, 0x54, 0x52, 0x49, 0x42, 0x55, 0x54, 0x49, 0x4f, 0x4e, + 0x5f, 0x41, 0x52, 0x54, 0x49, 0x46, 0x41, 0x43, 0x54, 0x10, 0x14, 0x12, 0x0d, 0x0a, 0x09, 0x50, + 0x41, 0x54, 0x43, 0x48, 0x5f, 0x46, 0x4f, 0x52, 0x10, 0x15, 0x12, 0x11, 0x0a, 0x0d, 0x50, 0x41, + 0x54, 0x43, 0x48, 0x5f, 0x41, 0x50, 0x50, 0x4c, 0x49, 0x45, 0x44, 0x10, 0x16, 0x12, 0x0b, 0x0a, + 0x07, 0x43, 0x4f, 0x50, 0x59, 0x5f, 0x4f, 0x46, 0x10, 0x17, 0x12, 0x0e, 0x0a, 0x0a, 0x46, 0x49, + 0x4c, 0x45, 0x5f, 0x41, 0x44, 0x44, 0x45, 0x44, 0x10, 0x18, 0x12, 0x10, 0x0a, 0x0c, 0x46, 0x49, + 0x4c, 0x45, 0x5f, 0x44, 0x45, 0x4c, 0x45, 0x54, 0x45, 0x44, 0x10, 0x19, 0x12, 0x11, 0x0a, 0x0d, + 0x46, 0x49, 0x4c, 0x45, 0x5f, 0x4d, 0x4f, 0x44, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x1a, 0x12, + 0x19, 0x0a, 0x15, 0x45, 0x58, 0x50, 0x41, 0x4e, 0x44, 0x45, 0x44, 0x5f, 0x46, 0x52, 0x4f, 0x4d, + 0x5f, 0x41, 0x52, 0x43, 0x48, 0x49, 0x56, 0x45, 0x10, 0x1b, 0x12, 0x10, 0x0a, 0x0c, 0x44, 0x59, + 0x4e, 0x41, 0x4d, 0x49, 0x43, 0x5f, 0x4c, 0x49, 0x4e, 0x4b, 0x10, 0x1c, 0x12, 0x0f, 0x0a, 0x0b, + 0x53, 0x54, 0x41, 0x54, 0x49, 0x43, 0x5f, 0x4c, 0x49, 0x4e, 0x4b, 0x10, 0x1d, 0x12, 0x10, 0x0a, + 0x0c, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x46, 0x49, 0x4c, 0x45, 0x5f, 0x4f, 0x46, 0x10, 0x1e, 0x12, + 0x10, 0x0a, 0x0c, 0x54, 0x45, 0x53, 0x54, 0x5f, 0x43, 0x41, 0x53, 0x45, 0x5f, 0x4f, 0x46, 0x10, + 0x1f, 0x12, 0x11, 0x0a, 0x0d, 0x42, 0x55, 0x49, 0x4c, 0x44, 0x5f, 0x54, 0x4f, 0x4f, 0x4c, 0x5f, + 0x4f, 0x46, 0x10, 0x20, 0x12, 0x0f, 0x0a, 0x0b, 0x44, 0x45, 0x56, 0x5f, 0x54, 0x4f, 0x4f, 0x4c, + 0x5f, 0x4f, 0x46, 0x10, 0x21, 0x12, 0x0b, 0x0a, 0x07, 0x54, 0x45, 0x53, 0x54, 0x5f, 0x4f, 0x46, + 0x10, 0x22, 0x12, 0x10, 0x0a, 0x0c, 0x54, 0x45, 0x53, 0x54, 0x5f, 0x54, 0x4f, 0x4f, 0x4c, 0x5f, + 0x4f, 0x46, 0x10, 0x23, 0x12, 0x14, 0x0a, 0x10, 0x44, 0x4f, 0x43, 0x55, 0x4d, 0x45, 0x4e, 0x54, + 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x4f, 0x46, 0x10, 0x24, 0x12, 0x19, 0x0a, 0x15, 0x4f, 0x50, + 0x54, 0x49, 0x4f, 0x4e, 0x41, 0x4c, 0x5f, 0x43, 0x4f, 0x4d, 0x50, 0x4f, 0x4e, 0x45, 0x4e, 0x54, + 0x5f, 0x4f, 0x46, 0x10, 0x25, 0x12, 0x0f, 0x0a, 0x0b, 0x4d, 0x45, 0x54, 0x41, 0x46, 0x49, 0x4c, + 0x45, 0x5f, 0x4f, 0x46, 0x10, 0x26, 0x12, 0x0e, 0x0a, 0x0a, 0x50, 0x41, 0x43, 0x4b, 0x41, 0x47, + 0x45, 0x5f, 0x4f, 0x46, 0x10, 0x27, 0x12, 0x0a, 0x0a, 0x06, 0x41, 0x4d, 0x45, 0x4e, 0x44, 0x53, + 0x10, 0x28, 0x12, 0x14, 0x0a, 0x10, 0x50, 0x52, 0x45, 0x52, 0x45, 0x51, 0x55, 0x49, 0x53, 0x49, + 0x54, 0x45, 0x5f, 0x46, 0x4f, 0x52, 0x10, 0x29, 0x12, 0x14, 0x0a, 0x10, 0x48, 0x41, 0x53, 0x5f, + 0x50, 0x52, 0x45, 0x52, 0x45, 0x51, 0x55, 0x49, 0x53, 0x49, 0x54, 0x45, 0x10, 0x2a, 0x12, 0x09, + 0x0a, 0x05, 0x4f, 0x54, 0x48, 0x45, 0x52, 0x10, 0x2b, 0x42, 0x59, 0x0a, 0x17, 0x69, 0x6f, 0x2e, + 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, + 0x73, 0x70, 0x64, 0x78, 0x50, 0x01, 0x5a, 0x36, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, + 0x6f, 0x6d, 0x2f, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x2f, 0x67, 0x72, 0x61, 0x66, 0x65, + 0x61, 0x73, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, + 0x2f, 0x73, 0x70, 0x64, 0x78, 0x5f, 0x67, 0x6f, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0xa2, 0x02, + 0x03, 0x47, 0x52, 0x41, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +} + +var ( + file_spdx_proto_rawDescOnce sync.Once + file_spdx_proto_rawDescData = file_spdx_proto_rawDesc +) + +func file_spdx_proto_rawDescGZIP() []byte { + file_spdx_proto_rawDescOnce.Do(func() { + file_spdx_proto_rawDescData = protoimpl.X.CompressGZIP(file_spdx_proto_rawDescData) + }) + return file_spdx_proto_rawDescData +} + +var file_spdx_proto_enumTypes = make([]protoimpl.EnumInfo, 3) +var file_spdx_proto_msgTypes = make([]protoimpl.MessageInfo, 10) +var file_spdx_proto_goTypes = []interface{}{ + (RelationshipType)(0), // 0: grafeas.v1beta1.spdx.RelationshipType + (FileNote_FileType)(0), // 1: grafeas.v1beta1.spdx.FileNote.FileType + (PackageInfoNote_ExternalRef_Category)(0), // 2: grafeas.v1beta1.spdx.PackageInfoNote.ExternalRef.Category + (*DocumentNote)(nil), // 3: grafeas.v1beta1.spdx.DocumentNote + (*DocumentOccurrence)(nil), // 4: grafeas.v1beta1.spdx.DocumentOccurrence + (*FileNote)(nil), // 5: grafeas.v1beta1.spdx.FileNote + (*FileOccurrence)(nil), // 6: grafeas.v1beta1.spdx.FileOccurrence + (*License)(nil), // 7: grafeas.v1beta1.spdx.License + (*PackageInfoNote)(nil), // 8: grafeas.v1beta1.spdx.PackageInfoNote + (*PackageInfoOccurrence)(nil), // 9: grafeas.v1beta1.spdx.PackageInfoOccurrence + (*RelationshipNote)(nil), // 10: grafeas.v1beta1.spdx.RelationshipNote + (*RelationshipOccurrence)(nil), // 11: grafeas.v1beta1.spdx.RelationshipOccurrence + (*PackageInfoNote_ExternalRef)(nil), // 12: grafeas.v1beta1.spdx.PackageInfoNote.ExternalRef + (*timestamp.Timestamp)(nil), // 13: google.protobuf.Timestamp +} +var file_spdx_proto_depIdxs = []int32{ + 13, // 0: grafeas.v1beta1.spdx.DocumentOccurrence.create_time:type_name -> google.protobuf.Timestamp + 1, // 1: grafeas.v1beta1.spdx.FileNote.file_type:type_name -> grafeas.v1beta1.spdx.FileNote.FileType + 7, // 2: grafeas.v1beta1.spdx.FileOccurrence.license_concluded:type_name -> grafeas.v1beta1.spdx.License + 7, // 3: grafeas.v1beta1.spdx.PackageInfoNote.license_declared:type_name -> grafeas.v1beta1.spdx.License + 12, // 4: grafeas.v1beta1.spdx.PackageInfoNote.external_refs:type_name -> grafeas.v1beta1.spdx.PackageInfoNote.ExternalRef + 7, // 5: grafeas.v1beta1.spdx.PackageInfoOccurrence.license_concluded:type_name -> grafeas.v1beta1.spdx.License + 0, // 6: grafeas.v1beta1.spdx.RelationshipNote.type:type_name -> grafeas.v1beta1.spdx.RelationshipType + 0, // 7: grafeas.v1beta1.spdx.RelationshipOccurrence.type:type_name -> grafeas.v1beta1.spdx.RelationshipType + 2, // 8: grafeas.v1beta1.spdx.PackageInfoNote.ExternalRef.category:type_name -> grafeas.v1beta1.spdx.PackageInfoNote.ExternalRef.Category + 9, // [9:9] is the sub-list for method output_type + 9, // [9:9] 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_spdx_proto_init() } +func file_spdx_proto_init() { + if File_spdx_proto != nil { + return + } + if !protoimpl.UnsafeEnabled { + file_spdx_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DocumentNote); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_spdx_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DocumentOccurrence); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_spdx_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*FileNote); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_spdx_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*FileOccurrence); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_spdx_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*License); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_spdx_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PackageInfoNote); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_spdx_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PackageInfoOccurrence); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_spdx_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*RelationshipNote); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_spdx_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*RelationshipOccurrence); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_spdx_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PackageInfoNote_ExternalRef); 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_spdx_proto_rawDesc, + NumEnums: 3, + NumMessages: 10, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_spdx_proto_goTypes, + DependencyIndexes: file_spdx_proto_depIdxs, + EnumInfos: file_spdx_proto_enumTypes, + MessageInfos: file_spdx_proto_msgTypes, + }.Build() + File_spdx_proto = out.File + file_spdx_proto_rawDesc = nil + file_spdx_proto_goTypes = nil + file_spdx_proto_depIdxs = nil +} diff --git a/proto/v1beta1/swagger/discovery.swagger.json b/proto/v1beta1/swagger/discovery.swagger.json index 156fd2ee..9c1dd828 100644 --- a/proto/v1beta1/swagger/discovery.swagger.json +++ b/proto/v1beta1/swagger/discovery.swagger.json @@ -25,7 +25,7 @@ "description": "Must be a valid serialized protocol buffer of the above specified type." } }, - "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n Foo foo = ...;\n Any any;\n any.PackFrom(foo);\n ...\n if (any.UnpackTo(\u0026foo)) {\n ...\n }\n\nExample 2: Pack and unpack a message in Java.\n\n Foo foo = ...;\n Any any = Any.pack(foo);\n ...\n if (any.is(Foo.class)) {\n foo = any.unpack(Foo.class);\n }\n\n Example 3: Pack and unpack a message in Python.\n\n foo = Foo(...)\n any = Any()\n any.Pack(foo)\n ...\n if any.Is(Foo.DESCRIPTOR):\n any.Unpack(foo)\n ...\n\n Example 4: Pack and unpack a message in Go\n\n foo := \u0026pb.Foo{...}\n any, err := anypb.New(foo)\n if err != nil {\n ...\n }\n ...\n foo := \u0026pb.Foo{}\n if err := any.UnmarshalTo(foo); err != nil {\n ...\n }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n package google.profile;\n message Person {\n string first_name = 1;\n string last_name = 2;\n }\n\n {\n \"@type\": \"type.googleapis.com/google.profile.Person\",\n \"firstName\": \u003cstring\u003e,\n \"lastName\": \u003cstring\u003e\n }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n {\n \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n \"value\": \"1.212s\"\n }" + "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n Foo foo = ...;\n Any any;\n any.PackFrom(foo);\n ...\n if (any.UnpackTo(\u0026foo)) {\n ...\n }\n\nExample 2: Pack and unpack a message in Java.\n\n Foo foo = ...;\n Any any = Any.pack(foo);\n ...\n if (any.is(Foo.class)) {\n foo = any.unpack(Foo.class);\n }\n\n Example 3: Pack and unpack a message in Python.\n\n foo = Foo(...)\n any = Any()\n any.Pack(foo)\n ...\n if any.Is(Foo.DESCRIPTOR):\n any.Unpack(foo)\n ...\n\n Example 4: Pack and unpack a message in Go\n\n foo := \u0026pb.Foo{...}\n any, err := ptypes.MarshalAny(foo)\n ...\n foo := \u0026pb.Foo{}\n if err := ptypes.UnmarshalAny(any, foo); err != nil {\n ...\n }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n package google.profile;\n message Person {\n string first_name = 1;\n string last_name = 2;\n }\n\n {\n \"@type\": \"type.googleapis.com/google.profile.Person\",\n \"firstName\": \u003cstring\u003e,\n \"lastName\": \u003cstring\u003e\n }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n {\n \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n \"value\": \"1.212s\"\n }" }, "rpcStatus": { "type": "object", diff --git a/proto/v1beta1/swagger/grafeas.swagger.json b/proto/v1beta1/swagger/grafeas.swagger.json index 1307b2e5..66b5c4f9 100644 --- a/proto/v1beta1/swagger/grafeas.swagger.json +++ b/proto/v1beta1/swagger/grafeas.swagger.json @@ -740,6 +740,39 @@ "default": "CONTINUOUS_ANALYSIS_UNSPECIFIED", "description": "Whether the resource is continuously analyzed.\n\n - CONTINUOUS_ANALYSIS_UNSPECIFIED: Unknown.\n - ACTIVE: The resource is continuously analyzed.\n - INACTIVE: The resource is ignored for continuous analysis." }, + "ExternalRefCategory": { + "type": "string", + "enum": [ + "CATEGORY_UNSPECIFIED", + "SECURITY", + "PACKAGE_MANAGER", + "PERSISTENT_ID", + "OTHER" + ], + "default": "CATEGORY_UNSPECIFIED", + "description": "- CATEGORY_UNSPECIFIED: Unspecified\n - SECURITY: Security (e.g. cpe22Type, cpe23Type)\n - PACKAGE_MANAGER: Package Manager (e.g. maven-central, npm, nuget, bower, purl)\n - PERSISTENT_ID: Persistent-Id (e.g. swh)\n - OTHER: Other", + "title": "The category of the external reference" + }, + "FileNoteFileType": { + "type": "string", + "enum": [ + "FILE_TYPE_UNSPECIFIED", + "SOURCE", + "BINARY", + "ARCHIVE", + "APPLICATION", + "AUDIO", + "IMAGE", + "TEXT", + "VIDEO", + "DOCUMENTATION", + "SPDX", + "OTHER" + ], + "default": "FILE_TYPE_UNSPECIFIED", + "description": "- FILE_TYPE_UNSPECIFIED: Unspecified\n - SOURCE: The file is human readable source code (.c, .html, etc.)\n - BINARY: The file is a compiled object, target image or binary executable (.o, .a,\netc.)\n - ARCHIVE: The file represents an archive (.tar, .jar, etc.)\n - APPLICATION: The file is associated with a specific application type (MIME type of\napplication/*)\n - AUDIO: The file is associated with an audio file (MIME type of audio/* , e.g.\n.mp3)\n - IMAGE: The file is associated with an picture image file (MIME type of image/*,\ne.g., .jpg, .gif)\n - TEXT: The file is human readable text file (MIME type of text/*)\n - VIDEO: The file is associated with a video file type (MIME type of video/*)\n - DOCUMENTATION: The file serves as documentation\n - SPDX: The file is an SPDX document\n - OTHER: The file doesn't fit into the above categories (generated artifacts, data\nfiles, etc.)", + "title": "File Type is intrinsic to the file, independent of how the file is being\nused" + }, "InTotoArtifactRule": { "type": "object", "properties": { @@ -810,6 +843,28 @@ }, "description": "Defines an object for the environment field in in-toto links. The suggested\nfields are \"variables\", \"filesystem\", and \"workdir\"." }, + "PackageInfoNoteExternalRef": { + "type": "object", + "properties": { + "category": { + "$ref": "#/definitions/ExternalRefCategory", + "title": "An External Reference allows a Package to reference an external source of\nadditional information, metadata, enumerations, asset identifiers, or\ndownloadable content believed to be relevant to the Package" + }, + "type": { + "type": "string", + "title": "Type of category (e.g. 'npm' for the PACKAGE_MANAGER category)" + }, + "locator": { + "type": "string", + "title": "The unique string with no spaces necessary to access the package-specific\ninformation, metadata, or content within the target location" + }, + "comment": { + "type": "string", + "title": "Human-readable information about the purpose and target of the reference" + } + }, + "title": "An External Reference allows a Package to reference an external source of\nadditional information, metadata, enumerations, asset identifiers, or\ndownloadable content believed to be relevant to the Package" + }, "VersionVersionKind": { "type": "string", "enum": [ @@ -864,6 +919,14 @@ "type": "string", "format": "date-time", "description": "The time this information was last changed at the source. This is an\nupstream timestamp from the underlying information source - e.g. Ubuntu\nsecurity tracker." + }, + "source": { + "type": "string", + "description": "The source from which the information in this Detail was obtained." + }, + "vendor": { + "type": "string", + "description": "The name of the vendor of the product." } }, "title": "Identifies all appearances of this vulnerability in the package for a\nspecific distro/location. For example: glibc in\ncpe:/o:debian:debian_linux:8 for versions 2.1 - 2.2" @@ -1464,6 +1527,10 @@ "type": "string", "description": "The iteration of the package build from the above version." }, + "inclusive": { + "type": "boolean", + "description": "Whether this version is specifying part of an inclusive range. Grafeas\ndoes not have the capability to specify version ranges; instead we have\nfields that specify start version and end versions. At times this is\ninsufficient - we also need to specify whether the version is included in\nthe range or is excluded from the range. This boolean is expected to be set\nto true when the version is included in a range." + }, "kind": { "$ref": "#/definitions/VersionVersionKind", "description": "Required. Distinguishes between sentinel MIN/MAX versions and normal\nversions." @@ -1484,7 +1551,7 @@ "description": "Must be a valid serialized protocol buffer of the above specified type." } }, - "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n Foo foo = ...;\n Any any;\n any.PackFrom(foo);\n ...\n if (any.UnpackTo(\u0026foo)) {\n ...\n }\n\nExample 2: Pack and unpack a message in Java.\n\n Foo foo = ...;\n Any any = Any.pack(foo);\n ...\n if (any.is(Foo.class)) {\n foo = any.unpack(Foo.class);\n }\n\n Example 3: Pack and unpack a message in Python.\n\n foo = Foo(...)\n any = Any()\n any.Pack(foo)\n ...\n if any.Is(Foo.DESCRIPTOR):\n any.Unpack(foo)\n ...\n\n Example 4: Pack and unpack a message in Go\n\n foo := \u0026pb.Foo{...}\n any, err := anypb.New(foo)\n if err != nil {\n ...\n }\n ...\n foo := \u0026pb.Foo{}\n if err := any.UnmarshalTo(foo); err != nil {\n ...\n }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n package google.profile;\n message Person {\n string first_name = 1;\n string last_name = 2;\n }\n\n {\n \"@type\": \"type.googleapis.com/google.profile.Person\",\n \"firstName\": \u003cstring\u003e,\n \"lastName\": \u003cstring\u003e\n }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n {\n \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n \"value\": \"1.212s\"\n }" + "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n Foo foo = ...;\n Any any;\n any.PackFrom(foo);\n ...\n if (any.UnpackTo(\u0026foo)) {\n ...\n }\n\nExample 2: Pack and unpack a message in Java.\n\n Foo foo = ...;\n Any any = Any.pack(foo);\n ...\n if (any.is(Foo.class)) {\n foo = any.unpack(Foo.class);\n }\n\n Example 3: Pack and unpack a message in Python.\n\n foo = Foo(...)\n any = Any()\n any.Pack(foo)\n ...\n if any.Is(Foo.DESCRIPTOR):\n any.Unpack(foo)\n ...\n\n Example 4: Pack and unpack a message in Go\n\n foo := \u0026pb.Foo{...}\n any, err := ptypes.MarshalAny(foo)\n ...\n foo := \u0026pb.Foo{}\n if err := ptypes.UnmarshalAny(any, foo); err != nil {\n ...\n }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n package google.profile;\n message Person {\n string first_name = 1;\n string last_name = 2;\n }\n\n {\n \"@type\": \"type.googleapis.com/google.profile.Person\",\n \"firstName\": \u003cstring\u003e,\n \"lastName\": \u003cstring\u003e\n }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n {\n \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n \"value\": \"1.212s\"\n }" }, "provenanceBuildProvenance": { "type": "object", @@ -1780,6 +1847,361 @@ }, "description": "A SourceContext is a reference to a tree of files. A SourceContext together\nwith a path point to a unique revision of a single file or directory." }, + "spdxDocumentNote": { + "type": "object", + "properties": { + "spdxVersion": { + "type": "string", + "title": "Provide a reference number that can be used to understand how to parse and\ninterpret the rest of the file" + }, + "dataLicence": { + "type": "string", + "title": "Compliance with the SPDX specification includes populating the SPDX fields\ntherein with data related to such fields (\"SPDX-Metadata\")" + } + }, + "title": "DocumentNote represents an SPDX Document Creation Infromation section:\nhttps://spdx.github.io/spdx-spec/2-document-creation-information/" + }, + "spdxDocumentOccurrence": { + "type": "object", + "properties": { + "id": { + "type": "string", + "title": "Identify the current SPDX document which may be referenced in relationships\nby other files, packages internally and documents externally" + }, + "title": { + "type": "string", + "title": "Identify name of this document as designated by creator" + }, + "namespace": { + "type": "string", + "title": "Provide an SPDX document specific namespace as a unique absolute Uniform\nResource Identifier (URI) as specified in RFC-3986, with the exception of\nthe ‘#’ delimiter" + }, + "externalDocumentRefs": { + "type": "array", + "items": { + "type": "string" + }, + "title": "Identify any external SPDX documents referenced within this SPDX document" + }, + "licenseListVersion": { + "type": "string", + "title": "A field for creators of the SPDX file to provide the version of\nthe SPDX License List used when the SPDX file was created" + }, + "creators": { + "type": "array", + "items": { + "type": "string" + }, + "title": "Identify who (or what, in the case of a tool) created the SPDX file. If the\nSPDX file was created by an individual, indicate the person's name" + }, + "createTime": { + "type": "string", + "format": "date-time", + "title": "Identify when the SPDX file was originally created. The date is to be\nspecified according to combined date and time in UTC format as specified in\nISO 8601 standard" + }, + "creatorComment": { + "type": "string", + "title": "A field for creators of the SPDX file to provide general comments\nabout the creation of the SPDX file or any other relevant comment not\nincluded in the other fields" + }, + "documentComment": { + "type": "string", + "title": "A field for creators of the SPDX file content to provide comments\nto the consumers of the SPDX document" + } + }, + "title": "DocumentOccurrence represents an SPDX Document Creation Information\nsection: https://spdx.github.io/spdx-spec/2-document-creation-information/" + }, + "spdxFileNote": { + "type": "object", + "properties": { + "title": { + "type": "string", + "title": "Identify the full path and filename that corresponds to the file\ninformation in this section" + }, + "fileType": { + "$ref": "#/definitions/FileNoteFileType", + "title": "This field provides information about the type of file identified" + }, + "checksum": { + "type": "array", + "items": { + "type": "string" + }, + "title": "Provide a unique identifier to match analysis information on each specific\nfile in a package" + } + }, + "title": "FileNote represents an SPDX File Information\nsection: https://spdx.github.io/spdx-spec/4-file-information/" + }, + "spdxFileOccurrence": { + "type": "object", + "properties": { + "id": { + "type": "string", + "title": "Uniquely identify any element in an SPDX document which may be referenced\nby other elements" + }, + "licenseConcluded": { + "$ref": "#/definitions/spdxLicense", + "title": "This field contains the license the SPDX file creator has concluded as\ngoverning the file or alternative values if the governing license cannot be\ndetermined" + }, + "filesLicenseInfo": { + "type": "array", + "items": { + "type": "string" + }, + "title": "This field contains the license information actually found in the file, if\nany" + }, + "copyright": { + "type": "string", + "title": "Identify the copyright holder of the file, as well as any dates present" + }, + "comment": { + "type": "string", + "title": "This field provides a place for the SPDX file creator to record any general\ncomments about the file" + }, + "notice": { + "type": "string", + "title": "This field provides a place for the SPDX file creator to record license\nnotices or other such related notices found in the file" + }, + "contributors": { + "type": "array", + "items": { + "type": "string" + }, + "title": "This field provides a place for the SPDX file creator to record file\ncontributors" + }, + "attributions": { + "type": "array", + "items": { + "type": "string" + }, + "title": "This field provides a place for the SPDX data creator to record, at the\nfile level, acknowledgements that may be needed to be communicated in\nsome contexts" + } + }, + "title": "FileOccurrence represents an SPDX File Information\nsection: https://spdx.github.io/spdx-spec/4-file-information/" + }, + "spdxLicense": { + "type": "object", + "properties": { + "expression": { + "type": "string", + "title": "Expression: https://spdx.github.io/spdx-spec/appendix-IV-SPDX-license-expressions/" + }, + "comments": { + "type": "string", + "title": "Comments" + } + }, + "title": "License information: https://spdx.github.io/spdx-spec/3-package-information/#315-declared-license" + }, + "spdxPackageInfoNote": { + "type": "object", + "properties": { + "title": { + "type": "string", + "title": "Identify the full name of the package as given by the Package Originator" + }, + "version": { + "type": "string", + "title": "Identify the version of the package" + }, + "supplier": { + "type": "string", + "title": "Identify the actual distribution source for the package/directory\nidentified in the SPDX file" + }, + "originator": { + "type": "string", + "title": "If the package identified in the SPDX file originated from a different\nperson or organization than identified as Package Supplier, this field\nidentifies from where or whom the package originally came" + }, + "downloadLocation": { + "type": "string", + "title": "This section identifies the download Universal Resource Locator (URL), or\n a specific location within a version control system (VCS) for the package\n at the time that the SPDX file was created" + }, + "analyzed": { + "type": "boolean", + "title": "Indicates whether the file content of this package has been available for\nor subjected to analysis when creating the SPDX document" + }, + "verificationCode": { + "type": "string", + "title": "This field provides an independently reproducible mechanism identifying\nspecific contents of a package based on the actual files (except the SPDX\nfile itself, if it is included in the package) that make up each package\nand that correlates to the data in this SPDX file" + }, + "checksum": { + "type": "string", + "title": "Provide an independently reproducible mechanism that permits unique\nidentification of a specific package that correlates to the data in this\nSPDX file" + }, + "homePage": { + "type": "string", + "title": "Provide a place for the SPDX file creator to record a web site that serves\nas the package's home page" + }, + "filesLicenseInfo": { + "type": "array", + "items": { + "type": "string" + }, + "title": "Contain the license the SPDX file creator has concluded as governing the\nThis field is to contain a list of all licenses found in the package. The\nrelationship between licenses (i.e., conjunctive, disjunctive) is not\nspecified in this field – it is simply a listing of all licenses found" + }, + "licenseDeclared": { + "$ref": "#/definitions/spdxLicense", + "title": "List the licenses that have been declared by the authors of the package" + }, + "copyright": { + "type": "string", + "title": "Identify the copyright holders of the package, as well as any dates present" + }, + "summaryDescription": { + "type": "string", + "title": "A short description of the package" + }, + "detailedDescription": { + "type": "string", + "title": "A more detailed description of the package" + }, + "externalRefs": { + "type": "array", + "items": { + "$ref": "#/definitions/PackageInfoNoteExternalRef" + }, + "title": "ExternalRef" + }, + "attribution": { + "type": "string", + "title": "A place for the SPDX data creator to record, at the package level,\nacknowledgements that may be needed to be communicated in some contexts" + }, + "packageType": { + "type": "string", + "description": "The type of package: OS, MAVEN, GO, GO_STDLIB, etc." + } + }, + "title": "PackageInfoNote represents an SPDX Package Information\nsection: https://spdx.github.io/spdx-spec/3-package-information/" + }, + "spdxPackageInfoOccurrence": { + "type": "object", + "properties": { + "id": { + "type": "string", + "title": "Uniquely identify any element in an SPDX document which may be referenced\nby other elements" + }, + "filename": { + "type": "string", + "title": "Provide the actual file name of the package, or path of the directory being\ntreated as a package" + }, + "sourceInfo": { + "type": "string", + "title": "Provide a place for the SPDX file creator to record any relevant background\ninformation or additional comments about the origin of the package" + }, + "licenseConcluded": { + "$ref": "#/definitions/spdxLicense", + "title": "package or alternative values, if the governing license cannot be\ndetermined" + }, + "comment": { + "type": "string", + "title": "A place for the SPDX file creator to record any general\ncomments about the package being described" + }, + "packageType": { + "type": "string", + "description": "The type of package: OS, MAVEN, GO, GO_STDLIB, etc." + }, + "title": { + "type": "string", + "title": "Identify the full name of the package as given by the Package Originator" + }, + "version": { + "type": "string", + "title": "Identify the version of the package" + }, + "homePage": { + "type": "string", + "title": "Provide a place for the SPDX file creator to record a web site that serves\nas the package's home page" + }, + "summaryDescription": { + "type": "string", + "title": "A short description of the package" + } + }, + "title": "PackageInfoOccurrence represents an SPDX Package Information\nsection: https://spdx.github.io/spdx-spec/3-package-information/" + }, + "spdxRelationshipNote": { + "type": "object", + "properties": { + "type": { + "$ref": "#/definitions/spdxRelationshipType", + "title": "The type of relationship between the source and target SPDX elements" + } + }, + "title": "RelationshipNote represents an SPDX Relationship\nsection:\nhttps://spdx.github.io/spdx-spec/7-relationships-between-SPDX-elements/" + }, + "spdxRelationshipOccurrence": { + "type": "object", + "properties": { + "source": { + "type": "string", + "title": "Also referred to as SPDXRef-A\nThe source SPDX element (file, package, etc)" + }, + "target": { + "type": "string", + "title": "Also referred to as SPDXRef-B\nThe target SPDC element (file, package, etc)\nIn cases where there are \"known unknowns\", the use of the keyword\nNOASSERTION can be used The keywords NONE can be used to indicate that an\nSPDX element (package/file/snippet) has no other elements connected by\nsome relationship to it" + }, + "type": { + "$ref": "#/definitions/spdxRelationshipType", + "title": "The type of relationship between the source and target SPDX elements" + }, + "comment": { + "type": "string", + "title": "A place for the SPDX file creator to record any general comments about\nthe relationship" + } + }, + "title": "RelationshipOccurrence represents an SPDX Relationship\nsection:\nhttps://spdx.github.io/spdx-spec/7-relationships-between-SPDX-elements/" + }, + "spdxRelationshipType": { + "type": "string", + "enum": [ + "RELATIONSHIP_TYPE_UNSPECIFIED", + "DESCRIBES", + "DESCRIBED_BY", + "CONTAINS", + "CONTAINED_BY", + "DEPENDS_ON", + "DEPENDENCY_OF", + "DEPENDENCY_MANIFEST_OF", + "BUILD_DEPENDENCY_OF", + "DEV_DEPENDENCY_OF", + "OPTIONAL_DEPENDENCY_OF", + "PROVIDED_DEPENDENCY_OF", + "TEST_DEPENDENCY_OF", + "RUNTIME_DEPENDENCY_OF", + "EXAMPLE_OF", + "GENERATES", + "GENERATED_FROM", + "ANCESTOR_OF", + "DESCENDANT_OF", + "VARIANT_OF", + "DISTRIBUTION_ARTIFACT", + "PATCH_FOR", + "PATCH_APPLIED", + "COPY_OF", + "FILE_ADDED", + "FILE_DELETED", + "FILE_MODIFIED", + "EXPANDED_FROM_ARCHIVE", + "DYNAMIC_LINK", + "STATIC_LINK", + "DATA_FILE_OF", + "TEST_CASE_OF", + "BUILD_TOOL_OF", + "DEV_TOOL_OF", + "TEST_OF", + "TEST_TOOL_OF", + "DOCUMENTATION_OF", + "OPTIONAL_COMPONENT_OF", + "METAFILE_OF", + "PACKAGE_OF", + "AMENDS", + "PREREQUISITE_FOR", + "HAS_PREREQUISITE", + "OTHER" + ], + "default": "RELATIONSHIP_TYPE_UNSPECIFIED", + "description": "- RELATIONSHIP_TYPE_UNSPECIFIED: Unspecified\n - DESCRIBES: Is to be used when SPDXRef-DOCUMENT describes SPDXRef-A\n - DESCRIBED_BY: Is to be used when SPDXRef-A is described by SPDXREF-Document\n - CONTAINS: Is to be used when SPDXRef-A contains SPDXRef-B\n - CONTAINED_BY: Is to be used when SPDXRef-A is contained by SPDXRef-B\n - DEPENDS_ON: Is to be used when SPDXRef-A depends on SPDXRef-B\n - DEPENDENCY_OF: Is to be used when SPDXRef-A is dependency of SPDXRef-B\n - DEPENDENCY_MANIFEST_OF: Is to be used when SPDXRef-A is a manifest file that lists a set of\ndependencies for SPDXRef-B\n - BUILD_DEPENDENCY_OF: Is to be used when SPDXRef-A is a build dependency of SPDXRef-B\n - DEV_DEPENDENCY_OF: Is to be used when SPDXRef-A is a development dependency of SPDXRef-B\n - OPTIONAL_DEPENDENCY_OF: Is to be used when SPDXRef-A is an optional dependency of SPDXRef-B\n - PROVIDED_DEPENDENCY_OF: Is to be used when SPDXRef-A is a to be provided dependency of\nSPDXRef-B\n - TEST_DEPENDENCY_OF: Is to be used when SPDXRef-A is a test dependency of SPDXRef-B\n - RUNTIME_DEPENDENCY_OF: Is to be used when SPDXRef-A is a dependency required for the execution\nof SPDXRef-B\n - EXAMPLE_OF: Is to be used when SPDXRef-A is an example of SPDXRef-B\n - GENERATES: Is to be used when SPDXRef-A generates SPDXRef-B\n - GENERATED_FROM: Is to be used when SPDXRef-A was generated from SPDXRef-B\n - ANCESTOR_OF: Is to be used when SPDXRef-A is an ancestor (same lineage but\npre-dates) SPDXRef-B\n - DESCENDANT_OF: Is to be used when SPDXRef-A is a descendant of (same lineage but\npostdates) SPDXRef-B\n - VARIANT_OF: Is to be used when SPDXRef-A is a variant of (same lineage but not\nclear which came first) SPDXRef-B\n - DISTRIBUTION_ARTIFACT: Is to be used when distributing SPDXRef-A requires that SPDXRef-B also\nbe distributed\n - PATCH_FOR: Is to be used when SPDXRef-A is a patch file for (to be applied to)\nSPDXRef-B\n - PATCH_APPLIED: Is to be used when SPDXRef-A is a patch file that has been applied to\nSPDXRef-B\n - COPY_OF: Is to be used when SPDXRef-A is an exact copy of SPDXRef-B\n - FILE_ADDED: Is to be used when SPDXRef-A is a file that was added to SPDXRef-B\n - FILE_DELETED: Is to be used when SPDXRef-A is a file that was deleted from SPDXRef-B\n - FILE_MODIFIED: Is to be used when SPDXRef-A is a file that was modified from SPDXRef-B\n - EXPANDED_FROM_ARCHIVE: Is to be used when SPDXRef-A is expanded from the archive SPDXRef-B\n - DYNAMIC_LINK: Is to be used when SPDXRef-A dynamically links to SPDXRef-B\n - STATIC_LINK: Is to be used when SPDXRef-A statically links to SPDXRef-B\n - DATA_FILE_OF: Is to be used when SPDXRef-A is a data file used in SPDXRef-B\n - TEST_CASE_OF: Is to be used when SPDXRef-A is a test case used in testing SPDXRef-B\n - BUILD_TOOL_OF: Is to be used when SPDXRef-A is used to build SPDXRef-B\n - DEV_TOOL_OF: Is to be used when SPDXRef-A is used as a development tool for\nSPDXRef-B\n - TEST_OF: Is to be used when SPDXRef-A is used for testing SPDXRef-B\n - TEST_TOOL_OF: Is to be used when SPDXRef-A is used as a test tool for SPDXRef-B\n - DOCUMENTATION_OF: Is to be used when SPDXRef-A provides documentation of SPDXRef-B\n - OPTIONAL_COMPONENT_OF: Is to be used when SPDXRef-A is an optional component of SPDXRef-B\n - METAFILE_OF: Is to be used when SPDXRef-A is a metafile of SPDXRef-B\n - PACKAGE_OF: Is to be used when SPDXRef-A is used as a package as part of SPDXRef-B\n - AMENDS: Is to be used when (current) SPDXRef-DOCUMENT amends the SPDX\ninformation in SPDXRef-B\n - PREREQUISITE_FOR: Is to be used when SPDXRef-A is a prerequisite for SPDXRef-B\n - HAS_PREREQUISITE: Is to be used when SPDXRef-A has as a prerequisite SPDXRef-B\n - OTHER: Is to be used for a relationship which has not been defined in the\nformal SPDX specification. A description of the relationship should be\nincluded in the Relationship comments field", + "title": "The type of relationship between the source and target SPDX elements\nRelationshipOccurrence represents an SPDX Relationship section:\nhttps://spdx.github.io/spdx-spec/7-relationships-between-SPDX-elements/" + }, "v1beta1BatchCreateNotesRequest": { "type": "object", "properties": { @@ -1975,6 +2397,22 @@ "$ref": "#/definitions/intotoInToto", "description": "A note describing an in-toto link." }, + "sbom": { + "$ref": "#/definitions/spdxDocumentNote", + "description": "A note describing a software bill of materials." + }, + "spdxPackage": { + "$ref": "#/definitions/spdxPackageInfoNote", + "description": "A note describing an SPDX Package." + }, + "spdxFile": { + "$ref": "#/definitions/spdxFileNote", + "description": "A note describing an SPDX File." + }, + "spdxRelationship": { + "$ref": "#/definitions/spdxRelationshipNote", + "description": "A note describing an SPDX File." + }, "gitRepository": { "$ref": "#/definitions/gitRepository", "description": "A note describing a git repository.\n99 is chosen as the field number to avoid possible conflicts with upstream in the future." @@ -1998,10 +2436,14 @@ "DISCOVERY", "ATTESTATION", "INTOTO", + "SBOM", + "SPDX_PACKAGE", + "SPDX_FILE", + "SPDX_RELATIONSHIP", "REPOSITORY" ], "default": "NOTE_KIND_UNSPECIFIED", - "description": "Kind represents the kinds of notes supported.\n\n - NOTE_KIND_UNSPECIFIED: Default value. This value is unused.\n - VULNERABILITY: The note and occurrence represent a package vulnerability.\n - BUILD: The note and occurrence assert build provenance.\n - IMAGE: This represents an image basis relationship.\n - PACKAGE: This represents a package installed via a package manager.\n - DEPLOYMENT: The note and occurrence track deployment events.\n - DISCOVERY: The note and occurrence track the initial discovery status of a resource.\n - ATTESTATION: This represents a logical \"role\" that can attest to artifacts.\n - INTOTO: This represents an in-toto link.\n - REPOSITORY: This represents a git repository.\n99 is chosen as the field number to avoid possible conflicts with upstream in the future." + "description": "Kind represents the kinds of notes supported.\n\n - NOTE_KIND_UNSPECIFIED: Default value. This value is unused.\n - VULNERABILITY: The note and occurrence represent a package vulnerability.\n - BUILD: The note and occurrence assert build provenance.\n - IMAGE: This represents an image basis relationship.\n - PACKAGE: This represents a package installed via a package manager.\n - DEPLOYMENT: The note and occurrence track deployment events.\n - DISCOVERY: The note and occurrence track the initial discovery status of a resource.\n - ATTESTATION: This represents a logical \"role\" that can attest to artifacts.\n - INTOTO: This represents an in-toto link.\n - SBOM: This represents a software bill of materials.\n - SPDX_PACKAGE: This represents an SPDX Package.\n - SPDX_FILE: This represents an SPDX File.\n - SPDX_RELATIONSHIP: This represents an SPDX Relationship.\n - REPOSITORY: This represents a git repository.\n99 is chosen as the field number to avoid possible conflicts with upstream in the future." }, "v1beta1Occurrence": { "type": "object", @@ -2072,6 +2514,22 @@ "$ref": "#/definitions/v1beta1intotoDetails", "description": "Describes a specific in-toto link." }, + "sbom": { + "$ref": "#/definitions/spdxDocumentOccurrence", + "description": "Describes a specific software bill of materials document." + }, + "spdxPackage": { + "$ref": "#/definitions/spdxPackageInfoOccurrence", + "description": "Describes a specific SPDX Package." + }, + "spdxFile": { + "$ref": "#/definitions/spdxFileOccurrence", + "description": "Describes a specific SPDX File." + }, + "spdxRelationship": { + "$ref": "#/definitions/spdxRelationshipOccurrence", + "description": "Describes a specific SPDX Relationship." + }, "git": { "$ref": "#/definitions/v1beta1gitDetails", "description": "Describes a git push event.\n99 is chosen as the field number to avoid possible conflicts with upstream in the future." @@ -2100,7 +2558,7 @@ "description": "If the signature field contains a digital signature,\nthe naming scheme of the key types is \u003cformat\u003e_\u003calgo\u003e_\u003chash_algo\u003e.\n\n- \u003cformat\u003e refers to the format in which the public key is stored (e.g PKCS8).\n- \u003calgo\u003e refers to the asymmetric algorithm in use (e.g. ECDSA_P256).\n- \u003chash_algo\u003e refers to the hash algorithm used to generate the digest of the payload (e.g. SHA256).\n Note that some algorithms (e.g. ed25519) have the hash algorithm \"internalized\",\n so they won't have this part.\n\nIf the signature field does not contain a digital signature (e.g. maybe a HMAC),\ndedicated key types can be created to cater for that use case." } }, - "description": "ProducerSignature represents the signature of the \"details\" of either a note or an occurrence.\nIt should be signed by the corresponding producer\n(e.g. the \"details\" inside of a git occurrence will be signed by the GHE webhook listener)\nand verified by deployers.\n\nA custom message is created because it seems that\npublic_key_id in common.Signature is designed to include the information encoded by KeyType.\nHowever, using an additional field to store such information is more structural,\nand the information is also about the attributes instead of the identity of a key, \nso that should be a better approach.\nSince we are not going to upstream the change which adds a signature field to all note/occurrence type,\nwe can go with a custom signature." + "description": "ProducerSignature represents the signature of the \"details\" of either a note or an occurrence.\nIt should be signed by the corresponding producer\n(e.g. the \"details\" inside of a git occurrence will be signed by the GHE webhook listener)\nand verified by deployers.\n\nA custom message is created because it seems that\npublic_key_id in common.Signature is designed to include the information encoded by KeyType.\nHowever, using an additional field to store such information is more structural,\nand the information is also about the attributes instead of the identity of a key,\nso that should be a better approach.\nSince we are not going to upstream the change which adds a signature field to all note/occurrence type,\nwe can go with a custom signature." }, "v1beta1ProducerSignatureKeyType": { "type": "string", @@ -2400,7 +2858,7 @@ }, "effectiveSeverity": { "$ref": "#/definitions/vulnerabilitySeverity", - "description": "The distro assigned severity for this vulnerability when it is\navailable, and note provider assigned severity when distro has not yet\nassigned a severity for this vulnerability." + "description": "The distro assigned severity for this vulnerability when it is\navailable, and note provider assigned severity when distro has not yet\nassigned a severity for this vulnerability.\n\nWhen there are multiple PackageIssues for this vulnerability, they can have\ndifferent effective severities because some might be provided by the distro\nwhile others are provided by the language ecosystem for a language pack.\nFor this reason, it is advised to use the effective severity on the\nPackageIssue level. In the case where multiple PackageIssues have differing\neffective severities, this field should be the highest severity for any of\nthe PackageIssues." } }, "description": "Details of a vulnerability Occurrence." @@ -2561,6 +3019,14 @@ "severityName": { "type": "string", "description": "Deprecated, use Details.effective_severity instead\nThe severity (e.g., distro assigned severity) for this vulnerability." + }, + "packageType": { + "type": "string", + "description": "The type of package (e.g. OS, MAVEN, GO)." + }, + "effectiveSeverity": { + "$ref": "#/definitions/vulnerabilitySeverity", + "description": "The distro or language system assigned severity for this vulnerability\nwhen that is available and note provider assigned severity when it is not\navailable." } }, "description": "This message wraps a location affected by a vulnerability and its\nassociated fix (if one is available)." diff --git a/proto/v1beta1/swagger/spdx.swagger.json b/proto/v1beta1/swagger/spdx.swagger.json new file mode 100644 index 00000000..bb7c7c2a --- /dev/null +++ b/proto/v1beta1/swagger/spdx.swagger.json @@ -0,0 +1,46 @@ +{ + "swagger": "2.0", + "info": { + "title": "spdx.proto", + "version": "version not set" + }, + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "paths": {}, + "definitions": { + "protobufAny": { + "type": "object", + "properties": { + "typeUrl": { + "type": "string" + }, + "value": { + "type": "string", + "format": "byte" + } + } + }, + "rpcStatus": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32" + }, + "message": { + "type": "string" + }, + "details": { + "type": "array", + "items": { + "$ref": "#/definitions/protobufAny" + } + } + } + } + } +} diff --git a/proto/v1beta1/vulnerability.proto b/proto/v1beta1/vulnerability.proto index 9dbecd9d..c3f82589 100644 --- a/proto/v1beta1/vulnerability.proto +++ b/proto/v1beta1/vulnerability.proto @@ -21,10 +21,11 @@ option java_multiple_files = true; option java_package = "io.grafeas.v1beta1.vulnerability"; option objc_class_prefix = "GRA"; +import "google/api/field_behavior.proto"; +import "google/protobuf/timestamp.proto"; import "proto/v1beta1/common.proto"; import "proto/v1beta1/cvss.proto"; import "proto/v1beta1/package.proto"; -import "google/protobuf/timestamp.proto"; // Note provider-assigned severity/impact ranking. enum Severity { @@ -95,6 +96,12 @@ message Vulnerability { // upstream timestamp from the underlying information source - e.g. Ubuntu // security tracker. google.protobuf.Timestamp source_update_time = 10; + + // The source from which the information in this Detail was obtained. + string source = 11; + + // The name of the vendor of the product. + string vendor = 12; } // The full description of the CVSSv3. @@ -179,7 +186,15 @@ message Details { // The distro assigned severity for this vulnerability when it is // available, and note provider assigned severity when distro has not yet // assigned a severity for this vulnerability. - Severity effective_severity = 8; + // + // When there are multiple PackageIssues for this vulnerability, they can have + // different effective severities because some might be provided by the distro + // while others are provided by the language ecosystem for a language pack. + // For this reason, it is advised to use the effective severity on the + // PackageIssue level. In the case where multiple PackageIssues have differing + // effective severities, this field should be the highest severity for any of + // the PackageIssues. + Severity effective_severity = 8; } // This message wraps a location affected by a vulnerability and its @@ -194,6 +209,14 @@ message PackageIssue { // Deprecated, use Details.effective_severity instead // The severity (e.g., distro assigned severity) for this vulnerability. string severity_name = 3; + + // The type of package (e.g. OS, MAVEN, GO). + string package_type = 4; + + // The distro or language system assigned severity for this vulnerability + // when that is available and note provider assigned severity when it is not + // available. + Severity effective_severity = 5 [(google.api.field_behavior) = OUTPUT_ONLY]; } // The location of the vulnerability. diff --git a/proto/v1beta1/vulnerability_go_proto/vulnerability.pb.go b/proto/v1beta1/vulnerability_go_proto/vulnerability.pb.go index ee6f93b1..a4edbb6d 100644 --- a/proto/v1beta1/vulnerability_go_proto/vulnerability.pb.go +++ b/proto/v1beta1/vulnerability_go_proto/vulnerability.pb.go @@ -15,19 +15,20 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: // protoc-gen-go v1.25.0 -// protoc v3.14.0 +// protoc v3.13.0 // source: vulnerability.proto package vulnerability_go_proto import ( proto "github.com/golang/protobuf/proto" + timestamp "github.com/golang/protobuf/ptypes/timestamp" common_go_proto "github.com/grafeas/grafeas/proto/v1beta1/common_go_proto" cvss_go_proto "github.com/grafeas/grafeas/proto/v1beta1/cvss_go_proto" package_go_proto "github.com/grafeas/grafeas/proto/v1beta1/package_go_proto" + _ "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" ) @@ -132,7 +133,7 @@ type Vulnerability struct { // The time this information was last changed at the source. This is an // upstream timestamp from the underlying information source - e.g. Ubuntu // security tracker. - SourceUpdateTime *timestamppb.Timestamp `protobuf:"bytes,6,opt,name=source_update_time,json=sourceUpdateTime,proto3" json:"source_update_time,omitempty"` + SourceUpdateTime *timestamp.Timestamp `protobuf:"bytes,6,opt,name=source_update_time,json=sourceUpdateTime,proto3" json:"source_update_time,omitempty"` // CVE for this vulnerability. // For details, see: https://cve.mitre.org/cve/ Cve string `protobuf:"bytes,100,opt,name=cve,proto3" json:"cve,omitempty"` @@ -210,7 +211,7 @@ func (x *Vulnerability) GetWindowsDetails() []*Vulnerability_WindowsDetail { return nil } -func (x *Vulnerability) GetSourceUpdateTime() *timestamppb.Timestamp { +func (x *Vulnerability) GetSourceUpdateTime() *timestamp.Timestamp { if x != nil { return x.SourceUpdateTime } @@ -265,6 +266,14 @@ type Details struct { // The distro assigned severity for this vulnerability when it is // available, and note provider assigned severity when distro has not yet // assigned a severity for this vulnerability. + // + // When there are multiple PackageIssues for this vulnerability, they can have + // different effective severities because some might be provided by the distro + // while others are provided by the language ecosystem for a language pack. + // For this reason, it is advised to use the effective severity on the + // PackageIssue level. In the case where multiple PackageIssues have differing + // effective severities, this field should be the highest severity for any of + // the PackageIssues. EffectiveSeverity Severity `protobuf:"varint,8,opt,name=effective_severity,json=effectiveSeverity,proto3,enum=grafeas.v1beta1.vulnerability.Severity" json:"effective_severity,omitempty"` } @@ -370,6 +379,12 @@ type PackageIssue struct { // Deprecated, use Details.effective_severity instead // The severity (e.g., distro assigned severity) for this vulnerability. SeverityName string `protobuf:"bytes,3,opt,name=severity_name,json=severityName,proto3" json:"severity_name,omitempty"` + // The type of package (e.g. OS, MAVEN, GO). + PackageType string `protobuf:"bytes,4,opt,name=package_type,json=packageType,proto3" json:"package_type,omitempty"` + // The distro or language system assigned severity for this vulnerability + // when that is available and note provider assigned severity when it is not + // available. + EffectiveSeverity Severity `protobuf:"varint,5,opt,name=effective_severity,json=effectiveSeverity,proto3,enum=grafeas.v1beta1.vulnerability.Severity" json:"effective_severity,omitempty"` } func (x *PackageIssue) Reset() { @@ -425,6 +440,20 @@ func (x *PackageIssue) GetSeverityName() string { return "" } +func (x *PackageIssue) GetPackageType() string { + if x != nil { + return x.PackageType + } + return "" +} + +func (x *PackageIssue) GetEffectiveSeverity() Severity { + if x != nil { + return x.EffectiveSeverity + } + return Severity_SEVERITY_UNSPECIFIED +} + // The location of the vulnerability. type VulnerabilityLocation struct { state protoimpl.MessageState @@ -527,7 +556,11 @@ type Vulnerability_Detail struct { // The time this information was last changed at the source. This is an // upstream timestamp from the underlying information source - e.g. Ubuntu // security tracker. - SourceUpdateTime *timestamppb.Timestamp `protobuf:"bytes,10,opt,name=source_update_time,json=sourceUpdateTime,proto3" json:"source_update_time,omitempty"` + SourceUpdateTime *timestamp.Timestamp `protobuf:"bytes,10,opt,name=source_update_time,json=sourceUpdateTime,proto3" json:"source_update_time,omitempty"` + // The source from which the information in this Detail was obtained. + Source string `protobuf:"bytes,11,opt,name=source,proto3" json:"source,omitempty"` + // The name of the vendor of the product. + Vendor string `protobuf:"bytes,12,opt,name=vendor,proto3" json:"vendor,omitempty"` } func (x *Vulnerability_Detail) Reset() { @@ -625,13 +658,27 @@ func (x *Vulnerability_Detail) GetIsObsolete() bool { return false } -func (x *Vulnerability_Detail) GetSourceUpdateTime() *timestamppb.Timestamp { +func (x *Vulnerability_Detail) GetSourceUpdateTime() *timestamp.Timestamp { if x != nil { return x.SourceUpdateTime } return nil } +func (x *Vulnerability_Detail) GetSource() string { + if x != nil { + return x.Source + } + return "" +} + +func (x *Vulnerability_Detail) GetVendor() string { + if x != nil { + return x.Vendor + } + return "" +} + type Vulnerability_WindowsDetail struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -777,163 +824,176 @@ var file_vulnerability_proto_rawDesc = []byte{ 0x0a, 0x13, 0x76, 0x75, 0x6c, 0x6e, 0x65, 0x72, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x1d, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x76, 0x75, 0x6c, 0x6e, 0x65, 0x72, 0x61, 0x62, 0x69, - 0x6c, 0x69, 0x74, 0x79, 0x1a, 0x1a, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x76, 0x31, 0x62, 0x65, - 0x74, 0x61, 0x31, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x1a, 0x18, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, - 0x63, 0x76, 0x73, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1b, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, - 0x65, 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, 0xae, 0x0a, 0x0a, 0x0d, 0x56, 0x75, 0x6c, - 0x6e, 0x65, 0x72, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x76, - 0x73, 0x73, 0x5f, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x02, 0x52, 0x09, - 0x63, 0x76, 0x73, 0x73, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x43, 0x0a, 0x08, 0x73, 0x65, 0x76, - 0x65, 0x72, 0x69, 0x74, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x27, 0x2e, 0x67, 0x72, - 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x76, 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, 0x4d, - 0x0a, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x33, 0x2e, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, + 0x6c, 0x69, 0x74, 0x79, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, + 0x2f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x62, 0x65, 0x68, 0x61, 0x76, 0x69, 0x6f, 0x72, 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, 0x1a, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x76, 0x31, + 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x1a, 0x18, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, + 0x31, 0x2f, 0x63, 0x76, 0x73, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1b, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x70, 0x61, 0x63, 0x6b, + 0x61, 0x67, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xde, 0x0a, 0x0a, 0x0d, 0x56, 0x75, + 0x6c, 0x6e, 0x65, 0x72, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x12, 0x1d, 0x0a, 0x0a, 0x63, + 0x76, 0x73, 0x73, 0x5f, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x02, 0x52, + 0x09, 0x63, 0x76, 0x73, 0x73, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x43, 0x0a, 0x08, 0x73, 0x65, + 0x76, 0x65, 0x72, 0x69, 0x74, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x27, 0x2e, 0x67, + 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x76, + 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, + 0x4d, 0x0a, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x33, 0x2e, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, + 0x61, 0x31, 0x2e, 0x76, 0x75, 0x6c, 0x6e, 0x65, 0x72, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, + 0x2e, 0x56, 0x75, 0x6c, 0x6e, 0x65, 0x72, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x2e, 0x44, + 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x3e, + 0x0a, 0x07, 0x63, 0x76, 0x73, 0x73, 0x5f, 0x76, 0x33, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x25, 0x2e, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x76, 0x75, 0x6c, 0x6e, 0x65, 0x72, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x2e, - 0x56, 0x75, 0x6c, 0x6e, 0x65, 0x72, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x2e, 0x44, 0x65, - 0x74, 0x61, 0x69, 0x6c, 0x52, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x3e, 0x0a, - 0x07, 0x63, 0x76, 0x73, 0x73, 0x5f, 0x76, 0x33, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, - 0x2e, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, - 0x2e, 0x76, 0x75, 0x6c, 0x6e, 0x65, 0x72, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x2e, 0x43, - 0x56, 0x53, 0x53, 0x76, 0x33, 0x52, 0x06, 0x63, 0x76, 0x73, 0x73, 0x56, 0x33, 0x12, 0x63, 0x0a, - 0x0f, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x73, 0x5f, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, - 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3a, 0x2e, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, + 0x43, 0x56, 0x53, 0x53, 0x76, 0x33, 0x52, 0x06, 0x63, 0x76, 0x73, 0x73, 0x56, 0x33, 0x12, 0x63, + 0x0a, 0x0f, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x73, 0x5f, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, + 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3a, 0x2e, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, + 0x73, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x76, 0x75, 0x6c, 0x6e, 0x65, 0x72, + 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x2e, 0x56, 0x75, 0x6c, 0x6e, 0x65, 0x72, 0x61, 0x62, + 0x69, 0x6c, 0x69, 0x74, 0x79, 0x2e, 0x57, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x73, 0x44, 0x65, 0x74, + 0x61, 0x69, 0x6c, 0x52, 0x0e, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x73, 0x44, 0x65, 0x74, 0x61, + 0x69, 0x6c, 0x73, 0x12, 0x48, 0x0a, 0x12, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x75, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 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, 0x10, 0x73, 0x6f, 0x75, + 0x72, 0x63, 0x65, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x10, 0x0a, + 0x03, 0x63, 0x76, 0x65, 0x18, 0x64, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x63, 0x76, 0x65, 0x12, + 0x10, 0x0a, 0x03, 0x63, 0x77, 0x65, 0x18, 0x65, 0x20, 0x03, 0x28, 0x09, 0x52, 0x03, 0x63, 0x77, + 0x65, 0x12, 0x3e, 0x0a, 0x07, 0x63, 0x76, 0x73, 0x73, 0x5f, 0x76, 0x32, 0x18, 0x66, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, 0x76, 0x31, 0x62, + 0x65, 0x74, 0x61, 0x31, 0x2e, 0x76, 0x75, 0x6c, 0x6e, 0x65, 0x72, 0x61, 0x62, 0x69, 0x6c, 0x69, + 0x74, 0x79, 0x2e, 0x43, 0x56, 0x53, 0x53, 0x76, 0x32, 0x52, 0x06, 0x63, 0x76, 0x73, 0x73, 0x56, + 0x32, 0x1a, 0xc5, 0x04, 0x0a, 0x06, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x12, 0x17, 0x0a, 0x07, + 0x63, 0x70, 0x65, 0x5f, 0x75, 0x72, 0x69, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x63, + 0x70, 0x65, 0x55, 0x72, 0x69, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x12, + 0x52, 0x0a, 0x14, 0x6d, 0x69, 0x6e, 0x5f, 0x61, 0x66, 0x66, 0x65, 0x63, 0x74, 0x65, 0x64, 0x5f, + 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, + 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, + 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x2e, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, + 0x12, 0x6d, 0x69, 0x6e, 0x41, 0x66, 0x66, 0x65, 0x63, 0x74, 0x65, 0x64, 0x56, 0x65, 0x72, 0x73, + 0x69, 0x6f, 0x6e, 0x12, 0x52, 0x0a, 0x14, 0x6d, 0x61, 0x78, 0x5f, 0x61, 0x66, 0x66, 0x65, 0x63, + 0x74, 0x65, 0x64, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x20, 0x2e, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, 0x76, 0x31, 0x62, 0x65, + 0x74, 0x61, 0x31, 0x2e, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x2e, 0x56, 0x65, 0x72, 0x73, + 0x69, 0x6f, 0x6e, 0x52, 0x12, 0x6d, 0x61, 0x78, 0x41, 0x66, 0x66, 0x65, 0x63, 0x74, 0x65, 0x64, + 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x23, 0x0a, 0x0d, 0x73, 0x65, 0x76, 0x65, 0x72, + 0x69, 0x74, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, + 0x73, 0x65, 0x76, 0x65, 0x72, 0x69, 0x74, 0x79, 0x4e, 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, 0x5b, + 0x0a, 0x0e, 0x66, 0x69, 0x78, 0x65, 0x64, 0x5f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x76, 0x75, 0x6c, 0x6e, 0x65, 0x72, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x2e, 0x56, 0x75, 0x6c, 0x6e, 0x65, 0x72, 0x61, 0x62, 0x69, - 0x6c, 0x69, 0x74, 0x79, 0x2e, 0x57, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x73, 0x44, 0x65, 0x74, 0x61, - 0x69, 0x6c, 0x52, 0x0e, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x73, 0x44, 0x65, 0x74, 0x61, 0x69, - 0x6c, 0x73, 0x12, 0x48, 0x0a, 0x12, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x75, 0x70, 0x64, - 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 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, 0x10, 0x73, 0x6f, 0x75, 0x72, - 0x63, 0x65, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x10, 0x0a, 0x03, - 0x63, 0x76, 0x65, 0x18, 0x64, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x63, 0x76, 0x65, 0x12, 0x10, - 0x0a, 0x03, 0x63, 0x77, 0x65, 0x18, 0x65, 0x20, 0x03, 0x28, 0x09, 0x52, 0x03, 0x63, 0x77, 0x65, - 0x12, 0x3e, 0x0a, 0x07, 0x63, 0x76, 0x73, 0x73, 0x5f, 0x76, 0x32, 0x18, 0x66, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x25, 0x2e, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, 0x76, 0x31, 0x62, 0x65, - 0x74, 0x61, 0x31, 0x2e, 0x76, 0x75, 0x6c, 0x6e, 0x65, 0x72, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, - 0x79, 0x2e, 0x43, 0x56, 0x53, 0x53, 0x76, 0x32, 0x52, 0x06, 0x63, 0x76, 0x73, 0x73, 0x56, 0x32, - 0x1a, 0x95, 0x04, 0x0a, 0x06, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x12, 0x17, 0x0a, 0x07, 0x63, + 0x6c, 0x69, 0x74, 0x79, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0d, 0x66, 0x69, + 0x78, 0x65, 0x64, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x21, 0x0a, 0x0c, 0x70, + 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0b, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1f, + 0x0a, 0x0b, 0x69, 0x73, 0x5f, 0x6f, 0x62, 0x73, 0x6f, 0x6c, 0x65, 0x74, 0x65, 0x18, 0x09, 0x20, + 0x01, 0x28, 0x08, 0x52, 0x0a, 0x69, 0x73, 0x4f, 0x62, 0x73, 0x6f, 0x6c, 0x65, 0x74, 0x65, 0x12, + 0x48, 0x0a, 0x12, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x0a, 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, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x55, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x6f, 0x75, + 0x72, 0x63, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, + 0x65, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x65, 0x6e, 0x64, 0x6f, 0x72, 0x18, 0x0c, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x06, 0x76, 0x65, 0x6e, 0x64, 0x6f, 0x72, 0x1a, 0xfe, 0x01, 0x0a, 0x0d, 0x57, 0x69, + 0x6e, 0x64, 0x6f, 0x77, 0x73, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x12, 0x17, 0x0a, 0x07, 0x63, 0x70, 0x65, 0x5f, 0x75, 0x72, 0x69, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x63, 0x70, - 0x65, 0x55, 0x72, 0x69, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x12, 0x52, - 0x0a, 0x14, 0x6d, 0x69, 0x6e, 0x5f, 0x61, 0x66, 0x66, 0x65, 0x63, 0x74, 0x65, 0x64, 0x5f, 0x76, - 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x67, - 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x70, - 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x2e, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x12, - 0x6d, 0x69, 0x6e, 0x41, 0x66, 0x66, 0x65, 0x63, 0x74, 0x65, 0x64, 0x56, 0x65, 0x72, 0x73, 0x69, - 0x6f, 0x6e, 0x12, 0x52, 0x0a, 0x14, 0x6d, 0x61, 0x78, 0x5f, 0x61, 0x66, 0x66, 0x65, 0x63, 0x74, - 0x65, 0x64, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x20, 0x2e, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, - 0x61, 0x31, 0x2e, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x2e, 0x56, 0x65, 0x72, 0x73, 0x69, - 0x6f, 0x6e, 0x52, 0x12, 0x6d, 0x61, 0x78, 0x41, 0x66, 0x66, 0x65, 0x63, 0x74, 0x65, 0x64, 0x56, - 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x23, 0x0a, 0x0d, 0x73, 0x65, 0x76, 0x65, 0x72, 0x69, - 0x74, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, - 0x65, 0x76, 0x65, 0x72, 0x69, 0x74, 0x79, 0x4e, 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, 0x5b, 0x0a, - 0x0e, 0x66, 0x69, 0x78, 0x65, 0x64, 0x5f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, - 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, + 0x65, 0x55, 0x72, 0x69, 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, 0x67, 0x0a, 0x0a, 0x66, 0x69, + 0x78, 0x69, 0x6e, 0x67, 0x5f, 0x6b, 0x62, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x48, + 0x2e, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, + 0x2e, 0x76, 0x75, 0x6c, 0x6e, 0x65, 0x72, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x2e, 0x56, + 0x75, 0x6c, 0x6e, 0x65, 0x72, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x2e, 0x57, 0x69, 0x6e, + 0x64, 0x6f, 0x77, 0x73, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2e, 0x4b, 0x6e, 0x6f, 0x77, 0x6c, + 0x65, 0x64, 0x67, 0x65, 0x42, 0x61, 0x73, 0x65, 0x52, 0x09, 0x66, 0x69, 0x78, 0x69, 0x6e, 0x67, + 0x4b, 0x62, 0x73, 0x1a, 0x35, 0x0a, 0x0d, 0x4b, 0x6e, 0x6f, 0x77, 0x6c, 0x65, 0x64, 0x67, 0x65, + 0x42, 0x61, 0x73, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x22, 0xc3, 0x03, 0x0a, 0x07, 0x44, + 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x43, 0x0a, 0x08, 0x73, 0x65, + 0x76, 0x65, 0x72, 0x69, 0x74, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x27, 0x2e, 0x67, + 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x76, + 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, + 0x1d, 0x0a, 0x0a, 0x63, 0x76, 0x73, 0x73, 0x5f, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x02, 0x52, 0x09, 0x63, 0x76, 0x73, 0x73, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x50, + 0x0a, 0x0d, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x73, 0x73, 0x75, 0x65, 0x18, + 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x76, 0x75, 0x6c, 0x6e, 0x65, 0x72, 0x61, 0x62, - 0x69, 0x6c, 0x69, 0x74, 0x79, 0x2e, 0x56, 0x75, 0x6c, 0x6e, 0x65, 0x72, 0x61, 0x62, 0x69, 0x6c, - 0x69, 0x74, 0x79, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0d, 0x66, 0x69, 0x78, - 0x65, 0x64, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x21, 0x0a, 0x0c, 0x70, 0x61, - 0x63, 0x6b, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0b, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1f, 0x0a, - 0x0b, 0x69, 0x73, 0x5f, 0x6f, 0x62, 0x73, 0x6f, 0x6c, 0x65, 0x74, 0x65, 0x18, 0x09, 0x20, 0x01, - 0x28, 0x08, 0x52, 0x0a, 0x69, 0x73, 0x4f, 0x62, 0x73, 0x6f, 0x6c, 0x65, 0x74, 0x65, 0x12, 0x48, - 0x0a, 0x12, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, - 0x74, 0x69, 0x6d, 0x65, 0x18, 0x0a, 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, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x55, 0x70, - 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x1a, 0xfe, 0x01, 0x0a, 0x0d, 0x57, 0x69, 0x6e, - 0x64, 0x6f, 0x77, 0x73, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x12, 0x17, 0x0a, 0x07, 0x63, 0x70, - 0x65, 0x5f, 0x75, 0x72, 0x69, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x63, 0x70, 0x65, - 0x55, 0x72, 0x69, 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, 0x67, 0x0a, 0x0a, 0x66, 0x69, 0x78, - 0x69, 0x6e, 0x67, 0x5f, 0x6b, 0x62, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x48, 0x2e, - 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, - 0x76, 0x75, 0x6c, 0x6e, 0x65, 0x72, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x2e, 0x56, 0x75, - 0x6c, 0x6e, 0x65, 0x72, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x2e, 0x57, 0x69, 0x6e, 0x64, - 0x6f, 0x77, 0x73, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2e, 0x4b, 0x6e, 0x6f, 0x77, 0x6c, 0x65, - 0x64, 0x67, 0x65, 0x42, 0x61, 0x73, 0x65, 0x52, 0x09, 0x66, 0x69, 0x78, 0x69, 0x6e, 0x67, 0x4b, - 0x62, 0x73, 0x1a, 0x35, 0x0a, 0x0d, 0x4b, 0x6e, 0x6f, 0x77, 0x6c, 0x65, 0x64, 0x67, 0x65, 0x42, - 0x61, 0x73, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x22, 0xc3, 0x03, 0x0a, 0x07, 0x44, 0x65, - 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x43, 0x0a, 0x08, 0x73, 0x65, 0x76, - 0x65, 0x72, 0x69, 0x74, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x27, 0x2e, 0x67, 0x72, - 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x76, 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, 0x1d, - 0x0a, 0x0a, 0x63, 0x76, 0x73, 0x73, 0x5f, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x02, 0x52, 0x09, 0x63, 0x76, 0x73, 0x73, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x50, 0x0a, - 0x0d, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x73, 0x73, 0x75, 0x65, 0x18, 0x04, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, 0x76, + 0x69, 0x6c, 0x69, 0x74, 0x79, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x49, 0x73, 0x73, + 0x75, 0x65, 0x52, 0x0c, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x49, 0x73, 0x73, 0x75, 0x65, + 0x12, 0x2b, 0x0a, 0x11, 0x73, 0x68, 0x6f, 0x72, 0x74, 0x5f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x73, 0x68, 0x6f, + 0x72, 0x74, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x29, 0x0a, + 0x10, 0x6c, 0x6f, 0x6e, 0x67, 0x5f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x6c, 0x6f, 0x6e, 0x67, 0x44, 0x65, 0x73, + 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3e, 0x0a, 0x0c, 0x72, 0x65, 0x6c, 0x61, + 0x74, 0x65, 0x64, 0x5f, 0x75, 0x72, 0x6c, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, + 0x2e, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, + 0x2e, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x55, 0x72, 0x6c, 0x52, 0x0b, 0x72, 0x65, 0x6c, + 0x61, 0x74, 0x65, 0x64, 0x55, 0x72, 0x6c, 0x73, 0x12, 0x56, 0x0a, 0x12, 0x65, 0x66, 0x66, 0x65, + 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x73, 0x65, 0x76, 0x65, 0x72, 0x69, 0x74, 0x79, 0x18, 0x08, + 0x20, 0x01, 0x28, 0x0e, 0x32, 0x27, 0x2e, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x76, 0x75, 0x6c, 0x6e, 0x65, 0x72, 0x61, 0x62, 0x69, - 0x6c, 0x69, 0x74, 0x79, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x49, 0x73, 0x73, 0x75, - 0x65, 0x52, 0x0c, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x49, 0x73, 0x73, 0x75, 0x65, 0x12, - 0x2b, 0x0a, 0x11, 0x73, 0x68, 0x6f, 0x72, 0x74, 0x5f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, - 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x73, 0x68, 0x6f, 0x72, - 0x74, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x29, 0x0a, 0x10, - 0x6c, 0x6f, 0x6e, 0x67, 0x5f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, - 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x6c, 0x6f, 0x6e, 0x67, 0x44, 0x65, 0x73, 0x63, - 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3e, 0x0a, 0x0c, 0x72, 0x65, 0x6c, 0x61, 0x74, - 0x65, 0x64, 0x5f, 0x75, 0x72, 0x6c, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, - 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, - 0x52, 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x55, 0x72, 0x6c, 0x52, 0x0b, 0x72, 0x65, 0x6c, 0x61, - 0x74, 0x65, 0x64, 0x55, 0x72, 0x6c, 0x73, 0x12, 0x56, 0x0a, 0x12, 0x65, 0x66, 0x66, 0x65, 0x63, - 0x74, 0x69, 0x76, 0x65, 0x5f, 0x73, 0x65, 0x76, 0x65, 0x72, 0x69, 0x74, 0x79, 0x18, 0x08, 0x20, - 0x01, 0x28, 0x0e, 0x32, 0x27, 0x2e, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, 0x76, 0x31, + 0x6c, 0x69, 0x74, 0x79, 0x2e, 0x53, 0x65, 0x76, 0x65, 0x72, 0x69, 0x74, 0x79, 0x52, 0x11, 0x65, + 0x66, 0x66, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x53, 0x65, 0x76, 0x65, 0x72, 0x69, 0x74, 0x79, + 0x22, 0xf3, 0x02, 0x0a, 0x0c, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x49, 0x73, 0x73, 0x75, + 0x65, 0x12, 0x61, 0x0a, 0x11, 0x61, 0x66, 0x66, 0x65, 0x63, 0x74, 0x65, 0x64, 0x5f, 0x6c, 0x6f, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x67, + 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x76, + 0x75, 0x6c, 0x6e, 0x65, 0x72, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x2e, 0x56, 0x75, 0x6c, + 0x6e, 0x65, 0x72, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x52, 0x10, 0x61, 0x66, 0x66, 0x65, 0x63, 0x74, 0x65, 0x64, 0x4c, 0x6f, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x5b, 0x0a, 0x0e, 0x66, 0x69, 0x78, 0x65, 0x64, 0x5f, 0x6c, 0x6f, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x67, + 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x76, + 0x75, 0x6c, 0x6e, 0x65, 0x72, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x2e, 0x56, 0x75, 0x6c, + 0x6e, 0x65, 0x72, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x52, 0x0d, 0x66, 0x69, 0x78, 0x65, 0x64, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x12, 0x23, 0x0a, 0x0d, 0x73, 0x65, 0x76, 0x65, 0x72, 0x69, 0x74, 0x79, 0x5f, 0x6e, 0x61, + 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x65, 0x76, 0x65, 0x72, 0x69, + 0x74, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, + 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x61, + 0x63, 0x6b, 0x61, 0x67, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x5b, 0x0a, 0x12, 0x65, 0x66, 0x66, + 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x73, 0x65, 0x76, 0x65, 0x72, 0x69, 0x74, 0x79, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x27, 0x2e, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, + 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x76, 0x75, 0x6c, 0x6e, 0x65, 0x72, 0x61, 0x62, + 0x69, 0x6c, 0x69, 0x74, 0x79, 0x2e, 0x53, 0x65, 0x76, 0x65, 0x72, 0x69, 0x74, 0x79, 0x42, 0x03, + 0xe0, 0x41, 0x03, 0x52, 0x11, 0x65, 0x66, 0x66, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x53, 0x65, + 0x76, 0x65, 0x72, 0x69, 0x74, 0x79, 0x22, 0x86, 0x01, 0x0a, 0x15, 0x56, 0x75, 0x6c, 0x6e, 0x65, + 0x72, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x12, 0x17, 0x0a, 0x07, 0x63, 0x70, 0x65, 0x5f, 0x75, 0x72, 0x69, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x06, 0x63, 0x70, 0x65, 0x55, 0x72, 0x69, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x61, 0x63, + 0x6b, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x61, 0x63, 0x6b, + 0x61, 0x67, 0x65, 0x12, 0x3a, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, 0x76, + 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x2e, 0x56, + 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x2a, + 0x5e, 0x0a, 0x08, 0x53, 0x65, 0x76, 0x65, 0x72, 0x69, 0x74, 0x79, 0x12, 0x18, 0x0a, 0x14, 0x53, + 0x45, 0x56, 0x45, 0x52, 0x49, 0x54, 0x59, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, + 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x4d, 0x49, 0x4e, 0x49, 0x4d, 0x41, 0x4c, + 0x10, 0x01, 0x12, 0x07, 0x0a, 0x03, 0x4c, 0x4f, 0x57, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x4d, + 0x45, 0x44, 0x49, 0x55, 0x4d, 0x10, 0x03, 0x12, 0x08, 0x0a, 0x04, 0x48, 0x49, 0x47, 0x48, 0x10, + 0x04, 0x12, 0x0c, 0x0a, 0x08, 0x43, 0x52, 0x49, 0x54, 0x49, 0x43, 0x41, 0x4c, 0x10, 0x05, 0x42, + 0x6b, 0x0a, 0x20, 0x69, 0x6f, 0x2e, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x76, 0x75, 0x6c, 0x6e, 0x65, 0x72, 0x61, 0x62, 0x69, 0x6c, - 0x69, 0x74, 0x79, 0x2e, 0x53, 0x65, 0x76, 0x65, 0x72, 0x69, 0x74, 0x79, 0x52, 0x11, 0x65, 0x66, - 0x66, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x53, 0x65, 0x76, 0x65, 0x72, 0x69, 0x74, 0x79, 0x22, - 0xf3, 0x01, 0x0a, 0x0c, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x49, 0x73, 0x73, 0x75, 0x65, - 0x12, 0x61, 0x0a, 0x11, 0x61, 0x66, 0x66, 0x65, 0x63, 0x74, 0x65, 0x64, 0x5f, 0x6c, 0x6f, 0x63, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x67, 0x72, - 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x76, 0x75, - 0x6c, 0x6e, 0x65, 0x72, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x2e, 0x56, 0x75, 0x6c, 0x6e, - 0x65, 0x72, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x52, 0x10, 0x61, 0x66, 0x66, 0x65, 0x63, 0x74, 0x65, 0x64, 0x4c, 0x6f, 0x63, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x12, 0x5b, 0x0a, 0x0e, 0x66, 0x69, 0x78, 0x65, 0x64, 0x5f, 0x6c, 0x6f, 0x63, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x67, 0x72, - 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x76, 0x75, - 0x6c, 0x6e, 0x65, 0x72, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x2e, 0x56, 0x75, 0x6c, 0x6e, - 0x65, 0x72, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x52, 0x0d, 0x66, 0x69, 0x78, 0x65, 0x64, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x12, 0x23, 0x0a, 0x0d, 0x73, 0x65, 0x76, 0x65, 0x72, 0x69, 0x74, 0x79, 0x5f, 0x6e, 0x61, 0x6d, - 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x65, 0x76, 0x65, 0x72, 0x69, 0x74, - 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x86, 0x01, 0x0a, 0x15, 0x56, 0x75, 0x6c, 0x6e, 0x65, 0x72, - 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, - 0x17, 0x0a, 0x07, 0x63, 0x70, 0x65, 0x5f, 0x75, 0x72, 0x69, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x06, 0x63, 0x70, 0x65, 0x55, 0x72, 0x69, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x61, 0x63, 0x6b, - 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x61, 0x63, 0x6b, 0x61, - 0x67, 0x65, 0x12, 0x3a, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, 0x76, 0x31, - 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x2e, 0x56, 0x65, - 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x2a, 0x5e, - 0x0a, 0x08, 0x53, 0x65, 0x76, 0x65, 0x72, 0x69, 0x74, 0x79, 0x12, 0x18, 0x0a, 0x14, 0x53, 0x45, - 0x56, 0x45, 0x52, 0x49, 0x54, 0x59, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, - 0x45, 0x44, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x4d, 0x49, 0x4e, 0x49, 0x4d, 0x41, 0x4c, 0x10, - 0x01, 0x12, 0x07, 0x0a, 0x03, 0x4c, 0x4f, 0x57, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x4d, 0x45, - 0x44, 0x49, 0x55, 0x4d, 0x10, 0x03, 0x12, 0x08, 0x0a, 0x04, 0x48, 0x49, 0x47, 0x48, 0x10, 0x04, - 0x12, 0x0c, 0x0a, 0x08, 0x43, 0x52, 0x49, 0x54, 0x49, 0x43, 0x41, 0x4c, 0x10, 0x05, 0x42, 0x6b, - 0x0a, 0x20, 0x69, 0x6f, 0x2e, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x2e, 0x76, 0x31, 0x62, - 0x65, 0x74, 0x61, 0x31, 0x2e, 0x76, 0x75, 0x6c, 0x6e, 0x65, 0x72, 0x61, 0x62, 0x69, 0x6c, 0x69, - 0x74, 0x79, 0x50, 0x01, 0x5a, 0x3f, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, - 0x2f, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x2f, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, - 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x76, - 0x75, 0x6c, 0x6e, 0x65, 0x72, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x5f, 0x67, 0x6f, 0x5f, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0xa2, 0x02, 0x03, 0x47, 0x52, 0x41, 0x62, 0x06, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x33, + 0x69, 0x74, 0x79, 0x50, 0x01, 0x5a, 0x3f, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, + 0x6d, 0x2f, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, 0x73, 0x2f, 0x67, 0x72, 0x61, 0x66, 0x65, 0x61, + 0x73, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, + 0x76, 0x75, 0x6c, 0x6e, 0x65, 0x72, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x5f, 0x67, 0x6f, + 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0xa2, 0x02, 0x03, 0x47, 0x52, 0x41, 0x62, 0x06, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -960,7 +1020,7 @@ var file_vulnerability_proto_goTypes = []interface{}{ (*Vulnerability_WindowsDetail)(nil), // 6: grafeas.v1beta1.vulnerability.Vulnerability.WindowsDetail (*Vulnerability_WindowsDetail_KnowledgeBase)(nil), // 7: grafeas.v1beta1.vulnerability.Vulnerability.WindowsDetail.KnowledgeBase (*cvss_go_proto.CVSSv3)(nil), // 8: grafeas.v1beta1.vulnerability.CVSSv3 - (*timestamppb.Timestamp)(nil), // 9: google.protobuf.Timestamp + (*timestamp.Timestamp)(nil), // 9: google.protobuf.Timestamp (*cvss_go_proto.CVSSv2)(nil), // 10: grafeas.v1beta1.vulnerability.CVSSv2 (*common_go_proto.RelatedUrl)(nil), // 11: grafeas.v1beta1.RelatedUrl (*package_go_proto.Version)(nil), // 12: grafeas.v1beta1.package.Version @@ -978,17 +1038,18 @@ var file_vulnerability_proto_depIdxs = []int32{ 0, // 9: grafeas.v1beta1.vulnerability.Details.effective_severity:type_name -> grafeas.v1beta1.vulnerability.Severity 4, // 10: grafeas.v1beta1.vulnerability.PackageIssue.affected_location:type_name -> grafeas.v1beta1.vulnerability.VulnerabilityLocation 4, // 11: grafeas.v1beta1.vulnerability.PackageIssue.fixed_location:type_name -> grafeas.v1beta1.vulnerability.VulnerabilityLocation - 12, // 12: grafeas.v1beta1.vulnerability.VulnerabilityLocation.version:type_name -> grafeas.v1beta1.package.Version - 12, // 13: grafeas.v1beta1.vulnerability.Vulnerability.Detail.min_affected_version:type_name -> grafeas.v1beta1.package.Version - 12, // 14: grafeas.v1beta1.vulnerability.Vulnerability.Detail.max_affected_version:type_name -> grafeas.v1beta1.package.Version - 4, // 15: grafeas.v1beta1.vulnerability.Vulnerability.Detail.fixed_location:type_name -> grafeas.v1beta1.vulnerability.VulnerabilityLocation - 9, // 16: grafeas.v1beta1.vulnerability.Vulnerability.Detail.source_update_time:type_name -> google.protobuf.Timestamp - 7, // 17: grafeas.v1beta1.vulnerability.Vulnerability.WindowsDetail.fixing_kbs:type_name -> grafeas.v1beta1.vulnerability.Vulnerability.WindowsDetail.KnowledgeBase - 18, // [18:18] is the sub-list for method output_type - 18, // [18:18] is the sub-list for method input_type - 18, // [18:18] is the sub-list for extension type_name - 18, // [18:18] is the sub-list for extension extendee - 0, // [0:18] is the sub-list for field type_name + 0, // 12: grafeas.v1beta1.vulnerability.PackageIssue.effective_severity:type_name -> grafeas.v1beta1.vulnerability.Severity + 12, // 13: grafeas.v1beta1.vulnerability.VulnerabilityLocation.version:type_name -> grafeas.v1beta1.package.Version + 12, // 14: grafeas.v1beta1.vulnerability.Vulnerability.Detail.min_affected_version:type_name -> grafeas.v1beta1.package.Version + 12, // 15: grafeas.v1beta1.vulnerability.Vulnerability.Detail.max_affected_version:type_name -> grafeas.v1beta1.package.Version + 4, // 16: grafeas.v1beta1.vulnerability.Vulnerability.Detail.fixed_location:type_name -> grafeas.v1beta1.vulnerability.VulnerabilityLocation + 9, // 17: grafeas.v1beta1.vulnerability.Vulnerability.Detail.source_update_time:type_name -> google.protobuf.Timestamp + 7, // 18: grafeas.v1beta1.vulnerability.Vulnerability.WindowsDetail.fixing_kbs:type_name -> grafeas.v1beta1.vulnerability.Vulnerability.WindowsDetail.KnowledgeBase + 19, // [19:19] is the sub-list for method output_type + 19, // [19:19] 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_vulnerability_proto_init() } diff --git a/protoc/downloadProtoc.sh b/protoc/downloadProtoc.sh index 86afb6d1..9ce967c6 100755 --- a/protoc/downloadProtoc.sh +++ b/protoc/downloadProtoc.sh @@ -2,13 +2,23 @@ # This downloads and installs the protobuf compiler depending on the platform -if [ "$(uname)" == "Darwin" ] -then - # Under Mac OS X platform +if [ "$(uname)" == "Darwin" ]; then + # Under Mac OS X platform echo 'Downloading MacOs protobuf compiler' - curl https://github.com/google/protobuf/releases/download/v3.14.0/protoc-3.14.0-osx-x86_64.zip -o protoc.zip -L -else [ "$(expr substr $(uname -s) 1 5)" == "Linux" ] + if [ "$(arch)" == "arm64" ]; then + echo 'No aarch64 version of protobuf compiler, downloading the x86_64 version' + fi + curl https://github.com/google/protobuf/releases/download/v3.13.0/protoc-3.13.0-osx-x86_64.zip -o protoc.zip -L +elif [ "$(expr substr $(uname -s) 1 5)" == "Linux" ]; then # Under GNU/Linux platform echo 'Downloading Linux protobuf compiler' - curl https://github.com/google/protobuf/releases/download/v3.14.0/protoc-3.14.0-linux-x86_64.zip -o protoc.zip -L + if [ "$(uname -m)" == "aarch64" ]; then + curl https://github.com/google/protobuf/releases/download/v3.13.0/protoc-3.13.0-linux-aarch_64.zip -o protoc.zip -L + else + curl https://github.com/google/protobuf/releases/download/v3.13.0/protoc-3.13.0-linux-x86_64.zip -o protoc.zip -L + fi +elif [ "$(expr substr $(uname -s) 1 5)" == "MINGW" ]; then + # Under Windows platform + echo 'Downloading Windows protobuf compiler' + curl https://github.com/google/protobuf/releases/download/v3.13.0/protoc-3.13.0-win64.zip -o protoc.zip -L fi diff --git a/protoc/generate.go b/protoc/generate.go index ca4cf4a5..2681c7bb 100644 --- a/protoc/generate.go +++ b/protoc/generate.go @@ -4,6 +4,6 @@ //go:generate rm -rf bin //go:generate rm -rf readme.txt //go:generate rm -rf protoc.zip -//go:generate ./downloadProtoc.sh +//go:generate bash ./downloadProtoc.sh //go:generate unzip protoc.zip -d . package protoc diff --git a/protodeps/generate.go b/protodeps/generate.go index 29f17796..3f7f6aea 100644 --- a/protodeps/generate.go +++ b/protodeps/generate.go @@ -3,12 +3,16 @@ //go:generate rm -rf grpc-gateway-2.0.1 //go:generate curl https://github.com/grpc-ecosystem/grpc-gateway/archive/v2.0.1.zip -o grpc-gateway.zip -L //go:generate unzip grpc-gateway.zip -d . +//sleep gives prior command time to release file handles +//go:generate sleep .25 //go:generate mv grpc-gateway-2.0.1 grpc-gateway //go:generate rm -rf googleapis.zip //go:generate rm -rf googleapis //go:generate rm -rf googleapis-fb6fa4cfb16917da8dc5d23c2494d422dd3e9cd4 //go:generate curl https://github.com/googleapis/googleapis/archive/fb6fa4cfb16917da8dc5d23c2494d422dd3e9cd4.zip -o googleapis.zip -L //go:generate unzip googleapis.zip +//sleep gives prior command time to release file handles +//go:generate sleep .25 //go:generate mv googleapis-fb6fa4cfb16917da8dc5d23c2494d422dd3e9cd4 googleapis -package protodeps +package protodeps \ No newline at end of file