diff --git a/google/pubsub/artman_pubsub.yaml b/google/pubsub/artman_pubsub.yaml
index 5ca885a9..0d354412 100644
--- a/google/pubsub/artman_pubsub.yaml
+++ b/google/pubsub/artman_pubsub.yaml
@@ -2,7 +2,7 @@ common:
api_name: pubsub
api_version: v1
organization_name: google-cloud
- service_yaml: pubsub.yaml
+ service_yaml: v1/pubsub_v1.yaml
gapic_yaml: v1/pubsub_gapic.yaml
src_proto_paths:
- v1
diff --git a/google/pubsub/pubsub.yaml b/google/pubsub/pubsub.yaml
deleted file mode 100644
index 77cc84c4..00000000
--- a/google/pubsub/pubsub.yaml
+++ /dev/null
@@ -1,67 +0,0 @@
-type: google.api.Service
-config_version: 3
-name: pubsub.googleapis.com
-title: Google Cloud Pub/Sub API
-
-apis:
-- name: google.pubsub.v1.Publisher
-- name: google.pubsub.v1.Subscriber
-
-documentation:
- summary: |-
- Provides reliable, many-to-many, asynchronous messaging between
- applications.
- rules:
- - selector: >
- google.pubsub.v1.Topic.name,
- description: |
- The name of the topic. It must have the format
- `"projects/{project}/topics/{topic}"`. `{topic}` must start with a letter,
- and contain only letters (`[A-Za-z]`), numbers (`[0-9]`), dashes (`-`),
- underscores (`_`), periods (`.`), tildes (`~`), plus (`+`) or percent
- signs (`%`). It must be between 3 and 255 characters in length, and it
- must not start with `"goog"`.
- - selector: >
- google.pubsub.v1.Subscription.name,
- description: |
- The name of the subscription. It must have the format
- `"projects/{project}/subscriptions/{subscription}"`. `{subscription}` must
- start with a letter, and contain only letters (`[A-Za-z]`), numbers
- (`[0-9]`), dashes (`-`), underscores (`_`), periods (`.`), tildes (`~`),
- plus (`+`) or percent signs (`%`). It must be between 3 and 255 characters
- in length, and it must not start with `"goog"`
-
-http:
- rules:
- - selector: google.iam.v1.IAMPolicy.SetIamPolicy
- post: '/v1/{resource=projects/*/topics/*}:setIamPolicy'
- body: '*'
- additional_bindings:
- - post: '/v1/{resource=projects/*/subscriptions/*}:setIamPolicy'
- body: '*'
- - post: '/v1/{resource=projects/*/snapshots/*}:setIamPolicy'
- body: '*'
-
- - selector: google.iam.v1.IAMPolicy.GetIamPolicy
- get: '/v1/{resource=projects/*/topics/*}:getIamPolicy'
- additional_bindings:
- - get: '/v1/{resource=projects/*/subscriptions/*}:getIamPolicy'
- - get: '/v1/{resource=projects/*/snapshots/*}:getIamPolicy'
-
- - selector: google.iam.v1.IAMPolicy.TestIamPermissions
- post: '/v1/{resource=projects/*/subscriptions/*}:testIamPermissions'
- body: '*'
- additional_bindings:
- - post: '/v1/{resource=projects/*/topics/*}:testIamPermissions'
- body: '*'
- - post: '/v1/{resource=projects/*/snapshots/*}:testIamPermissions'
- body: '*'
-
-
-authentication:
- rules:
- - selector: '*'
- oauth:
- canonical_scopes: |-
- https://www.googleapis.com/auth/cloud-platform,
- https://www.googleapis.com/auth/pubsub
diff --git a/google/pubsub/v1/BUILD.bazel b/google/pubsub/v1/BUILD.bazel
index 17f44adc..1de8bd5c 100644
--- a/google/pubsub/v1/BUILD.bazel
+++ b/google/pubsub/v1/BUILD.bazel
@@ -14,6 +14,8 @@ proto_library(
deps = [
"//google/api:annotations_proto",
"//google/api:client_proto",
+ "//google/api:field_behavior_proto",
+ "//google/api:resource_proto",
"@com_google_protobuf//:duration_proto",
"@com_google_protobuf//:empty_proto",
"@com_google_protobuf//:field_mask_proto",
@@ -69,7 +71,7 @@ java_gapic_library(
src = ":pubsub_proto_with_info",
gapic_yaml = "pubsub_gapic.yaml",
gen_resource_name = False,
- service_yaml = "//google/pubsub:pubsub.yaml",
+ service_yaml = ":pubsub_v1.yaml",
test_deps = [
":pubsub_java_grpc",
"//google/iam/v1:iam_java_grpc",
@@ -120,6 +122,8 @@ moved_proto_library(
deps = [
"//google/api:annotations_proto",
"//google/api:client_proto",
+ "//google/api:field_behavior_proto",
+ "//google/api:resource_proto",
"@com_google_protobuf//:duration_proto",
"@com_google_protobuf//:empty_proto",
"@com_google_protobuf//:field_mask_proto",
@@ -143,7 +147,7 @@ py_gapic_library(
name = "pubsub_py_gapic",
src = ":pubsub_proto_with_info",
gapic_yaml = "pubsub_gapic.yaml",
- service_yaml = "//google/pubsub:pubsub.yaml",
+ service_yaml = ":pubsub_v1.yaml",
deps = [
":pubsub_py_proto",
":pubsub_py_grpc"
@@ -183,7 +187,7 @@ go_gapic_library(
src = ":pubsub_proto_with_info",
gapic_yaml = "pubsub_gapic.yaml",
importpath = "cloud.google.com/go/pubsub/apiv1",
- service_yaml = "//google/pubsub:pubsub.yaml",
+ service_yaml = ":pubsub_v1.yaml",
deps = [":pubsub_go_proto"],
)
@@ -232,7 +236,7 @@ php_gapic_library(
name = "pubsub_php_gapic",
src = ":pubsub_proto_with_info",
gapic_yaml = "pubsub_gapic.yaml",
- service_yaml = "//google/pubsub:pubsub.yaml",
+ service_yaml = ":pubsub_v1.yaml",
deps = [
":pubsub_php_grpc",
":pubsub_php_proto",
@@ -262,7 +266,7 @@ nodejs_gapic_library(
name = "pubsub_nodejs_gapic",
src = ":pubsub_proto_with_info",
gapic_yaml = "pubsub_gapic.yaml",
- service_yaml = "//google/pubsub:pubsub.yaml",
+ service_yaml = ":pubsub_v1.yaml",
deps = [],
)
@@ -300,7 +304,7 @@ ruby_gapic_library(
name = "pubsub_ruby_gapic",
src = ":pubsub_proto_with_info",
gapic_yaml = "pubsub_gapic.yaml",
- service_yaml = "//google/pubsub:pubsub.yaml",
+ service_yaml = ":pubsub_v1.yaml",
deps = [
":pubsub_ruby_grpc",
":pubsub_ruby_proto",
@@ -343,7 +347,7 @@ csharp_gapic_library(
name = "pubsub_csharp_gapic",
src = ":pubsub_proto_with_info",
gapic_yaml = "pubsub_gapic.yaml",
- service_yaml = "//google/pubsub:pubsub.yaml",
+ service_yaml = ":pubsub_v1.yaml",
deps = [
":pubsub_csharp_grpc",
":pubsub_csharp_proto",
diff --git a/google/pubsub/v1/pubsub.proto b/google/pubsub/v1/pubsub.proto
index da3801df..1a989b5c 100644
--- a/google/pubsub/v1/pubsub.proto
+++ b/google/pubsub/v1/pubsub.proto
@@ -17,12 +17,14 @@ syntax = "proto3";
package google.pubsub.v1;
-import "google/api/annotations.proto";
import "google/api/client.proto";
+import "google/api/field_behavior.proto";
+import "google/api/resource.proto";
import "google/protobuf/duration.proto";
import "google/protobuf/empty.proto";
import "google/protobuf/field_mask.proto";
import "google/protobuf/timestamp.proto";
+import "google/api/annotations.proto";
option cc_enable_arenas = true;
option csharp_namespace = "Google.Cloud.PubSub.V1";
@@ -49,6 +51,7 @@ service Publisher {
put: "/v1/{name=projects/*/topics/*}"
body: "*"
};
+ option (google.api.method_signature) = "name";
}
// Updates an existing topic. Note that certain properties of a
@@ -67,6 +70,7 @@ service Publisher {
post: "/v1/{topic=projects/*/topics/*}:publish"
body: "*"
};
+ option (google.api.method_signature) = "topic,messages";
}
// Gets the configuration of a topic.
@@ -74,6 +78,7 @@ service Publisher {
option (google.api.http) = {
get: "/v1/{topic=projects/*/topics/*}"
};
+ option (google.api.method_signature) = "topic";
}
// Lists matching topics.
@@ -81,14 +86,15 @@ service Publisher {
option (google.api.http) = {
get: "/v1/{project=projects/*}/topics"
};
+ option (google.api.method_signature) = "project";
}
// Lists the names of the subscriptions on this topic.
- rpc ListTopicSubscriptions(ListTopicSubscriptionsRequest)
- returns (ListTopicSubscriptionsResponse) {
+ rpc ListTopicSubscriptions(ListTopicSubscriptionsRequest) returns (ListTopicSubscriptionsResponse) {
option (google.api.http) = {
get: "/v1/{topic=projects/*/topics/*}/subscriptions"
};
+ option (google.api.method_signature) = "topic";
}
// Lists the names of the snapshots on this topic. Snapshots are used in
@@ -97,8 +103,7 @@ service Publisher {
// you to manage message acknowledgments in bulk. That is, you can set the
// acknowledgment state of messages in an existing subscription to the state
// captured by a snapshot.
- rpc ListTopicSnapshots(ListTopicSnapshotsRequest)
- returns (ListTopicSnapshotsResponse) {
+ rpc ListTopicSnapshots(ListTopicSnapshotsRequest) returns (ListTopicSnapshotsResponse) {
option (google.api.http) = {
get: "/v1/{topic=projects/*/topics/*}/snapshots"
};
@@ -113,6 +118,7 @@ service Publisher {
option (google.api.http) = {
delete: "/v1/{topic=projects/*/topics/*}"
};
+ option (google.api.method_signature) = "topic";
}
}
@@ -127,13 +133,19 @@ message MessageStoragePolicy {
// A topic resource.
message Topic {
- // The name of the topic. It must have the format
+ option (google.api.resource) = {
+ type: "pubsub.googleapis.com/Topic"
+ pattern: "projects/{project}/topics/{topic}"
+ pattern: "_deleted-topic_"
+ };
+
+ // Required. The name of the topic. It must have the format
// `"projects/{project}/topics/{topic}"`. `{topic}` must start with a letter,
// and contain only letters (`[A-Za-z]`), numbers (`[0-9]`), dashes (`-`),
// underscores (`_`), periods (`.`), tildes (`~`), plus (`+`) or percent
// signs (`%`). It must be between 3 and 255 characters in length, and it
// must not start with `"goog"`.
- string name = 1;
+ string name = 1 [(google.api.field_behavior) = REQUIRED];
// See Creating and
// managing labels.
@@ -193,32 +205,42 @@ message PubsubMessage {
// Request for the GetTopic method.
message GetTopicRequest {
- // The name of the topic to get.
+ // Required. The name of the topic to get.
// Format is `projects/{project}/topics/{topic}`.
- string topic = 1;
+ string topic = 1 [
+ (google.api.field_behavior) = REQUIRED,
+ (google.api.resource_reference) = {
+ type: "pubsub.googleapis.com/Topic"
+ }
+ ];
}
// Request for the UpdateTopic method.
message UpdateTopicRequest {
- // The updated topic object.
- Topic topic = 1;
+ // Required. The updated topic object.
+ Topic topic = 1 [(google.api.field_behavior) = REQUIRED];
- // Indicates which fields in the provided topic to update. Must be specified
+ // Required. Indicates which fields in the provided topic to update. Must be specified
// and non-empty. Note that if `update_mask` contains
// "message_storage_policy" then the new value will be determined based on the
// policy configured at the project or organization level. The
// `message_storage_policy` must not be set in the `topic` provided above.
- google.protobuf.FieldMask update_mask = 2;
+ google.protobuf.FieldMask update_mask = 2 [(google.api.field_behavior) = REQUIRED];
}
// Request for the Publish method.
message PublishRequest {
- // The messages in the request will be published on this topic.
+ // Required. The messages in the request will be published on this topic.
// Format is `projects/{project}/topics/{topic}`.
- string topic = 1;
+ string topic = 1 [
+ (google.api.field_behavior) = REQUIRED,
+ (google.api.resource_reference) = {
+ type: "pubsub.googleapis.com/Topic"
+ }
+ ];
- // The messages to publish.
- repeated PubsubMessage messages = 2;
+ // Required. The messages to publish.
+ repeated PubsubMessage messages = 2 [(google.api.field_behavior) = REQUIRED];
}
// Response for the `Publish` method.
@@ -231,9 +253,14 @@ message PublishResponse {
// Request for the `ListTopics` method.
message ListTopicsRequest {
- // The name of the project in which to list topics.
+ // Required. The name of the project in which to list topics.
// Format is `projects/{project-id}`.
- string project = 1;
+ string project = 1 [
+ (google.api.field_behavior) = REQUIRED,
+ (google.api.resource_reference) = {
+ type: "cloudresourcemanager.googleapis.com/Project"
+ }
+ ];
// Maximum number of topics to return.
int32 page_size = 2;
@@ -256,9 +283,14 @@ message ListTopicsResponse {
// Request for the `ListTopicSubscriptions` method.
message ListTopicSubscriptionsRequest {
- // The name of the topic that subscriptions are attached to.
+ // Required. The name of the topic that subscriptions are attached to.
// Format is `projects/{project}/topics/{topic}`.
- string topic = 1;
+ string topic = 1 [
+ (google.api.field_behavior) = REQUIRED,
+ (google.api.resource_reference) = {
+ type: "pubsub.googleapis.com/Topic"
+ }
+ ];
// Maximum number of subscription names to return.
int32 page_size = 2;
@@ -272,7 +304,9 @@ message ListTopicSubscriptionsRequest {
// Response for the `ListTopicSubscriptions` method.
message ListTopicSubscriptionsResponse {
// The names of the subscriptions that match the request.
- repeated string subscriptions = 1;
+ repeated string subscriptions = 1 [(google.api.resource_reference) = {
+ type: "pubsub.googleapis.com/Subscription"
+ }];
// If not empty, indicates that there may be more subscriptions that match
// the request; this value should be passed in a new
@@ -308,9 +342,14 @@ message ListTopicSnapshotsResponse {
// Request for the `DeleteTopic` method.
message DeleteTopicRequest {
- // Name of the topic to delete.
+ // Required. Name of the topic to delete.
// Format is `projects/{project}/topics/{topic}`.
- string topic = 1;
+ string topic = 1 [
+ (google.api.field_behavior) = REQUIRED,
+ (google.api.resource_reference) = {
+ type: "pubsub.googleapis.com/Topic"
+ }
+ ];
}
// The service that an application uses to manipulate subscriptions and to
@@ -340,6 +379,7 @@ service Subscriber {
put: "/v1/{name=projects/*/subscriptions/*}"
body: "*"
};
+ option (google.api.method_signature) = "name,topic,push_config,ack_deadline_seconds";
}
// Gets the configuration details of a subscription.
@@ -347,6 +387,7 @@ service Subscriber {
option (google.api.http) = {
get: "/v1/{subscription=projects/*/subscriptions/*}"
};
+ option (google.api.method_signature) = "subscription";
}
// Updates an existing subscription. Note that certain properties of a
@@ -359,11 +400,11 @@ service Subscriber {
}
// Lists matching subscriptions.
- rpc ListSubscriptions(ListSubscriptionsRequest)
- returns (ListSubscriptionsResponse) {
+ rpc ListSubscriptions(ListSubscriptionsRequest) returns (ListSubscriptionsResponse) {
option (google.api.http) = {
get: "/v1/{project=projects/*}/subscriptions"
};
+ option (google.api.method_signature) = "project";
}
// Deletes an existing subscription. All messages retained in the subscription
@@ -371,11 +412,11 @@ service Subscriber {
// `NOT_FOUND`. After a subscription is deleted, a new one may be created with
// the same name, but the new one has no association with the old
// subscription or its topic unless the same topic is specified.
- rpc DeleteSubscription(DeleteSubscriptionRequest)
- returns (google.protobuf.Empty) {
+ rpc DeleteSubscription(DeleteSubscriptionRequest) returns (google.protobuf.Empty) {
option (google.api.http) = {
delete: "/v1/{subscription=projects/*/subscriptions/*}"
};
+ option (google.api.method_signature) = "subscription";
}
// Modifies the ack deadline for a specific message. This method is useful
@@ -383,12 +424,12 @@ service Subscriber {
// subscriber, or to make the message available for redelivery if the
// processing was interrupted. Note that this does not modify the
// subscription-level `ackDeadlineSeconds` used for subsequent messages.
- rpc ModifyAckDeadline(ModifyAckDeadlineRequest)
- returns (google.protobuf.Empty) {
+ rpc ModifyAckDeadline(ModifyAckDeadlineRequest) returns (google.protobuf.Empty) {
option (google.api.http) = {
post: "/v1/{subscription=projects/*/subscriptions/*}:modifyAckDeadline"
body: "*"
};
+ option (google.api.method_signature) = "subscription,ack_ids,ack_deadline_seconds";
}
// Acknowledges the messages associated with the `ack_ids` in the
@@ -403,6 +444,7 @@ service Subscriber {
post: "/v1/{subscription=projects/*/subscriptions/*}:acknowledge"
body: "*"
};
+ option (google.api.method_signature) = "subscription,ack_ids";
}
// Pulls messages from the server. The server may return `UNAVAILABLE` if
@@ -413,6 +455,7 @@ service Subscriber {
post: "/v1/{subscription=projects/*/subscriptions/*}:pull"
body: "*"
};
+ option (google.api.method_signature) = "subscription,return_immediately,max_messages";
}
// Establishes a stream with the server, which sends messages down to the
@@ -422,8 +465,8 @@ service Subscriber {
// reassign server-side resources, in which case, the client should
// re-establish the stream. Flow control can be achieved by configuring the
// underlying RPC channel.
- rpc StreamingPull(stream StreamingPullRequest)
- returns (stream StreamingPullResponse) {}
+ rpc StreamingPull(stream StreamingPullRequest) returns (stream StreamingPullResponse) {
+ }
// Modifies the `PushConfig` for a specified subscription.
//
@@ -431,12 +474,12 @@ service Subscriber {
// an empty `PushConfig`) or vice versa, or change the endpoint URL and other
// attributes of a push subscription. Messages will accumulate for delivery
// continuously through the call regardless of changes to the `PushConfig`.
- rpc ModifyPushConfig(ModifyPushConfigRequest)
- returns (google.protobuf.Empty) {
+ rpc ModifyPushConfig(ModifyPushConfigRequest) returns (google.protobuf.Empty) {
option (google.api.http) = {
post: "/v1/{subscription=projects/*/subscriptions/*}:modifyPushConfig"
body: "*"
};
+ option (google.api.method_signature) = "subscription,push_config";
}
// Gets the configuration details of a snapshot. Snapshots are used in
@@ -460,6 +503,7 @@ service Subscriber {
option (google.api.http) = {
get: "/v1/{project=projects/*}/snapshots"
};
+ option (google.api.method_signature) = "project";
}
// Creates a snapshot from the requested subscription. Snapshots are used in
@@ -485,6 +529,7 @@ service Subscriber {
put: "/v1/{name=projects/*/snapshots/*}"
body: "*"
};
+ option (google.api.method_signature) = "name,subscription";
}
// Updates an existing snapshot. Snapshots are used in
@@ -514,6 +559,7 @@ service Subscriber {
option (google.api.http) = {
delete: "/v1/{snapshot=projects/*/snapshots/*}"
};
+ option (google.api.method_signature) = "snapshot";
}
// Seeks an existing subscription to a point in time or to a given snapshot,
@@ -534,19 +580,29 @@ service Subscriber {
// A subscription resource.
message Subscription {
- // The name of the subscription. It must have the format
+ option (google.api.resource) = {
+ type: "pubsub.googleapis.com/Subscription"
+ pattern: "projects/{project}/subscriptions/{subscription}"
+ };
+
+ // Required. The name of the subscription. It must have the format
// `"projects/{project}/subscriptions/{subscription}"`. `{subscription}` must
// start with a letter, and contain only letters (`[A-Za-z]`), numbers
// (`[0-9]`), dashes (`-`), underscores (`_`), periods (`.`), tildes (`~`),
// plus (`+`) or percent signs (`%`). It must be between 3 and 255 characters
// in length, and it must not start with `"goog"`.
- string name = 1;
+ string name = 1 [(google.api.field_behavior) = REQUIRED];
- // The name of the topic from which this subscription is receiving messages.
+ // Required. The name of the topic from which this subscription is receiving messages.
// Format is `projects/{project}/topics/{topic}`.
// The value of this field will be `_deleted-topic_` if the topic has been
// deleted.
- string topic = 2;
+ string topic = 2 [
+ (google.api.field_behavior) = REQUIRED,
+ (google.api.resource_reference) = {
+ type: "pubsub.googleapis.com/Topic"
+ }
+ ];
// If push delivery is used with this subscription, this field is
// used to configure it. An empty `pushConfig` signifies that the subscriber
@@ -762,26 +818,36 @@ message ReceivedMessage {
// Request for the GetSubscription method.
message GetSubscriptionRequest {
- // The name of the subscription to get.
+ // Required. The name of the subscription to get.
// Format is `projects/{project}/subscriptions/{sub}`.
- string subscription = 1;
+ string subscription = 1 [
+ (google.api.field_behavior) = REQUIRED,
+ (google.api.resource_reference) = {
+ type: "pubsub.googleapis.com/Subscription"
+ }
+ ];
}
// Request for the UpdateSubscription method.
message UpdateSubscriptionRequest {
- // The updated subscription object.
- Subscription subscription = 1;
+ // Required. The updated subscription object.
+ Subscription subscription = 1 [(google.api.field_behavior) = REQUIRED];
- // Indicates which fields in the provided subscription to update.
+ // Required. Indicates which fields in the provided subscription to update.
// Must be specified and non-empty.
- google.protobuf.FieldMask update_mask = 2;
+ google.protobuf.FieldMask update_mask = 2 [(google.api.field_behavior) = REQUIRED];
}
// Request for the `ListSubscriptions` method.
message ListSubscriptionsRequest {
- // The name of the project in which to list subscriptions.
+ // Required. The name of the project in which to list subscriptions.
// Format is `projects/{project-id}`.
- string project = 1;
+ string project = 1 [
+ (google.api.field_behavior) = REQUIRED,
+ (google.api.resource_reference) = {
+ type: "cloudresourcemanager.googleapis.com/Project"
+ }
+ ];
// Maximum number of subscriptions to return.
int32 page_size = 2;
@@ -805,31 +871,46 @@ message ListSubscriptionsResponse {
// Request for the DeleteSubscription method.
message DeleteSubscriptionRequest {
- // The subscription to delete.
+ // Required. The subscription to delete.
// Format is `projects/{project}/subscriptions/{sub}`.
- string subscription = 1;
+ string subscription = 1 [
+ (google.api.field_behavior) = REQUIRED,
+ (google.api.resource_reference) = {
+ type: "pubsub.googleapis.com/Subscription"
+ }
+ ];
}
// Request for the ModifyPushConfig method.
message ModifyPushConfigRequest {
- // The name of the subscription.
+ // Required. The name of the subscription.
// Format is `projects/{project}/subscriptions/{sub}`.
- string subscription = 1;
+ string subscription = 1 [
+ (google.api.field_behavior) = REQUIRED,
+ (google.api.resource_reference) = {
+ type: "pubsub.googleapis.com/Subscription"
+ }
+ ];
- // The push configuration for future deliveries.
+ // Required. The push configuration for future deliveries.
//
// An empty `pushConfig` indicates that the Pub/Sub system should
// stop pushing messages from the given subscription and allow
// messages to be pulled and acknowledged - effectively pausing
// the subscription if `Pull` or `StreamingPull` is not called.
- PushConfig push_config = 2;
+ PushConfig push_config = 2 [(google.api.field_behavior) = REQUIRED];
}
// Request for the `Pull` method.
message PullRequest {
- // The subscription from which messages should be pulled.
+ // Required. The subscription from which messages should be pulled.
// Format is `projects/{project}/subscriptions/{sub}`.
- string subscription = 1;
+ string subscription = 1 [
+ (google.api.field_behavior) = REQUIRED,
+ (google.api.resource_reference) = {
+ type: "pubsub.googleapis.com/Subscription"
+ }
+ ];
// If this field set to true, the system will respond immediately even if
// it there are no messages available to return in the `Pull` response.
@@ -837,10 +918,10 @@ message PullRequest {
// least one message is available, rather than returning no messages.
bool return_immediately = 2;
- // The maximum number of messages to return for this request. Must be a
+ // Required. The maximum number of messages to return for this request. Must be a
// positive integer. The Pub/Sub system may return fewer than the number
// specified.
- int32 max_messages = 3;
+ int32 max_messages = 3 [(google.api.field_behavior) = REQUIRED];
}
// Response for the `Pull` method.
@@ -854,14 +935,19 @@ message PullResponse {
// Request for the ModifyAckDeadline method.
message ModifyAckDeadlineRequest {
- // The name of the subscription.
+ // Required. The name of the subscription.
// Format is `projects/{project}/subscriptions/{sub}`.
- string subscription = 1;
+ string subscription = 1 [
+ (google.api.field_behavior) = REQUIRED,
+ (google.api.resource_reference) = {
+ type: "pubsub.googleapis.com/Subscription"
+ }
+ ];
- // List of acknowledgment IDs.
- repeated string ack_ids = 4;
+ // Required. List of acknowledgment IDs.
+ repeated string ack_ids = 4 [(google.api.field_behavior) = REQUIRED];
- // The new ack deadline with respect to the time this request was sent to
+ // Required. The new ack deadline with respect to the time this request was sent to
// the Pub/Sub system. For example, if the value is 10, the new
// ack deadline will expire 10 seconds after the `ModifyAckDeadline` call
// was made. Specifying zero might immediately make the message available for
@@ -869,29 +955,39 @@ message ModifyAckDeadlineRequest {
// increase in the rate of message redeliveries (that is, duplicates).
// The minimum deadline you can specify is 0 seconds.
// The maximum deadline you can specify is 600 seconds (10 minutes).
- int32 ack_deadline_seconds = 3;
+ int32 ack_deadline_seconds = 3 [(google.api.field_behavior) = REQUIRED];
}
// Request for the Acknowledge method.
message AcknowledgeRequest {
- // The subscription whose message is being acknowledged.
+ // Required. The subscription whose message is being acknowledged.
// Format is `projects/{project}/subscriptions/{sub}`.
- string subscription = 1;
+ string subscription = 1 [
+ (google.api.field_behavior) = REQUIRED,
+ (google.api.resource_reference) = {
+ type: "pubsub.googleapis.com/Subscription"
+ }
+ ];
- // The acknowledgment ID for the messages being acknowledged that was returned
+ // Required. The acknowledgment ID for the messages being acknowledged that was returned
// by the Pub/Sub system in the `Pull` response. Must not be empty.
- repeated string ack_ids = 2;
+ repeated string ack_ids = 2 [(google.api.field_behavior) = REQUIRED];
}
// Request for the `StreamingPull` streaming RPC method. This request is used to
// establish the initial stream as well as to stream acknowledgements and ack
// deadline modifications from the client to the server.
message StreamingPullRequest {
- // The subscription for which to initialize the new stream. This must be
+ // Required. The subscription for which to initialize the new stream. This must be
// provided in the first request on the stream, and must not be set in
// subsequent requests from client to server.
// Format is `projects/{project}/subscriptions/{sub}`.
- string subscription = 1;
+ string subscription = 1 [
+ (google.api.field_behavior) = REQUIRED,
+ (google.api.resource_reference) = {
+ type: "pubsub.googleapis.com/Subscription"
+ }
+ ];
// List of acknowledgement IDs for acknowledging previously received messages
// (received on this stream or a different stream). If an ack ID has expired,
@@ -920,11 +1016,11 @@ message StreamingPullRequest {
// processing was interrupted.
repeated string modify_deadline_ack_ids = 4;
- // The ack deadline to use for the stream. This must be provided in the
+ // Required. The ack deadline to use for the stream. This must be provided in the
// first request on the stream, but it can also be updated on subsequent
// requests from client to server. The minimum deadline you can specify is 10
// seconds. The maximum deadline you can specify is 600 seconds (10 minutes).
- int32 stream_ack_deadline_seconds = 5;
+ int32 stream_ack_deadline_seconds = 5 [(google.api.field_behavior) = REQUIRED];
// A unique identifier that is used to distinguish client instances from each
// other. Only needs to be provided on the initial request. When a stream
@@ -944,15 +1040,20 @@ message StreamingPullResponse {
// Request for the `CreateSnapshot` method.
message CreateSnapshotRequest {
- // User-provided name for this snapshot. If the name is not provided in the
+ // Required. User-provided name for this snapshot. If the name is not provided in the
// request, the server will assign a random name for this snapshot on the same
// project as the subscription. Note that for REST API requests, you must
// specify a name. See the resource
// name rules. Format is `projects/{project}/snapshots/{snap}`.
- string name = 1;
+ string name = 1 [
+ (google.api.field_behavior) = REQUIRED,
+ (google.api.resource_reference) = {
+ type: "pubsub.googleapis.com/Snapshot"
+ }
+ ];
- // The subscription whose backlog the snapshot retains.
+ // Required. The subscription whose backlog the snapshot retains.
// Specifically, the created snapshot is guaranteed to retain:
// (a) The existing backlog on the subscription. More precisely, this is
// defined as the messages in the subscription's backlog that are
@@ -961,7 +1062,12 @@ message CreateSnapshotRequest {
// (b) Any messages published to the subscription's topic following the
// successful completion of the CreateSnapshot request.
// Format is `projects/{project}/subscriptions/{sub}`.
- string subscription = 2;
+ string subscription = 2 [
+ (google.api.field_behavior) = REQUIRED,
+ (google.api.resource_reference) = {
+ type: "pubsub.googleapis.com/Subscription"
+ }
+ ];
// See Creating and
// managing labels.
@@ -970,12 +1076,12 @@ message CreateSnapshotRequest {
// Request for the UpdateSnapshot method.
message UpdateSnapshotRequest {
- // The updated snapshot object.
- Snapshot snapshot = 1;
+ // Required. The updated snapshot object.
+ Snapshot snapshot = 1 [(google.api.field_behavior) = REQUIRED];
- // Indicates which fields in the provided snapshot to update.
+ // Required. Indicates which fields in the provided snapshot to update.
// Must be specified and non-empty.
- google.protobuf.FieldMask update_mask = 2;
+ google.protobuf.FieldMask update_mask = 2 [(google.api.field_behavior) = REQUIRED];
}
// A snapshot resource. Snapshots are used in
@@ -985,11 +1091,18 @@ message UpdateSnapshotRequest {
// acknowledgment state of messages in an existing subscription to the state
// captured by a snapshot.
message Snapshot {
+ option (google.api.resource) = {
+ type: "pubsub.googleapis.com/Snapshot"
+ pattern: "projects/{project}/snapshots/{snapshot}"
+ };
+
// The name of the snapshot.
string name = 1;
// The name of the topic from which this snapshot is retaining messages.
- string topic = 2;
+ string topic = 2 [(google.api.resource_reference) = {
+ type: "pubsub.googleapis.com/Topic"
+ }];
// The snapshot is guaranteed to exist up until this time.
// A newly-created snapshot expires no later than 7 days from the time of its
@@ -1010,16 +1123,26 @@ message Snapshot {
// Request for the GetSnapshot method.
message GetSnapshotRequest {
- // The name of the snapshot to get.
+ // Required. The name of the snapshot to get.
// Format is `projects/{project}/snapshots/{snap}`.
- string snapshot = 1;
+ string snapshot = 1 [
+ (google.api.field_behavior) = REQUIRED,
+ (google.api.resource_reference) = {
+ type: "pubsub.googleapis.com/Snapshot"
+ }
+ ];
}
// Request for the `ListSnapshots` method.
message ListSnapshotsRequest {
- // The name of the project in which to list snapshots.
+ // Required. The name of the project in which to list snapshots.
// Format is `projects/{project-id}`.
- string project = 1;
+ string project = 1 [
+ (google.api.field_behavior) = REQUIRED,
+ (google.api.resource_reference) = {
+ type: "cloudresourcemanager.googleapis.com/Project"
+ }
+ ];
// Maximum number of snapshots to return.
int32 page_size = 2;
@@ -1042,15 +1165,25 @@ message ListSnapshotsResponse {
// Request for the `DeleteSnapshot` method.
message DeleteSnapshotRequest {
- // The name of the snapshot to delete.
+ // Required. The name of the snapshot to delete.
// Format is `projects/{project}/snapshots/{snap}`.
- string snapshot = 1;
+ string snapshot = 1 [
+ (google.api.field_behavior) = REQUIRED,
+ (google.api.resource_reference) = {
+ type: "pubsub.googleapis.com/Snapshot"
+ }
+ ];
}
// Request for the `Seek` method.
message SeekRequest {
- // The subscription to affect.
- string subscription = 1;
+ // Required. The subscription to affect.
+ string subscription = 1 [
+ (google.api.field_behavior) = REQUIRED,
+ (google.api.resource_reference) = {
+ type: "pubsub.googleapis.com/Subscription"
+ }
+ ];
oneof target {
// The time to seek to.
@@ -1069,9 +1202,13 @@ message SeekRequest {
// The snapshot to seek to. The snapshot's topic must be the same as that of
// the provided subscription.
// Format is `projects/{project}/snapshots/{snap}`.
- string snapshot = 3;
+ string snapshot = 3 [(google.api.resource_reference) = {
+ type: "pubsub.googleapis.com/Snapshot"
+ }];
}
}
// Response for the `Seek` method (this response is empty).
-message SeekResponse {}
+message SeekResponse {
+
+}
diff --git a/google/pubsub/v1/pubsub_grpc_service_config.json b/google/pubsub/v1/pubsub_grpc_service_config.json
new file mode 100755
index 00000000..0a2702cd
--- /dev/null
+++ b/google/pubsub/v1/pubsub_grpc_service_config.json
@@ -0,0 +1,214 @@
+{
+ "methodConfig": [
+ {
+ "name": [
+ {
+ "service": "google.pubsub.v1.Publisher",
+ "method": "CreateTopic"
+ },
+ {
+ "service": "google.pubsub.v1.Publisher",
+ "method": "UpdateTopic"
+ },
+ {
+ "service": "google.pubsub.v1.Publisher",
+ "method": "DeleteTopic"
+ },
+ {
+ "service": "google.pubsub.v1.Publisher",
+ "method": "SetIamPolicy"
+ },
+ {
+ "service": "google.pubsub.v1.Publisher",
+ "method": "TestIamPermissions"
+ }
+ ],
+ "timeout": "60s",
+ "retryPolicy": {
+ "maxAttempts": 5,
+ "initialBackoff": "0.100s",
+ "maxBackoff": "60s",
+ "backoffMultiplier": 1.3,
+ "retryableStatusCodes": [
+ "UNAVAILABLE"
+ ]
+ }
+ },
+ {
+ "name": [
+ {
+ "service": "google.pubsub.v1.Publisher",
+ "method": "Publish"
+ }
+ ],
+ "timeout": "60s",
+ "retryPolicy": {
+ "maxAttempts": 5,
+ "initialBackoff": "0.100s",
+ "maxBackoff": "60s",
+ "backoffMultiplier": 1.3,
+ "retryableStatusCodes": [
+ "ABORTED",
+ "CANCELLED",
+ "INTERNAL",
+ "RESOURCE_EXHAUSTED",
+ "UNKNOWN",
+ "UNAVAILABLE",
+ "DEADLINE_EXCEEDED"
+ ]
+ }
+ },
+ {
+ "name": [
+ {
+ "service": "google.pubsub.v1.Publisher",
+ "method": "GetTopic"
+ },
+ {
+ "service": "google.pubsub.v1.Publisher",
+ "method": "ListTopics"
+ },
+ {
+ "service": "google.pubsub.v1.Publisher",
+ "method": "ListTopicSubscriptions"
+ },
+ {
+ "service": "google.pubsub.v1.Publisher",
+ "method": "GetIamPolicy"
+ }
+ ],
+ "timeout": "60s",
+ "retryPolicy": {
+ "maxAttempts": 5,
+ "initialBackoff": "0.100s",
+ "maxBackoff": "60s",
+ "backoffMultiplier": 1.3,
+ "retryableStatusCodes": [
+ "UNKNOWN",
+ "ABORTED",
+ "UNAVAILABLE"
+ ]
+ }
+ },
+ {
+ "name": [
+ {
+ "service": "google.pubsub.v1.Subscriber",
+ "method": "StreamingPull"
+ }
+ ],
+ "timeout": "900s",
+ "retryPolicy": {
+ "maxAttempts": 5,
+ "initialBackoff": "0.100s",
+ "maxBackoff": "60s",
+ "backoffMultiplier": 1.3,
+ "retryableStatusCodes": [
+ "DEADLINE_EXCEEDED",
+ "RESOURCE_EXHAUSTED",
+ "ABORTED",
+ "INTERNAL",
+ "UNAVAILABLE"
+ ]
+ }
+ },
+ {
+ "name": [
+ {
+ "service": "google.pubsub.v1.Subscriber",
+ "method": "CreateSubscription"
+ },
+ {
+ "service": "google.pubsub.v1.Subscriber",
+ "method": "GetSubscription"
+ },
+ {
+ "service": "google.pubsub.v1.Subscriber",
+ "method": "ListSubscriptions"
+ },
+ {
+ "service": "google.pubsub.v1.Subscriber",
+ "method": "ListSnapshots"
+ },
+ {
+ "service": "google.pubsub.v1.Subscriber",
+ "method": "Seek"
+ },
+ {
+ "service": "google.pubsub.v1.Subscriber",
+ "method": "Pull"
+ },
+ {
+ "service": "google.pubsub.v1.Subscriber",
+ "method": "GetIamPolicy"
+ }
+ ],
+ "timeout": "60s",
+ "retryPolicy": {
+ "maxAttempts": 5,
+ "initialBackoff": "0.100s",
+ "maxBackoff": "60s",
+ "backoffMultiplier": 1.3,
+ "retryableStatusCodes": [
+ "UNKNOWN",
+ "ABORTED",
+ "UNAVAILABLE"
+ ]
+ }
+ },
+ {
+ "name": [
+ {
+ "service": "google.pubsub.v1.Subscriber",
+ "method": "UpdateSubscription"
+ },
+ {
+ "service": "google.pubsub.v1.Subscriber",
+ "method": "DeleteSubscription"
+ },
+ {
+ "service": "google.pubsub.v1.Subscriber",
+ "method": "ModifyAckDeadline"
+ },
+ {
+ "service": "google.pubsub.v1.Subscriber",
+ "method": "ModifyPushConfig"
+ },
+ {
+ "service": "google.pubsub.v1.Subscriber",
+ "method": "CreateSnapshot"
+ },
+ {
+ "service": "google.pubsub.v1.Subscriber",
+ "method": "UpdateSnapshot"
+ },
+ {
+ "service": "google.pubsub.v1.Subscriber",
+ "method": "DeleteSnapshot"
+ },
+ {
+ "service": "google.pubsub.v1.Subscriber",
+ "method": "Acknowledge"
+ },
+ {
+ "service": "google.pubsub.v1.Subscriber",
+ "method": "SetIamPolicy"
+ },
+ {
+ "service": "google.pubsub.v1.Subscriber",
+ "method": "TestIamPermissions"
+ }
+ ],
+ "timeout": "60s",
+ "retryPolicy": {
+ "maxAttempts": 5,
+ "initialBackoff": "0.100s",
+ "maxBackoff": "60s",
+ "backoffMultiplier": 1.3,
+ "retryableStatusCodes": [
+ "UNAVAILABLE"
+ ]
+ }
+ }
+ ]
+}
diff --git a/google/pubsub/v1/pubsub_v1.yaml b/google/pubsub/v1/pubsub_v1.yaml
new file mode 100644
index 00000000..db0ea659
--- /dev/null
+++ b/google/pubsub/v1/pubsub_v1.yaml
@@ -0,0 +1,97 @@
+type: google.api.Service
+config_version: 3
+name: pubsub.googleapis.com
+title: Cloud Pub/Sub API
+
+apis:
+- name: google.pubsub.v1.Publisher
+- name: google.pubsub.v1.Subscriber
+
+documentation:
+ summary: |-
+ Provides reliable, many-to-many, asynchronous messaging between
+ applications.
+ rules:
+ - selector: google.iam.v1.IAMPolicy.GetIamPolicy
+ description: |-
+ Gets the access control policy for a resource. Returns an empty policy
+ if the resource exists and does not have a policy set.
+
+ - selector: google.iam.v1.IAMPolicy.SetIamPolicy
+ description: |-
+ Sets the access control policy on the specified resource. Replaces
+ any existing policy.
+
+ Can return Public Errors: NOT_FOUND, INVALID_ARGUMENT and
+ PERMISSION_DENIED
+
+ - selector: google.iam.v1.IAMPolicy.TestIamPermissions
+ description: |-
+ Returns permissions that a caller has on the specified resource. If the
+ resource does not exist, this will return an empty set of
+ permissions, not a NOT_FOUND error.
+
+ Note: This operation is designed to be used for building
+ permission-aware UIs and command-line tools, not for authorization
+ checking. This operation may "fail open" without warning.
+
+backend:
+ rules:
+ - selector: 'google.pubsub.v1.Publisher.*'
+ deadline: 120.0
+ - selector: google.pubsub.v1.Publisher.Publish
+ deadline: 20.0
+ - selector: 'google.pubsub.v1.Subscriber.*'
+ deadline: 120.0
+
+http:
+ rules:
+ - selector: google.iam.v1.IAMPolicy.GetIamPolicy
+ get: '/v1beta2/{resource=projects/*/topics/*}:getIamPolicy'
+ additional_bindings:
+ - get: '/v1beta2/{resource=projects/*/subscriptions/*}:getIamPolicy'
+ - get: '/v1/{resource=projects/*/topics/*}:getIamPolicy'
+ - get: '/v1/{resource=projects/*/subscriptions/*}:getIamPolicy'
+ - get: '/v1/{resource=projects/*/snapshots/*}:getIamPolicy'
+ - selector: google.iam.v1.IAMPolicy.SetIamPolicy
+ post: '/v1beta2/{resource=projects/*/topics/*}:setIamPolicy'
+ body: '*'
+ additional_bindings:
+ - post: '/v1beta2/{resource=projects/*/subscriptions/*}:setIamPolicy'
+ body: '*'
+ - post: '/v1/{resource=projects/*/topics/*}:setIamPolicy'
+ body: '*'
+ - post: '/v1/{resource=projects/*/subscriptions/*}:setIamPolicy'
+ body: '*'
+ - post: '/v1/{resource=projects/*/snapshots/*}:setIamPolicy'
+ body: '*'
+ - selector: google.iam.v1.IAMPolicy.TestIamPermissions
+ post: '/v1beta2/{resource=projects/*/subscriptions/*}:testIamPermissions'
+ body: '*'
+ additional_bindings:
+ - post: '/v1beta2/{resource=projects/*/topics/*}:testIamPermissions'
+ body: '*'
+ - post: '/v1/{resource=projects/*/subscriptions/*}:testIamPermissions'
+ body: '*'
+ - post: '/v1/{resource=projects/*/topics/*}:testIamPermissions'
+ body: '*'
+ - post: '/v1/{resource=projects/*/snapshots/*}:testIamPermissions'
+ body: '*'
+
+authentication:
+ rules:
+ - selector: 'google.iam.v1.IAMPolicy.*'
+ oauth:
+ canonical_scopes: |-
+ https://www.googleapis.com/auth/cloud-platform,
+ https://www.googleapis.com/auth/pubsub
+ - selector: 'google.pubsub.v1.Publisher.*'
+ oauth:
+ canonical_scopes: |-
+ https://www.googleapis.com/auth/cloud-platform,
+ https://www.googleapis.com/auth/pubsub
+ - selector: 'google.pubsub.v1.Subscriber.*'
+ oauth:
+ canonical_scopes: |-
+ https://www.googleapis.com/auth/cloud-platform,
+ https://www.googleapis.com/auth/pubsub