blob: dccf65f931ab855136bffeadaf02c4eafa28e0ae [file]
// Licensed to the Apache Software Foundation (ASF) under one or more
// contributor license agreements. See the NOTICE file distributed with
// this work for additional information regarding copyright ownership.
// The ASF licenses this file to You 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.
// Minimal, self-contained subset of the Envoy Rate Limit Service protocol,
// used by EnvoyRateLimiter in rate_limiter.py. Only the fields the client
// touches are declared. Field numbers MUST match Envoy's rls.proto and
// ratelimit.proto so this is wire-compatible with a real Envoy RLS server
// (protobuf carries only field numbers and types on the wire, not message or
// package names). This lets Beam use its standard protobuf/grpcio stack
// instead of pulling in envoy-data-plane and its betterproto dependency.
//
// Regenerate rate_limit_pb2.py after editing this file:
// cd sdks/python
// python -m grpc_tools.protoc -I. --python_out=. \
// apache_beam/io/components/rate_limit.proto
// then prepend the Apache license header and remove the generated
// `runtime_version` guard so the module stays compatible with the full
// protobuf runtime range Beam supports (see setup.py).
syntax = "proto3";
package apache_beam.io.components.ratelimit;
import "google/protobuf/duration.proto";
message RateLimitDescriptor {
message Entry {
string key = 1;
string value = 2;
}
repeated Entry entries = 1;
}
message RateLimitRequest {
string domain = 1;
repeated RateLimitDescriptor descriptors = 2;
uint32 hits_addend = 3;
}
message RateLimitResponse {
enum Code {
UNKNOWN = 0;
OK = 1;
OVER_LIMIT = 2;
}
message DescriptorStatus {
Code code = 1;
google.protobuf.Duration duration_until_reset = 4;
}
Code overall_code = 1;
repeated DescriptorStatus statuses = 2;
}