create method
Creates a snapshot from the requested subscription.
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. 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.
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.
Implementation
async.Future<Snapshot> create(
CreateSnapshotRequest request,
core.String name, {
core.String? $fields,
}) async {
final body_ = convert.json.encode(request);
final queryParams_ = <core.String, core.List<core.String>>{
if ($fields != null) 'fields': [$fields],
};
final url_ = 'v1/' + core.Uri.encodeFull('$name');
final response_ = await _requester.request(
url_,
'PUT',
body: body_,
queryParams: queryParams_,
);
return Snapshot.fromJson(response_ as core.Map<core.String, core.dynamic>);
}