Experimental collection traits for Rust
An ordered map and set based on a binary search tree.
A priority queue based on a pairing heap
A priority queue based on a binomial heap
A priority queue based on a skew heap
A linter for APIs defined in protocol buffers.
API Improvement Proposals. https://aip.dev/
pull request commentgoogleapis/api-linter
Add optional fixes and demonstrate them in AIP-128 resource-annotations-field rule
@mingzhi I'm not sure if this is what you had in mind, so please provide suggestions.
We will likely want some helper functions to produce these suggestions, similar to how there are location helpers, particularly for things like adding a new field to a message or removing an existing one. I'm not sure what the best approach for that is.
comment created time in 18 hours
push eventapasel422/api-linter
commit sha 13c7d775af268c83796df6d1d2db5b2bd8254b1d
Add optional fixes and demonstrate them in AIP-128 resource-annotations-field rule
push time in 18 hours
push eventapasel422/api-linter
commit sha 6061278178a776c1f274d7c8c336918e4fa77a4b
Add optional fixes and demonstrate them in AIP-128 resource-annotations-field rule
push time in 18 hours
push eventapasel422/api-linter
commit sha d32a5d8bf54e8f304344a82e13c1beda0e30d0ce
Add optional fixes and demonstrate them in AIP-128 resource-annotations-field rule
push time in 18 hours
push eventapasel422/google.aip.dev
commit sha 976212683f8992eabe455342b74574816e295b92
Expand on guidance for AIP-144 Add and Remove methods
push time in a day
push eventapasel422/google.aip.dev
commit sha 9dcd9bb0ec5da39403e047c044ef185ae60c081d
Link to AIP-203 in required-annotation guidance
push time in a day
issue openedaip-dev/google.aip.dev
Inconsistent use of URI vs. URL
#223 suggests that "URI" should be used everywhere, but a number of AIPs use "URL" or even both options, e.g. https://github.com/aip-dev/google.aip.dev/blob/b573d47e3eb6dee89e12f2d6d9ef6f8dd3dde656/aip/general/0133.md#L49-L53
created time in a day
push eventapasel422/google.aip.dev
commit sha 31af3777a9bf056182d1a8548263935db6227de7
Fix example create URI in AIP-127 Fixes #649.
push time in a day
issue commentaip-dev/google.aip.dev
AIP-127 possibly incorrect example
I think there's just a typo in the post URI, and it should instead be:
rpc CreateBook(CreateBookRequest) returns (Book) {
option (google.api.http) = {
post: "/v1/{parent=publishers/*/books/*}"
body: "book"
};
}
with the } after the *.
comment created time in a day
push eventapasel422/google.aip.dev
commit sha 205b79ca563c3b30e7ef27869e54109ae5897e9f
Expand on guidance for AIP-144 Add and Remove methods
push time in 3 days
Pull request review commentgoogleapis/api-linter
feat: Declarative-friendly resources should avoid custom methods.
+// Copyright 2020 Google LLC+//+// Licensed under the Apache License, Version 2.0 (the "License");+// you may not use this file except in compliance with the License.+// You may obtain a copy of the License at+//+// https://www.apache.org/licenses/LICENSE-2.0+//+// Unless required by applicable law or agreed to in writing, software+// distributed under the License is distributed on an "AS IS" BASIS,+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.+// See the License for the specific language governing permissions and+// limitations under the License.++package aip0136++import (+ "testing"++ "github.com/googleapis/api-linter/rules/internal/testutils"+)++func TestDeclarativeFriendly(t *testing.T) {+ for _, test := range []struct {+ name string+ MethodName string+ ImpOnly string+ problems testutils.Problems+ }{+ {"ValidGet", "GetBook", "", nil},+ {"ValidList", "ListBooks", "", nil},+ {"ValidCreate", "CreateBook", "", nil},+ {"ValidUpdate", "UpdateBook", "", nil},+ {"ValidDelete", "DeleteBook", "", nil},+ {"ValidUndelete", "UndeleteBook", "", nil},
{"ValidUndelete", "UndeleteBook", "", nil},
{"ValidBatch", "BatchGetBooks", "", nil},
comment created time in 3 days
Pull request review commentgoogleapis/api-linter
feat: Declarative-friendly resources should avoid custom methods.
+// Copyright 2020 Google LLC+//+// Licensed under the Apache License, Version 2.0 (the "License");+// you may not use this file except in compliance with the License.+// You may obtain a copy of the License at+//+// https://www.apache.org/licenses/LICENSE-2.0+//+// Unless required by applicable law or agreed to in writing, software+// distributed under the License is distributed on an "AS IS" BASIS,+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.+// See the License for the specific language governing permissions and+// limitations under the License.++package aip0136++import (+ "strings"++ "bitbucket.org/creachadair/stringset"+ "github.com/googleapis/api-linter/lint"+ "github.com/googleapis/api-linter/rules/internal/utils"+ "github.com/jhump/protoreflect/desc"+)++var standardMethodsOnly = &lint.MethodRule{+ Name: lint.NewRuleName(136, "declarative-standard-methods-only"),+ OnlyIf: utils.IsDeclarativeFriendlyMethod,+ LintMethod: func(m *desc.MethodDescriptor) []lint.Problem {+ // Standard methods are fine.+ standard := stringset.New("Get", "List", "Create", "Update", "Delete", "Undelete")
Should the batch methods be included here?
comment created time in 4 days
Pull request review commentaip-dev/google.aip.dev
AIP-144: Declarative-friendly resources should avoid Add/Remove.
fine for many situations, particularly when the repeated field is expected to have a small size (fewer than 10 or so) and race conditions are not an issue, or can be guarded against with [ETags][aip-154]. +**Note:** Declarative-friendly resources **must** use the standard `Update`+method, and not introduce `Add` and `Remove` method.
method, and not introduce `Add` and `Remove` methods.
comment created time in 4 days
issue openedgoogleapis/api-linter
https://google.aip.dev/144#update-strategies
But see also https://github.com/aip-dev/google.aip.dev/issues/646.
created time in 4 days
issue openedaip-dev/google.aip.dev
AIP-144 section on add/remove methods is vague
https://google.aip.dev/144#update-strategies
- It doesn't demonstrate the request and response messages.
- There should be a requirement that the
bookfield in the request is astringwith the appropriategoogle.api.resource_referenceand(google.api.field_behavior) = REQUIREDannotations. - Should there be guidance on a
(google.api.method_signature)annotation on the two methods? - Should there even be an
AddBookResponseorRemoveBookResponse, as opposed to returningBookitself?
created time in 4 days
push eventapasel422/api-linter
commit sha 1083c2a1b08c682fb4e3bacc63ee6bd47187b640
Use utils.FindMessage in request-parent checks to account for fully-qualified message names
push time in 4 days
push eventapasel422/api-linter
commit sha dd15441fb8c37be237ad41667b925c9b888ce51c
Use utils.FindMessage in request-parent checks to account for fully-qualified message names
push time in 4 days
issue commentgoogleapis/api-linter
I've confirmed that this is an issue. Looking into a fix now.
comment created time in 4 days
PR opened googleapis/api-linter
This reverts commit 04d68971f51c68363ce75c5bf441a5c3d72b59dc.
In #631 I mistakenly thought this was looking at the HTTP pattern, not the resource pattern.
pr created time in 4 days
push eventapasel422/api-linter
commit sha bb3d9bfd7acfedb5c918a06ee767337b68501574
chore: Add config to turn off label-sync (#635)
commit sha fb0d87743ccc8bb45c63edb49e0522a3424f79bd
fix: Fix typos in batch AIPs (#632) Co-authored-by: Luke Sneeringer <[email protected]>
commit sha 2cf091260c715413d3fe7b2651016d009b68aae7
fix: Fix erroneous logic for batch request-parent-field rules (#631) Batch URIs reference a collection, not an individual resource, so a parent field should be required when there is at least one resource in the URI. The parent field should be absent when there are no resources in the URI, but these rules don't yet enforce that. Co-authored-by: Luke Sneeringer <[email protected]>
commit sha 882a6f9bed8c6a5a13340fbdbb9986f99310cce3
feat: Add request-parent-field rule for AIP-235 (#636) Co-authored-by: Luke Sneeringer <[email protected]>
commit sha ca8bb903e5abbb5ec4849f4283a0293bff617ac4
feat: Add rules for batch-request names-field annotations (#637) These annotations were added in https://github.com/aip-dev/google.aip.dev/pull/612. Co-authored-by: Luke Sneeringer <[email protected]>
commit sha e1fe734f0fdf63d8d7ed1a1ebe10104a104b7e85
feat: Add rule for AIP-235 request-names-field (#638) Co-authored-by: Luke Sneeringer <[email protected]>
commit sha c50d6c1318e14b0a27ef8cb77137e0d9ad680272
feat: Add rules for batch-method requests field behavior (#644)
commit sha b9364d857b13f5029a09681a3c06130bae1b2676
fix: Permit two-word top-level collections in the URI suffix. (#642) Another tweak to the perpetually-difficult `http-uri-suffix` rule from AIP-136. Fixes #622.
commit sha d7f33f46c611275f9a857e7686698ac7a05901bd
Add rules for batch-method parent resource reference (#643) Co-authored-by: Luke Sneeringer <[email protected]>
commit sha d243c9dce10e226d6e19ca0ecadc5e07c4806f76
docs: fix AIP-158 disablement example (#645)
commit sha 12e500e4455accae6bc899dd3a692cd61f1d6e61
feat: Add rules for unknown fields in batch requests (#646)
commit sha a869e76ee0ccbae9ce786be36e5fd184c07346e9
feat: Add IsDeclarativeFriendly utility method. (#647)
commit sha ea04da6f31978006a6fec6b9279c4ee9a07fde2e
feat: Add rule for AIP-235 soft-delete response resource field (#649) Co-authored-by: Luke Sneeringer <[email protected]>
commit sha c7abce41f7242e15b2942b92b2f4716f4b9fb21c
feat: Add rule for AIP-235 response message name (#648) Co-authored-by: Luke Sneeringer <[email protected]>
commit sha ddc47f24a019b71ed731bf21ff1198eef665a329
refactor: Make separate IsDeclarativeFriendly methods for message and method. (#650) * refactor: Make separate IsDeclarativeFriendly methods for message and method. Otherwise they can not be sent to OnlyIf. Additionally, support request messages. * Incorporate golint feedback.
commit sha c644cf4f3b8de619caa7c32eea27d92dc97a824e
fix: Loosen warnings around REQUIRED and OPTIONAL. (#652) This removes some false positive warnings.
commit sha ffa93dfb98c1a6ce7eaf50a5b7852823e8e36248
fix: Permit ListRevisions methods to include their resource field. (#653)
commit sha d598c1b90dbc6b0892c6d37e05e6ab9ff2cb0653
feat: Add `allow_missing` rule to AIP-134. (#651)
commit sha 2530b952abbbdb35435af06530dbe769f1cb8ef4
feat: Add rule to prevent optional and required together. (#654) Fixes #641.
commit sha 98aa656253b011c55a2720b0516656fa386b4081
feat: Add three rules for AIP-154. (#655)
push time in 5 days
issue commentgoogleapis/api-linter
AIP-144: Declarative-friendly resources should not have Add/Remove methods for repeated fields.
Where is this guidance documented? I don't see any mention of it in AIP-144.
comment created time in 5 days
push eventapasel422/api-linter
commit sha 4ba3b8c0c0336c773868ef0a1b52370e62b5c112
Add rule to require Undelete methods for declarative-friendly resources
push time in 5 days
push eventapasel422/api-linter
commit sha 07446fa7706bb9ebe90d57e6d214d7f472da7048
Add tests for common lints
push time in 6 days
Pull request review commentgoogleapis/api-linter
refactor: Extract common lints into the util package to eliminate redundancy
+// Copyright 2020 Google LLC+//+// Licensed under the Apache License, Version 2.0 (the "License");+// you may not use this file except in compliance with the License.+// You may obtain a copy of the License at+//+// https://www.apache.org/licenses/LICENSE-2.0+//+// Unless required by applicable law or agreed to in writing, software+// distributed under the License is distributed on an "AS IS" BASIS,+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.+// See the License for the specific language governing permissions and+// limitations under the License.++package utils++import (+ "fmt"++ "github.com/googleapis/api-linter/lint"+ "github.com/googleapis/api-linter/locations"+ "github.com/jhump/protoreflect/desc"+ "github.com/jhump/protoreflect/desc/builder"+)++// LintStringField returns a problem if the field is not a string.+func LintStringField(f *desc.FieldDescriptor) []lint.Problem {+ if f.GetType() != builder.FieldTypeString().GetType() {+ return []lint.Problem{{+ Message: fmt.Sprintf("The `%s` field must be a string.", f.GetType()),+ Suggestion: "string",+ Descriptor: f,+ Location: locations.FieldType(f),+ }}+ }+ return nil+}++// LintRequiredField returns a problem if the field's behavior is not REQUIRED.+func LintRequiredField(f *desc.FieldDescriptor) []lint.Problem {+ if !GetFieldBehavior(f).Contains("REQUIRED") {+ return []lint.Problem{{+ Message: fmt.Sprintf("The `%s` field should include `(google.api.field_behavior) = REQUIRED`.", f.GetName()),+ Descriptor: f,+ }}+ }+ return nil+}++// LintFieldResourceReference returns a problem if the field does not have a resource reference annotation.+func LintFieldResourceReference(f *desc.FieldDescriptor) []lint.Problem {+ if ref := GetResourceReference(f); ref == nil {+ return []lint.Problem{{+ Message: fmt.Sprintf("The `%s` field should include a `google.api.resource_reference` annotation.", f.GetName()),+ Descriptor: f,+ }}+ }+ return nil+}++func lintHTTPBody(m *desc.MethodDescriptor, want, msg string) []lint.Problem {
I like the explicitness of the separate functions, which also helps with message-generation simplicity, but I defer to you.
comment created time in 6 days
Pull request review commentgoogleapis/api-linter
refactor: Extract common lints into the util package to eliminate redundancy
+// Copyright 2020 Google LLC+//+// Licensed under the Apache License, Version 2.0 (the "License");+// you may not use this file except in compliance with the License.+// You may obtain a copy of the License at+//+// https://www.apache.org/licenses/LICENSE-2.0+//+// Unless required by applicable law or agreed to in writing, software+// distributed under the License is distributed on an "AS IS" BASIS,+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.+// See the License for the specific language governing permissions and+// limitations under the License.++package utils++import (+ "fmt"++ "github.com/googleapis/api-linter/lint"+ "github.com/googleapis/api-linter/locations"+ "github.com/jhump/protoreflect/desc"+ "github.com/jhump/protoreflect/desc/builder"+)++// LintStringField returns a problem if the field is not a string.+func LintStringField(f *desc.FieldDescriptor) []lint.Problem {
I'd rather wait until it's needed, as it will make the message-generation more complicated.
comment created time in 6 days
push eventapasel422/api-linter
commit sha 9849b65eb0546d2e1bf06840745bbbec8c6a861a
Extract common lints into the util package to eliminate redundancy
push time in 6 days
push eventapasel422/api-linter
commit sha 3e5401ed4cb6f97152c6ddecbd1396d6858d8e5c
Extract common lints into the util package to eliminate redundancy
push time in 6 days
push eventapasel422/api-linter
commit sha 5efa62f0fd5dd3ab86a892d5b090bb5768cf9c3d
Extract common lints into the util package to eliminate redundancy
push time in 6 days
push eventapasel422/api-linter
commit sha 7a721f656d6af6859f9dc53ec2a3b624f3541e5e
Add rule for AIP-128 reconciling field
push time in 6 days
issue openedgoogleapis/api-linter
Some rules that check field types do not account for repeated-vs-singular
created time in 6 days
Pull request review commentgoogleapis/api-linter
feat: Add rules for AIP-164 Undelete
+// Copyright 2020 Google LLC+//+// Licensed under the Apache License, Version 2.0 (the "License");+// you may not use this file except in compliance with the License.+// You may obtain a copy of the License at+//+// https://www.apache.org/licenses/LICENSE-2.0+//+// Unless required by applicable law or agreed to in writing, software+// distributed under the License is distributed on an "AS IS" BASIS,+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.+// See the License for the specific language governing permissions and+// limitations under the License.++package aip0164++import (+ "strings"+ "testing"++ dpb "github.com/golang/protobuf/protoc-gen-go/descriptor"+ "github.com/jhump/protoreflect/desc/builder"+ "google.golang.org/genproto/googleapis/api/annotations"+ "google.golang.org/protobuf/proto"+)++func TestHttpBody(t *testing.T) {+ tests := []struct {+ testName string+ body string+ methodName string+ msg string+ }{+ {"Valid", "*", "UndeleteBook", ""},+ {"Invalid", "", "UndeleteBook", "HTTP body"},+ {"Irrelevant", "", "AcquireBook", ""},+ }++ for _, test := range tests {+ t.Run(test.testName, func(t *testing.T) {+ // Create a MethodOptions with the annotation set.+ opts := &dpb.MethodOptions{}
I really miss g4 cp in GitHub's PR UI, to make these changes more obvious.
comment created time in 6 days
Pull request review commentgoogleapis/api-linter
feat: Add rules for AIP-164 Undelete
+// Copyright 2020 Google LLC+//+// Licensed under the Apache License, Version 2.0 (the "License");+// you may not use this file except in compliance with the License.+// You may obtain a copy of the License at+//+// https://www.apache.org/licenses/LICENSE-2.0+//+// Unless required by applicable law or agreed to in writing, software+// distributed under the License is distributed on an "AS IS" BASIS,+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.+// See the License for the specific language governing permissions and+// limitations under the License.++package aip0164++import (+ "strings"+ "testing"++ dpb "github.com/golang/protobuf/protoc-gen-go/descriptor"+ "github.com/jhump/protoreflect/desc/builder"+ "google.golang.org/genproto/googleapis/api/annotations"+ "google.golang.org/protobuf/proto"+)++func TestHttpBody(t *testing.T) {+ tests := []struct {+ testName string+ body string+ methodName string+ msg string+ }{+ {"Valid", "*", "UndeleteBook", ""},+ {"Invalid", "", "UndeleteBook", "HTTP body"},+ {"Irrelevant", "", "AcquireBook", ""},+ }++ for _, test := range tests {+ t.Run(test.testName, func(t *testing.T) {+ // Create a MethodOptions with the annotation set.+ opts := &dpb.MethodOptions{}
I just copied it from one of the other tests that was similar. It'd be good at some point to upgrade all the tests to use ParseProto3Tmpl.
comment created time in 6 days
push eventapasel422/api-linter
commit sha 0179fe6b4fc062125d73d2d8172113b5486d7deb
Add rule for AIP-128 annotations field
push time in 6 days
issue commentgoogleapis/api-linter
AIP-164: Declarative-friendly resources should include an Undelete method.
What's the canonical way to ensure that a resource has an associated method?
comment created time in 6 days
push eventapasel422/api-linter
commit sha 66dcf5d1af0e901bfc943c6023ece8d8ed6285e4
Add lint for long-running AIP-164 Undelete
push time in 6 days
Pull request review commentgoogleapis/api-linter
feat: Add LRO rule for Delete methods (declarative-friendly).
+---+rule:+ aip: 135+ name: [core, '0135', response-lro]+ summary: |+ Declarative-friendly delete methods should use long-running operations.+permalink: /135/response-lro+redirect_from:+ - /0135/response-lro+---++# Long-running Delete++This rule enforces that declarative-friendly delete methods use long-running+operations, as mandated in [AIP-135][].++## Details++This rule looks at any `Delete` method connected to a resource with a+`google.api.resource` annotation that includes `style: DECLARATIVE_FRIENDLY`,+and complains if it does not use long-running operations.++## Examples++**Incorrect** code for this rule:++```proto+// Incorrect.+// Assuming that Book is styled declarative-friendly, DeleteBook should+// return a long-running operation.+rpc DeleteBook(DeleteBookRequest) returns (Book) {+ option (google.api.http) = {+ delete: "/v1/{name=publishers/*/books/*}"+ };+}+```++**Correct** code for this rule:++```proto+// Correct.+// Assuming that Book is styled declarative-friendly...+rpc DeleteBook(DeleteBookRequest) returns (google.longrunning.Operation) {+ option (google.api.http) = {+ delete: "/v1/{name=publishers/*/books/*}"+ };+ option (google.longrunning.operation_info) = {+ response_type: "Book"+ metadata_type: "OperationMetadata"+ }+}+```++## Disabling++If you need to violate this rule, use a leading comment above the message.+Remember to also include an [aip.dev/not-precedent][] comment explaining why.++```proto+// (-- api-linter: core::0135::response-lro=disabled+// aip.dev/not-precedent: We need to do this because reasons. --)+rpc DeleteBook(DeleteBookRequest) returns (Book) {+ option (google.api.http) = {+ delete: "/v1/{name=publishers/*/books/*}"+ body: "book"
comment created time in 6 days
Pull request review commentgoogleapis/api-linter
feat: Add declarative-friendly logic to the Delete response check.
var responseMessageName = &lint.MethodRule{ // The AIP-151 rule will whine about that, and this rule should not as it // would be confusing. if !want.Contains(got) && got != "" {- return []lint.Problem{{- Message: fmt.Sprintf(- "Delete RPCs should have response message type of Empty or the resource, not %q.",- got,- ),- Suggestion: "google.protobuf.Empty",+ // Customize the error message (by including Empty iff the resource is+ // not marked declarative-friendly).)
// not marked declarative-friendly)
comment created time in 6 days
Pull request review commentgoogleapis/api-linter
feat: Add LRO rule for Update methods (declarative-friendly).
+---+rule:+ aip: 134+ name: [core, '0134', response-lro]+ summary: |+ Declarative-friendly Update methods should use long-running operations.+permalink: /134/response-lro+redirect_from:+ - /0134/response-lro+---++# Long-running Update++This rule enforces that declarative-friendly update methods use long-running+operations, as mandated in [AIP-134][].++## Details++This rule looks at any `Update` method connected to a resource with a+`google.api.resource` annotation that includes `style: DECLARATIVE_FRIENDLY`,+and complains if it does not use long-running operations.++## Examples++**Incorrect** code for this rule:++```proto+// Incorrect.+// Assuming that Book is styled declarative-friendly, UpdateBook should+// return a long-running operation.+rpc UpdateBook(UpdateBookRequest) returns (Book) {+ option (google.api.http) = {+ patch: "/v1/{book.name=publishers/*/books/*}"+ body: "book"+ };+}+```++**Correct** code for this rule:++```proto+// Correct.+// Assuming that Book is styled declarative-friendly...+rpc UpdateBook(UpdateBookRequest) returns (google.longrunning.Operation) {+ option (google.api.http) = {+ patch: "/v1/{book.name=publishers/*/books/*}"+ body: "book"+ };+ option (google.longrunning.operation_info) = {+ response_type: "Book"+ metadata_type: "OperationMetadata"+ }
};
comment created time in 6 days
Pull request review commentgoogleapis/api-linter
feat: Add LRO rule for Delete methods (declarative-friendly).
+---+rule:+ aip: 135+ name: [core, '0135', response-lro]+ summary: |+ Declarative-friendly delete methods should use long-running operations.+permalink: /135/response-lro+redirect_from:+ - /0135/response-lro+---++# Long-running Delete++This rule enforces that declarative-friendly delete methods use long-running+operations, as mandated in [AIP-135][].++## Details++This rule looks at any `Delete` method connected to a resource with a+`google.api.resource` annotation that includes `style: DECLARATIVE_FRIENDLY`,+and complains if it does not use long-running operations.++## Examples++**Incorrect** code for this rule:++```proto+// Incorrect.+// Assuming that Book is styled declarative-friendly, DeleteBook should+// return a long-running operation.+rpc DeleteBook(DeleteBookRequest) returns (Book) {+ option (google.api.http) = {+ delete: "/v1/{name=publishers/*/books/*}"+ };+}+```++**Correct** code for this rule:++```proto+// Correct.+// Assuming that Book is styled declarative-friendly...+rpc DeleteBook(DeleteBookRequest) returns (google.longrunning.Operation) {+ option (google.api.http) = {+ delete: "/v1/{name=publishers/*/books/*}"+ };+ option (google.longrunning.operation_info) = {+ response_type: "Book"+ metadata_type: "OperationMetadata"+ }
};
comment created time in 6 days
issue openedaip-dev/google.aip.dev
AIP-164: Should Undelete method have a method-signature annotation?
To mirror that of https://google.aip.dev/135.
created time in 7 days
PR opened googleapis/api-linter
It's permitted at https://github.com/googleapis/api-linter/blob/005f6feace6f363c94bf559fe9845bbba964688e/rules/aip0135/request_unknown_fields.go#L35.
pr created time in 7 days
push eventapasel422/api-linter
commit sha 4a6e7152b26899ec54478b2f46b1f6f4a84933b0
Add rules for AIP-164 Undelete
push time in 7 days
push eventapasel422/api-linter
commit sha f8448f5907dc325077d65c43f33d0b8eeb904c9d
Add rules for AIP-164 Undelete
push time in 7 days
push eventapasel422/api-linter
commit sha 7237807164edf6bb12185d4bcff5b1a54bd500eb
Add rules for AIP-164 Undelete
push time in 7 days