blob: e6af1096e86d6713499b7feee80eb7bc1cf5e0d5 [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_beta.pubsub.v1beta2;
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/v1beta2';
/// 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;
ProjectsSubscriptionsResourceApi get subscriptions =>
ProjectsSubscriptionsResourceApi(_requester);
ProjectsTopicsResourceApi get topics => ProjectsTopicsResourceApi(_requester);
ProjectsResourceApi(commons.ApiRequester client) : _requester = client;
}
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] - The subscription whose message is being acknowledged.
/// 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 = 'v1beta2/' +
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 as core.Map<core.String, core.dynamic>),
);
}
/// Creates a subscription to a given topic. 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. Note that for REST API requests, you must specify a
/// name.
///
/// [request] - The metadata request object.
///
/// Request parameters:
///
/// [name] - 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 = 'v1beta2/' + 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 as core.Map<core.String, core.dynamic>),
);
}
/// Deletes an existing subscription. All pending messages 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] - The subscription to delete.
/// 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 = 'v1beta2/' + 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 as core.Map<core.String, core.dynamic>),
);
}
/// Gets the configuration details of a subscription.
///
/// Request parameters:
///
/// [subscription] - The name of the subscription to get.
/// 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 = 'v1beta2/' + 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 as core.Map<core.String, core.dynamic>),
);
}
/// 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 = 'v1beta2/' +
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 as core.Map<core.String, core.dynamic>),
);
}
/// Lists matching subscriptions.
///
/// Request parameters:
///
/// [project] - The name of the cloud project that subscriptions belong to.
/// 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 = 'v1beta2/' +
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 as core.Map<core.String, core.dynamic>),
);
}
/// 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] - The name of the subscription.
/// 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 = 'v1beta2/' +
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 as core.Map<core.String, core.dynamic>),
);
}
/// 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] - The name of the subscription.
/// 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 = 'v1beta2/' +
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 as core.Map<core.String, core.dynamic>),
);
}
/// Pulls messages from the server. Returns an empty list if there are no
/// messages available in the backlog. 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] - The subscription from which messages should be pulled.
/// 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 = 'v1beta2/' +
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 as core.Map<core.String, core.dynamic>),
);
}
/// 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 = 'v1beta2/' +
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 as core.Map<core.String, core.dynamic>),
);
}
/// 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 = 'v1beta2/' +
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 as core.Map<core.String, core.dynamic>),
);
}
}
class ProjectsTopicsResourceApi {
final commons.ApiRequester _requester;
ProjectsTopicsSubscriptionsResourceApi get subscriptions =>
ProjectsTopicsSubscriptionsResourceApi(_requester);
ProjectsTopicsResourceApi(commons.ApiRequester client) : _requester = client;
/// Creates the given topic with the given name.
///
/// [request] - The metadata request object.
///
/// Request parameters:
///
/// [name] - 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 = 'v1beta2/' + 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 as core.Map<core.String, core.dynamic>),
);
}
/// 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] - Name of the topic to delete.
/// 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 = 'v1beta2/' + 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 as core.Map<core.String, core.dynamic>),
);
}
/// Gets the configuration of a topic.
///
/// Request parameters:
///
/// [topic] - The name of the topic to get.
/// 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 = 'v1beta2/' + 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 as core.Map<core.String, core.dynamic>),
);
}
/// 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 = 'v1beta2/' +
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 as core.Map<core.String, core.dynamic>),
);
}
/// Lists matching topics.
///
/// Request parameters:
///
/// [project] - The name of the cloud project that topics belong to.
/// 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 = 'v1beta2/' +
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 as core.Map<core.String, core.dynamic>),
);
}
/// Adds one or more messages to the topic. Returns `NOT_FOUND` if the topic
/// does not exist. The message payload must not be empty; it must contain
/// either a non-empty data field, or at least one attribute.
///
/// [request] - The metadata request object.
///
/// Request parameters:
///
/// [topic] - The messages in the request will be published on this 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 = 'v1beta2/' +
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 as core.Map<core.String, core.dynamic>),
);
}
/// 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 = 'v1beta2/' +
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 as core.Map<core.String, core.dynamic>),
);
}
/// 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 = 'v1beta2/' +
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 as core.Map<core.String, core.dynamic>),
);
}
}
class ProjectsTopicsSubscriptionsResourceApi {
final commons.ApiRequester _requester;
ProjectsTopicsSubscriptionsResourceApi(commons.ApiRequester client)
: _requester = client;
/// Lists the name of the subscriptions for this topic.
///
/// Request parameters:
///
/// [topic] - The name of the topic that subscriptions are attached to.
/// 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 = 'v1beta2/' +
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 as core.Map<core.String, core.dynamic>),
);
}
}
/// Request for the Acknowledge method.
class AcknowledgeRequest {
/// 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'] as core.Map<core.String, core.dynamic>);
}
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;
}
}
/// 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;
}
}
/// 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 `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 as core.Map<core.String, core.dynamic>))
.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 `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 the subscriptions that match 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 as core.Map<core.String, core.dynamic>))
.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;
}
}
/// Request for the ModifyAckDeadline method.
class ModifyAckDeadlineRequest {
/// The new ack deadline with respect to the time this request was sent to the
/// Pub/Sub system. Must be >= 0. For example, if the value is 10, the new ack
/// deadline will expire 10 seconds after the `ModifyAckDeadline` call was
/// made. Specifying zero may immediately make the message available for
/// another pull request.
core.int ackDeadlineSeconds;
/// The acknowledgment ID. Either this or ack_ids must be populated, but not
/// both.
core.String ackId;
/// 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('ackId')) {
ackId = _json['ackId'] as core.String;
}
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 (ackId != null) {
_json['ackId'] = ackId;
}
if (ackIds != null) {
_json['ackIds'] = ackIds;
}
return _json;
}
}
/// Request for the ModifyPushConfig method.
class ModifyPushConfigRequest {
/// 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` is not called.
PushConfig pushConfig;
ModifyPushConfigRequest();
ModifyPushConfigRequest.fromJson(core.Map _json) {
if (_json.containsKey('pushConfig')) {
pushConfig = PushConfig.fromJson(
_json['pushConfig'] as core.Map<core.String, core.dynamic>);
}
}
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 as core.Map<core.String, core.dynamic>))
.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 {
/// 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 as core.Map<core.String, core.dynamic>))
.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 data and its attributes. The message payload must not be empty; it
/// must contain either a non-empty data field, or at least one attribute.
class PubsubMessage {
/// Optional attributes for this message.
core.Map<core.String, core.String> attributes;
/// The message payload. For JSON requests, the value of this field must be
/// [base64-encoded](https://tools.ietf.org/html/rfc4648).
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;
/// 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'] as core.Map<core.String, core.dynamic>)
.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('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 (publishTime != null) {
_json['publishTime'] = publishTime;
}
return _json;
}
}
/// Request for the `Pull` method.
class PullRequest {
/// The maximum number of messages returned for this request. The Pub/Sub
/// system may return fewer than the number specified.
core.int maxMessages;
/// Optional. If this is specified as true the system will respond immediately
/// even if it is not able to return a message in the `Pull` response.
/// Otherwise the system is allowed to wait until at least one message is
/// available rather than returning no messages. The client may cancel the
/// request if it does not wish to wait any longer for the response. 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 Pub/Sub system will return zero messages if
/// there are no more available in the backlog. 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 as core.Map<core.String, core.dynamic>))
.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. Every endpoint has a set of API
/// supported attributes that can be used to control different aspects of the
/// message delivery. The currently supported attribute is `x-goog-version`,
/// which you can use to change the format of the push message. This attribute
/// indicates the version of the data expected by the endpoint. This controls
/// the shape of the envelope (i.e. its fields and metadata). The endpoint
/// version is based on the version of the Pub/Sub API. If not present during
/// the `CreateSubscription` call, it will default to the version of the API
/// used to make such call. If not present during 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 possible values for this 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.
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'] as core.Map<core.String, core.dynamic>)
.cast<core.String, core.String>(),
(core.String item) => item as core.String);
}
if (_json.containsKey('oidcToken')) {
oidcToken = OidcToken.fromJson(
_json['oidcToken'] as core.Map<core.String, core.dynamic>);
}
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 message.
PubsubMessage message;
ReceivedMessage();
ReceivedMessage.fromJson(core.Map _json) {
if (_json.containsKey('ackId')) {
ackId = _json['ackId'] as core.String;
}
if (_json.containsKey('message')) {
message = PubsubMessage.fromJson(
_json['message'] as core.Map<core.String, core.dynamic>);
}
}
core.Map<core.String, core.Object> toJson() {
final _json = <core.String, core.Object>{};
if (ackId != null) {
_json['ackId'] = ackId;
}
if (message != null) {
_json['message'] = message.toJson();
}
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'] as core.Map<core.String, core.dynamic>);
}
}
core.Map<core.String, core.Object> toJson() {
final _json = <core.String, core.Object>{};
if (policy != null) {
_json['policy'] = policy.toJson();
}
return _json;
}
}
/// A subscription resource.
class Subscription {
/// This value is the maximum time after a subscriber receives a message
/// before the subscriber should acknowledge the message. After message
/// delivery but before the ack deadline expires and before the message is
/// acknowledged, it is an outstanding message and will not be delivered again
/// during that time (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 pull. The maximum custom deadline you can specify is 600
/// seconds (10 minutes). 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. If this parameter is 0, a default value of 10
/// seconds is used.
core.int ackDeadlineSeconds;
/// 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;
/// The name of the topic from which this subscription is receiving messages.
/// 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('name')) {
name = _json['name'] as core.String;
}
if (_json.containsKey('pushConfig')) {
pushConfig = PushConfig.fromJson(
_json['pushConfig'] as core.Map<core.String, core.dynamic>);
}
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 (name != null) {
_json['name'] = name;
}
if (pushConfig != null) {
_json['pushConfig'] = pushConfig.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 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('name')) {
name = _json['name'] as core.String;
}
}
core.Map<core.String, core.Object> toJson() {
final _json = <core.String, core.Object>{};
if (name != null) {
_json['name'] = name;
}
return _json;
}
}