blob: 759dce1b776d847422b5a6884a397b303b1d26b4 [file] [log] [blame]
// This is a generated file (see the discoveryapis_generator project).
// ignore_for_file: camel_case_types
// ignore_for_file: comment_references
// ignore_for_file: directives_ordering
// ignore_for_file: file_names
// ignore_for_file: library_names
// ignore_for_file: lines_longer_than_80_chars
// ignore_for_file: non_constant_identifier_names
// ignore_for_file: prefer_expression_function_bodies
// ignore_for_file: prefer_final_locals
// ignore_for_file: prefer_interpolation_to_compose_strings
// ignore_for_file: unnecessary_brace_in_string_interps
// ignore_for_file: unnecessary_cast
// ignore_for_file: unnecessary_lambdas
// ignore_for_file: unnecessary_parenthesis
// ignore_for_file: unnecessary_string_interpolations
library googleapis.pubsub.v1;
import 'dart:core' as core;
import 'dart:async' as async;
import 'dart:convert' as convert;
import 'package:_discoveryapis_commons/_discoveryapis_commons.dart' as commons;
import 'package:http/http.dart' as http;
export 'package:_discoveryapis_commons/_discoveryapis_commons.dart'
show ApiRequestError, DetailedApiRequestError;
const userAgent = 'dart-api-client pubsub/v1';
/// Provides reliable, many-to-many, asynchronous messaging between
/// applications.
class PubsubApi {
/// View and manage your data across Google Cloud Platform services
static const cloudPlatformScope =
'https://www.googleapis.com/auth/cloud-platform';
/// View and manage Pub/Sub topics and subscriptions
static const pubsubScope = 'https://www.googleapis.com/auth/pubsub';
final commons.ApiRequester _requester;
ProjectsResourceApi get projects => ProjectsResourceApi(_requester);
PubsubApi(http.Client client,
{core.String rootUrl = 'https://pubsub.googleapis.com/',
core.String servicePath = ''})
: _requester =
commons.ApiRequester(client, rootUrl, servicePath, userAgent);
}
class ProjectsResourceApi {
final commons.ApiRequester _requester;
ProjectsSnapshotsResourceApi get snapshots =>
ProjectsSnapshotsResourceApi(_requester);
ProjectsSubscriptionsResourceApi get subscriptions =>
ProjectsSubscriptionsResourceApi(_requester);
ProjectsTopicsResourceApi get topics => ProjectsTopicsResourceApi(_requester);
ProjectsResourceApi(commons.ApiRequester client) : _requester = client;
}
class ProjectsSnapshotsResourceApi {
final commons.ApiRequester _requester;
ProjectsSnapshotsResourceApi(commons.ApiRequester client)
: _requester = client;
/// Creates a snapshot from the requested subscription. Snapshots are used in
/// [Seek](https://cloud.google.com/pubsub/docs/replay-overview) operations,
/// which allow 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. If the snapshot already exists,
/// returns `ALREADY_EXISTS`. If the requested subscription doesn't exist,
/// returns `NOT_FOUND`. If the backlog in the subscription is too old -- and
/// the resulting snapshot would expire in less than 1 hour -- then
/// `FAILED_PRECONDITION` is returned. See also the `Snapshot.expire_time`
/// field. 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,
/// conforming to the [resource name format]
/// (https://cloud.google.com/pubsub/docs/admin#resource_names). The generated
/// name is populated in the returned Snapshot object. Note that for REST API
/// requests, you must specify a name in the request.
///
/// [request] - The metadata request object.
///
/// Request parameters:
///
/// [name] - 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}`.
/// Value must have pattern "^projects/[^/]+/snapshots/[^/]+$".
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [Snapshot].
///
/// Completes with a [commons.ApiRequestError] if the API endpoint returned an
/// error.
///
/// If the used [http.Client] completes with an error when making a REST call,
/// this method will complete with the same error.
async.Future<Snapshot> create(
CreateSnapshotRequest request,
core.String name, {
core.String $fields,
}) {
core.String _url;
final _queryParams = <core.String, core.List<core.String>>{};
commons.Media _uploadMedia;
commons.UploadOptions _uploadOptions;
var _downloadOptions = commons.DownloadOptions.Metadata;
core.String _body;
if (request != null) {
_body = convert.json.encode(request.toJson());
}
if (name == null) {
throw core.ArgumentError('Parameter name is required.');
}
if ($fields != null) {
_queryParams['fields'] = [$fields];
}
_url = 'v1/' + commons.Escaper.ecapeVariableReserved('$name');
final _response = _requester.request(
_url,
'PUT',
body: _body,
queryParams: _queryParams,
uploadOptions: _uploadOptions,
uploadMedia: _uploadMedia,
downloadOptions: _downloadOptions,
);
return _response.then((data) => Snapshot.fromJson(data));
}
/// Removes an existing snapshot. Snapshots are used in [Seek]
/// (https://cloud.google.com/pubsub/docs/replay-overview) operations, which
/// allow 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. When the snapshot is deleted, all messages
/// retained in the snapshot are immediately dropped. After a snapshot is
/// deleted, a new one may be created with the same name, but the new one has
/// no association with the old snapshot or its subscription, unless the same
/// subscription is specified.
///
/// Request parameters:
///
/// [snapshot] - Required. The name of the snapshot to delete. Format is
/// `projects/{project}/snapshots/{snap}`.
/// Value must have pattern "^projects/[^/]+/snapshots/[^/]+$".
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [Empty].
///
/// Completes with a [commons.ApiRequestError] if the API endpoint returned an
/// error.
///
/// If the used [http.Client] completes with an error when making a REST call,
/// this method will complete with the same error.
async.Future<Empty> delete(
core.String snapshot, {
core.String $fields,
}) {
core.String _url;
final _queryParams = <core.String, core.List<core.String>>{};
commons.Media _uploadMedia;
commons.UploadOptions _uploadOptions;
var _downloadOptions = commons.DownloadOptions.Metadata;
core.String _body;
if (snapshot == null) {
throw core.ArgumentError('Parameter snapshot is required.');
}
if ($fields != null) {
_queryParams['fields'] = [$fields];
}
_url = 'v1/' + commons.Escaper.ecapeVariableReserved('$snapshot');
final _response = _requester.request(
_url,
'DELETE',
body: _body,
queryParams: _queryParams,
uploadOptions: _uploadOptions,
uploadMedia: _uploadMedia,
downloadOptions: _downloadOptions,
);
return _response.then((data) => Empty.fromJson(data));
}
/// Gets the configuration details of a snapshot. Snapshots are used in Seek
/// operations, which allow 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.
///
/// Request parameters:
///
/// [snapshot] - Required. The name of the snapshot to get. Format is
/// `projects/{project}/snapshots/{snap}`.
/// Value must have pattern "^projects/[^/]+/snapshots/[^/]+$".
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [Snapshot].
///
/// Completes with a [commons.ApiRequestError] if the API endpoint returned an
/// error.
///
/// If the used [http.Client] completes with an error when making a REST call,
/// this method will complete with the same error.
async.Future<Snapshot> get(
core.String snapshot, {
core.String $fields,
}) {
core.String _url;
final _queryParams = <core.String, core.List<core.String>>{};
commons.Media _uploadMedia;
commons.UploadOptions _uploadOptions;
var _downloadOptions = commons.DownloadOptions.Metadata;
core.String _body;
if (snapshot == null) {
throw core.ArgumentError('Parameter snapshot is required.');
}
if ($fields != null) {
_queryParams['fields'] = [$fields];
}
_url = 'v1/' + commons.Escaper.ecapeVariableReserved('$snapshot');
final _response = _requester.request(
_url,
'GET',
body: _body,
queryParams: _queryParams,
uploadOptions: _uploadOptions,
uploadMedia: _uploadMedia,
downloadOptions: _downloadOptions,
);
return _response.then((data) => Snapshot.fromJson(data));
}
/// Gets the access control policy for a resource. Returns an empty policy if
/// the resource exists and does not have a policy set.
///
/// Request parameters:
///
/// [resource] - REQUIRED: The resource for which the policy is being
/// requested. See the operation documentation for the appropriate value for
/// this field.
/// Value must have pattern "^projects/[^/]+/snapshots/[^/]+$".
///
/// [options_requestedPolicyVersion] - Optional. The policy format version to
/// be returned. Valid values are 0, 1, and 3. Requests specifying an invalid
/// value will be rejected. Requests for policies with any conditional
/// bindings must specify version 3. Policies without any conditional bindings
/// may specify any valid value or leave the field unset. To learn which
/// resources support conditions in their IAM policies, see the [IAM
/// documentation](https://cloud.google.com/iam/help/conditions/resource-policies).
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [Policy].
///
/// Completes with a [commons.ApiRequestError] if the API endpoint returned an
/// error.
///
/// If the used [http.Client] completes with an error when making a REST call,
/// this method will complete with the same error.
async.Future<Policy> getIamPolicy(
core.String resource, {
core.int options_requestedPolicyVersion,
core.String $fields,
}) {
core.String _url;
final _queryParams = <core.String, core.List<core.String>>{};
commons.Media _uploadMedia;
commons.UploadOptions _uploadOptions;
var _downloadOptions = commons.DownloadOptions.Metadata;
core.String _body;
if (resource == null) {
throw core.ArgumentError('Parameter resource is required.');
}
if (options_requestedPolicyVersion != null) {
_queryParams['options.requestedPolicyVersion'] = [
'${options_requestedPolicyVersion}'
];
}
if ($fields != null) {
_queryParams['fields'] = [$fields];
}
_url = 'v1/' +
commons.Escaper.ecapeVariableReserved('$resource') +
':getIamPolicy';
final _response = _requester.request(
_url,
'GET',
body: _body,
queryParams: _queryParams,
uploadOptions: _uploadOptions,
uploadMedia: _uploadMedia,
downloadOptions: _downloadOptions,
);
return _response.then((data) => Policy.fromJson(data));
}
/// Lists the existing snapshots. Snapshots are used in [Seek](
/// https://cloud.google.com/pubsub/docs/replay-overview) operations, which
/// allow 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.
///
/// Request parameters:
///
/// [project] - Required. The name of the project in which to list snapshots.
/// Format is `projects/{project-id}`.
/// Value must have pattern "^projects/[^/]+$".
///
/// [pageSize] - Maximum number of snapshots to return.
///
/// [pageToken] - The value returned by the last `ListSnapshotsResponse`;
/// indicates that this is a continuation of a prior `ListSnapshots` call, and
/// that the system should return the next page of data.
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [ListSnapshotsResponse].
///
/// Completes with a [commons.ApiRequestError] if the API endpoint returned an
/// error.
///
/// If the used [http.Client] completes with an error when making a REST call,
/// this method will complete with the same error.
async.Future<ListSnapshotsResponse> list(
core.String project, {
core.int pageSize,
core.String pageToken,
core.String $fields,
}) {
core.String _url;
final _queryParams = <core.String, core.List<core.String>>{};
commons.Media _uploadMedia;
commons.UploadOptions _uploadOptions;
var _downloadOptions = commons.DownloadOptions.Metadata;
core.String _body;
if (project == null) {
throw core.ArgumentError('Parameter project is required.');
}
if (pageSize != null) {
_queryParams['pageSize'] = ['${pageSize}'];
}
if (pageToken != null) {
_queryParams['pageToken'] = [pageToken];
}
if ($fields != null) {
_queryParams['fields'] = [$fields];
}
_url = 'v1/' +
commons.Escaper.ecapeVariableReserved('$project') +
'/snapshots';
final _response = _requester.request(
_url,
'GET',
body: _body,
queryParams: _queryParams,
uploadOptions: _uploadOptions,
uploadMedia: _uploadMedia,
downloadOptions: _downloadOptions,
);
return _response.then((data) => ListSnapshotsResponse.fromJson(data));
}
/// Updates an existing snapshot. Snapshots are used in Seek operations, which
/// allow 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.
///
/// [request] - The metadata request object.
///
/// Request parameters:
///
/// [name] - The name of the snapshot.
/// Value must have pattern "^projects/[^/]+/snapshots/[^/]+$".
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [Snapshot].
///
/// Completes with a [commons.ApiRequestError] if the API endpoint returned an
/// error.
///
/// If the used [http.Client] completes with an error when making a REST call,
/// this method will complete with the same error.
async.Future<Snapshot> patch(
UpdateSnapshotRequest request,
core.String name, {
core.String $fields,
}) {
core.String _url;
final _queryParams = <core.String, core.List<core.String>>{};
commons.Media _uploadMedia;
commons.UploadOptions _uploadOptions;
var _downloadOptions = commons.DownloadOptions.Metadata;
core.String _body;
if (request != null) {
_body = convert.json.encode(request.toJson());
}
if (name == null) {
throw core.ArgumentError('Parameter name is required.');
}
if ($fields != null) {
_queryParams['fields'] = [$fields];
}
_url = 'v1/' + commons.Escaper.ecapeVariableReserved('$name');
final _response = _requester.request(
_url,
'PATCH',
body: _body,
queryParams: _queryParams,
uploadOptions: _uploadOptions,
uploadMedia: _uploadMedia,
downloadOptions: _downloadOptions,
);
return _response.then((data) => Snapshot.fromJson(data));
}
/// Sets the access control policy on the specified resource. Replaces any
/// existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and
/// `PERMISSION_DENIED` errors.
///
/// [request] - The metadata request object.
///
/// Request parameters:
///
/// [resource] - REQUIRED: The resource for which the policy is being
/// specified. See the operation documentation for the appropriate value for
/// this field.
/// Value must have pattern "^projects/[^/]+/snapshots/[^/]+$".
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [Policy].
///
/// Completes with a [commons.ApiRequestError] if the API endpoint returned an
/// error.
///
/// If the used [http.Client] completes with an error when making a REST call,
/// this method will complete with the same error.
async.Future<Policy> setIamPolicy(
SetIamPolicyRequest request,
core.String resource, {
core.String $fields,
}) {
core.String _url;
final _queryParams = <core.String, core.List<core.String>>{};
commons.Media _uploadMedia;
commons.UploadOptions _uploadOptions;
var _downloadOptions = commons.DownloadOptions.Metadata;
core.String _body;
if (request != null) {
_body = convert.json.encode(request.toJson());
}
if (resource == null) {
throw core.ArgumentError('Parameter resource is required.');
}
if ($fields != null) {
_queryParams['fields'] = [$fields];
}
_url = 'v1/' +
commons.Escaper.ecapeVariableReserved('$resource') +
':setIamPolicy';
final _response = _requester.request(
_url,
'POST',
body: _body,
queryParams: _queryParams,
uploadOptions: _uploadOptions,
uploadMedia: _uploadMedia,
downloadOptions: _downloadOptions,
);
return _response.then((data) => Policy.fromJson(data));
}
/// 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.
///
/// [request] - The metadata request object.
///
/// Request parameters:
///
/// [resource] - REQUIRED: The resource for which the policy detail is being
/// requested. See the operation documentation for the appropriate value for
/// this field.
/// Value must have pattern "^projects/[^/]+/snapshots/[^/]+$".
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [TestIamPermissionsResponse].
///
/// Completes with a [commons.ApiRequestError] if the API endpoint returned an
/// error.
///
/// If the used [http.Client] completes with an error when making a REST call,
/// this method will complete with the same error.
async.Future<TestIamPermissionsResponse> testIamPermissions(
TestIamPermissionsRequest request,
core.String resource, {
core.String $fields,
}) {
core.String _url;
final _queryParams = <core.String, core.List<core.String>>{};
commons.Media _uploadMedia;
commons.UploadOptions _uploadOptions;
var _downloadOptions = commons.DownloadOptions.Metadata;
core.String _body;
if (request != null) {
_body = convert.json.encode(request.toJson());
}
if (resource == null) {
throw core.ArgumentError('Parameter resource is required.');
}
if ($fields != null) {
_queryParams['fields'] = [$fields];
}
_url = 'v1/' +
commons.Escaper.ecapeVariableReserved('$resource') +
':testIamPermissions';
final _response = _requester.request(
_url,
'POST',
body: _body,
queryParams: _queryParams,
uploadOptions: _uploadOptions,
uploadMedia: _uploadMedia,
downloadOptions: _downloadOptions,
);
return _response.then((data) => TestIamPermissionsResponse.fromJson(data));
}
}
class ProjectsSubscriptionsResourceApi {
final commons.ApiRequester _requester;
ProjectsSubscriptionsResourceApi(commons.ApiRequester client)
: _requester = client;
/// Acknowledges the messages associated with the `ack_ids` in the
/// `AcknowledgeRequest`. The Pub/Sub system can remove the relevant messages
/// from the subscription. Acknowledging a message whose ack deadline has
/// expired may succeed, but such a message may be redelivered later.
/// Acknowledging a message more than once will not result in an error.
///
/// [request] - The metadata request object.
///
/// Request parameters:
///
/// [subscription] - Required. The subscription whose message is being
/// acknowledged. Format is `projects/{project}/subscriptions/{sub}`.
/// Value must have pattern "^projects/[^/]+/subscriptions/[^/]+$".
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [Empty].
///
/// Completes with a [commons.ApiRequestError] if the API endpoint returned an
/// error.
///
/// If the used [http.Client] completes with an error when making a REST call,
/// this method will complete with the same error.
async.Future<Empty> acknowledge(
AcknowledgeRequest request,
core.String subscription, {
core.String $fields,
}) {
core.String _url;
final _queryParams = <core.String, core.List<core.String>>{};
commons.Media _uploadMedia;
commons.UploadOptions _uploadOptions;
var _downloadOptions = commons.DownloadOptions.Metadata;
core.String _body;
if (request != null) {
_body = convert.json.encode(request.toJson());
}
if (subscription == null) {
throw core.ArgumentError('Parameter subscription is required.');
}
if ($fields != null) {
_queryParams['fields'] = [$fields];
}
_url = 'v1/' +
commons.Escaper.ecapeVariableReserved('$subscription') +
':acknowledge';
final _response = _requester.request(
_url,
'POST',
body: _body,
queryParams: _queryParams,
uploadOptions: _uploadOptions,
uploadMedia: _uploadMedia,
downloadOptions: _downloadOptions,
);
return _response.then((data) => Empty.fromJson(data));
}
/// Creates a subscription to a given topic. See the [resource name rules]
/// (https://cloud.google.com/pubsub/docs/admin#resource_names). If the
/// subscription already exists, returns `ALREADY_EXISTS`. If the
/// corresponding topic doesn't exist, returns `NOT_FOUND`. If the name is not
/// provided in the request, the server will assign a random name for this
/// subscription on the same project as the topic, conforming to the [resource
/// name format] (https://cloud.google.com/pubsub/docs/admin#resource_names).
/// The generated name is populated in the returned Subscription object. Note
/// that for REST API requests, you must specify a name in the request.
///
/// [request] - The metadata request object.
///
/// Request parameters:
///
/// [name] - 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"`.
/// Value must have pattern "^projects/[^/]+/subscriptions/[^/]+$".
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [Subscription].
///
/// Completes with a [commons.ApiRequestError] if the API endpoint returned an
/// error.
///
/// If the used [http.Client] completes with an error when making a REST call,
/// this method will complete with the same error.
async.Future<Subscription> create(
Subscription request,
core.String name, {
core.String $fields,
}) {
core.String _url;
final _queryParams = <core.String, core.List<core.String>>{};
commons.Media _uploadMedia;
commons.UploadOptions _uploadOptions;
var _downloadOptions = commons.DownloadOptions.Metadata;
core.String _body;
if (request != null) {
_body = convert.json.encode(request.toJson());
}
if (name == null) {
throw core.ArgumentError('Parameter name is required.');
}
if ($fields != null) {
_queryParams['fields'] = [$fields];
}
_url = 'v1/' + commons.Escaper.ecapeVariableReserved('$name');
final _response = _requester.request(
_url,
'PUT',
body: _body,
queryParams: _queryParams,
uploadOptions: _uploadOptions,
uploadMedia: _uploadMedia,
downloadOptions: _downloadOptions,
);
return _response.then((data) => Subscription.fromJson(data));
}
/// Deletes an existing subscription. All messages retained in the
/// subscription are immediately dropped. Calls to `Pull` after deletion will
/// return `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.
///
/// Request parameters:
///
/// [subscription] - Required. The subscription to delete. Format is
/// `projects/{project}/subscriptions/{sub}`.
/// Value must have pattern "^projects/[^/]+/subscriptions/[^/]+$".
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [Empty].
///
/// Completes with a [commons.ApiRequestError] if the API endpoint returned an
/// error.
///
/// If the used [http.Client] completes with an error when making a REST call,
/// this method will complete with the same error.
async.Future<Empty> delete(
core.String subscription, {
core.String $fields,
}) {
core.String _url;
final _queryParams = <core.String, core.List<core.String>>{};
commons.Media _uploadMedia;
commons.UploadOptions _uploadOptions;
var _downloadOptions = commons.DownloadOptions.Metadata;
core.String _body;
if (subscription == null) {
throw core.ArgumentError('Parameter subscription is required.');
}
if ($fields != null) {
_queryParams['fields'] = [$fields];
}
_url = 'v1/' + commons.Escaper.ecapeVariableReserved('$subscription');
final _response = _requester.request(
_url,
'DELETE',
body: _body,
queryParams: _queryParams,
uploadOptions: _uploadOptions,
uploadMedia: _uploadMedia,
downloadOptions: _downloadOptions,
);
return _response.then((data) => Empty.fromJson(data));
}
/// Detaches a subscription from this topic. All messages retained in the
/// subscription are dropped. Subsequent `Pull` and `StreamingPull` requests
/// will return FAILED_PRECONDITION. If the subscription is a push
/// subscription, pushes to the endpoint will stop.
///
/// Request parameters:
///
/// [subscription] - Required. The subscription to detach. Format is
/// `projects/{project}/subscriptions/{subscription}`.
/// Value must have pattern "^projects/[^/]+/subscriptions/[^/]+$".
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [DetachSubscriptionResponse].
///
/// Completes with a [commons.ApiRequestError] if the API endpoint returned an
/// error.
///
/// If the used [http.Client] completes with an error when making a REST call,
/// this method will complete with the same error.
async.Future<DetachSubscriptionResponse> detach(
core.String subscription, {
core.String $fields,
}) {
core.String _url;
final _queryParams = <core.String, core.List<core.String>>{};
commons.Media _uploadMedia;
commons.UploadOptions _uploadOptions;
var _downloadOptions = commons.DownloadOptions.Metadata;
core.String _body;
if (subscription == null) {
throw core.ArgumentError('Parameter subscription is required.');
}
if ($fields != null) {
_queryParams['fields'] = [$fields];
}
_url = 'v1/' +
commons.Escaper.ecapeVariableReserved('$subscription') +
':detach';
final _response = _requester.request(
_url,
'POST',
body: _body,
queryParams: _queryParams,
uploadOptions: _uploadOptions,
uploadMedia: _uploadMedia,
downloadOptions: _downloadOptions,
);
return _response.then((data) => DetachSubscriptionResponse.fromJson(data));
}
/// Gets the configuration details of a subscription.
///
/// Request parameters:
///
/// [subscription] - Required. The name of the subscription to get. Format is
/// `projects/{project}/subscriptions/{sub}`.
/// Value must have pattern "^projects/[^/]+/subscriptions/[^/]+$".
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [Subscription].
///
/// Completes with a [commons.ApiRequestError] if the API endpoint returned an
/// error.
///
/// If the used [http.Client] completes with an error when making a REST call,
/// this method will complete with the same error.
async.Future<Subscription> get(
core.String subscription, {
core.String $fields,
}) {
core.String _url;
final _queryParams = <core.String, core.List<core.String>>{};
commons.Media _uploadMedia;
commons.UploadOptions _uploadOptions;
var _downloadOptions = commons.DownloadOptions.Metadata;
core.String _body;
if (subscription == null) {
throw core.ArgumentError('Parameter subscription is required.');
}
if ($fields != null) {
_queryParams['fields'] = [$fields];
}
_url = 'v1/' + commons.Escaper.ecapeVariableReserved('$subscription');
final _response = _requester.request(
_url,
'GET',
body: _body,
queryParams: _queryParams,
uploadOptions: _uploadOptions,
uploadMedia: _uploadMedia,
downloadOptions: _downloadOptions,
);
return _response.then((data) => Subscription.fromJson(data));
}
/// Gets the access control policy for a resource. Returns an empty policy if
/// the resource exists and does not have a policy set.
///
/// Request parameters:
///
/// [resource] - REQUIRED: The resource for which the policy is being
/// requested. See the operation documentation for the appropriate value for
/// this field.
/// Value must have pattern "^projects/[^/]+/subscriptions/[^/]+$".
///
/// [options_requestedPolicyVersion] - Optional. The policy format version to
/// be returned. Valid values are 0, 1, and 3. Requests specifying an invalid
/// value will be rejected. Requests for policies with any conditional
/// bindings must specify version 3. Policies without any conditional bindings
/// may specify any valid value or leave the field unset. To learn which
/// resources support conditions in their IAM policies, see the [IAM
/// documentation](https://cloud.google.com/iam/help/conditions/resource-policies).
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [Policy].
///
/// Completes with a [commons.ApiRequestError] if the API endpoint returned an
/// error.
///
/// If the used [http.Client] completes with an error when making a REST call,
/// this method will complete with the same error.
async.Future<Policy> getIamPolicy(
core.String resource, {
core.int options_requestedPolicyVersion,
core.String $fields,
}) {
core.String _url;
final _queryParams = <core.String, core.List<core.String>>{};
commons.Media _uploadMedia;
commons.UploadOptions _uploadOptions;
var _downloadOptions = commons.DownloadOptions.Metadata;
core.String _body;
if (resource == null) {
throw core.ArgumentError('Parameter resource is required.');
}
if (options_requestedPolicyVersion != null) {
_queryParams['options.requestedPolicyVersion'] = [
'${options_requestedPolicyVersion}'
];
}
if ($fields != null) {
_queryParams['fields'] = [$fields];
}
_url = 'v1/' +
commons.Escaper.ecapeVariableReserved('$resource') +
':getIamPolicy';
final _response = _requester.request(
_url,
'GET',
body: _body,
queryParams: _queryParams,
uploadOptions: _uploadOptions,
uploadMedia: _uploadMedia,
downloadOptions: _downloadOptions,
);
return _response.then((data) => Policy.fromJson(data));
}
/// Lists matching subscriptions.
///
/// Request parameters:
///
/// [project] - Required. The name of the project in which to list
/// subscriptions. Format is `projects/{project-id}`.
/// Value must have pattern "^projects/[^/]+$".
///
/// [pageSize] - Maximum number of subscriptions to return.
///
/// [pageToken] - The value returned by the last `ListSubscriptionsResponse`;
/// indicates that this is a continuation of a prior `ListSubscriptions` call,
/// and that the system should return the next page of data.
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [ListSubscriptionsResponse].
///
/// Completes with a [commons.ApiRequestError] if the API endpoint returned an
/// error.
///
/// If the used [http.Client] completes with an error when making a REST call,
/// this method will complete with the same error.
async.Future<ListSubscriptionsResponse> list(
core.String project, {
core.int pageSize,
core.String pageToken,
core.String $fields,
}) {
core.String _url;
final _queryParams = <core.String, core.List<core.String>>{};
commons.Media _uploadMedia;
commons.UploadOptions _uploadOptions;
var _downloadOptions = commons.DownloadOptions.Metadata;
core.String _body;
if (project == null) {
throw core.ArgumentError('Parameter project is required.');
}
if (pageSize != null) {
_queryParams['pageSize'] = ['${pageSize}'];
}
if (pageToken != null) {
_queryParams['pageToken'] = [pageToken];
}
if ($fields != null) {
_queryParams['fields'] = [$fields];
}
_url = 'v1/' +
commons.Escaper.ecapeVariableReserved('$project') +
'/subscriptions';
final _response = _requester.request(
_url,
'GET',
body: _body,
queryParams: _queryParams,
uploadOptions: _uploadOptions,
uploadMedia: _uploadMedia,
downloadOptions: _downloadOptions,
);
return _response.then((data) => ListSubscriptionsResponse.fromJson(data));
}
/// Modifies the ack deadline for a specific message. This method is useful to
/// indicate that more time is needed to process a message by the 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.
///
/// [request] - The metadata request object.
///
/// Request parameters:
///
/// [subscription] - Required. The name of the subscription. Format is
/// `projects/{project}/subscriptions/{sub}`.
/// Value must have pattern "^projects/[^/]+/subscriptions/[^/]+$".
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [Empty].
///
/// Completes with a [commons.ApiRequestError] if the API endpoint returned an
/// error.
///
/// If the used [http.Client] completes with an error when making a REST call,
/// this method will complete with the same error.
async.Future<Empty> modifyAckDeadline(
ModifyAckDeadlineRequest request,
core.String subscription, {
core.String $fields,
}) {
core.String _url;
final _queryParams = <core.String, core.List<core.String>>{};
commons.Media _uploadMedia;
commons.UploadOptions _uploadOptions;
var _downloadOptions = commons.DownloadOptions.Metadata;
core.String _body;
if (request != null) {
_body = convert.json.encode(request.toJson());
}
if (subscription == null) {
throw core.ArgumentError('Parameter subscription is required.');
}
if ($fields != null) {
_queryParams['fields'] = [$fields];
}
_url = 'v1/' +
commons.Escaper.ecapeVariableReserved('$subscription') +
':modifyAckDeadline';
final _response = _requester.request(
_url,
'POST',
body: _body,
queryParams: _queryParams,
uploadOptions: _uploadOptions,
uploadMedia: _uploadMedia,
downloadOptions: _downloadOptions,
);
return _response.then((data) => Empty.fromJson(data));
}
/// Modifies the `PushConfig` for a specified subscription. This may be used
/// to change a push subscription to a pull one (signified by 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`.
///
/// [request] - The metadata request object.
///
/// Request parameters:
///
/// [subscription] - Required. The name of the subscription. Format is
/// `projects/{project}/subscriptions/{sub}`.
/// Value must have pattern "^projects/[^/]+/subscriptions/[^/]+$".
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [Empty].
///
/// Completes with a [commons.ApiRequestError] if the API endpoint returned an
/// error.
///
/// If the used [http.Client] completes with an error when making a REST call,
/// this method will complete with the same error.
async.Future<Empty> modifyPushConfig(
ModifyPushConfigRequest request,
core.String subscription, {
core.String $fields,
}) {
core.String _url;
final _queryParams = <core.String, core.List<core.String>>{};
commons.Media _uploadMedia;
commons.UploadOptions _uploadOptions;
var _downloadOptions = commons.DownloadOptions.Metadata;
core.String _body;
if (request != null) {
_body = convert.json.encode(request.toJson());
}
if (subscription == null) {
throw core.ArgumentError('Parameter subscription is required.');
}
if ($fields != null) {
_queryParams['fields'] = [$fields];
}
_url = 'v1/' +
commons.Escaper.ecapeVariableReserved('$subscription') +
':modifyPushConfig';
final _response = _requester.request(
_url,
'POST',
body: _body,
queryParams: _queryParams,
uploadOptions: _uploadOptions,
uploadMedia: _uploadMedia,
downloadOptions: _downloadOptions,
);
return _response.then((data) => Empty.fromJson(data));
}
/// Updates an existing subscription. Note that certain properties of a
/// subscription, such as its topic, are not modifiable.
///
/// [request] - The metadata request object.
///
/// Request parameters:
///
/// [name] - 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"`.
/// Value must have pattern "^projects/[^/]+/subscriptions/[^/]+$".
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [Subscription].
///
/// Completes with a [commons.ApiRequestError] if the API endpoint returned an
/// error.
///
/// If the used [http.Client] completes with an error when making a REST call,
/// this method will complete with the same error.
async.Future<Subscription> patch(
UpdateSubscriptionRequest request,
core.String name, {
core.String $fields,
}) {
core.String _url;
final _queryParams = <core.String, core.List<core.String>>{};
commons.Media _uploadMedia;
commons.UploadOptions _uploadOptions;
var _downloadOptions = commons.DownloadOptions.Metadata;
core.String _body;
if (request != null) {
_body = convert.json.encode(request.toJson());
}
if (name == null) {
throw core.ArgumentError('Parameter name is required.');
}
if ($fields != null) {
_queryParams['fields'] = [$fields];
}
_url = 'v1/' + commons.Escaper.ecapeVariableReserved('$name');
final _response = _requester.request(
_url,
'PATCH',
body: _body,
queryParams: _queryParams,
uploadOptions: _uploadOptions,
uploadMedia: _uploadMedia,
downloadOptions: _downloadOptions,
);
return _response.then((data) => Subscription.fromJson(data));
}
/// Pulls messages from the server. The server may return `UNAVAILABLE` if
/// there are too many concurrent pull requests pending for the given
/// subscription.
///
/// [request] - The metadata request object.
///
/// Request parameters:
///
/// [subscription] - Required. The subscription from which messages should be
/// pulled. Format is `projects/{project}/subscriptions/{sub}`.
/// Value must have pattern "^projects/[^/]+/subscriptions/[^/]+$".
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [PullResponse].
///
/// Completes with a [commons.ApiRequestError] if the API endpoint returned an
/// error.
///
/// If the used [http.Client] completes with an error when making a REST call,
/// this method will complete with the same error.
async.Future<PullResponse> pull(
PullRequest request,
core.String subscription, {
core.String $fields,
}) {
core.String _url;
final _queryParams = <core.String, core.List<core.String>>{};
commons.Media _uploadMedia;
commons.UploadOptions _uploadOptions;
var _downloadOptions = commons.DownloadOptions.Metadata;
core.String _body;
if (request != null) {
_body = convert.json.encode(request.toJson());
}
if (subscription == null) {
throw core.ArgumentError('Parameter subscription is required.');
}
if ($fields != null) {
_queryParams['fields'] = [$fields];
}
_url = 'v1/' +
commons.Escaper.ecapeVariableReserved('$subscription') +
':pull';
final _response = _requester.request(
_url,
'POST',
body: _body,
queryParams: _queryParams,
uploadOptions: _uploadOptions,
uploadMedia: _uploadMedia,
downloadOptions: _downloadOptions,
);
return _response.then((data) => PullResponse.fromJson(data));
}
/// Seeks an existing subscription to a point in time or to a given snapshot,
/// whichever is provided in the request. Snapshots are used in [Seek](
/// https://cloud.google.com/pubsub/docs/replay-overview) operations, which
/// allow 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. Note that both the subscription and the
/// snapshot must be on the same topic.
///
/// [request] - The metadata request object.
///
/// Request parameters:
///
/// [subscription] - Required. The subscription to affect.
/// Value must have pattern "^projects/[^/]+/subscriptions/[^/]+$".
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [SeekResponse].
///
/// Completes with a [commons.ApiRequestError] if the API endpoint returned an
/// error.
///
/// If the used [http.Client] completes with an error when making a REST call,
/// this method will complete with the same error.
async.Future<SeekResponse> seek(
SeekRequest request,
core.String subscription, {
core.String $fields,
}) {
core.String _url;
final _queryParams = <core.String, core.List<core.String>>{};
commons.Media _uploadMedia;
commons.UploadOptions _uploadOptions;
var _downloadOptions = commons.DownloadOptions.Metadata;
core.String _body;
if (request != null) {
_body = convert.json.encode(request.toJson());
}
if (subscription == null) {
throw core.ArgumentError('Parameter subscription is required.');
}
if ($fields != null) {
_queryParams['fields'] = [$fields];
}
_url = 'v1/' +
commons.Escaper.ecapeVariableReserved('$subscription') +
':seek';
final _response = _requester.request(
_url,
'POST',
body: _body,
queryParams: _queryParams,
uploadOptions: _uploadOptions,
uploadMedia: _uploadMedia,
downloadOptions: _downloadOptions,
);
return _response.then((data) => SeekResponse.fromJson(data));
}
/// Sets the access control policy on the specified resource. Replaces any
/// existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and
/// `PERMISSION_DENIED` errors.
///
/// [request] - The metadata request object.
///
/// Request parameters:
///
/// [resource] - REQUIRED: The resource for which the policy is being
/// specified. See the operation documentation for the appropriate value for
/// this field.
/// Value must have pattern "^projects/[^/]+/subscriptions/[^/]+$".
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [Policy].
///
/// Completes with a [commons.ApiRequestError] if the API endpoint returned an
/// error.
///
/// If the used [http.Client] completes with an error when making a REST call,
/// this method will complete with the same error.
async.Future<Policy> setIamPolicy(
SetIamPolicyRequest request,
core.String resource, {
core.String $fields,
}) {
core.String _url;
final _queryParams = <core.String, core.List<core.String>>{};
commons.Media _uploadMedia;
commons.UploadOptions _uploadOptions;
var _downloadOptions = commons.DownloadOptions.Metadata;
core.String _body;
if (request != null) {
_body = convert.json.encode(request.toJson());
}
if (resource == null) {
throw core.ArgumentError('Parameter resource is required.');
}
if ($fields != null) {
_queryParams['fields'] = [$fields];
}
_url = 'v1/' +
commons.Escaper.ecapeVariableReserved('$resource') +
':setIamPolicy';
final _response = _requester.request(
_url,
'POST',
body: _body,
queryParams: _queryParams,
uploadOptions: _uploadOptions,
uploadMedia: _uploadMedia,
downloadOptions: _downloadOptions,
);
return _response.then((data) => Policy.fromJson(data));
}
/// 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.
///
/// [request] - The metadata request object.
///
/// Request parameters:
///
/// [resource] - REQUIRED: The resource for which the policy detail is being
/// requested. See the operation documentation for the appropriate value for
/// this field.
/// Value must have pattern "^projects/[^/]+/subscriptions/[^/]+$".
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [TestIamPermissionsResponse].
///
/// Completes with a [commons.ApiRequestError] if the API endpoint returned an
/// error.
///
/// If the used [http.Client] completes with an error when making a REST call,
/// this method will complete with the same error.
async.Future<TestIamPermissionsResponse> testIamPermissions(
TestIamPermissionsRequest request,
core.String resource, {
core.String $fields,
}) {
core.String _url;
final _queryParams = <core.String, core.List<core.String>>{};
commons.Media _uploadMedia;
commons.UploadOptions _uploadOptions;
var _downloadOptions = commons.DownloadOptions.Metadata;
core.String _body;
if (request != null) {
_body = convert.json.encode(request.toJson());
}
if (resource == null) {
throw core.ArgumentError('Parameter resource is required.');
}
if ($fields != null) {
_queryParams['fields'] = [$fields];
}
_url = 'v1/' +
commons.Escaper.ecapeVariableReserved('$resource') +
':testIamPermissions';
final _response = _requester.request(
_url,
'POST',
body: _body,
queryParams: _queryParams,
uploadOptions: _uploadOptions,
uploadMedia: _uploadMedia,
downloadOptions: _downloadOptions,
);
return _response.then((data) => TestIamPermissionsResponse.fromJson(data));
}
}
class ProjectsTopicsResourceApi {
final commons.ApiRequester _requester;
ProjectsTopicsSnapshotsResourceApi get snapshots =>
ProjectsTopicsSnapshotsResourceApi(_requester);
ProjectsTopicsSubscriptionsResourceApi get subscriptions =>
ProjectsTopicsSubscriptionsResourceApi(_requester);
ProjectsTopicsResourceApi(commons.ApiRequester client) : _requester = client;
/// Creates the given topic with the given name. See the [resource name
/// rules]( https://cloud.google.com/pubsub/docs/admin#resource_names).
///
/// [request] - The metadata request object.
///
/// Request parameters:
///
/// [name] - 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"`.
/// Value must have pattern "^projects/[^/]+/topics/[^/]+$".
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [Topic].
///
/// Completes with a [commons.ApiRequestError] if the API endpoint returned an
/// error.
///
/// If the used [http.Client] completes with an error when making a REST call,
/// this method will complete with the same error.
async.Future<Topic> create(
Topic request,
core.String name, {
core.String $fields,
}) {
core.String _url;
final _queryParams = <core.String, core.List<core.String>>{};
commons.Media _uploadMedia;
commons.UploadOptions _uploadOptions;
var _downloadOptions = commons.DownloadOptions.Metadata;
core.String _body;
if (request != null) {
_body = convert.json.encode(request.toJson());
}
if (name == null) {
throw core.ArgumentError('Parameter name is required.');
}
if ($fields != null) {
_queryParams['fields'] = [$fields];
}
_url = 'v1/' + commons.Escaper.ecapeVariableReserved('$name');
final _response = _requester.request(
_url,
'PUT',
body: _body,
queryParams: _queryParams,
uploadOptions: _uploadOptions,
uploadMedia: _uploadMedia,
downloadOptions: _downloadOptions,
);
return _response.then((data) => Topic.fromJson(data));
}
/// Deletes the topic with the given name. Returns `NOT_FOUND` if the topic
/// does not exist. After a topic is deleted, a new topic may be created with
/// the same name; this is an entirely new topic with none of the old
/// configuration or subscriptions. Existing subscriptions to this topic are
/// not deleted, but their `topic` field is set to `_deleted-topic_`.
///
/// Request parameters:
///
/// [topic] - Required. Name of the topic to delete. Format is
/// `projects/{project}/topics/{topic}`.
/// Value must have pattern "^projects/[^/]+/topics/[^/]+$".
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [Empty].
///
/// Completes with a [commons.ApiRequestError] if the API endpoint returned an
/// error.
///
/// If the used [http.Client] completes with an error when making a REST call,
/// this method will complete with the same error.
async.Future<Empty> delete(
core.String topic, {
core.String $fields,
}) {
core.String _url;
final _queryParams = <core.String, core.List<core.String>>{};
commons.Media _uploadMedia;
commons.UploadOptions _uploadOptions;
var _downloadOptions = commons.DownloadOptions.Metadata;
core.String _body;
if (topic == null) {
throw core.ArgumentError('Parameter topic is required.');
}
if ($fields != null) {
_queryParams['fields'] = [$fields];
}
_url = 'v1/' + commons.Escaper.ecapeVariableReserved('$topic');
final _response = _requester.request(
_url,
'DELETE',
body: _body,
queryParams: _queryParams,
uploadOptions: _uploadOptions,
uploadMedia: _uploadMedia,
downloadOptions: _downloadOptions,
);
return _response.then((data) => Empty.fromJson(data));
}
/// Gets the configuration of a topic.
///
/// Request parameters:
///
/// [topic] - Required. The name of the topic to get. Format is
/// `projects/{project}/topics/{topic}`.
/// Value must have pattern "^projects/[^/]+/topics/[^/]+$".
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [Topic].
///
/// Completes with a [commons.ApiRequestError] if the API endpoint returned an
/// error.
///
/// If the used [http.Client] completes with an error when making a REST call,
/// this method will complete with the same error.
async.Future<Topic> get(
core.String topic, {
core.String $fields,
}) {
core.String _url;
final _queryParams = <core.String, core.List<core.String>>{};
commons.Media _uploadMedia;
commons.UploadOptions _uploadOptions;
var _downloadOptions = commons.DownloadOptions.Metadata;
core.String _body;
if (topic == null) {
throw core.ArgumentError('Parameter topic is required.');
}
if ($fields != null) {
_queryParams['fields'] = [$fields];
}
_url = 'v1/' + commons.Escaper.ecapeVariableReserved('$topic');
final _response = _requester.request(
_url,
'GET',
body: _body,
queryParams: _queryParams,
uploadOptions: _uploadOptions,
uploadMedia: _uploadMedia,
downloadOptions: _downloadOptions,
);
return _response.then((data) => Topic.fromJson(data));
}
/// Gets the access control policy for a resource. Returns an empty policy if
/// the resource exists and does not have a policy set.
///
/// Request parameters:
///
/// [resource] - REQUIRED: The resource for which the policy is being
/// requested. See the operation documentation for the appropriate value for
/// this field.
/// Value must have pattern "^projects/[^/]+/topics/[^/]+$".
///
/// [options_requestedPolicyVersion] - Optional. The policy format version to
/// be returned. Valid values are 0, 1, and 3. Requests specifying an invalid
/// value will be rejected. Requests for policies with any conditional
/// bindings must specify version 3. Policies without any conditional bindings
/// may specify any valid value or leave the field unset. To learn which
/// resources support conditions in their IAM policies, see the [IAM
/// documentation](https://cloud.google.com/iam/help/conditions/resource-policies).
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [Policy].
///
/// Completes with a [commons.ApiRequestError] if the API endpoint returned an
/// error.
///
/// If the used [http.Client] completes with an error when making a REST call,
/// this method will complete with the same error.
async.Future<Policy> getIamPolicy(
core.String resource, {
core.int options_requestedPolicyVersion,
core.String $fields,
}) {
core.String _url;
final _queryParams = <core.String, core.List<core.String>>{};
commons.Media _uploadMedia;
commons.UploadOptions _uploadOptions;
var _downloadOptions = commons.DownloadOptions.Metadata;
core.String _body;
if (resource == null) {
throw core.ArgumentError('Parameter resource is required.');
}
if (options_requestedPolicyVersion != null) {
_queryParams['options.requestedPolicyVersion'] = [
'${options_requestedPolicyVersion}'
];
}
if ($fields != null) {
_queryParams['fields'] = [$fields];
}
_url = 'v1/' +
commons.Escaper.ecapeVariableReserved('$resource') +
':getIamPolicy';
final _response = _requester.request(
_url,
'GET',
body: _body,
queryParams: _queryParams,
uploadOptions: _uploadOptions,
uploadMedia: _uploadMedia,
downloadOptions: _downloadOptions,
);
return _response.then((data) => Policy.fromJson(data));
}
/// Lists matching topics.
///
/// Request parameters:
///
/// [project] - Required. The name of the project in which to list topics.
/// Format is `projects/{project-id}`.
/// Value must have pattern "^projects/[^/]+$".
///
/// [pageSize] - Maximum number of topics to return.
///
/// [pageToken] - The value returned by the last `ListTopicsResponse`;
/// indicates that this is a continuation of a prior `ListTopics` call, and
/// that the system should return the next page of data.
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [ListTopicsResponse].
///
/// Completes with a [commons.ApiRequestError] if the API endpoint returned an
/// error.
///
/// If the used [http.Client] completes with an error when making a REST call,
/// this method will complete with the same error.
async.Future<ListTopicsResponse> list(
core.String project, {
core.int pageSize,
core.String pageToken,
core.String $fields,
}) {
core.String _url;
final _queryParams = <core.String, core.List<core.String>>{};
commons.Media _uploadMedia;
commons.UploadOptions _uploadOptions;
var _downloadOptions = commons.DownloadOptions.Metadata;
core.String _body;
if (project == null) {
throw core.ArgumentError('Parameter project is required.');
}
if (pageSize != null) {
_queryParams['pageSize'] = ['${pageSize}'];
}
if (pageToken != null) {
_queryParams['pageToken'] = [pageToken];
}
if ($fields != null) {
_queryParams['fields'] = [$fields];
}
_url =
'v1/' + commons.Escaper.ecapeVariableReserved('$project') + '/topics';
final _response = _requester.request(
_url,
'GET',
body: _body,
queryParams: _queryParams,
uploadOptions: _uploadOptions,
uploadMedia: _uploadMedia,
downloadOptions: _downloadOptions,
);
return _response.then((data) => ListTopicsResponse.fromJson(data));
}
/// Updates an existing topic. Note that certain properties of a topic are not
/// modifiable.
///
/// [request] - The metadata request object.
///
/// Request parameters:
///
/// [name] - 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"`.
/// Value must have pattern "^projects/[^/]+/topics/[^/]+$".
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [Topic].
///
/// Completes with a [commons.ApiRequestError] if the API endpoint returned an
/// error.
///
/// If the used [http.Client] completes with an error when making a REST call,
/// this method will complete with the same error.
async.Future<Topic> patch(
UpdateTopicRequest request,
core.String name, {
core.String $fields,
}) {
core.String _url;
final _queryParams = <core.String, core.List<core.String>>{};
commons.Media _uploadMedia;
commons.UploadOptions _uploadOptions;
var _downloadOptions = commons.DownloadOptions.Metadata;
core.String _body;
if (request != null) {
_body = convert.json.encode(request.toJson());
}
if (name == null) {
throw core.ArgumentError('Parameter name is required.');
}
if ($fields != null) {
_queryParams['fields'] = [$fields];
}
_url = 'v1/' + commons.Escaper.ecapeVariableReserved('$name');
final _response = _requester.request(
_url,
'PATCH',
body: _body,
queryParams: _queryParams,
uploadOptions: _uploadOptions,
uploadMedia: _uploadMedia,
downloadOptions: _downloadOptions,
);
return _response.then((data) => Topic.fromJson(data));
}
/// Adds one or more messages to the topic. Returns `NOT_FOUND` if the topic
/// does not exist.
///
/// [request] - The metadata request object.
///
/// Request parameters:
///
/// [topic] - Required. The messages in the request will be published on this
/// topic. Format is `projects/{project}/topics/{topic}`.
/// Value must have pattern "^projects/[^/]+/topics/[^/]+$".
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [PublishResponse].
///
/// Completes with a [commons.ApiRequestError] if the API endpoint returned an
/// error.
///
/// If the used [http.Client] completes with an error when making a REST call,
/// this method will complete with the same error.
async.Future<PublishResponse> publish(
PublishRequest request,
core.String topic, {
core.String $fields,
}) {
core.String _url;
final _queryParams = <core.String, core.List<core.String>>{};
commons.Media _uploadMedia;
commons.UploadOptions _uploadOptions;
var _downloadOptions = commons.DownloadOptions.Metadata;
core.String _body;
if (request != null) {
_body = convert.json.encode(request.toJson());
}
if (topic == null) {
throw core.ArgumentError('Parameter topic is required.');
}
if ($fields != null) {
_queryParams['fields'] = [$fields];
}
_url = 'v1/' + commons.Escaper.ecapeVariableReserved('$topic') + ':publish';
final _response = _requester.request(
_url,
'POST',
body: _body,
queryParams: _queryParams,
uploadOptions: _uploadOptions,
uploadMedia: _uploadMedia,
downloadOptions: _downloadOptions,
);
return _response.then((data) => PublishResponse.fromJson(data));
}
/// Sets the access control policy on the specified resource. Replaces any
/// existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and
/// `PERMISSION_DENIED` errors.
///
/// [request] - The metadata request object.
///
/// Request parameters:
///
/// [resource] - REQUIRED: The resource for which the policy is being
/// specified. See the operation documentation for the appropriate value for
/// this field.
/// Value must have pattern "^projects/[^/]+/topics/[^/]+$".
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [Policy].
///
/// Completes with a [commons.ApiRequestError] if the API endpoint returned an
/// error.
///
/// If the used [http.Client] completes with an error when making a REST call,
/// this method will complete with the same error.
async.Future<Policy> setIamPolicy(
SetIamPolicyRequest request,
core.String resource, {
core.String $fields,
}) {
core.String _url;
final _queryParams = <core.String, core.List<core.String>>{};
commons.Media _uploadMedia;
commons.UploadOptions _uploadOptions;
var _downloadOptions = commons.DownloadOptions.Metadata;
core.String _body;
if (request != null) {
_body = convert.json.encode(request.toJson());
}
if (resource == null) {
throw core.ArgumentError('Parameter resource is required.');
}
if ($fields != null) {
_queryParams['fields'] = [$fields];
}
_url = 'v1/' +
commons.Escaper.ecapeVariableReserved('$resource') +
':setIamPolicy';
final _response = _requester.request(
_url,
'POST',
body: _body,
queryParams: _queryParams,
uploadOptions: _uploadOptions,
uploadMedia: _uploadMedia,
downloadOptions: _downloadOptions,
);
return _response.then((data) => Policy.fromJson(data));
}
/// 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.
///
/// [request] - The metadata request object.
///
/// Request parameters:
///
/// [resource] - REQUIRED: The resource for which the policy detail is being
/// requested. See the operation documentation for the appropriate value for
/// this field.
/// Value must have pattern "^projects/[^/]+/topics/[^/]+$".
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [TestIamPermissionsResponse].
///
/// Completes with a [commons.ApiRequestError] if the API endpoint returned an
/// error.
///
/// If the used [http.Client] completes with an error when making a REST call,
/// this method will complete with the same error.
async.Future<TestIamPermissionsResponse> testIamPermissions(
TestIamPermissionsRequest request,
core.String resource, {
core.String $fields,
}) {
core.String _url;
final _queryParams = <core.String, core.List<core.String>>{};
commons.Media _uploadMedia;
commons.UploadOptions _uploadOptions;
var _downloadOptions = commons.DownloadOptions.Metadata;
core.String _body;
if (request != null) {
_body = convert.json.encode(request.toJson());
}
if (resource == null) {
throw core.ArgumentError('Parameter resource is required.');
}
if ($fields != null) {
_queryParams['fields'] = [$fields];
}
_url = 'v1/' +
commons.Escaper.ecapeVariableReserved('$resource') +
':testIamPermissions';
final _response = _requester.request(
_url,
'POST',
body: _body,
queryParams: _queryParams,
uploadOptions: _uploadOptions,
uploadMedia: _uploadMedia,
downloadOptions: _downloadOptions,
);
return _response.then((data) => TestIamPermissionsResponse.fromJson(data));
}
}
class ProjectsTopicsSnapshotsResourceApi {
final commons.ApiRequester _requester;
ProjectsTopicsSnapshotsResourceApi(commons.ApiRequester client)
: _requester = client;
/// Lists the names of the snapshots on this topic. Snapshots are used in
/// [Seek](https://cloud.google.com/pubsub/docs/replay-overview) operations,
/// which allow 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.
///
/// Request parameters:
///
/// [topic] - Required. The name of the topic that snapshots are attached to.
/// Format is `projects/{project}/topics/{topic}`.
/// Value must have pattern "^projects/[^/]+/topics/[^/]+$".
///
/// [pageSize] - Maximum number of snapshot names to return.
///
/// [pageToken] - The value returned by the last `ListTopicSnapshotsResponse`;
/// indicates that this is a continuation of a prior `ListTopicSnapshots`
/// call, and that the system should return the next page of data.
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [ListTopicSnapshotsResponse].
///
/// Completes with a [commons.ApiRequestError] if the API endpoint returned an
/// error.
///
/// If the used [http.Client] completes with an error when making a REST call,
/// this method will complete with the same error.
async.Future<ListTopicSnapshotsResponse> list(
core.String topic, {
core.int pageSize,
core.String pageToken,
core.String $fields,
}) {
core.String _url;
final _queryParams = <core.String, core.List<core.String>>{};
commons.Media _uploadMedia;
commons.UploadOptions _uploadOptions;
var _downloadOptions = commons.DownloadOptions.Metadata;
core.String _body;
if (topic == null) {
throw core.ArgumentError('Parameter topic is required.');
}
if (pageSize != null) {
_queryParams['pageSize'] = ['${pageSize}'];
}
if (pageToken != null) {
_queryParams['pageToken'] = [pageToken];
}
if ($fields != null) {
_queryParams['fields'] = [$fields];
}
_url =
'v1/' + commons.Escaper.ecapeVariableReserved('$topic') + '/snapshots';
final _response = _requester.request(
_url,
'GET',
body: _body,
queryParams: _queryParams,
uploadOptions: _uploadOptions,
uploadMedia: _uploadMedia,
downloadOptions: _downloadOptions,
);
return _response.then((data) => ListTopicSnapshotsResponse.fromJson(data));
}
}
class ProjectsTopicsSubscriptionsResourceApi {
final commons.ApiRequester _requester;
ProjectsTopicsSubscriptionsResourceApi(commons.ApiRequester client)
: _requester = client;
/// Lists the names of the attached subscriptions on this topic.
///
/// Request parameters:
///
/// [topic] - Required. The name of the topic that subscriptions are attached
/// to. Format is `projects/{project}/topics/{topic}`.
/// Value must have pattern "^projects/[^/]+/topics/[^/]+$".
///
/// [pageSize] - Maximum number of subscription names to return.
///
/// [pageToken] - The value returned by the last
/// `ListTopicSubscriptionsResponse`; indicates that this is a continuation of
/// a prior `ListTopicSubscriptions` call, and that the system should return
/// the next page of data.
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [ListTopicSubscriptionsResponse].
///
/// Completes with a [commons.ApiRequestError] if the API endpoint returned an
/// error.
///
/// If the used [http.Client] completes with an error when making a REST call,
/// this method will complete with the same error.
async.Future<ListTopicSubscriptionsResponse> list(
core.String topic, {
core.int pageSize,
core.String pageToken,
core.String $fields,
}) {
core.String _url;
final _queryParams = <core.String, core.List<core.String>>{};
commons.Media _uploadMedia;
commons.UploadOptions _uploadOptions;
var _downloadOptions = commons.DownloadOptions.Metadata;
core.String _body;
if (topic == null) {
throw core.ArgumentError('Parameter topic is required.');
}
if (pageSize != null) {
_queryParams['pageSize'] = ['${pageSize}'];
}
if (pageToken != null) {
_queryParams['pageToken'] = [pageToken];
}
if ($fields != null) {
_queryParams['fields'] = [$fields];
}
_url = 'v1/' +
commons.Escaper.ecapeVariableReserved('$topic') +
'/subscriptions';
final _response = _requester.request(
_url,
'GET',
body: _body,
queryParams: _queryParams,
uploadOptions: _uploadOptions,
uploadMedia: _uploadMedia,
downloadOptions: _downloadOptions,
);
return _response
.then((data) => ListTopicSubscriptionsResponse.fromJson(data));
}
}
/// Request for the Acknowledge method.
class AcknowledgeRequest {
/// 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.
core.List<core.String> ackIds;
AcknowledgeRequest();
AcknowledgeRequest.fromJson(core.Map _json) {
if (_json.containsKey('ackIds')) {
ackIds = (_json['ackIds'] as core.List)
.map<core.String>((value) => value as core.String)
.toList();
}
}
core.Map<core.String, core.Object> toJson() {
final _json = <core.String, core.Object>{};
if (ackIds != null) {
_json['ackIds'] = ackIds;
}
return _json;
}
}
/// Associates `members` with a `role`.
class Binding {
/// A client-specified ID for this binding. Expected to be globally unique to
/// support the internal bindings-by-ID API.
core.String bindingId;
/// The condition that is associated with this binding. If the condition
/// evaluates to `true`, then this binding applies to the current request. If
/// the condition evaluates to `false`, then this binding does not apply to
/// the current request. However, a different role binding might grant the
/// same role to one or more of the members in this binding. To learn which
/// resources support conditions in their IAM policies, see the [IAM
/// documentation](https://cloud.google.com/iam/help/conditions/resource-policies).
Expr condition;
/// Specifies the identities requesting access for a Cloud Platform resource.
/// `members` can have the following values: * `allUsers`: A special
/// identifier that represents anyone who is on the internet; with or without
/// a Google account. * `allAuthenticatedUsers`: A special identifier that
/// represents anyone who is authenticated with a Google account or a service
/// account. * `user:{emailid}`: An email address that represents a specific
/// Google account. For example, `alice@example.com` . *
/// `serviceAccount:{emailid}`: An email address that represents a service
/// account. For example, `my-other-app@appspot.gserviceaccount.com`. *
/// `group:{emailid}`: An email address that represents a Google group. For
/// example, `admins@example.com`. * `deleted:user:{emailid}?uid={uniqueid}`:
/// An email address (plus unique identifier) representing a user that has
/// been recently deleted. For example,
/// `alice@example.com?uid=123456789012345678901`. If the user is recovered,
/// this value reverts to `user:{emailid}` and the recovered user retains the
/// role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`:
/// An email address (plus unique identifier) representing a service account
/// that has been recently deleted. For example,
/// `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If
/// the service account is undeleted, this value reverts to
/// `serviceAccount:{emailid}` and the undeleted service account retains the
/// role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email
/// address (plus unique identifier) representing a Google group that has been
/// recently deleted. For example,
/// `admins@example.com?uid=123456789012345678901`. If the group is recovered,
/// this value reverts to `group:{emailid}` and the recovered group retains
/// the role in the binding. * `domain:{domain}`: The G Suite domain (primary)
/// that represents all the users of that domain. For example, `google.com` or
/// `example.com`.
core.List<core.String> members;
/// Role that is assigned to `members`. For example, `roles/viewer`,
/// `roles/editor`, or `roles/owner`.
core.String role;
Binding();
Binding.fromJson(core.Map _json) {
if (_json.containsKey('bindingId')) {
bindingId = _json['bindingId'] as core.String;
}
if (_json.containsKey('condition')) {
condition = Expr.fromJson(_json['condition']);
}
if (_json.containsKey('members')) {
members = (_json['members'] as core.List)
.map<core.String>((value) => value as core.String)
.toList();
}
if (_json.containsKey('role')) {
role = _json['role'] as core.String;
}
}
core.Map<core.String, core.Object> toJson() {
final _json = <core.String, core.Object>{};
if (bindingId != null) {
_json['bindingId'] = bindingId;
}
if (condition != null) {
_json['condition'] = condition.toJson();
}
if (members != null) {
_json['members'] = members;
}
if (role != null) {
_json['role'] = role;
}
return _json;
}
}
/// Request for the `CreateSnapshot` method.
class CreateSnapshotRequest {
/// See Creating and managing labels.
core.Map<core.String, core.String> labels;
/// 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 unacknowledged upon
/// the successful completion of the `CreateSnapshot` request; as well as: (b)
/// Any messages published to the subscription's topic following the
/// successful completion of the CreateSnapshot request. Format is
/// `projects/{project}/subscriptions/{sub}`.
core.String subscription;
CreateSnapshotRequest();
CreateSnapshotRequest.fromJson(core.Map _json) {
if (_json.containsKey('labels')) {
labels = commons.mapMap<core.String, core.String>(
_json['labels'].cast<core.String, core.String>(),
(core.String item) => item as core.String);
}
if (_json.containsKey('subscription')) {
subscription = _json['subscription'] as core.String;
}
}
core.Map<core.String, core.Object> toJson() {
final _json = <core.String, core.Object>{};
if (labels != null) {
_json['labels'] = labels;
}
if (subscription != null) {
_json['subscription'] = subscription;
}
return _json;
}
}
/// Dead lettering is done on a best effort basis. The same message might be
/// dead lettered multiple times. If validation on any of the fields fails at
/// subscription creation/updation, the create/update subscription request will
/// fail.
class DeadLetterPolicy {
/// The name of the topic to which dead letter messages should be published.
/// Format is `projects/{project}/topics/{topic}`.The Cloud Pub/Sub service
/// account associated with the enclosing subscription's parent project (i.e.,
/// service-{project_number}@gcp-sa-pubsub.iam.gserviceaccount.com) must have
/// permission to Publish() to this topic. The operation will fail if the
/// topic does not exist. Users should ensure that there is a subscription
/// attached to this topic since messages published to a topic with no
/// subscriptions are lost.
core.String deadLetterTopic;
/// The maximum number of delivery attempts for any message. The value must be
/// between 5 and 100. The number of delivery attempts is defined as 1 + (the
/// sum of number of NACKs and number of times the acknowledgement deadline
/// has been exceeded for the message). A NACK is any call to
/// ModifyAckDeadline with a 0 deadline. Note that client libraries may
/// automatically extend ack_deadlines. This field will be honored on a best
/// effort basis. If this parameter is 0, a default value of 5 is used.
core.int maxDeliveryAttempts;
DeadLetterPolicy();
DeadLetterPolicy.fromJson(core.Map _json) {
if (_json.containsKey('deadLetterTopic')) {
deadLetterTopic = _json['deadLetterTopic'] as core.String;
}
if (_json.containsKey('maxDeliveryAttempts')) {
maxDeliveryAttempts = _json['maxDeliveryAttempts'] as core.int;
}
}
core.Map<core.String, core.Object> toJson() {
final _json = <core.String, core.Object>{};
if (deadLetterTopic != null) {
_json['deadLetterTopic'] = deadLetterTopic;
}
if (maxDeliveryAttempts != null) {
_json['maxDeliveryAttempts'] = maxDeliveryAttempts;
}
return _json;
}
}
/// Response for the DetachSubscription method. Reserved for future use.
class DetachSubscriptionResponse {
DetachSubscriptionResponse();
DetachSubscriptionResponse.fromJson(
// ignore: avoid_unused_constructor_parameters
core.Map _json);
core.Map<core.String, core.Object> toJson() {
final _json = <core.String, core.Object>{};
return _json;
}
}
/// A generic empty message that you can re-use to avoid defining duplicated
/// empty messages in your APIs. A typical example is to use it as the request
/// or the response type of an API method. For instance: service Foo { rpc
/// Bar(google.protobuf.Empty) returns (google.protobuf.Empty); } The JSON
/// representation for `Empty` is empty JSON object `{}`.
class Empty {
Empty();
Empty.fromJson(
// ignore: avoid_unused_constructor_parameters
core.Map _json);
core.Map<core.String, core.Object> toJson() {
final _json = <core.String, core.Object>{};
return _json;
}
}
/// A policy that specifies the conditions for resource expiration (i.e.,
/// automatic resource deletion).
class ExpirationPolicy {
/// Specifies the "time-to-live" duration for an associated resource. The
/// resource expires if it is not active for a period of `ttl`. The definition
/// of "activity" depends on the type of the associated resource. The minimum
/// and maximum allowed values for `ttl` depend on the type of the associated
/// resource, as well. If `ttl` is not set, the associated resource never
/// expires.
core.String ttl;
ExpirationPolicy();
ExpirationPolicy.fromJson(core.Map _json) {
if (_json.containsKey('ttl')) {
ttl = _json['ttl'] as core.String;
}
}
core.Map<core.String, core.Object> toJson() {
final _json = <core.String, core.Object>{};
if (ttl != null) {
_json['ttl'] = ttl;
}
return _json;
}
}
/// Represents a textual expression in the Common Expression Language (CEL)
/// syntax. CEL is a C-like expression language. The syntax and semantics of CEL
/// are documented at https://github.com/google/cel-spec. Example (Comparison):
/// title: "Summary size limit" description: "Determines if a summary is less
/// than 100 chars" expression: "document.summary.size() < 100" Example
/// (Equality): title: "Requestor is owner" description: "Determines if
/// requestor is the document owner" expression: "document.owner ==
/// request.auth.claims.email" Example (Logic): title: "Public documents"
/// description: "Determine whether the document should be publicly visible"
/// expression: "document.type != 'private' && document.type != 'internal'"
/// Example (Data Manipulation): title: "Notification string" description:
/// "Create a notification string with a timestamp." expression: "'New message
/// received at ' + string(document.create_time)" The exact variables and
/// functions that may be referenced within an expression are determined by the
/// service that evaluates it. See the service documentation for additional
/// information.
class Expr {
/// Optional. Description of the expression. This is a longer text which
/// describes the expression, e.g. when hovered over it in a UI.
core.String description;
/// Textual representation of an expression in Common Expression Language
/// syntax.
core.String expression;
/// Optional. String indicating the location of the expression for error
/// reporting, e.g. a file name and a position in the file.
core.String location;
/// Optional. Title for the expression, i.e. a short string describing its
/// purpose. This can be used e.g. in UIs which allow to enter the expression.
core.String title;
Expr();
Expr.fromJson(core.Map _json) {
if (_json.containsKey('description')) {
description = _json['description'] as core.String;
}
if (_json.containsKey('expression')) {
expression = _json['expression'] as core.String;
}
if (_json.containsKey('location')) {
location = _json['location'] as core.String;
}
if (_json.containsKey('title')) {
title = _json['title'] as core.String;
}
}
core.Map<core.String, core.Object> toJson() {
final _json = <core.String, core.Object>{};
if (description != null) {
_json['description'] = description;
}
if (expression != null) {
_json['expression'] = expression;
}
if (location != null) {
_json['location'] = location;
}
if (title != null) {
_json['title'] = title;
}
return _json;
}
}
/// Response for the `ListSnapshots` method.
class ListSnapshotsResponse {
/// If not empty, indicates that there may be more snapshot that match the
/// request; this value should be passed in a new `ListSnapshotsRequest`.
core.String nextPageToken;
/// The resulting snapshots.
core.List<Snapshot> snapshots;
ListSnapshotsResponse();
ListSnapshotsResponse.fromJson(core.Map _json) {
if (_json.containsKey('nextPageToken')) {
nextPageToken = _json['nextPageToken'] as core.String;
}
if (_json.containsKey('snapshots')) {
snapshots = (_json['snapshots'] as core.List)
.map<Snapshot>((value) => Snapshot.fromJson(value))
.toList();
}
}
core.Map<core.String, core.Object> toJson() {
final _json = <core.String, core.Object>{};
if (nextPageToken != null) {
_json['nextPageToken'] = nextPageToken;
}
if (snapshots != null) {
_json['snapshots'] = snapshots.map((value) => value.toJson()).toList();
}
return _json;
}
}
/// Response for the `ListSubscriptions` method.
class ListSubscriptionsResponse {
/// If not empty, indicates that there may be more subscriptions that match
/// the request; this value should be passed in a new
/// `ListSubscriptionsRequest` to get more subscriptions.
core.String nextPageToken;
/// The subscriptions that match the request.
core.List<Subscription> subscriptions;
ListSubscriptionsResponse();
ListSubscriptionsResponse.fromJson(core.Map _json) {
if (_json.containsKey('nextPageToken')) {
nextPageToken = _json['nextPageToken'] as core.String;
}
if (_json.containsKey('subscriptions')) {
subscriptions = (_json['subscriptions'] as core.List)
.map<Subscription>((value) => Subscription.fromJson(value))
.toList();
}
}
core.Map<core.String, core.Object> toJson() {
final _json = <core.String, core.Object>{};
if (nextPageToken != null) {
_json['nextPageToken'] = nextPageToken;
}
if (subscriptions != null) {
_json['subscriptions'] =
subscriptions.map((value) => value.toJson()).toList();
}
return _json;
}
}
/// Response for the `ListTopicSnapshots` method.
class ListTopicSnapshotsResponse {
/// If not empty, indicates that there may be more snapshots that match the
/// request; this value should be passed in a new `ListTopicSnapshotsRequest`
/// to get more snapshots.
core.String nextPageToken;
/// The names of the snapshots that match the request.
core.List<core.String> snapshots;
ListTopicSnapshotsResponse();
ListTopicSnapshotsResponse.fromJson(core.Map _json) {
if (_json.containsKey('nextPageToken')) {
nextPageToken = _json['nextPageToken'] as core.String;
}
if (_json.containsKey('snapshots')) {
snapshots = (_json['snapshots'] as core.List)
.map<core.String>((value) => value as core.String)
.toList();
}
}
core.Map<core.String, core.Object> toJson() {
final _json = <core.String, core.Object>{};
if (nextPageToken != null) {
_json['nextPageToken'] = nextPageToken;
}
if (snapshots != null) {
_json['snapshots'] = snapshots;
}
return _json;
}
}
/// Response for the `ListTopicSubscriptions` method.
class ListTopicSubscriptionsResponse {
/// If not empty, indicates that there may be more subscriptions that match
/// the request; this value should be passed in a new
/// `ListTopicSubscriptionsRequest` to get more subscriptions.
core.String nextPageToken;
/// The names of subscriptions attached to the topic specified in the request.
core.List<core.String> subscriptions;
ListTopicSubscriptionsResponse();
ListTopicSubscriptionsResponse.fromJson(core.Map _json) {
if (_json.containsKey('nextPageToken')) {
nextPageToken = _json['nextPageToken'] as core.String;
}
if (_json.containsKey('subscriptions')) {
subscriptions = (_json['subscriptions'] as core.List)
.map<core.String>((value) => value as core.String)
.toList();
}
}
core.Map<core.String, core.Object> toJson() {
final _json = <core.String, core.Object>{};
if (nextPageToken != null) {
_json['nextPageToken'] = nextPageToken;
}
if (subscriptions != null) {
_json['subscriptions'] = subscriptions;
}
return _json;
}
}
/// Response for the `ListTopics` method.
class ListTopicsResponse {
/// If not empty, indicates that there may be more topics that match the
/// request; this value should be passed in a new `ListTopicsRequest`.
core.String nextPageToken;
/// The resulting topics.
core.List<Topic> topics;
ListTopicsResponse();
ListTopicsResponse.fromJson(core.Map _json) {
if (_json.containsKey('nextPageToken')) {
nextPageToken = _json['nextPageToken'] as core.String;
}
if (_json.containsKey('topics')) {
topics = (_json['topics'] as core.List)
.map<Topic>((value) => Topic.fromJson(value))
.toList();
}
}
core.Map<core.String, core.Object> toJson() {
final _json = <core.String, core.Object>{};
if (nextPageToken != null) {
_json['nextPageToken'] = nextPageToken;
}
if (topics != null) {
_json['topics'] = topics.map((value) => value.toJson()).toList();
}
return _json;
}
}
/// A policy constraining the storage of messages published to the topic.
class MessageStoragePolicy {
/// A list of IDs of GCP regions where messages that are published to the
/// topic may be persisted in storage. Messages published by publishers
/// running in non-allowed GCP regions (or running outside of GCP altogether)
/// will be routed for storage in one of the allowed regions. An empty list
/// means that no regions are allowed, and is not a valid configuration.
core.List<core.String> allowedPersistenceRegions;
MessageStoragePolicy();
MessageStoragePolicy.fromJson(core.Map _json) {
if (_json.containsKey('allowedPersistenceRegions')) {
allowedPersistenceRegions =
(_json['allowedPersistenceRegions'] as core.List)
.map<core.String>((value) => value as core.String)
.toList();
}
}
core.Map<core.String, core.Object> toJson() {
final _json = <core.String, core.Object>{};
if (allowedPersistenceRegions != null) {
_json['allowedPersistenceRegions'] = allowedPersistenceRegions;
}
return _json;
}
}
/// Request for the ModifyAckDeadline method.
class ModifyAckDeadlineRequest {
/// 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
/// delivery to another subscriber client. This typically results in an
/// 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).
core.int ackDeadlineSeconds;
/// Required. List of acknowledgment IDs.
core.List<core.String> ackIds;
ModifyAckDeadlineRequest();
ModifyAckDeadlineRequest.fromJson(core.Map _json) {
if (_json.containsKey('ackDeadlineSeconds')) {
ackDeadlineSeconds = _json['ackDeadlineSeconds'] as core.int;
}
if (_json.containsKey('ackIds')) {
ackIds = (_json['ackIds'] as core.List)
.map<core.String>((value) => value as core.String)
.toList();
}
}
core.Map<core.String, core.Object> toJson() {
final _json = <core.String, core.Object>{};
if (ackDeadlineSeconds != null) {
_json['ackDeadlineSeconds'] = ackDeadlineSeconds;
}
if (ackIds != null) {
_json['ackIds'] = ackIds;
}
return _json;
}
}
/// Request for the ModifyPushConfig method.
class ModifyPushConfigRequest {
/// 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 pushConfig;
ModifyPushConfigRequest();
ModifyPushConfigRequest.fromJson(core.Map _json) {
if (_json.containsKey('pushConfig')) {
pushConfig = PushConfig.fromJson(_json['pushConfig']);
}
}
core.Map<core.String, core.Object> toJson() {
final _json = <core.String, core.Object>{};
if (pushConfig != null) {
_json['pushConfig'] = pushConfig.toJson();
}
return _json;
}
}
/// Contains information needed for generating an [OpenID Connect
/// token](https://developers.google.com/identity/protocols/OpenIDConnect).
class OidcToken {
/// Audience to be used when generating OIDC token. The audience claim
/// identifies the recipients that the JWT is intended for. The audience value
/// is a single case-sensitive string. Having multiple values (array) for the
/// audience field is not supported. More info about the OIDC JWT token
/// audience here: https://tools.ietf.org/html/rfc7519#section-4.1.3 Note: if
/// not specified, the Push endpoint URL will be used.
core.String audience;
/// [Service account
/// email](https://cloud.google.com/iam/docs/service-accounts) to be used for
/// generating the OIDC token. The caller (for CreateSubscription,
/// UpdateSubscription, and ModifyPushConfig RPCs) must have the
/// iam.serviceAccounts.actAs permission for the service account.
core.String serviceAccountEmail;
OidcToken();
OidcToken.fromJson(core.Map _json) {
if (_json.containsKey('audience')) {
audience = _json['audience'] as core.String;
}
if (_json.containsKey('serviceAccountEmail')) {
serviceAccountEmail = _json['serviceAccountEmail'] as core.String;
}
}
core.Map<core.String, core.Object> toJson() {
final _json = <core.String, core.Object>{};
if (audience != null) {
_json['audience'] = audience;
}
if (serviceAccountEmail != null) {
_json['serviceAccountEmail'] = serviceAccountEmail;
}
return _json;
}
}
/// An Identity and Access Management (IAM) policy, which specifies access
/// controls for Google Cloud resources. A `Policy` is a collection of
/// `bindings`. A `binding` binds one or more `members` to a single `role`.
/// Members can be user accounts, service accounts, Google groups, and domains
/// (such as G Suite). A `role` is a named list of permissions; each `role` can
/// be an IAM predefined role or a user-created custom role. For some types of
/// Google Cloud resources, a `binding` can also specify a `condition`, which is
/// a logical expression that allows access to a resource only if the expression
/// evaluates to `true`. A condition can add constraints based on attributes of
/// the request, the resource, or both. To learn which resources support
/// conditions in their IAM policies, see the [IAM
/// documentation](https://cloud.google.com/iam/help/conditions/resource-policies).
/// **JSON example:** { "bindings": [ { "role":
/// "roles/resourcemanager.organizationAdmin", "members": [
/// "user:mike@example.com", "group:admins@example.com", "domain:google.com",
/// "serviceAccount:my-project-id@appspot.gserviceaccount.com" ] }, { "role":
/// "roles/resourcemanager.organizationViewer", "members": [
/// "user:eve@example.com" ], "condition": { "title": "expirable access",
/// "description": "Does not grant access after Sep 2020", "expression":
/// "request.time < timestamp('2020-10-01T00:00:00.000Z')", } } ], "etag":
/// "BwWWja0YfJA=", "version": 3 } **YAML example:** bindings: - members: -
/// user:mike@example.com - group:admins@example.com - domain:google.com -
/// serviceAccount:my-project-id@appspot.gserviceaccount.com role:
/// roles/resourcemanager.organizationAdmin - members: - user:eve@example.com
/// role: roles/resourcemanager.organizationViewer condition: title: expirable
/// access description: Does not grant access after Sep 2020 expression:
/// request.time < timestamp('2020-10-01T00:00:00.000Z') - etag: BwWWja0YfJA= -
/// version: 3 For a description of IAM and its features, see the [IAM
/// documentation](https://cloud.google.com/iam/docs/).
class Policy {
/// Associates a list of `members` to a `role`. Optionally, may specify a
/// `condition` that determines how and when the `bindings` are applied. Each
/// of the `bindings` must contain at least one member.
core.List<Binding> bindings;
/// `etag` is used for optimistic concurrency control as a way to help prevent
/// simultaneous updates of a policy from overwriting each other. It is
/// strongly suggested that systems make use of the `etag` in the
/// read-modify-write cycle to perform policy updates in order to avoid race
/// conditions: An `etag` is returned in the response to `getIamPolicy`, and
/// systems are expected to put that etag in the request to `setIamPolicy` to
/// ensure that their change will be applied to the same version of the
/// policy. **Important:** If you use IAM Conditions, you must include the
/// `etag` field whenever you call `setIamPolicy`. If you omit this field,
/// then IAM allows you to overwrite a version `3` policy with a version `1`
/// policy, and all of the conditions in the version `3` policy are lost.
core.String etag;
core.List<core.int> get etagAsBytes => convert.base64.decode(etag);
set etagAsBytes(core.List<core.int> _bytes) {
etag =
convert.base64.encode(_bytes).replaceAll('/', '_').replaceAll('+', '-');
}
/// Specifies the format of the policy. Valid values are `0`, `1`, and `3`.
/// Requests that specify an invalid value are rejected. Any operation that
/// affects conditional role bindings must specify version `3`. This
/// requirement applies to the following operations: * Getting a policy that
/// includes a conditional role binding * Adding a conditional role binding to
/// a policy * Changing a conditional role binding in a policy * Removing any
/// role binding, with or without a condition, from a policy that includes
/// conditions **Important:** If you use IAM Conditions, you must include the
/// `etag` field whenever you call `setIamPolicy`. If you omit this field,
/// then IAM allows you to overwrite a version `3` policy with a version `1`
/// policy, and all of the conditions in the version `3` policy are lost. If a
/// policy does not include any conditions, operations on that policy may
/// specify any valid version or leave the field unset. To learn which
/// resources support conditions in their IAM policies, see the [IAM
/// documentation](https://cloud.google.com/iam/help/conditions/resource-policies).
core.int version;
Policy();
Policy.fromJson(core.Map _json) {
if (_json.containsKey('bindings')) {
bindings = (_json['bindings'] as core.List)
.map<Binding>((value) => Binding.fromJson(value))
.toList();
}
if (_json.containsKey('etag')) {
etag = _json['etag'] as core.String;
}
if (_json.containsKey('version')) {
version = _json['version'] as core.int;
}
}
core.Map<core.String, core.Object> toJson() {
final _json = <core.String, core.Object>{};
if (bindings != null) {
_json['bindings'] = bindings.map((value) => value.toJson()).toList();
}
if (etag != null) {
_json['etag'] = etag;
}
if (version != null) {
_json['version'] = version;
}
return _json;
}
}
/// Request for the Publish method.
class PublishRequest {
/// Required. The messages to publish.
core.List<PubsubMessage> messages;
PublishRequest();
PublishRequest.fromJson(core.Map _json) {
if (_json.containsKey('messages')) {
messages = (_json['messages'] as core.List)
.map<PubsubMessage>((value) => PubsubMessage.fromJson(value))
.toList();
}
}
core.Map<core.String, core.Object> toJson() {
final _json = <core.String, core.Object>{};
if (messages != null) {
_json['messages'] = messages.map((value) => value.toJson()).toList();
}
return _json;
}
}
/// Response for the `Publish` method.
class PublishResponse {
/// The server-assigned ID of each published message, in the same order as the
/// messages in the request. IDs are guaranteed to be unique within the topic.
core.List<core.String> messageIds;
PublishResponse();
PublishResponse.fromJson(core.Map _json) {
if (_json.containsKey('messageIds')) {
messageIds = (_json['messageIds'] as core.List)
.map<core.String>((value) => value as core.String)
.toList();
}
}
core.Map<core.String, core.Object> toJson() {
final _json = <core.String, core.Object>{};
if (messageIds != null) {
_json['messageIds'] = messageIds;
}
return _json;
}
}
/// A message that is published by publishers and consumed by subscribers. The
/// message must contain either a non-empty data field or at least one
/// attribute. Note that client libraries represent this object differently
/// depending on the language. See the corresponding [client library
/// documentation](https://cloud.google.com/pubsub/docs/reference/libraries) for
/// more information. See [quotas and limits]
/// (https://cloud.google.com/pubsub/quotas) for more information about message
/// limits.
class PubsubMessage {
/// Attributes for this message. If this field is empty, the message must
/// contain non-empty data. This can be used to filter messages on the
/// subscription.
core.Map<core.String, core.String> attributes;
/// The message data field. If this field is empty, the message must contain
/// at least one attribute.
core.String data;
core.List<core.int> get dataAsBytes => convert.base64.decode(data);
set dataAsBytes(core.List<core.int> _bytes) {
data =
convert.base64.encode(_bytes).replaceAll('/', '_').replaceAll('+', '-');
}
/// ID of this message, assigned by the server when the message is published.
/// Guaranteed to be unique within the topic. This value may be read by a
/// subscriber that receives a `PubsubMessage` via a `Pull` call or a push
/// delivery. It must not be populated by the publisher in a `Publish` call.
core.String messageId;
/// If non-empty, identifies related messages for which publish order should
/// be respected. If a `Subscription` has `enable_message_ordering` set to
/// `true`, messages published with the same non-empty `ordering_key` value
/// will be delivered to subscribers in the order in which they are received
/// by the Pub/Sub system. All `PubsubMessage`s published in a given
/// `PublishRequest` must specify the same `ordering_key` value.
core.String orderingKey;
/// The time at which the message was published, populated by the server when
/// it receives the `Publish` call. It must not be populated by the publisher
/// in a `Publish` call.
core.String publishTime;
PubsubMessage();
PubsubMessage.fromJson(core.Map _json) {
if (_json.containsKey('attributes')) {
attributes = commons.mapMap<core.String, core.String>(
_json['attributes'].cast<core.String, core.String>(),
(core.String item) => item as core.String);
}
if (_json.containsKey('data')) {
data = _json['data'] as core.String;
}
if (_json.containsKey('messageId')) {
messageId = _json['messageId'] as core.String;
}
if (_json.containsKey('orderingKey')) {
orderingKey = _json['orderingKey'] as core.String;
}
if (_json.containsKey('publishTime')) {
publishTime = _json['publishTime'] as core.String;
}
}
core.Map<core.String, core.Object> toJson() {
final _json = <core.String, core.Object>{};
if (attributes != null) {
_json['attributes'] = attributes;
}
if (data != null) {
_json['data'] = data;
}
if (messageId != null) {
_json['messageId'] = messageId;
}
if (orderingKey != null) {
_json['orderingKey'] = orderingKey;
}
if (publishTime != null) {
_json['publishTime'] = publishTime;
}
return _json;
}
}
/// Request for the `Pull` method.
class PullRequest {
/// 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.
core.int maxMessages;
/// Optional. 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. Otherwise, the system may wait (for a bounded amount of time)
/// until at least one message is available, rather than returning no
/// messages. Warning: setting this field to `true` is discouraged because it
/// adversely impacts the performance of `Pull` operations. We recommend that
/// users do not set this field.
core.bool returnImmediately;
PullRequest();
PullRequest.fromJson(core.Map _json) {
if (_json.containsKey('maxMessages')) {
maxMessages = _json['maxMessages'] as core.int;
}
if (_json.containsKey('returnImmediately')) {
returnImmediately = _json['returnImmediately'] as core.bool;
}
}
core.Map<core.String, core.Object> toJson() {
final _json = <core.String, core.Object>{};
if (maxMessages != null) {
_json['maxMessages'] = maxMessages;
}
if (returnImmediately != null) {
_json['returnImmediately'] = returnImmediately;
}
return _json;
}
}
/// Response for the `Pull` method.
class PullResponse {
/// Received Pub/Sub messages. The list will be empty if there are no more
/// messages available in the backlog. For JSON, the response can be entirely
/// empty. The Pub/Sub system may return fewer than the `maxMessages`
/// requested even if there are more messages available in the backlog.
core.List<ReceivedMessage> receivedMessages;
PullResponse();
PullResponse.fromJson(core.Map _json) {
if (_json.containsKey('receivedMessages')) {
receivedMessages = (_json['receivedMessages'] as core.List)
.map<ReceivedMessage>((value) => ReceivedMessage.fromJson(value))
.toList();
}
}
core.Map<core.String, core.Object> toJson() {
final _json = <core.String, core.Object>{};
if (receivedMessages != null) {
_json['receivedMessages'] =
receivedMessages.map((value) => value.toJson()).toList();
}
return _json;
}
}
/// Configuration for a push delivery endpoint.
class PushConfig {
/// Endpoint configuration attributes that can be used to control different
/// aspects of the message delivery. The only currently supported attribute is
/// `x-goog-version`, which you can use to change the format of the pushed
/// message. This attribute indicates the version of the data expected by the
/// endpoint. This controls the shape of the pushed message (i.e., its fields
/// and metadata). If not present during the `CreateSubscription` call, it
/// will default to the version of the Pub/Sub API used to make such call. If
/// not present in a `ModifyPushConfig` call, its value will not be changed.
/// `GetSubscription` calls will always return a valid version, even if the
/// subscription was created without this attribute. The only supported values
/// for the `x-goog-version` attribute are: * `v1beta1`: uses the push format
/// defined in the v1beta1 Pub/Sub API. * `v1` or `v1beta2`: uses the push
/// format defined in the v1 Pub/Sub API. For example: attributes {
/// "x-goog-version": "v1" }
core.Map<core.String, core.String> attributes;
/// If specified, Pub/Sub will generate and attach an OIDC JWT token as an
/// `Authorization` header in the HTTP request for every pushed message.
OidcToken oidcToken;
/// A URL locating the endpoint to which messages should be pushed. For
/// example, a Webhook endpoint might use `https://example.com/push`.
core.String pushEndpoint;
PushConfig();
PushConfig.fromJson(core.Map _json) {
if (_json.containsKey('attributes')) {
attributes = commons.mapMap<core.String, core.String>(
_json['attributes'].cast<core.String, core.String>(),
(core.String item) => item as core.String);
}
if (_json.containsKey('oidcToken')) {
oidcToken = OidcToken.fromJson(_json['oidcToken']);
}
if (_json.containsKey('pushEndpoint')) {
pushEndpoint = _json['pushEndpoint'] as core.String;
}
}
core.Map<core.String, core.Object> toJson() {
final _json = <core.String, core.Object>{};
if (attributes != null) {
_json['attributes'] = attributes;
}
if (oidcToken != null) {
_json['oidcToken'] = oidcToken.toJson();
}
if (pushEndpoint != null) {
_json['pushEndpoint'] = pushEndpoint;
}
return _json;
}
}
/// A message and its corresponding acknowledgment ID.
class ReceivedMessage {
/// This ID can be used to acknowledge the received message.
core.String ackId;
/// The approximate number of times that Cloud Pub/Sub has attempted to
/// deliver the associated message to a subscriber. More precisely, this is 1
/// + (number of NACKs) + (number of ack_deadline exceeds) for this message. A
/// NACK is any call to ModifyAckDeadline with a 0 deadline. An ack_deadline
/// exceeds event is whenever a message is not acknowledged within
/// ack_deadline. Note that ack_deadline is initially
/// Subscription.ackDeadlineSeconds, but may get extended automatically by the
/// client library. Upon the first delivery of a given message,
/// `delivery_attempt` will have a value of 1. The value is calculated at best
/// effort and is approximate. If a DeadLetterPolicy is not set on the
/// subscription, this will be 0.
core.int deliveryAttempt;
/// The message.
PubsubMessage message;
ReceivedMessage();
ReceivedMessage.fromJson(core.Map _json) {
if (_json.containsKey('ackId')) {
ackId = _json['ackId'] as core.String;
}
if (_json.containsKey('deliveryAttempt')) {
deliveryAttempt = _json['deliveryAttempt'] as core.int;
}
if (_json.containsKey('message')) {
message = PubsubMessage.fromJson(_json['message']);
}
}
core.Map<core.String, core.Object> toJson() {
final _json = <core.String, core.Object>{};
if (ackId != null) {
_json['ackId'] = ackId;
}
if (deliveryAttempt != null) {
_json['deliveryAttempt'] = deliveryAttempt;
}
if (message != null) {
_json['message'] = message.toJson();
}
return _json;
}
}
/// A policy that specifies how Cloud Pub/Sub retries message delivery. Retry
/// delay will be exponential based on provided minimum and maximum backoffs.
/// https://en.wikipedia.org/wiki/Exponential_backoff. RetryPolicy will be
/// triggered on NACKs or acknowledgement deadline exceeded events for a given
/// message. Retry Policy is implemented on a best effort basis. At times, the
/// delay between consecutive deliveries may not match the configuration. That
/// is, delay can be more or less than configured backoff.
class RetryPolicy {
/// The maximum delay between consecutive deliveries of a given message. Value
/// should be between 0 and 600 seconds. Defaults to 600 seconds.
core.String maximumBackoff;
/// The minimum delay between consecutive deliveries of a given message. Value
/// should be between 0 and 600 seconds. Defaults to 10 seconds.
core.String minimumBackoff;
RetryPolicy();
RetryPolicy.fromJson(core.Map _json) {
if (_json.containsKey('maximumBackoff')) {
maximumBackoff = _json['maximumBackoff'] as core.String;
}
if (_json.containsKey('minimumBackoff')) {
minimumBackoff = _json['minimumBackoff'] as core.String;
}
}
core.Map<core.String, core.Object> toJson() {
final _json = <core.String, core.Object>{};
if (maximumBackoff != null) {
_json['maximumBackoff'] = maximumBackoff;
}
if (minimumBackoff != null) {
_json['minimumBackoff'] = minimumBackoff;
}
return _json;
}
}
/// Request for the `Seek` method.
class 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}`.
core.String snapshot;
/// The time to seek to. Messages retained in the subscription that were
/// published before this time are marked as acknowledged, and messages
/// retained in the subscription that were published after this time are
/// marked as unacknowledged. Note that this operation affects only those
/// messages retained in the subscription (configured by the combination of
/// `message_retention_duration` and `retain_acked_messages`). For example, if
/// `time` corresponds to a point before the message retention window (or to a
/// point before the system's notion of the subscription creation time), only
/// retained messages will be marked as unacknowledged, and already-expunged
/// messages will not be restored.
core.String time;
SeekRequest();
SeekRequest.fromJson(core.Map _json) {
if (_json.containsKey('snapshot')) {
snapshot = _json['snapshot'] as core.String;
}
if (_json.containsKey('time')) {
time = _json['time'] as core.String;
}
}
core.Map<core.String, core.Object> toJson() {
final _json = <core.String, core.Object>{};
if (snapshot != null) {
_json['snapshot'] = snapshot;
}
if (time != null) {
_json['time'] = time;
}
return _json;
}
}
/// Response for the `Seek` method (this response is empty).
class SeekResponse {
SeekResponse();
SeekResponse.fromJson(
// ignore: avoid_unused_constructor_parameters
core.Map _json);
core.Map<core.String, core.Object> toJson() {
final _json = <core.String, core.Object>{};
return _json;
}
}
/// Request message for `SetIamPolicy` method.
class SetIamPolicyRequest {
/// REQUIRED: The complete policy to be applied to the `resource`. The size of
/// the policy is limited to a few 10s of KB. An empty policy is a valid
/// policy but certain Cloud Platform services (such as Projects) might reject
/// them.
Policy policy;
SetIamPolicyRequest();
SetIamPolicyRequest.fromJson(core.Map _json) {
if (_json.containsKey('policy')) {
policy = Policy.fromJson(_json['policy']);
}
}
core.Map<core.String, core.Object> toJson() {
final _json = <core.String, core.Object>{};
if (policy != null) {
_json['policy'] = policy.toJson();
}
return _json;
}
}
/// A snapshot resource. Snapshots are used in
/// [Seek](https://cloud.google.com/pubsub/docs/replay-overview) operations,
/// which allow 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.
class Snapshot {
/// 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 creation. Its
/// exact lifetime is determined at creation by the existing backlog in the
/// source subscription. Specifically, the lifetime of the snapshot is `7 days
/// - (age of oldest unacked message in the subscription)`. For example,
/// consider a subscription whose oldest unacked message is 3 days old. If a
/// snapshot is created from this subscription, the snapshot -- which will
/// always capture this 3-day-old backlog as long as the snapshot exists --
/// will expire in 4 days. The service will refuse to create a snapshot that
/// would expire in less than 1 hour after creation.
core.String expireTime;
/// See [Creating and managing labels]
/// (https://cloud.google.com/pubsub/docs/labels).
core.Map<core.String, core.String> labels;
/// The name of the snapshot.
core.String name;
/// The name of the topic from which this snapshot is retaining messages.
core.String topic;
Snapshot();
Snapshot.fromJson(core.Map _json) {
if (_json.containsKey('expireTime')) {
expireTime = _json['expireTime'] as core.String;
}
if (_json.containsKey('labels')) {
labels = commons.mapMap<core.String, core.String>(
_json['labels'].cast<core.String, core.String>(),
(core.String item) => item as core.String);
}
if (_json.containsKey('name')) {
name = _json['name'] as core.String;
}
if (_json.containsKey('topic')) {
topic = _json['topic'] as core.String;
}
}
core.Map<core.String, core.Object> toJson() {
final _json = <core.String, core.Object>{};
if (expireTime != null) {
_json['expireTime'] = expireTime;
}
if (labels != null) {
_json['labels'] = labels;
}
if (name != null) {
_json['name'] = name;
}
if (topic != null) {
_json['topic'] = topic;
}
return _json;
}
}
/// A subscription resource.
class Subscription {
/// The approximate amount of time (on a best-effort basis) Pub/Sub waits for
/// the subscriber to acknowledge receipt before resending the message. In the
/// interval after the message is delivered and before it is acknowledged, it
/// is considered to be *outstanding*. During that time period, the message
/// will not be redelivered (on a best-effort basis). For pull subscriptions,
/// this value is used as the initial value for the ack deadline. To override
/// this value for a given message, call `ModifyAckDeadline` with the
/// corresponding `ack_id` if using non-streaming pull or send the `ack_id` in
/// a `StreamingModifyAckDeadlineRequest` if using streaming pull. The minimum
/// custom deadline you can specify is 10 seconds. The maximum custom deadline
/// you can specify is 600 seconds (10 minutes). If this parameter is 0, a
/// default value of 10 seconds is used. For push delivery, this value is also
/// used to set the request timeout for the call to the push endpoint. If the
/// subscriber never acknowledges the message, the Pub/Sub system will
/// eventually redeliver the message.
core.int ackDeadlineSeconds;
/// A policy that specifies the conditions for dead lettering messages in this
/// subscription. If dead_letter_policy is not set, dead lettering is
/// disabled. The Cloud Pub/Sub service account associated with this
/// subscriptions's parent project (i.e.,
/// service-{project_number}@gcp-sa-pubsub.iam.gserviceaccount.com) must have
/// permission to Acknowledge() messages on this subscription.
DeadLetterPolicy deadLetterPolicy;
/// Indicates whether the subscription is detached from its topic. Detached
/// subscriptions don't receive messages from their topic and don't retain any
/// backlog. `Pull` and `StreamingPull` requests will return
/// FAILED_PRECONDITION. If the subscription is a push subscription, pushes to
/// the endpoint will not be made.
core.bool detached;
/// If true, messages published with the same `ordering_key` in
/// `PubsubMessage` will be delivered to the subscribers in the order in which
/// they are received by the Pub/Sub system. Otherwise, they may be delivered
/// in any order.
core.bool enableMessageOrdering;
/// A policy that specifies the conditions for this subscription's expiration.
/// A subscription is considered active as long as any connected subscriber is
/// successfully consuming messages from the subscription or is issuing
/// operations on the subscription. If `expiration_policy` is not set, a
/// *default policy* with `ttl` of 31 days will be used. The minimum allowed
/// value for `expiration_policy.ttl` is 1 day.
ExpirationPolicy expirationPolicy;
/// An expression written in the Pub/Sub [filter
/// language](https://cloud.google.com/pubsub/docs/filtering). If non-empty,
/// then only `PubsubMessage`s whose `attributes` field matches the filter are
/// delivered on this subscription. If empty, then no messages are filtered
/// out.
core.String filter;
/// See Creating and managing labels.
core.Map<core.String, core.String> labels;
/// How long to retain unacknowledged messages in the subscription's backlog,
/// from the moment a message is published. If `retain_acked_messages` is
/// true, then this also configures the retention of acknowledged messages,
/// and thus configures how far back in time a `Seek` can be done. Defaults to
/// 7 days. Cannot be more than 7 days or less than 10 minutes.
core.String messageRetentionDuration;
/// 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"`.
core.String name;
/// If push delivery is used with this subscription, this field is used to
/// configure it. An empty `pushConfig` signifies that the subscriber will
/// pull and ack messages using API methods.
PushConfig pushConfig;
/// Indicates whether to retain acknowledged messages. If true, then messages
/// are not expunged from the subscription's backlog, even if they are
/// acknowledged, until they fall out of the `message_retention_duration`
/// window. This must be true if you would like to [Seek to a timestamp]
/// (https://cloud.google.com/pubsub/docs/replay-overview#seek_to_a_time).
core.bool retainAckedMessages;
/// A policy that specifies how Pub/Sub retries message delivery for this
/// subscription. If not set, the default retry policy is applied. This
/// generally implies that messages will be retried as soon as possible for
/// healthy subscribers. RetryPolicy will be triggered on NACKs or
/// acknowledgement deadline exceeded events for a given message.
RetryPolicy retryPolicy;
/// 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.
core.String topic;
Subscription();
Subscription.fromJson(core.Map _json) {
if (_json.containsKey('ackDeadlineSeconds')) {
ackDeadlineSeconds = _json['ackDeadlineSeconds'] as core.int;
}
if (_json.containsKey('deadLetterPolicy')) {
deadLetterPolicy = DeadLetterPolicy.fromJson(_json['deadLetterPolicy']);
}
if (_json.containsKey('detached')) {
detached = _json['detached'] as core.bool;
}
if (_json.containsKey('enableMessageOrdering')) {
enableMessageOrdering = _json['enableMessageOrdering'] as core.bool;
}
if (_json.containsKey('expirationPolicy')) {
expirationPolicy = ExpirationPolicy.fromJson(_json['expirationPolicy']);
}
if (_json.containsKey('filter')) {
filter = _json['filter'] as core.String;
}
if (_json.containsKey('labels')) {
labels = commons.mapMap<core.String, core.String>(
_json['labels'].cast<core.String, core.String>(),
(core.String item) => item as core.String);
}
if (_json.containsKey('messageRetentionDuration')) {
messageRetentionDuration =
_json['messageRetentionDuration'] as core.String;
}
if (_json.containsKey('name')) {
name = _json['name'] as core.String;
}
if (_json.containsKey('pushConfig')) {
pushConfig = PushConfig.fromJson(_json['pushConfig']);
}
if (_json.containsKey('retainAckedMessages')) {
retainAckedMessages = _json['retainAckedMessages'] as core.bool;
}
if (_json.containsKey('retryPolicy')) {
retryPolicy = RetryPolicy.fromJson(_json['retryPolicy']);
}
if (_json.containsKey('topic')) {
topic = _json['topic'] as core.String;
}
}
core.Map<core.String, core.Object> toJson() {
final _json = <core.String, core.Object>{};
if (ackDeadlineSeconds != null) {
_json['ackDeadlineSeconds'] = ackDeadlineSeconds;
}
if (deadLetterPolicy != null) {
_json['deadLetterPolicy'] = deadLetterPolicy.toJson();
}
if (detached != null) {
_json['detached'] = detached;
}
if (enableMessageOrdering != null) {
_json['enableMessageOrdering'] = enableMessageOrdering;
}
if (expirationPolicy != null) {
_json['expirationPolicy'] = expirationPolicy.toJson();
}
if (filter != null) {
_json['filter'] = filter;
}
if (labels != null) {
_json['labels'] = labels;
}
if (messageRetentionDuration != null) {
_json['messageRetentionDuration'] = messageRetentionDuration;
}
if (name != null) {
_json['name'] = name;
}
if (pushConfig != null) {
_json['pushConfig'] = pushConfig.toJson();
}
if (retainAckedMessages != null) {
_json['retainAckedMessages'] = retainAckedMessages;
}
if (retryPolicy != null) {
_json['retryPolicy'] = retryPolicy.toJson();
}
if (topic != null) {
_json['topic'] = topic;
}
return _json;
}
}
/// Request message for `TestIamPermissions` method.
class TestIamPermissionsRequest {
/// The set of permissions to check for the `resource`. Permissions with
/// wildcards (such as '*' or 'storage.*') are not allowed. For more
/// information see [IAM
/// Overview](https://cloud.google.com/iam/docs/overview#permissions).
core.List<core.String> permissions;
TestIamPermissionsRequest();
TestIamPermissionsRequest.fromJson(core.Map _json) {
if (_json.containsKey('permissions')) {
permissions = (_json['permissions'] as core.List)
.map<core.String>((value) => value as core.String)
.toList();
}
}
core.Map<core.String, core.Object> toJson() {
final _json = <core.String, core.Object>{};
if (permissions != null) {
_json['permissions'] = permissions;
}
return _json;
}
}
/// Response message for `TestIamPermissions` method.
class TestIamPermissionsResponse {
/// A subset of `TestPermissionsRequest.permissions` that the caller is
/// allowed.
core.List<core.String> permissions;
TestIamPermissionsResponse();
TestIamPermissionsResponse.fromJson(core.Map _json) {
if (_json.containsKey('permissions')) {
permissions = (_json['permissions'] as core.List)
.map<core.String>((value) => value as core.String)
.toList();
}
}
core.Map<core.String, core.Object> toJson() {
final _json = <core.String, core.Object>{};
if (permissions != null) {
_json['permissions'] = permissions;
}
return _json;
}
}
/// A topic resource.
class Topic {
/// The resource name of the Cloud KMS CryptoKey to be used to protect access
/// to messages published on this topic. The expected format is `projects / *
/// /locations / * /keyRings / * /cryptoKeys / * `.
core.String kmsKeyName;
/// See [Creating and managing labels]
/// (https://cloud.google.com/pubsub/docs/labels).
core.Map<core.String, core.String> labels;
/// Policy constraining the set of Google Cloud Platform regions where
/// messages published to the topic may be stored. If not present, then no
/// constraints are in effect.
MessageStoragePolicy messageStoragePolicy;
/// 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"`.
core.String name;
Topic();
Topic.fromJson(core.Map _json) {
if (_json.containsKey('kmsKeyName')) {
kmsKeyName = _json['kmsKeyName'] as core.String;
}
if (_json.containsKey('labels')) {
labels = commons.mapMap<core.String, core.String>(
_json['labels'].cast<core.String, core.String>(),
(core.String item) => item as core.String);
}
if (_json.containsKey('messageStoragePolicy')) {
messageStoragePolicy =
MessageStoragePolicy.fromJson(_json['messageStoragePolicy']);
}
if (_json.containsKey('name')) {
name = _json['name'] as core.String;
}
}
core.Map<core.String, core.Object> toJson() {
final _json = <core.String, core.Object>{};
if (kmsKeyName != null) {
_json['kmsKeyName'] = kmsKeyName;
}
if (labels != null) {
_json['labels'] = labels;
}
if (messageStoragePolicy != null) {
_json['messageStoragePolicy'] = messageStoragePolicy.toJson();
}
if (name != null) {
_json['name'] = name;
}
return _json;
}
}
/// Request for the UpdateSnapshot method.
class UpdateSnapshotRequest {
/// Required. The updated snapshot object.
Snapshot snapshot;
/// Required. Indicates which fields in the provided snapshot to update. Must
/// be specified and non-empty.
core.String updateMask;
UpdateSnapshotRequest();
UpdateSnapshotRequest.fromJson(core.Map _json) {
if (_json.containsKey('snapshot')) {
snapshot = Snapshot.fromJson(_json['snapshot']);
}
if (_json.containsKey('updateMask')) {
updateMask = _json['updateMask'] as core.String;
}
}
core.Map<core.String, core.Object> toJson() {
final _json = <core.String, core.Object>{};
if (snapshot != null) {
_json['snapshot'] = snapshot.toJson();
}
if (updateMask != null) {
_json['updateMask'] = updateMask;
}
return _json;
}
}
/// Request for the UpdateSubscription method.
class UpdateSubscriptionRequest {
/// Required. The updated subscription object.
Subscription subscription;
/// Required. Indicates which fields in the provided subscription to update.
/// Must be specified and non-empty.
core.String updateMask;
UpdateSubscriptionRequest();
UpdateSubscriptionRequest.fromJson(core.Map _json) {
if (_json.containsKey('subscription')) {
subscription = Subscription.fromJson(_json['subscription']);
}
if (_json.containsKey('updateMask')) {
updateMask = _json['updateMask'] as core.String;
}
}
core.Map<core.String, core.Object> toJson() {
final _json = <core.String, core.Object>{};
if (subscription != null) {
_json['subscription'] = subscription.toJson();
}
if (updateMask != null) {
_json['updateMask'] = updateMask;
}
return _json;
}
}
/// Request for the UpdateTopic method.
class UpdateTopicRequest {
/// Required. The updated topic object.
Topic topic;
/// 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" but the `message_storage_policy` is not set in
/// the `topic` provided above, then the updated value is determined by the
/// policy configured at the project or organization level.
core.String updateMask;
UpdateTopicRequest();
UpdateTopicRequest.fromJson(core.Map _json) {
if (_json.containsKey('topic')) {
topic = Topic.fromJson(_json['topic']);
}
if (_json.containsKey('updateMask')) {
updateMask = _json['updateMask'] as core.String;
}
}
core.Map<core.String, core.Object> toJson() {
final _json = <core.String, core.Object>{};
if (topic != null) {
_json['topic'] = topic.toJson();
}
if (updateMask != null) {
_json['updateMask'] = updateMask;
}
return _json;
}
}