blob: effee41c98a1c848443390e87a83f617c7fbe0c1 [file]
// This is a generated file (see the discoveryapis_generator project).
// ignore_for_file: unused_import, unnecessary_cast
library googleapis.monitoring.v3;
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 core.String USER_AGENT = 'dart-api-client monitoring/v3';
/// Manages your Cloud Monitoring data and configurations. Most projects must be
/// associated with a Workspace, with a few exceptions as noted on the
/// individual method pages. The table entries below are presented in
/// alphabetical order, not in order of common use. For explanations of the
/// concepts found in the table entries, read the Cloud Monitoring
/// documentation.
class MonitoringApi {
/// View and manage your data across Google Cloud Platform services
static const CloudPlatformScope =
"https://www.googleapis.com/auth/cloud-platform";
/// View and write monitoring data for all of your Google and third-party
/// Cloud and API projects
static const MonitoringScope = "https://www.googleapis.com/auth/monitoring";
/// View monitoring data for all of your Google Cloud and third-party projects
static const MonitoringReadScope =
"https://www.googleapis.com/auth/monitoring.read";
/// Publish metric data to your Google Cloud projects
static const MonitoringWriteScope =
"https://www.googleapis.com/auth/monitoring.write";
final commons.ApiRequester _requester;
ProjectsResourceApi get projects => new ProjectsResourceApi(_requester);
ServicesResourceApi get services => new ServicesResourceApi(_requester);
UptimeCheckIpsResourceApi get uptimeCheckIps =>
new UptimeCheckIpsResourceApi(_requester);
MonitoringApi(http.Client client,
{core.String rootUrl = "https://monitoring.googleapis.com/",
core.String servicePath = ""})
: _requester =
new commons.ApiRequester(client, rootUrl, servicePath, USER_AGENT);
}
class ProjectsResourceApi {
final commons.ApiRequester _requester;
ProjectsAlertPoliciesResourceApi get alertPolicies =>
new ProjectsAlertPoliciesResourceApi(_requester);
ProjectsCollectdTimeSeriesResourceApi get collectdTimeSeries =>
new ProjectsCollectdTimeSeriesResourceApi(_requester);
ProjectsGroupsResourceApi get groups =>
new ProjectsGroupsResourceApi(_requester);
ProjectsMetricDescriptorsResourceApi get metricDescriptors =>
new ProjectsMetricDescriptorsResourceApi(_requester);
ProjectsMonitoredResourceDescriptorsResourceApi
get monitoredResourceDescriptors =>
new ProjectsMonitoredResourceDescriptorsResourceApi(_requester);
ProjectsNotificationChannelDescriptorsResourceApi
get notificationChannelDescriptors =>
new ProjectsNotificationChannelDescriptorsResourceApi(_requester);
ProjectsNotificationChannelsResourceApi get notificationChannels =>
new ProjectsNotificationChannelsResourceApi(_requester);
ProjectsTimeSeriesResourceApi get timeSeries =>
new ProjectsTimeSeriesResourceApi(_requester);
ProjectsUptimeCheckConfigsResourceApi get uptimeCheckConfigs =>
new ProjectsUptimeCheckConfigsResourceApi(_requester);
ProjectsResourceApi(commons.ApiRequester client) : _requester = client;
}
class ProjectsAlertPoliciesResourceApi {
final commons.ApiRequester _requester;
ProjectsAlertPoliciesResourceApi(commons.ApiRequester client)
: _requester = client;
/// Creates a new alerting policy.
///
/// [request] - The metadata request object.
///
/// Request parameters:
///
/// [name] - Required. The project in which to create the alerting policy. The
/// format is: projects/[PROJECT_ID_OR_NUMBER] Note that this field names the
/// parent container in which the alerting policy will be written, not the
/// name of the created policy. |name| must be a host project of a workspace,
/// otherwise INVALID_ARGUMENT error will return. The alerting policy that is
/// returned will have a name that contains a normalized representation of
/// this name as a prefix but adds a suffix of the form
/// /alertPolicies/[ALERT_POLICY_ID], identifying the policy in the container.
/// Value must have pattern "^projects/[^/]+$".
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [AlertPolicy].
///
/// 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<AlertPolicy> create(AlertPolicy request, core.String name,
{core.String $fields}) {
var _url;
var _queryParams = new core.Map<core.String, core.List<core.String>>();
var _uploadMedia;
var _uploadOptions;
var _downloadOptions = commons.DownloadOptions.Metadata;
var _body;
if (request != null) {
_body = convert.json.encode((request).toJson());
}
if (name == null) {
throw new core.ArgumentError("Parameter name is required.");
}
if ($fields != null) {
_queryParams["fields"] = [$fields];
}
_url = 'v3/' +
commons.Escaper.ecapeVariableReserved('$name') +
'/alertPolicies';
var _response = _requester.request(_url, "POST",
body: _body,
queryParams: _queryParams,
uploadOptions: _uploadOptions,
uploadMedia: _uploadMedia,
downloadOptions: _downloadOptions);
return _response.then((data) => new AlertPolicy.fromJson(data));
}
/// Deletes an alerting policy.
///
/// Request parameters:
///
/// [name] - Required. The alerting policy to delete. The format is:
/// projects/[PROJECT_ID_OR_NUMBER]/alertPolicies/[ALERT_POLICY_ID] For more
/// information, see AlertPolicy.
/// Value must have pattern "^projects/[^/]+/alertPolicies/[^/]+$".
///
/// [$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 name, {core.String $fields}) {
var _url;
var _queryParams = new core.Map<core.String, core.List<core.String>>();
var _uploadMedia;
var _uploadOptions;
var _downloadOptions = commons.DownloadOptions.Metadata;
var _body;
if (name == null) {
throw new core.ArgumentError("Parameter name is required.");
}
if ($fields != null) {
_queryParams["fields"] = [$fields];
}
_url = 'v3/' + commons.Escaper.ecapeVariableReserved('$name');
var _response = _requester.request(_url, "DELETE",
body: _body,
queryParams: _queryParams,
uploadOptions: _uploadOptions,
uploadMedia: _uploadMedia,
downloadOptions: _downloadOptions);
return _response.then((data) => new Empty.fromJson(data));
}
/// Gets a single alerting policy.
///
/// Request parameters:
///
/// [name] - Required. The alerting policy to retrieve. The format is:
/// projects/[PROJECT_ID_OR_NUMBER]/alertPolicies/[ALERT_POLICY_ID]
/// Value must have pattern "^projects/[^/]+/alertPolicies/[^/]+$".
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [AlertPolicy].
///
/// 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<AlertPolicy> get(core.String name, {core.String $fields}) {
var _url;
var _queryParams = new core.Map<core.String, core.List<core.String>>();
var _uploadMedia;
var _uploadOptions;
var _downloadOptions = commons.DownloadOptions.Metadata;
var _body;
if (name == null) {
throw new core.ArgumentError("Parameter name is required.");
}
if ($fields != null) {
_queryParams["fields"] = [$fields];
}
_url = 'v3/' + commons.Escaper.ecapeVariableReserved('$name');
var _response = _requester.request(_url, "GET",
body: _body,
queryParams: _queryParams,
uploadOptions: _uploadOptions,
uploadMedia: _uploadMedia,
downloadOptions: _downloadOptions);
return _response.then((data) => new AlertPolicy.fromJson(data));
}
/// Lists the existing alerting policies for the workspace.
///
/// Request parameters:
///
/// [name] - Required. The project whose alert policies are to be listed. The
/// format is: projects/[PROJECT_ID_OR_NUMBER] Note that this field names the
/// parent container in which the alerting policies to be listed are stored.
/// To retrieve a single alerting policy by name, use the GetAlertPolicy
/// operation, instead.
/// Value must have pattern "^projects/[^/]+$".
///
/// [pageToken] - If this field is not empty then it must contain the
/// nextPageToken value returned by a previous call to this method. Using this
/// field causes the method to return more results from the previous method
/// call.
///
/// [filter] - If provided, this field specifies the criteria that must be met
/// by alert policies to be included in the response.For more details, see
/// sorting and filtering
/// (https://cloud.google.com/monitoring/api/v3/sorting-and-filtering).
///
/// [orderBy] - A comma-separated list of fields by which to sort the result.
/// Supports the same set of field references as the filter field. Entries can
/// be prefixed with a minus sign to sort by the field in descending order.For
/// more details, see sorting and filtering
/// (https://cloud.google.com/monitoring/api/v3/sorting-and-filtering).
///
/// [pageSize] - The maximum number of results to return in a single response.
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [ListAlertPoliciesResponse].
///
/// 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<ListAlertPoliciesResponse> list(core.String name,
{core.String pageToken,
core.String filter,
core.String orderBy,
core.int pageSize,
core.String $fields}) {
var _url;
var _queryParams = new core.Map<core.String, core.List<core.String>>();
var _uploadMedia;
var _uploadOptions;
var _downloadOptions = commons.DownloadOptions.Metadata;
var _body;
if (name == null) {
throw new core.ArgumentError("Parameter name is required.");
}
if (pageToken != null) {
_queryParams["pageToken"] = [pageToken];
}
if (filter != null) {
_queryParams["filter"] = [filter];
}
if (orderBy != null) {
_queryParams["orderBy"] = [orderBy];
}
if (pageSize != null) {
_queryParams["pageSize"] = ["${pageSize}"];
}
if ($fields != null) {
_queryParams["fields"] = [$fields];
}
_url = 'v3/' +
commons.Escaper.ecapeVariableReserved('$name') +
'/alertPolicies';
var _response = _requester.request(_url, "GET",
body: _body,
queryParams: _queryParams,
uploadOptions: _uploadOptions,
uploadMedia: _uploadMedia,
downloadOptions: _downloadOptions);
return _response
.then((data) => new ListAlertPoliciesResponse.fromJson(data));
}
/// Updates an alerting policy. You can either replace the entire policy with
/// a new one or replace only certain fields in the current alerting policy by
/// specifying the fields to be updated via updateMask. Returns the updated
/// alerting policy.
///
/// [request] - The metadata request object.
///
/// Request parameters:
///
/// [name] - Required if the policy exists. The resource name for this policy.
/// The format is:
/// projects/[PROJECT_ID_OR_NUMBER]/alertPolicies/[ALERT_POLICY_ID]
/// [ALERT_POLICY_ID] is assigned by Stackdriver Monitoring when the policy is
/// created. When calling the alertPolicies.create method, do not include the
/// name field in the alerting policy passed as part of the request.
/// Value must have pattern "^projects/[^/]+/alertPolicies/[^/]+$".
///
/// [updateMask] - Optional. A list of alerting policy field names. If this
/// field is not empty, each listed field in the existing alerting policy is
/// set to the value of the corresponding field in the supplied policy
/// (alert_policy), or to the field's default value if the field is not in the
/// supplied alerting policy. Fields not listed retain their previous
/// value.Examples of valid field masks include display_name, documentation,
/// documentation.content, documentation.mime_type, user_labels,
/// user_label.nameofkey, enabled, conditions, combiner, etc.If this field is
/// empty, then the supplied alerting policy replaces the existing policy. It
/// is the same as deleting the existing policy and adding the supplied
/// policy, except for the following: The new policy will have the same
/// [ALERT_POLICY_ID] as the former policy. This gives you continuity with the
/// former policy in your notifications and incidents. Conditions in the new
/// policy will keep their former [CONDITION_ID] if the supplied condition
/// includes the name field with that [CONDITION_ID]. If the supplied
/// condition omits the name field, then a new [CONDITION_ID] is created.
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [AlertPolicy].
///
/// 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<AlertPolicy> patch(AlertPolicy request, core.String name,
{core.String updateMask, core.String $fields}) {
var _url;
var _queryParams = new core.Map<core.String, core.List<core.String>>();
var _uploadMedia;
var _uploadOptions;
var _downloadOptions = commons.DownloadOptions.Metadata;
var _body;
if (request != null) {
_body = convert.json.encode((request).toJson());
}
if (name == null) {
throw new core.ArgumentError("Parameter name is required.");
}
if (updateMask != null) {
_queryParams["updateMask"] = [updateMask];
}
if ($fields != null) {
_queryParams["fields"] = [$fields];
}
_url = 'v3/' + commons.Escaper.ecapeVariableReserved('$name');
var _response = _requester.request(_url, "PATCH",
body: _body,
queryParams: _queryParams,
uploadOptions: _uploadOptions,
uploadMedia: _uploadMedia,
downloadOptions: _downloadOptions);
return _response.then((data) => new AlertPolicy.fromJson(data));
}
}
class ProjectsCollectdTimeSeriesResourceApi {
final commons.ApiRequester _requester;
ProjectsCollectdTimeSeriesResourceApi(commons.ApiRequester client)
: _requester = client;
/// Stackdriver Monitoring Agent only: Creates a new time series.This method
/// is only for use by the Stackdriver Monitoring Agent. Use
/// projects.timeSeries.create instead.
///
/// [request] - The metadata request object.
///
/// Request parameters:
///
/// [name] - The project in which to create the time series. The format is:
/// projects/[PROJECT_ID_OR_NUMBER]
/// Value must have pattern "^projects/[^/]+$".
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [CreateCollectdTimeSeriesResponse].
///
/// 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<CreateCollectdTimeSeriesResponse> create(
CreateCollectdTimeSeriesRequest request, core.String name,
{core.String $fields}) {
var _url;
var _queryParams = new core.Map<core.String, core.List<core.String>>();
var _uploadMedia;
var _uploadOptions;
var _downloadOptions = commons.DownloadOptions.Metadata;
var _body;
if (request != null) {
_body = convert.json.encode((request).toJson());
}
if (name == null) {
throw new core.ArgumentError("Parameter name is required.");
}
if ($fields != null) {
_queryParams["fields"] = [$fields];
}
_url = 'v3/' +
commons.Escaper.ecapeVariableReserved('$name') +
'/collectdTimeSeries';
var _response = _requester.request(_url, "POST",
body: _body,
queryParams: _queryParams,
uploadOptions: _uploadOptions,
uploadMedia: _uploadMedia,
downloadOptions: _downloadOptions);
return _response
.then((data) => new CreateCollectdTimeSeriesResponse.fromJson(data));
}
}
class ProjectsGroupsResourceApi {
final commons.ApiRequester _requester;
ProjectsGroupsMembersResourceApi get members =>
new ProjectsGroupsMembersResourceApi(_requester);
ProjectsGroupsResourceApi(commons.ApiRequester client) : _requester = client;
/// Creates a new group.
///
/// [request] - The metadata request object.
///
/// Request parameters:
///
/// [name] - Required. The project in which to create the group. The format
/// is: projects/[PROJECT_ID_OR_NUMBER]
/// Value must have pattern "^projects/[^/]+$".
///
/// [validateOnly] - If true, validate this request but do not create the
/// group.
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [Group].
///
/// 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<Group> create(Group request, core.String name,
{core.bool validateOnly, core.String $fields}) {
var _url;
var _queryParams = new core.Map<core.String, core.List<core.String>>();
var _uploadMedia;
var _uploadOptions;
var _downloadOptions = commons.DownloadOptions.Metadata;
var _body;
if (request != null) {
_body = convert.json.encode((request).toJson());
}
if (name == null) {
throw new core.ArgumentError("Parameter name is required.");
}
if (validateOnly != null) {
_queryParams["validateOnly"] = ["${validateOnly}"];
}
if ($fields != null) {
_queryParams["fields"] = [$fields];
}
_url = 'v3/' + commons.Escaper.ecapeVariableReserved('$name') + '/groups';
var _response = _requester.request(_url, "POST",
body: _body,
queryParams: _queryParams,
uploadOptions: _uploadOptions,
uploadMedia: _uploadMedia,
downloadOptions: _downloadOptions);
return _response.then((data) => new Group.fromJson(data));
}
/// Deletes an existing group.
///
/// Request parameters:
///
/// [name] - Required. The group to delete. The format is:
/// projects/[PROJECT_ID_OR_NUMBER]/groups/[GROUP_ID]
/// Value must have pattern "^projects/[^/]+/groups/[^/]+$".
///
/// [recursive] - If this field is true, then the request means to delete a
/// group with all its descendants. Otherwise, the request means to delete a
/// group only when it has no descendants. The default value is false.
///
/// [$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 name,
{core.bool recursive, core.String $fields}) {
var _url;
var _queryParams = new core.Map<core.String, core.List<core.String>>();
var _uploadMedia;
var _uploadOptions;
var _downloadOptions = commons.DownloadOptions.Metadata;
var _body;
if (name == null) {
throw new core.ArgumentError("Parameter name is required.");
}
if (recursive != null) {
_queryParams["recursive"] = ["${recursive}"];
}
if ($fields != null) {
_queryParams["fields"] = [$fields];
}
_url = 'v3/' + commons.Escaper.ecapeVariableReserved('$name');
var _response = _requester.request(_url, "DELETE",
body: _body,
queryParams: _queryParams,
uploadOptions: _uploadOptions,
uploadMedia: _uploadMedia,
downloadOptions: _downloadOptions);
return _response.then((data) => new Empty.fromJson(data));
}
/// Gets a single group.
///
/// Request parameters:
///
/// [name] - Required. The group to retrieve. The format is:
/// projects/[PROJECT_ID_OR_NUMBER]/groups/[GROUP_ID]
/// Value must have pattern "^projects/[^/]+/groups/[^/]+$".
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [Group].
///
/// 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<Group> get(core.String name, {core.String $fields}) {
var _url;
var _queryParams = new core.Map<core.String, core.List<core.String>>();
var _uploadMedia;
var _uploadOptions;
var _downloadOptions = commons.DownloadOptions.Metadata;
var _body;
if (name == null) {
throw new core.ArgumentError("Parameter name is required.");
}
if ($fields != null) {
_queryParams["fields"] = [$fields];
}
_url = 'v3/' + commons.Escaper.ecapeVariableReserved('$name');
var _response = _requester.request(_url, "GET",
body: _body,
queryParams: _queryParams,
uploadOptions: _uploadOptions,
uploadMedia: _uploadMedia,
downloadOptions: _downloadOptions);
return _response.then((data) => new Group.fromJson(data));
}
/// Lists the existing groups.
///
/// Request parameters:
///
/// [name] - Required. The project whose groups are to be listed. The format
/// is: projects/[PROJECT_ID_OR_NUMBER]
/// Value must have pattern "^projects/[^/]+$".
///
/// [pageToken] - If this field is not empty then it must contain the
/// next_page_token value returned by a previous call to this method. Using
/// this field causes the method to return additional results from the
/// previous method call.
///
/// [descendantsOfGroup] - A group name. The format is:
/// projects/[PROJECT_ID_OR_NUMBER]/groups/[GROUP_ID] Returns the descendants
/// of the specified group. This is a superset of the results returned by the
/// children_of_group filter, and includes children-of-children, and so forth.
///
/// [pageSize] - A positive number that is the maximum number of results to
/// return.
///
/// [ancestorsOfGroup] - A group name. The format is:
/// projects/[PROJECT_ID_OR_NUMBER]/groups/[GROUP_ID] Returns groups that are
/// ancestors of the specified group. The groups are returned in order,
/// starting with the immediate parent and ending with the most distant
/// ancestor. If the specified group has no immediate parent, the results are
/// empty.
///
/// [childrenOfGroup] - A group name. The format is:
/// projects/[PROJECT_ID_OR_NUMBER]/groups/[GROUP_ID] Returns groups whose
/// parent_name field contains the group name. If no groups have this parent,
/// the results are empty.
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [ListGroupsResponse].
///
/// 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<ListGroupsResponse> list(core.String name,
{core.String pageToken,
core.String descendantsOfGroup,
core.int pageSize,
core.String ancestorsOfGroup,
core.String childrenOfGroup,
core.String $fields}) {
var _url;
var _queryParams = new core.Map<core.String, core.List<core.String>>();
var _uploadMedia;
var _uploadOptions;
var _downloadOptions = commons.DownloadOptions.Metadata;
var _body;
if (name == null) {
throw new core.ArgumentError("Parameter name is required.");
}
if (pageToken != null) {
_queryParams["pageToken"] = [pageToken];
}
if (descendantsOfGroup != null) {
_queryParams["descendantsOfGroup"] = [descendantsOfGroup];
}
if (pageSize != null) {
_queryParams["pageSize"] = ["${pageSize}"];
}
if (ancestorsOfGroup != null) {
_queryParams["ancestorsOfGroup"] = [ancestorsOfGroup];
}
if (childrenOfGroup != null) {
_queryParams["childrenOfGroup"] = [childrenOfGroup];
}
if ($fields != null) {
_queryParams["fields"] = [$fields];
}
_url = 'v3/' + commons.Escaper.ecapeVariableReserved('$name') + '/groups';
var _response = _requester.request(_url, "GET",
body: _body,
queryParams: _queryParams,
uploadOptions: _uploadOptions,
uploadMedia: _uploadMedia,
downloadOptions: _downloadOptions);
return _response.then((data) => new ListGroupsResponse.fromJson(data));
}
/// Updates an existing group. You can change any group attributes except
/// name.
///
/// [request] - The metadata request object.
///
/// Request parameters:
///
/// [name] - Output only. The name of this group. The format is:
/// projects/[PROJECT_ID_OR_NUMBER]/groups/[GROUP_ID] When creating a group,
/// this field is ignored and a new name is created consisting of the project
/// specified in the call to CreateGroup and a unique [GROUP_ID] that is
/// generated automatically.
/// Value must have pattern "^projects/[^/]+/groups/[^/]+$".
///
/// [validateOnly] - If true, validate this request but do not update the
/// existing group.
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [Group].
///
/// 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<Group> update(Group request, core.String name,
{core.bool validateOnly, core.String $fields}) {
var _url;
var _queryParams = new core.Map<core.String, core.List<core.String>>();
var _uploadMedia;
var _uploadOptions;
var _downloadOptions = commons.DownloadOptions.Metadata;
var _body;
if (request != null) {
_body = convert.json.encode((request).toJson());
}
if (name == null) {
throw new core.ArgumentError("Parameter name is required.");
}
if (validateOnly != null) {
_queryParams["validateOnly"] = ["${validateOnly}"];
}
if ($fields != null) {
_queryParams["fields"] = [$fields];
}
_url = 'v3/' + commons.Escaper.ecapeVariableReserved('$name');
var _response = _requester.request(_url, "PUT",
body: _body,
queryParams: _queryParams,
uploadOptions: _uploadOptions,
uploadMedia: _uploadMedia,
downloadOptions: _downloadOptions);
return _response.then((data) => new Group.fromJson(data));
}
}
class ProjectsGroupsMembersResourceApi {
final commons.ApiRequester _requester;
ProjectsGroupsMembersResourceApi(commons.ApiRequester client)
: _requester = client;
/// Lists the monitored resources that are members of a group.
///
/// Request parameters:
///
/// [name] - Required. The group whose members are listed. The format is:
/// projects/[PROJECT_ID_OR_NUMBER]/groups/[GROUP_ID]
/// Value must have pattern "^projects/[^/]+/groups/[^/]+$".
///
/// [filter] - An optional list filter
/// (https://cloud.google.com/monitoring/api/learn_more#filtering) describing
/// the members to be returned. The filter may reference the type, labels, and
/// metadata of monitored resources that comprise the group. For example, to
/// return only resources representing Compute Engine VM instances, use this
/// filter: `resource.type = "gce_instance"`
///
/// [interval_endTime] - Required. The end of the time interval.
///
/// [pageToken] - If this field is not empty then it must contain the
/// next_page_token value returned by a previous call to this method. Using
/// this field causes the method to return additional results from the
/// previous method call.
///
/// [pageSize] - A positive number that is the maximum number of results to
/// return.
///
/// [interval_startTime] - Optional. The beginning of the time interval. The
/// default value for the start time is the end time. The start time must not
/// be later than the end time.
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [ListGroupMembersResponse].
///
/// 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<ListGroupMembersResponse> list(core.String name,
{core.String filter,
core.String interval_endTime,
core.String pageToken,
core.int pageSize,
core.String interval_startTime,
core.String $fields}) {
var _url;
var _queryParams = new core.Map<core.String, core.List<core.String>>();
var _uploadMedia;
var _uploadOptions;
var _downloadOptions = commons.DownloadOptions.Metadata;
var _body;
if (name == null) {
throw new core.ArgumentError("Parameter name is required.");
}
if (filter != null) {
_queryParams["filter"] = [filter];
}
if (interval_endTime != null) {
_queryParams["interval.endTime"] = [interval_endTime];
}
if (pageToken != null) {
_queryParams["pageToken"] = [pageToken];
}
if (pageSize != null) {
_queryParams["pageSize"] = ["${pageSize}"];
}
if (interval_startTime != null) {
_queryParams["interval.startTime"] = [interval_startTime];
}
if ($fields != null) {
_queryParams["fields"] = [$fields];
}
_url = 'v3/' + commons.Escaper.ecapeVariableReserved('$name') + '/members';
var _response = _requester.request(_url, "GET",
body: _body,
queryParams: _queryParams,
uploadOptions: _uploadOptions,
uploadMedia: _uploadMedia,
downloadOptions: _downloadOptions);
return _response
.then((data) => new ListGroupMembersResponse.fromJson(data));
}
}
class ProjectsMetricDescriptorsResourceApi {
final commons.ApiRequester _requester;
ProjectsMetricDescriptorsResourceApi(commons.ApiRequester client)
: _requester = client;
/// Creates a new metric descriptor. User-created metric descriptors define
/// custom metrics (https://cloud.google.com/monitoring/custom-metrics).
///
/// [request] - The metadata request object.
///
/// Request parameters:
///
/// [name] - Required. The project on which to execute the request. The format
/// is: projects/[PROJECT_ID_OR_NUMBER]
/// Value must have pattern "^projects/[^/]+$".
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [MetricDescriptor].
///
/// 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<MetricDescriptor> create(
MetricDescriptor request, core.String name,
{core.String $fields}) {
var _url;
var _queryParams = new core.Map<core.String, core.List<core.String>>();
var _uploadMedia;
var _uploadOptions;
var _downloadOptions = commons.DownloadOptions.Metadata;
var _body;
if (request != null) {
_body = convert.json.encode((request).toJson());
}
if (name == null) {
throw new core.ArgumentError("Parameter name is required.");
}
if ($fields != null) {
_queryParams["fields"] = [$fields];
}
_url = 'v3/' +
commons.Escaper.ecapeVariableReserved('$name') +
'/metricDescriptors';
var _response = _requester.request(_url, "POST",
body: _body,
queryParams: _queryParams,
uploadOptions: _uploadOptions,
uploadMedia: _uploadMedia,
downloadOptions: _downloadOptions);
return _response.then((data) => new MetricDescriptor.fromJson(data));
}
/// Deletes a metric descriptor. Only user-created custom metrics
/// (https://cloud.google.com/monitoring/custom-metrics) can be deleted.
///
/// Request parameters:
///
/// [name] - Required. The metric descriptor on which to execute the request.
/// The format is:
/// projects/[PROJECT_ID_OR_NUMBER]/metricDescriptors/[METRIC_ID] An example
/// of [METRIC_ID] is: "custom.googleapis.com/my_test_metric".
/// Value must have pattern "^projects/[^/]+/metricDescriptors/.*$".
///
/// [$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 name, {core.String $fields}) {
var _url;
var _queryParams = new core.Map<core.String, core.List<core.String>>();
var _uploadMedia;
var _uploadOptions;
var _downloadOptions = commons.DownloadOptions.Metadata;
var _body;
if (name == null) {
throw new core.ArgumentError("Parameter name is required.");
}
if ($fields != null) {
_queryParams["fields"] = [$fields];
}
_url = 'v3/' + commons.Escaper.ecapeVariableReserved('$name');
var _response = _requester.request(_url, "DELETE",
body: _body,
queryParams: _queryParams,
uploadOptions: _uploadOptions,
uploadMedia: _uploadMedia,
downloadOptions: _downloadOptions);
return _response.then((data) => new Empty.fromJson(data));
}
/// Gets a single metric descriptor. This method does not require a Workspace.
///
/// Request parameters:
///
/// [name] - Required. The metric descriptor on which to execute the request.
/// The format is:
/// projects/[PROJECT_ID_OR_NUMBER]/metricDescriptors/[METRIC_ID] An example
/// value of [METRIC_ID] is
/// "compute.googleapis.com/instance/disk/read_bytes_count".
/// Value must have pattern "^projects/[^/]+/metricDescriptors/.*$".
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [MetricDescriptor].
///
/// 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<MetricDescriptor> get(core.String name, {core.String $fields}) {
var _url;
var _queryParams = new core.Map<core.String, core.List<core.String>>();
var _uploadMedia;
var _uploadOptions;
var _downloadOptions = commons.DownloadOptions.Metadata;
var _body;
if (name == null) {
throw new core.ArgumentError("Parameter name is required.");
}
if ($fields != null) {
_queryParams["fields"] = [$fields];
}
_url = 'v3/' + commons.Escaper.ecapeVariableReserved('$name');
var _response = _requester.request(_url, "GET",
body: _body,
queryParams: _queryParams,
uploadOptions: _uploadOptions,
uploadMedia: _uploadMedia,
downloadOptions: _downloadOptions);
return _response.then((data) => new MetricDescriptor.fromJson(data));
}
/// Lists metric descriptors that match a filter. This method does not require
/// a Workspace.
///
/// Request parameters:
///
/// [name] - Required. The project on which to execute the request. The format
/// is: projects/[PROJECT_ID_OR_NUMBER]
/// Value must have pattern "^projects/[^/]+$".
///
/// [filter] - If this field is empty, all custom and system-defined metric
/// descriptors are returned. Otherwise, the filter
/// (https://cloud.google.com/monitoring/api/v3/filters) specifies which
/// metric descriptors are to be returned. For example, the following filter
/// matches all custom metrics
/// (https://cloud.google.com/monitoring/custom-metrics): metric.type =
/// starts_with("custom.googleapis.com/")
///
/// [pageToken] - If this field is not empty then it must contain the
/// nextPageToken value returned by a previous call to this method. Using this
/// field causes the method to return additional results from the previous
/// method call.
///
/// [pageSize] - A positive number that is the maximum number of results to
/// return.
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [ListMetricDescriptorsResponse].
///
/// 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<ListMetricDescriptorsResponse> list(core.String name,
{core.String filter,
core.String pageToken,
core.int pageSize,
core.String $fields}) {
var _url;
var _queryParams = new core.Map<core.String, core.List<core.String>>();
var _uploadMedia;
var _uploadOptions;
var _downloadOptions = commons.DownloadOptions.Metadata;
var _body;
if (name == null) {
throw new core.ArgumentError("Parameter name is required.");
}
if (filter != null) {
_queryParams["filter"] = [filter];
}
if (pageToken != null) {
_queryParams["pageToken"] = [pageToken];
}
if (pageSize != null) {
_queryParams["pageSize"] = ["${pageSize}"];
}
if ($fields != null) {
_queryParams["fields"] = [$fields];
}
_url = 'v3/' +
commons.Escaper.ecapeVariableReserved('$name') +
'/metricDescriptors';
var _response = _requester.request(_url, "GET",
body: _body,
queryParams: _queryParams,
uploadOptions: _uploadOptions,
uploadMedia: _uploadMedia,
downloadOptions: _downloadOptions);
return _response
.then((data) => new ListMetricDescriptorsResponse.fromJson(data));
}
}
class ProjectsMonitoredResourceDescriptorsResourceApi {
final commons.ApiRequester _requester;
ProjectsMonitoredResourceDescriptorsResourceApi(commons.ApiRequester client)
: _requester = client;
/// Gets a single monitored resource descriptor. This method does not require
/// a Workspace.
///
/// Request parameters:
///
/// [name] - Required. The monitored resource descriptor to get. The format
/// is:
/// projects/[PROJECT_ID_OR_NUMBER]/monitoredResourceDescriptors/[RESOURCE_TYPE]
/// The [RESOURCE_TYPE] is a predefined type, such as cloudsql_database.
/// Value must have pattern
/// "^projects/[^/]+/monitoredResourceDescriptors/.*$".
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [MonitoredResourceDescriptor].
///
/// 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<MonitoredResourceDescriptor> get(core.String name,
{core.String $fields}) {
var _url;
var _queryParams = new core.Map<core.String, core.List<core.String>>();
var _uploadMedia;
var _uploadOptions;
var _downloadOptions = commons.DownloadOptions.Metadata;
var _body;
if (name == null) {
throw new core.ArgumentError("Parameter name is required.");
}
if ($fields != null) {
_queryParams["fields"] = [$fields];
}
_url = 'v3/' + commons.Escaper.ecapeVariableReserved('$name');
var _response = _requester.request(_url, "GET",
body: _body,
queryParams: _queryParams,
uploadOptions: _uploadOptions,
uploadMedia: _uploadMedia,
downloadOptions: _downloadOptions);
return _response
.then((data) => new MonitoredResourceDescriptor.fromJson(data));
}
/// Lists monitored resource descriptors that match a filter. This method does
/// not require a Workspace.
///
/// Request parameters:
///
/// [name] - Required. The project on which to execute the request. The format
/// is: projects/[PROJECT_ID_OR_NUMBER]
/// Value must have pattern "^projects/[^/]+$".
///
/// [pageToken] - If this field is not empty then it must contain the
/// nextPageToken value returned by a previous call to this method. Using this
/// field causes the method to return additional results from the previous
/// method call.
///
/// [filter] - An optional filter
/// (https://cloud.google.com/monitoring/api/v3/filters) describing the
/// descriptors to be returned. The filter can reference the descriptor's type
/// and labels. For example, the following filter returns only Google Compute
/// Engine descriptors that have an id label: resource.type =
/// starts_with("gce_") AND resource.label:id
///
/// [pageSize] - A positive number that is the maximum number of results to
/// return.
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [ListMonitoredResourceDescriptorsResponse].
///
/// 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<ListMonitoredResourceDescriptorsResponse> list(core.String name,
{core.String pageToken,
core.String filter,
core.int pageSize,
core.String $fields}) {
var _url;
var _queryParams = new core.Map<core.String, core.List<core.String>>();
var _uploadMedia;
var _uploadOptions;
var _downloadOptions = commons.DownloadOptions.Metadata;
var _body;
if (name == null) {
throw new core.ArgumentError("Parameter name is required.");
}
if (pageToken != null) {
_queryParams["pageToken"] = [pageToken];
}
if (filter != null) {
_queryParams["filter"] = [filter];
}
if (pageSize != null) {
_queryParams["pageSize"] = ["${pageSize}"];
}
if ($fields != null) {
_queryParams["fields"] = [$fields];
}
_url = 'v3/' +
commons.Escaper.ecapeVariableReserved('$name') +
'/monitoredResourceDescriptors';
var _response = _requester.request(_url, "GET",
body: _body,
queryParams: _queryParams,
uploadOptions: _uploadOptions,
uploadMedia: _uploadMedia,
downloadOptions: _downloadOptions);
return _response.then(
(data) => new ListMonitoredResourceDescriptorsResponse.fromJson(data));
}
}
class ProjectsNotificationChannelDescriptorsResourceApi {
final commons.ApiRequester _requester;
ProjectsNotificationChannelDescriptorsResourceApi(commons.ApiRequester client)
: _requester = client;
/// Gets a single channel descriptor. The descriptor indicates which fields
/// are expected / permitted for a notification channel of the given type.
///
/// Request parameters:
///
/// [name] - Required. The channel type for which to execute the request. The
/// format is:
/// projects/[PROJECT_ID_OR_NUMBER]/notificationChannelDescriptors/[CHANNEL_TYPE]
/// Value must have pattern
/// "^projects/[^/]+/notificationChannelDescriptors/[^/]+$".
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [NotificationChannelDescriptor].
///
/// 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<NotificationChannelDescriptor> get(core.String name,
{core.String $fields}) {
var _url;
var _queryParams = new core.Map<core.String, core.List<core.String>>();
var _uploadMedia;
var _uploadOptions;
var _downloadOptions = commons.DownloadOptions.Metadata;
var _body;
if (name == null) {
throw new core.ArgumentError("Parameter name is required.");
}
if ($fields != null) {
_queryParams["fields"] = [$fields];
}
_url = 'v3/' + commons.Escaper.ecapeVariableReserved('$name');
var _response = _requester.request(_url, "GET",
body: _body,
queryParams: _queryParams,
uploadOptions: _uploadOptions,
uploadMedia: _uploadMedia,
downloadOptions: _downloadOptions);
return _response
.then((data) => new NotificationChannelDescriptor.fromJson(data));
}
/// Lists the descriptors for supported channel types. The use of descriptors
/// makes it possible for new channel types to be dynamically added.
///
/// Request parameters:
///
/// [name] - Required. The REST resource name of the parent from which to
/// retrieve the notification channel descriptors. The expected syntax is:
/// projects/[PROJECT_ID_OR_NUMBER] Note that this names the parent container
/// in which to look for the descriptors; to retrieve a single descriptor by
/// name, use the GetNotificationChannelDescriptor operation, instead.
/// Value must have pattern "^projects/[^/]+$".
///
/// [pageToken] - If non-empty, page_token must contain a value returned as
/// the next_page_token in a previous response to request the next set of
/// results.
///
/// [pageSize] - The maximum number of results to return in a single response.
/// If not set to a positive number, a reasonable value will be chosen by the
/// service.
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [ListNotificationChannelDescriptorsResponse].
///
/// 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<ListNotificationChannelDescriptorsResponse> list(
core.String name,
{core.String pageToken,
core.int pageSize,
core.String $fields}) {
var _url;
var _queryParams = new core.Map<core.String, core.List<core.String>>();
var _uploadMedia;
var _uploadOptions;
var _downloadOptions = commons.DownloadOptions.Metadata;
var _body;
if (name == null) {
throw new core.ArgumentError("Parameter name is required.");
}
if (pageToken != null) {
_queryParams["pageToken"] = [pageToken];
}
if (pageSize != null) {
_queryParams["pageSize"] = ["${pageSize}"];
}
if ($fields != null) {
_queryParams["fields"] = [$fields];
}
_url = 'v3/' +
commons.Escaper.ecapeVariableReserved('$name') +
'/notificationChannelDescriptors';
var _response = _requester.request(_url, "GET",
body: _body,
queryParams: _queryParams,
uploadOptions: _uploadOptions,
uploadMedia: _uploadMedia,
downloadOptions: _downloadOptions);
return _response.then((data) =>
new ListNotificationChannelDescriptorsResponse.fromJson(data));
}
}
class ProjectsNotificationChannelsResourceApi {
final commons.ApiRequester _requester;
ProjectsNotificationChannelsResourceApi(commons.ApiRequester client)
: _requester = client;
/// Creates a new notification channel, representing a single notification
/// endpoint such as an email address, SMS number, or PagerDuty service.
///
/// [request] - The metadata request object.
///
/// Request parameters:
///
/// [name] - Required. The project on which to execute the request. The format
/// is: projects/[PROJECT_ID_OR_NUMBER] This names the container into which
/// the channel will be written, this does not name the newly created channel.
/// The resulting channel's name will have a normalized version of this field
/// as a prefix, but will add /notificationChannels/[CHANNEL_ID] to identify
/// the channel.
/// Value must have pattern "^projects/[^/]+$".
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [NotificationChannel].
///
/// 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<NotificationChannel> create(
NotificationChannel request, core.String name,
{core.String $fields}) {
var _url;
var _queryParams = new core.Map<core.String, core.List<core.String>>();
var _uploadMedia;
var _uploadOptions;
var _downloadOptions = commons.DownloadOptions.Metadata;
var _body;
if (request != null) {
_body = convert.json.encode((request).toJson());
}
if (name == null) {
throw new core.ArgumentError("Parameter name is required.");
}
if ($fields != null) {
_queryParams["fields"] = [$fields];
}
_url = 'v3/' +
commons.Escaper.ecapeVariableReserved('$name') +
'/notificationChannels';
var _response = _requester.request(_url, "POST",
body: _body,
queryParams: _queryParams,
uploadOptions: _uploadOptions,
uploadMedia: _uploadMedia,
downloadOptions: _downloadOptions);
return _response.then((data) => new NotificationChannel.fromJson(data));
}
/// Deletes a notification channel.
///
/// Request parameters:
///
/// [name] - Required. The channel for which to execute the request. The
/// format is:
/// projects/[PROJECT_ID_OR_NUMBER]/notificationChannels/[CHANNEL_ID]
/// Value must have pattern "^projects/[^/]+/notificationChannels/[^/]+$".
///
/// [force] - If true, the notification channel will be deleted regardless of
/// its use in alert policies (the policies will be updated to remove the
/// channel). If false, channels that are still referenced by an existing
/// alerting policy will fail to be deleted in a delete operation.
///
/// [$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 name,
{core.bool force, core.String $fields}) {
var _url;
var _queryParams = new core.Map<core.String, core.List<core.String>>();
var _uploadMedia;
var _uploadOptions;
var _downloadOptions = commons.DownloadOptions.Metadata;
var _body;
if (name == null) {
throw new core.ArgumentError("Parameter name is required.");
}
if (force != null) {
_queryParams["force"] = ["${force}"];
}
if ($fields != null) {
_queryParams["fields"] = [$fields];
}
_url = 'v3/' + commons.Escaper.ecapeVariableReserved('$name');
var _response = _requester.request(_url, "DELETE",
body: _body,
queryParams: _queryParams,
uploadOptions: _uploadOptions,
uploadMedia: _uploadMedia,
downloadOptions: _downloadOptions);
return _response.then((data) => new Empty.fromJson(data));
}
/// Gets a single notification channel. The channel includes the relevant
/// configuration details with which the channel was created. However, the
/// response may truncate or omit passwords, API keys, or other private key
/// matter and thus the response may not be 100% identical to the information
/// that was supplied in the call to the create method.
///
/// Request parameters:
///
/// [name] - Required. The channel for which to execute the request. The
/// format is:
/// projects/[PROJECT_ID_OR_NUMBER]/notificationChannels/[CHANNEL_ID]
/// Value must have pattern "^projects/[^/]+/notificationChannels/[^/]+$".
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [NotificationChannel].
///
/// 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<NotificationChannel> get(core.String name,
{core.String $fields}) {
var _url;
var _queryParams = new core.Map<core.String, core.List<core.String>>();
var _uploadMedia;
var _uploadOptions;
var _downloadOptions = commons.DownloadOptions.Metadata;
var _body;
if (name == null) {
throw new core.ArgumentError("Parameter name is required.");
}
if ($fields != null) {
_queryParams["fields"] = [$fields];
}
_url = 'v3/' + commons.Escaper.ecapeVariableReserved('$name');
var _response = _requester.request(_url, "GET",
body: _body,
queryParams: _queryParams,
uploadOptions: _uploadOptions,
uploadMedia: _uploadMedia,
downloadOptions: _downloadOptions);
return _response.then((data) => new NotificationChannel.fromJson(data));
}
/// Requests a verification code for an already verified channel that can then
/// be used in a call to VerifyNotificationChannel() on a different channel
/// with an equivalent identity in the same or in a different project. This
/// makes it possible to copy a channel between projects without requiring
/// manual reverification of the channel. If the channel is not in the
/// verified state, this method will fail (in other words, this may only be
/// used if the SendNotificationChannelVerificationCode and
/// VerifyNotificationChannel paths have already been used to put the given
/// channel into the verified state).There is no guarantee that the
/// verification codes returned by this method will be of a similar structure
/// or form as the ones that are delivered to the channel via
/// SendNotificationChannelVerificationCode; while VerifyNotificationChannel()
/// will recognize both the codes delivered via
/// SendNotificationChannelVerificationCode() and returned from
/// GetNotificationChannelVerificationCode(), it is typically the case that
/// the verification codes delivered via
/// SendNotificationChannelVerificationCode() will be shorter and also have a
/// shorter expiration (e.g. codes such as "G-123456") whereas
/// GetVerificationCode() will typically return a much longer, websafe base 64
/// encoded string that has a longer expiration time.
///
/// [request] - The metadata request object.
///
/// Request parameters:
///
/// [name] - Required. The notification channel for which a verification code
/// is to be generated and retrieved. This must name a channel that is already
/// verified; if the specified channel is not verified, the request will fail.
/// Value must have pattern "^projects/[^/]+/notificationChannels/[^/]+$".
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [GetNotificationChannelVerificationCodeResponse].
///
/// 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<GetNotificationChannelVerificationCodeResponse>
getVerificationCode(GetNotificationChannelVerificationCodeRequest request,
core.String name,
{core.String $fields}) {
var _url;
var _queryParams = new core.Map<core.String, core.List<core.String>>();
var _uploadMedia;
var _uploadOptions;
var _downloadOptions = commons.DownloadOptions.Metadata;
var _body;
if (request != null) {
_body = convert.json.encode((request).toJson());
}
if (name == null) {
throw new core.ArgumentError("Parameter name is required.");
}
if ($fields != null) {
_queryParams["fields"] = [$fields];
}
_url = 'v3/' +
commons.Escaper.ecapeVariableReserved('$name') +
':getVerificationCode';
var _response = _requester.request(_url, "POST",
body: _body,
queryParams: _queryParams,
uploadOptions: _uploadOptions,
uploadMedia: _uploadMedia,
downloadOptions: _downloadOptions);
return _response.then((data) =>
new GetNotificationChannelVerificationCodeResponse.fromJson(data));
}
/// Lists the notification channels that have been created for the project.
///
/// Request parameters:
///
/// [name] - Required. The project on which to execute the request. The format
/// is: projects/[PROJECT_ID_OR_NUMBER] This names the container in which to
/// look for the notification channels; it does not name a specific channel.
/// To query a specific channel by REST resource name, use the
/// GetNotificationChannel operation.
/// Value must have pattern "^projects/[^/]+$".
///
/// [pageSize] - The maximum number of results to return in a single response.
/// If not set to a positive number, a reasonable value will be chosen by the
/// service.
///
/// [pageToken] - If non-empty, page_token must contain a value returned as
/// the next_page_token in a previous response to request the next set of
/// results.
///
/// [orderBy] - A comma-separated list of fields by which to sort the result.
/// Supports the same set of fields as in filter. Entries can be prefixed with
/// a minus sign to sort in descending rather than ascending order.For more
/// details, see sorting and filtering
/// (https://cloud.google.com/monitoring/api/v3/sorting-and-filtering).
///
/// [filter] - If provided, this field specifies the criteria that must be met
/// by notification channels to be included in the response.For more details,
/// see sorting and filtering
/// (https://cloud.google.com/monitoring/api/v3/sorting-and-filtering).
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [ListNotificationChannelsResponse].
///
/// 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<ListNotificationChannelsResponse> list(core.String name,
{core.int pageSize,
core.String pageToken,
core.String orderBy,
core.String filter,
core.String $fields}) {
var _url;
var _queryParams = new core.Map<core.String, core.List<core.String>>();
var _uploadMedia;
var _uploadOptions;
var _downloadOptions = commons.DownloadOptions.Metadata;
var _body;
if (name == null) {
throw new core.ArgumentError("Parameter name is required.");
}
if (pageSize != null) {
_queryParams["pageSize"] = ["${pageSize}"];
}
if (pageToken != null) {
_queryParams["pageToken"] = [pageToken];
}
if (orderBy != null) {
_queryParams["orderBy"] = [orderBy];
}
if (filter != null) {
_queryParams["filter"] = [filter];
}
if ($fields != null) {
_queryParams["fields"] = [$fields];
}
_url = 'v3/' +
commons.Escaper.ecapeVariableReserved('$name') +
'/notificationChannels';
var _response = _requester.request(_url, "GET",
body: _body,
queryParams: _queryParams,
uploadOptions: _uploadOptions,
uploadMedia: _uploadMedia,
downloadOptions: _downloadOptions);
return _response
.then((data) => new ListNotificationChannelsResponse.fromJson(data));
}
/// Updates a notification channel. Fields not specified in the field mask
/// remain unchanged.
///
/// [request] - The metadata request object.
///
/// Request parameters:
///
/// [name] - The full REST resource name for this channel. The format is:
/// projects/[PROJECT_ID_OR_NUMBER]/notificationChannels/[CHANNEL_ID] The
/// [CHANNEL_ID] is automatically assigned by the server on creation.
/// Value must have pattern "^projects/[^/]+/notificationChannels/[^/]+$".
///
/// [updateMask] - The fields to update.
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [NotificationChannel].
///
/// 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<NotificationChannel> patch(
NotificationChannel request, core.String name,
{core.String updateMask, core.String $fields}) {
var _url;
var _queryParams = new core.Map<core.String, core.List<core.String>>();
var _uploadMedia;
var _uploadOptions;
var _downloadOptions = commons.DownloadOptions.Metadata;
var _body;
if (request != null) {
_body = convert.json.encode((request).toJson());
}
if (name == null) {
throw new core.ArgumentError("Parameter name is required.");
}
if (updateMask != null) {
_queryParams["updateMask"] = [updateMask];
}
if ($fields != null) {
_queryParams["fields"] = [$fields];
}
_url = 'v3/' + commons.Escaper.ecapeVariableReserved('$name');
var _response = _requester.request(_url, "PATCH",
body: _body,
queryParams: _queryParams,
uploadOptions: _uploadOptions,
uploadMedia: _uploadMedia,
downloadOptions: _downloadOptions);
return _response.then((data) => new NotificationChannel.fromJson(data));
}
/// Causes a verification code to be delivered to the channel. The code can
/// then be supplied in VerifyNotificationChannel to verify the channel.
///
/// [request] - The metadata request object.
///
/// Request parameters:
///
/// [name] - Required. The notification channel to which to send a
/// verification code.
/// Value must have pattern "^projects/[^/]+/notificationChannels/[^/]+$".
///
/// [$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> sendVerificationCode(
SendNotificationChannelVerificationCodeRequest request, core.String name,
{core.String $fields}) {
var _url;
var _queryParams = new core.Map<core.String, core.List<core.String>>();
var _uploadMedia;
var _uploadOptions;
var _downloadOptions = commons.DownloadOptions.Metadata;
var _body;
if (request != null) {
_body = convert.json.encode((request).toJson());
}
if (name == null) {
throw new core.ArgumentError("Parameter name is required.");
}
if ($fields != null) {
_queryParams["fields"] = [$fields];
}
_url = 'v3/' +
commons.Escaper.ecapeVariableReserved('$name') +
':sendVerificationCode';
var _response = _requester.request(_url, "POST",
body: _body,
queryParams: _queryParams,
uploadOptions: _uploadOptions,
uploadMedia: _uploadMedia,
downloadOptions: _downloadOptions);
return _response.then((data) => new Empty.fromJson(data));
}
/// Verifies a NotificationChannel by proving receipt of the code delivered to
/// the channel as a result of calling
/// SendNotificationChannelVerificationCode.
///
/// [request] - The metadata request object.
///
/// Request parameters:
///
/// [name] - Required. The notification channel to verify.
/// Value must have pattern "^projects/[^/]+/notificationChannels/[^/]+$".
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [NotificationChannel].
///
/// 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<NotificationChannel> verify(
VerifyNotificationChannelRequest request, core.String name,
{core.String $fields}) {
var _url;
var _queryParams = new core.Map<core.String, core.List<core.String>>();
var _uploadMedia;
var _uploadOptions;
var _downloadOptions = commons.DownloadOptions.Metadata;
var _body;
if (request != null) {
_body = convert.json.encode((request).toJson());
}
if (name == null) {
throw new core.ArgumentError("Parameter name is required.");
}
if ($fields != null) {
_queryParams["fields"] = [$fields];
}
_url = 'v3/' + commons.Escaper.ecapeVariableReserved('$name') + ':verify';
var _response = _requester.request(_url, "POST",
body: _body,
queryParams: _queryParams,
uploadOptions: _uploadOptions,
uploadMedia: _uploadMedia,
downloadOptions: _downloadOptions);
return _response.then((data) => new NotificationChannel.fromJson(data));
}
}
class ProjectsTimeSeriesResourceApi {
final commons.ApiRequester _requester;
ProjectsTimeSeriesResourceApi(commons.ApiRequester client)
: _requester = client;
/// Creates or adds data to one or more time series. The response is empty if
/// all time series in the request were written. If any time series could not
/// be written, a corresponding failure message is included in the error
/// response.
///
/// [request] - The metadata request object.
///
/// Request parameters:
///
/// [name] - Required. The project on which to execute the request. The format
/// is: projects/[PROJECT_ID_OR_NUMBER]
/// Value must have pattern "^projects/[^/]+$".
///
/// [$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> create(CreateTimeSeriesRequest request, core.String name,
{core.String $fields}) {
var _url;
var _queryParams = new core.Map<core.String, core.List<core.String>>();
var _uploadMedia;
var _uploadOptions;
var _downloadOptions = commons.DownloadOptions.Metadata;
var _body;
if (request != null) {
_body = convert.json.encode((request).toJson());
}
if (name == null) {
throw new core.ArgumentError("Parameter name is required.");
}
if ($fields != null) {
_queryParams["fields"] = [$fields];
}
_url =
'v3/' + commons.Escaper.ecapeVariableReserved('$name') + '/timeSeries';
var _response = _requester.request(_url, "POST",
body: _body,
queryParams: _queryParams,
uploadOptions: _uploadOptions,
uploadMedia: _uploadMedia,
downloadOptions: _downloadOptions);
return _response.then((data) => new Empty.fromJson(data));
}
/// Lists time series that match a filter. This method does not require a
/// Workspace.
///
/// Request parameters:
///
/// [name] - Required. The project on which to execute the request. The format
/// is: projects/[PROJECT_ID_OR_NUMBER]
/// Value must have pattern "^projects/[^/]+$".
///
/// [aggregation_alignmentPeriod] - The alignment_period specifies a time
/// interval, in seconds, that is used to divide the data in all the time
/// series into consistent blocks of time. This will be done before the
/// per-series aligner can be applied to the data.The value must be at least
/// 60 seconds. If a per-series aligner other than ALIGN_NONE is specified,
/// this field is required or an error is returned. If no per-series aligner
/// is specified, or the aligner ALIGN_NONE is specified, then this field is
/// ignored.The maximum value of the alignment_period is 104 weeks (2 years)
/// for charts, and 90,000 seconds (25 hours) for alerting policies.
///
/// [aggregation_crossSeriesReducer] - The reduction operation to be used to
/// combine time series into a single time series, where the value of each
/// data point in the resulting series is a function of all the already
/// aligned values in the input time series.Not all reducer operations can be
/// applied to all time series. The valid choices depend on the metric_kind
/// and the value_type of the original time series. Reduction can yield a time
/// series with a different metric_kind or value_type than the input time
/// series.Time series data must first be aligned (see per_series_aligner) in
/// order to perform cross-time series reduction. If cross_series_reducer is
/// specified, then per_series_aligner must be specified, and must not be
/// ALIGN_NONE. An alignment_period must also be specified; otherwise, an
/// error is returned.
/// Possible string values are:
/// - "REDUCE_NONE" : No cross-time series reduction. The output of the
/// Aligner is returned.
/// - "REDUCE_MEAN" : Reduce by computing the mean value across time series
/// for each alignment period. This reducer is valid for DELTA and GAUGE
/// metrics with numeric or distribution values. The value_type of the output
/// is DOUBLE.
/// - "REDUCE_MIN" : Reduce by computing the minimum value across time series
/// for each alignment period. This reducer is valid for DELTA and GAUGE
/// metrics with numeric values. The value_type of the output is the same as
/// the value_type of the input.
/// - "REDUCE_MAX" : Reduce by computing the maximum value across time series
/// for each alignment period. This reducer is valid for DELTA and GAUGE
/// metrics with numeric values. The value_type of the output is the same as
/// the value_type of the input.
/// - "REDUCE_SUM" : Reduce by computing the sum across time series for each
/// alignment period. This reducer is valid for DELTA and GAUGE metrics with
/// numeric and distribution values. The value_type of the output is the same
/// as the value_type of the input.
/// - "REDUCE_STDDEV" : Reduce by computing the standard deviation across time
/// series for each alignment period. This reducer is valid for DELTA and
/// GAUGE metrics with numeric or distribution values. The value_type of the
/// output is DOUBLE.
/// - "REDUCE_COUNT" : Reduce by computing the number of data points across
/// time series for each alignment period. This reducer is valid for DELTA and
/// GAUGE metrics of numeric, Boolean, distribution, and string value_type.
/// The value_type of the output is INT64.
/// - "REDUCE_COUNT_TRUE" : Reduce by computing the number of True-valued data
/// points across time series for each alignment period. This reducer is valid
/// for DELTA and GAUGE metrics of Boolean value_type. The value_type of the
/// output is INT64.
/// - "REDUCE_COUNT_FALSE" : Reduce by computing the number of False-valued
/// data points across time series for each alignment period. This reducer is
/// valid for DELTA and GAUGE metrics of Boolean value_type. The value_type of
/// the output is INT64.
/// - "REDUCE_FRACTION_TRUE" : Reduce by computing the ratio of the number of
/// True-valued data points to the total number of data points for each
/// alignment period. This reducer is valid for DELTA and GAUGE metrics of
/// Boolean value_type. The output value is in the range 0.0, 1.0 and has
/// value_type DOUBLE.
/// - "REDUCE_PERCENTILE_99" : Reduce by computing the 99th percentile
/// (https://en.wikipedia.org/wiki/Percentile) of data points across time
/// series for each alignment period. This reducer is valid for GAUGE and
/// DELTA metrics of numeric and distribution type. The value of the output is
/// DOUBLE.
/// - "REDUCE_PERCENTILE_95" : Reduce by computing the 95th percentile
/// (https://en.wikipedia.org/wiki/Percentile) of data points across time
/// series for each alignment period. This reducer is valid for GAUGE and
/// DELTA metrics of numeric and distribution type. The value of the output is
/// DOUBLE.
/// - "REDUCE_PERCENTILE_50" : Reduce by computing the 50th percentile
/// (https://en.wikipedia.org/wiki/Percentile) of data points across time
/// series for each alignment period. This reducer is valid for GAUGE and
/// DELTA metrics of numeric and distribution type. The value of the output is
/// DOUBLE.
/// - "REDUCE_PERCENTILE_05" : Reduce by computing the 5th percentile
/// (https://en.wikipedia.org/wiki/Percentile) of data points across time
/// series for each alignment period. This reducer is valid for GAUGE and
/// DELTA metrics of numeric and distribution type. The value of the output is
/// DOUBLE.
///
/// [aggregation_perSeriesAligner] - An Aligner describes how to bring the
/// data points in a single time series into temporal alignment. Except for
/// ALIGN_NONE, all alignments cause all the data points in an
/// alignment_period to be mathematically grouped together, resulting in a
/// single data point for each alignment_period with end timestamp at the end
/// of the period.Not all alignment operations may be applied to all time
/// series. The valid choices depend on the metric_kind and value_type of the
/// original time series. Alignment can change the metric_kind or the
/// value_type of the time series.Time series data must be aligned in order to
/// perform cross-time series reduction. If cross_series_reducer is specified,
/// then per_series_aligner must be specified and not equal to ALIGN_NONE and
/// alignment_period must be specified; otherwise, an error is returned.
/// Possible string values are:
/// - "ALIGN_NONE" : No alignment. Raw data is returned. Not valid if
/// cross-series reduction is requested. The value_type of the result is the
/// same as the value_type of the input.
/// - "ALIGN_DELTA" : Align and convert to DELTA. The output is delta = y1 -
/// y0.This alignment is valid for CUMULATIVE and DELTA metrics. If the
/// selected alignment period results in periods with no data, then the
/// aligned value for such a period is created by interpolation. The
/// value_type of the aligned result is the same as the value_type of the
/// input.
/// - "ALIGN_RATE" : Align and convert to a rate. The result is computed as
/// rate = (y1 - y0)/(t1 - t0), or "delta over time". Think of this aligner as
/// providing the slope of the line that passes through the value at the start
/// and at the end of the alignment_period.This aligner is valid for
/// CUMULATIVE and DELTA metrics with numeric values. If the selected
/// alignment period results in periods with no data, then the aligned value
/// for such a period is created by interpolation. The output is a GAUGE
/// metric with value_type DOUBLE.If, by "rate", you mean "percentage change",
/// see the ALIGN_PERCENT_CHANGE aligner instead.
/// - "ALIGN_INTERPOLATE" : Align by interpolating between adjacent points
/// around the alignment period boundary. This aligner is valid for GAUGE
/// metrics with numeric values. The value_type of the aligned result is the
/// same as the value_type of the input.
/// - "ALIGN_NEXT_OLDER" : Align by moving the most recent data point before
/// the end of the alignment period to the boundary at the end of the
/// alignment period. This aligner is valid for GAUGE metrics. The value_type
/// of the aligned result is the same as the value_type of the input.
/// - "ALIGN_MIN" : Align the time series by returning the minimum value in
/// each alignment period. This aligner is valid for GAUGE and DELTA metrics
/// with numeric values. The value_type of the aligned result is the same as
/// the value_type of the input.
/// - "ALIGN_MAX" : Align the time series by returning the maximum value in
/// each alignment period. This aligner is valid for GAUGE and DELTA metrics
/// with numeric values. The value_type of the aligned result is the same as
/// the value_type of the input.
/// - "ALIGN_MEAN" : Align the time series by returning the mean value in each
/// alignment period. This aligner is valid for GAUGE and DELTA metrics with
/// numeric values. The value_type of the aligned result is DOUBLE.
/// - "ALIGN_COUNT" : Align the time series by returning the number of values
/// in each alignment period. This aligner is valid for GAUGE and DELTA
/// metrics with numeric or Boolean values. The value_type of the aligned
/// result is INT64.
/// - "ALIGN_SUM" : Align the time series by returning the sum of the values
/// in each alignment period. This aligner is valid for GAUGE and DELTA
/// metrics with numeric and distribution values. The value_type of the
/// aligned result is the same as the value_type of the input.
/// - "ALIGN_STDDEV" : Align the time series by returning the standard
/// deviation of the values in each alignment period. This aligner is valid
/// for GAUGE and DELTA metrics with numeric values. The value_type of the
/// output is DOUBLE.
/// - "ALIGN_COUNT_TRUE" : Align the time series by returning the number of
/// True values in each alignment period. This aligner is valid for GAUGE
/// metrics with Boolean values. The value_type of the output is INT64.
/// - "ALIGN_COUNT_FALSE" : Align the time series by returning the number of
/// False values in each alignment period. This aligner is valid for GAUGE
/// metrics with Boolean values. The value_type of the output is INT64.
/// - "ALIGN_FRACTION_TRUE" : Align the time series by returning the ratio of
/// the number of True values to the total number of values in each alignment
/// period. This aligner is valid for GAUGE metrics with Boolean values. The
/// output value is in the range 0.0, 1.0 and has value_type DOUBLE.
/// - "ALIGN_PERCENTILE_99" : Align the time series by using percentile
/// aggregation (https://en.wikipedia.org/wiki/Percentile). The resulting data
/// point in each alignment period is the 99th percentile of all data points
/// in the period. This aligner is valid for GAUGE and DELTA metrics with
/// distribution values. The output is a GAUGE metric with value_type DOUBLE.
/// - "ALIGN_PERCENTILE_95" : Align the time series by using percentile
/// aggregation (https://en.wikipedia.org/wiki/Percentile). The resulting data
/// point in each alignment period is the 95th percentile of all data points
/// in the period. This aligner is valid for GAUGE and DELTA metrics with
/// distribution values. The output is a GAUGE metric with value_type DOUBLE.
/// - "ALIGN_PERCENTILE_50" : Align the time series by using percentile
/// aggregation (https://en.wikipedia.org/wiki/Percentile). The resulting data
/// point in each alignment period is the 50th percentile of all data points
/// in the period. This aligner is valid for GAUGE and DELTA metrics with
/// distribution values. The output is a GAUGE metric with value_type DOUBLE.
/// - "ALIGN_PERCENTILE_05" : Align the time series by using percentile
/// aggregation (https://en.wikipedia.org/wiki/Percentile). The resulting data
/// point in each alignment period is the 5th percentile of all data points in
/// the period. This aligner is valid for GAUGE and DELTA metrics with
/// distribution values. The output is a GAUGE metric with value_type DOUBLE.
/// - "ALIGN_PERCENT_CHANGE" : Align and convert to a percentage change. This
/// aligner is valid for GAUGE and DELTA metrics with numeric values. This
/// alignment returns ((current - previous)/previous) * 100, where the value
/// of previous is determined based on the alignment_period.If the values of
/// current and previous are both 0, then the returned value is 0. If only
/// previous is 0, the returned value is infinity.A 10-minute moving mean is
/// computed at each point of the alignment period prior to the above
/// calculation to smooth the metric and prevent false positives from very
/// short-lived spikes. The moving mean is only applicable for data whose
/// values are >= 0. Any values < 0 are treated as a missing datapoint, and
/// are ignored. While DELTA metrics are accepted by this alignment, special
/// care should be taken that the values for the metric will always be
/// positive. The output is a GAUGE metric with value_type DOUBLE.
///
/// [pageSize] - A positive number that is the maximum number of results to
/// return. If page_size is empty or more than 100,000 results, the effective
/// page_size is 100,000 results. If view is set to FULL, this is the maximum
/// number of Points returned. If view is set to HEADERS, this is the maximum
/// number of TimeSeries returned.
///
/// [view] - Required. Specifies which information is returned about the time
/// series.
/// Possible string values are:
/// - "FULL" : Returns the identity of the metric(s), the time series, and the
/// time series data.
/// - "HEADERS" : Returns the identity of the metric and the time series
/// resource, but not the time series data.
///
/// [aggregation_groupByFields] - The set of fields to preserve when
/// cross_series_reducer is specified. The group_by_fields determine how the
/// time series are partitioned into subsets prior to applying the aggregation
/// operation. Each subset contains time series that have the same value for
/// each of the grouping fields. Each individual time series is a member of
/// exactly one subset. The cross_series_reducer is applied to each subset of
/// time series. It is not possible to reduce across different resource types,
/// so this field implicitly contains resource.type. Fields not specified in
/// group_by_fields are aggregated away. If group_by_fields is not specified
/// and all the time series have the same resource type, then the time series
/// are aggregated into a single output time series. If cross_series_reducer
/// is not defined, this field is ignored.
///
/// [orderBy] - Unsupported: must be left blank. The points in each time
/// series are currently returned in reverse time order (most recent to
/// oldest).
///
/// [filter] - Required. A monitoring filter
/// (https://cloud.google.com/monitoring/api/v3/filters) that specifies which
/// time series should be returned. The filter must specify a single metric
/// type, and can additionally specify metric labels and other information.
/// For example: metric.type =
/// "compute.googleapis.com/instance/cpu/usage_time" AND
/// metric.labels.instance_name = "my-instance-name"
///
/// [pageToken] - If this field is not empty then it must contain the
/// nextPageToken value returned by a previous call to this method. Using this
/// field causes the method to return additional results from the previous
/// method call.
///
/// [interval_endTime] - Required. The end of the time interval.
///
/// [interval_startTime] - Optional. The beginning of the time interval. The
/// default value for the start time is the end time. The start time must not
/// be later than the end time.
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [ListTimeSeriesResponse].
///
/// 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<ListTimeSeriesResponse> list(core.String name,
{core.String aggregation_alignmentPeriod,
core.String aggregation_crossSeriesReducer,
core.String aggregation_perSeriesAligner,
core.int pageSize,
core.String view,
core.List<core.String> aggregation_groupByFields,
core.String orderBy,
core.String filter,
core.String pageToken,
core.String interval_endTime,
core.String interval_startTime,
core.String $fields}) {
var _url;
var _queryParams = new core.Map<core.String, core.List<core.String>>();
var _uploadMedia;
var _uploadOptions;
var _downloadOptions = commons.DownloadOptions.Metadata;
var _body;
if (name == null) {
throw new core.ArgumentError("Parameter name is required.");
}
if (aggregation_alignmentPeriod != null) {
_queryParams["aggregation.alignmentPeriod"] = [
aggregation_alignmentPeriod
];
}
if (aggregation_crossSeriesReducer != null) {
_queryParams["aggregation.crossSeriesReducer"] = [
aggregation_crossSeriesReducer
];
}
if (aggregation_perSeriesAligner != null) {
_queryParams["aggregation.perSeriesAligner"] = [
aggregation_perSeriesAligner
];
}
if (pageSize != null) {
_queryParams["pageSize"] = ["${pageSize}"];
}
if (view != null) {
_queryParams["view"] = [view];
}
if (aggregation_groupByFields != null) {
_queryParams["aggregation.groupByFields"] = aggregation_groupByFields;
}
if (orderBy != null) {
_queryParams["orderBy"] = [orderBy];
}
if (filter != null) {
_queryParams["filter"] = [filter];
}
if (pageToken != null) {
_queryParams["pageToken"] = [pageToken];
}
if (interval_endTime != null) {
_queryParams["interval.endTime"] = [interval_endTime];
}
if (interval_startTime != null) {
_queryParams["interval.startTime"] = [interval_startTime];
}
if ($fields != null) {
_queryParams["fields"] = [$fields];
}
_url =
'v3/' + commons.Escaper.ecapeVariableReserved('$name') + '/timeSeries';
var _response = _requester.request(_url, "GET",
body: _body,
queryParams: _queryParams,
uploadOptions: _uploadOptions,
uploadMedia: _uploadMedia,
downloadOptions: _downloadOptions);
return _response.then((data) => new ListTimeSeriesResponse.fromJson(data));
}
/// Queries time series using Monitoring Query Language. This method does not
/// require a Workspace.
///
/// [request] - The metadata request object.
///
/// Request parameters:
///
/// [name] - Required. The project on which to execute the request. The format
/// is: projects/[PROJECT_ID_OR_NUMBER]
/// Value must have pattern "^projects/[^/]+$".
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [QueryTimeSeriesResponse].
///
/// 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<QueryTimeSeriesResponse> query(
QueryTimeSeriesRequest request, core.String name,
{core.String $fields}) {
var _url;
var _queryParams = new core.Map<core.String, core.List<core.String>>();
var _uploadMedia;
var _uploadOptions;
var _downloadOptions = commons.DownloadOptions.Metadata;
var _body;
if (request != null) {
_body = convert.json.encode((request).toJson());
}
if (name == null) {
throw new core.ArgumentError("Parameter name is required.");
}
if ($fields != null) {
_queryParams["fields"] = [$fields];
}
_url = 'v3/' +
commons.Escaper.ecapeVariableReserved('$name') +
'/timeSeries:query';
var _response = _requester.request(_url, "POST",
body: _body,
queryParams: _queryParams,
uploadOptions: _uploadOptions,
uploadMedia: _uploadMedia,
downloadOptions: _downloadOptions);
return _response.then((data) => new QueryTimeSeriesResponse.fromJson(data));
}
}
class ProjectsUptimeCheckConfigsResourceApi {
final commons.ApiRequester _requester;
ProjectsUptimeCheckConfigsResourceApi(commons.ApiRequester client)
: _requester = client;
/// Creates a new Uptime check configuration.
///
/// [request] - The metadata request object.
///
/// Request parameters:
///
/// [parent] - Required. The project in which to create the Uptime check. The
/// format is: projects/[PROJECT_ID_OR_NUMBER]
/// Value must have pattern "^projects/[^/]+$".
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [UptimeCheckConfig].
///
/// 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<UptimeCheckConfig> create(
UptimeCheckConfig request, core.String parent,
{core.String $fields}) {
var _url;
var _queryParams = new core.Map<core.String, core.List<core.String>>();
var _uploadMedia;
var _uploadOptions;
var _downloadOptions = commons.DownloadOptions.Metadata;
var _body;
if (request != null) {
_body = convert.json.encode((request).toJson());
}
if (parent == null) {
throw new core.ArgumentError("Parameter parent is required.");
}
if ($fields != null) {
_queryParams["fields"] = [$fields];
}
_url = 'v3/' +
commons.Escaper.ecapeVariableReserved('$parent') +
'/uptimeCheckConfigs';
var _response = _requester.request(_url, "POST",
body: _body,
queryParams: _queryParams,
uploadOptions: _uploadOptions,
uploadMedia: _uploadMedia,
downloadOptions: _downloadOptions);
return _response.then((data) => new UptimeCheckConfig.fromJson(data));
}
/// Deletes an Uptime check configuration. Note that this method will fail if
/// the Uptime check configuration is referenced by an alert policy or other
/// dependent configs that would be rendered invalid by the deletion.
///
/// Request parameters:
///
/// [name] - Required. The Uptime check configuration to delete. The format
/// is: projects/[PROJECT_ID_OR_NUMBER]/uptimeCheckConfigs/[UPTIME_CHECK_ID]
/// Value must have pattern "^projects/[^/]+/uptimeCheckConfigs/[^/]+$".
///
/// [$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 name, {core.String $fields}) {
var _url;
var _queryParams = new core.Map<core.String, core.List<core.String>>();
var _uploadMedia;
var _uploadOptions;
var _downloadOptions = commons.DownloadOptions.Metadata;
var _body;
if (name == null) {
throw new core.ArgumentError("Parameter name is required.");
}
if ($fields != null) {
_queryParams["fields"] = [$fields];
}
_url = 'v3/' + commons.Escaper.ecapeVariableReserved('$name');
var _response = _requester.request(_url, "DELETE",
body: _body,
queryParams: _queryParams,
uploadOptions: _uploadOptions,
uploadMedia: _uploadMedia,
downloadOptions: _downloadOptions);
return _response.then((data) => new Empty.fromJson(data));
}
/// Gets a single Uptime check configuration.
///
/// Request parameters:
///
/// [name] - Required. The Uptime check configuration to retrieve. The format
/// is: projects/[PROJECT_ID_OR_NUMBER]/uptimeCheckConfigs/[UPTIME_CHECK_ID]
/// Value must have pattern "^projects/[^/]+/uptimeCheckConfigs/[^/]+$".
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [UptimeCheckConfig].
///
/// 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<UptimeCheckConfig> get(core.String name, {core.String $fields}) {
var _url;
var _queryParams = new core.Map<core.String, core.List<core.String>>();
var _uploadMedia;
var _uploadOptions;
var _downloadOptions = commons.DownloadOptions.Metadata;
var _body;
if (name == null) {
throw new core.ArgumentError("Parameter name is required.");
}
if ($fields != null) {
_queryParams["fields"] = [$fields];
}
_url = 'v3/' + commons.Escaper.ecapeVariableReserved('$name');
var _response = _requester.request(_url, "GET",
body: _body,
queryParams: _queryParams,
uploadOptions: _uploadOptions,
uploadMedia: _uploadMedia,
downloadOptions: _downloadOptions);
return _response.then((data) => new UptimeCheckConfig.fromJson(data));
}
/// Lists the existing valid Uptime check configurations for the project
/// (leaving out any invalid configurations).
///
/// Request parameters:
///
/// [parent] - Required. The project whose Uptime check configurations are
/// listed. The format is: projects/[PROJECT_ID_OR_NUMBER]
/// Value must have pattern "^projects/[^/]+$".
///
/// [pageToken] - If this field is not empty then it must contain the
/// nextPageToken value returned by a previous call to this method. Using this
/// field causes the method to return more results from the previous method
/// call.
///
/// [pageSize] - The maximum number of results to return in a single response.
/// The server may further constrain the maximum number of results returned in
/// a single page. If the page_size is <=0, the server will decide the number
/// of results to be returned.
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [ListUptimeCheckConfigsResponse].
///
/// 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<ListUptimeCheckConfigsResponse> list(core.String parent,
{core.String pageToken, core.int pageSize, core.String $fields}) {
var _url;
var _queryParams = new core.Map<core.String, core.List<core.String>>();
var _uploadMedia;
var _uploadOptions;
var _downloadOptions = commons.DownloadOptions.Metadata;
var _body;
if (parent == null) {
throw new core.ArgumentError("Parameter parent is required.");
}
if (pageToken != null) {
_queryParams["pageToken"] = [pageToken];
}
if (pageSize != null) {
_queryParams["pageSize"] = ["${pageSize}"];
}
if ($fields != null) {
_queryParams["fields"] = [$fields];
}
_url = 'v3/' +
commons.Escaper.ecapeVariableReserved('$parent') +
'/uptimeCheckConfigs';
var _response = _requester.request(_url, "GET",
body: _body,
queryParams: _queryParams,
uploadOptions: _uploadOptions,
uploadMedia: _uploadMedia,
downloadOptions: _downloadOptions);
return _response
.then((data) => new ListUptimeCheckConfigsResponse.fromJson(data));
}
/// Updates an Uptime check configuration. You can either replace the entire
/// configuration with a new one or replace only certain fields in the current
/// configuration by specifying the fields to be updated via updateMask.
/// Returns the updated configuration.
///
/// [request] - The metadata request object.
///
/// Request parameters:
///
/// [name] - A unique resource name for this Uptime check configuration. The
/// format is:
/// projects/[PROJECT_ID_OR_NUMBER]/uptimeCheckConfigs/[UPTIME_CHECK_ID] This
/// field should be omitted when creating the Uptime check configuration; on
/// create, the resource name is assigned by the server and included in the
/// response.
/// Value must have pattern "^projects/[^/]+/uptimeCheckConfigs/[^/]+$".
///
/// [updateMask] - Optional. If present, only the listed fields in the current
/// Uptime check configuration are updated with values from the new
/// configuration. If this field is empty, then the current configuration is
/// completely replaced with the new configuration.
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [UptimeCheckConfig].
///
/// 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<UptimeCheckConfig> patch(
UptimeCheckConfig request, core.String name,
{core.String updateMask, core.String $fields}) {
var _url;
var _queryParams = new core.Map<core.String, core.List<core.String>>();
var _uploadMedia;
var _uploadOptions;
var _downloadOptions = commons.DownloadOptions.Metadata;
var _body;
if (request != null) {
_body = convert.json.encode((request).toJson());
}
if (name == null) {
throw new core.ArgumentError("Parameter name is required.");
}
if (updateMask != null) {
_queryParams["updateMask"] = [updateMask];
}
if ($fields != null) {
_queryParams["fields"] = [$fields];
}
_url = 'v3/' + commons.Escaper.ecapeVariableReserved('$name');
var _response = _requester.request(_url, "PATCH",
body: _body,
queryParams: _queryParams,
uploadOptions: _uploadOptions,
uploadMedia: _uploadMedia,
downloadOptions: _downloadOptions);
return _response.then((data) => new UptimeCheckConfig.fromJson(data));
}
}
class ServicesResourceApi {
final commons.ApiRequester _requester;
ServicesServiceLevelObjectivesResourceApi get serviceLevelObjectives =>
new ServicesServiceLevelObjectivesResourceApi(_requester);
ServicesResourceApi(commons.ApiRequester client) : _requester = client;
/// Create a Service.
///
/// [request] - The metadata request object.
///
/// Request parameters:
///
/// [parent] - Required. Resource name of the parent workspace. The format is:
/// projects/[PROJECT_ID_OR_NUMBER]
/// Value must have pattern "^[^/]+/[^/]+$".
///
/// [serviceId] - Optional. The Service id to use for this Service. If
/// omitted, an id will be generated instead. Must match the pattern
/// [a-z0-9\-]+
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [Service].
///
/// 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<Service> create(Service request, core.String parent,
{core.String serviceId, core.String $fields}) {
var _url;
var _queryParams = new core.Map<core.String, core.List<core.String>>();
var _uploadMedia;
var _uploadOptions;
var _downloadOptions = commons.DownloadOptions.Metadata;
var _body;
if (request != null) {
_body = convert.json.encode((request).toJson());
}
if (parent == null) {
throw new core.ArgumentError("Parameter parent is required.");
}
if (serviceId != null) {
_queryParams["serviceId"] = [serviceId];
}
if ($fields != null) {
_queryParams["fields"] = [$fields];
}
_url =
'v3/' + commons.Escaper.ecapeVariableReserved('$parent') + '/services';
var _response = _requester.request(_url, "POST",
body: _body,
queryParams: _queryParams,
uploadOptions: _uploadOptions,
uploadMedia: _uploadMedia,
downloadOptions: _downloadOptions);
return _response.then((data) => new Service.fromJson(data));
}
/// Soft delete this Service.
///
/// Request parameters:
///
/// [name] - Required. Resource name of the Service to delete. The format is:
/// projects/[PROJECT_ID_OR_NUMBER]/services/[SERVICE_ID]
/// Value must have pattern "^[^/]+/[^/]+/services/[^/]+$".
///
/// [$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 name, {core.String $fields}) {
var _url;
var _queryParams = new core.Map<core.String, core.List<core.String>>();
var _uploadMedia;
var _uploadOptions;
var _downloadOptions = commons.DownloadOptions.Metadata;
var _body;
if (name == null) {
throw new core.ArgumentError("Parameter name is required.");
}
if ($fields != null) {
_queryParams["fields"] = [$fields];
}
_url = 'v3/' + commons.Escaper.ecapeVariableReserved('$name');
var _response = _requester.request(_url, "DELETE",
body: _body,
queryParams: _queryParams,
uploadOptions: _uploadOptions,
uploadMedia: _uploadMedia,
downloadOptions: _downloadOptions);
return _response.then((data) => new Empty.fromJson(data));
}
/// Get the named Service.
///
/// Request parameters:
///
/// [name] - Required. Resource name of the Service. The format is:
/// projects/[PROJECT_ID_OR_NUMBER]/services/[SERVICE_ID]
/// Value must have pattern "^[^/]+/[^/]+/services/[^/]+$".
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [Service].
///
/// 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<Service> get(core.String name, {core.String $fields}) {
var _url;
var _queryParams = new core.Map<core.String, core.List<core.String>>();
var _uploadMedia;
var _uploadOptions;
var _downloadOptions = commons.DownloadOptions.Metadata;
var _body;
if (name == null) {
throw new core.ArgumentError("Parameter name is required.");
}
if ($fields != null) {
_queryParams["fields"] = [$fields];
}
_url = 'v3/' + commons.Escaper.ecapeVariableReserved('$name');
var _response = _requester.request(_url, "GET",
body: _body,
queryParams: _queryParams,
uploadOptions: _uploadOptions,
uploadMedia: _uploadMedia,
downloadOptions: _downloadOptions);
return _response.then((data) => new Service.fromJson(data));
}
/// List Services for this workspace.
///
/// Request parameters:
///
/// [parent] - Required. Resource name of the parent containing the listed
/// services, either a project or a Monitoring Workspace. The formats are:
/// projects/[PROJECT_ID_OR_NUMBER] workspaces/[HOST_PROJECT_ID_OR_NUMBER]
/// Value must have pattern "^[^/]+/[^/]+$".
///
/// [filter] - A filter specifying what Services to return. The filter
/// currently supports the following fields: - `identifier_case` -
/// `app_engine.module_id` - `cloud_endpoints.service` (reserved for future
/// use) - `mesh_istio.mesh_uid` - `mesh_istio.service_namespace` -
/// `mesh_istio.service_name` - `cluster_istio.location` (deprecated) -
/// `cluster_istio.cluster_name` (deprecated) -
/// `cluster_istio.service_namespace` (deprecated) -
/// `cluster_istio.service_name` (deprecated) identifier_case refers to which
/// option in the identifier oneof is populated. For example, the filter
/// identifier_case = "CUSTOM" would match all services with a value for the
/// custom field. Valid options are "CUSTOM", "APP_ENGINE", "MESH_ISTIO", plus
/// "CLUSTER_ISTIO" (deprecated) and "CLOUD_ENDPOINTS" (reserved for future
/// use).
///
/// [pageSize] - A non-negative number that is the maximum number of results
/// to return. When 0, use default page size.
///
/// [pageToken] - If this field is not empty then it must contain the
/// nextPageToken value returned by a previous call to this method. Using this
/// field causes the method to return additional results from the previous
/// method call.
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [ListServicesResponse].
///
/// 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<ListServicesResponse> list(core.String parent,
{core.String filter,
core.int pageSize,
core.String pageToken,
core.String $fields}) {
var _url;
var _queryParams = new core.Map<core.String, core.List<core.String>>();
var _uploadMedia;
var _uploadOptions;
var _downloadOptions = commons.DownloadOptions.Metadata;
var _body;
if (parent == null) {
throw new core.ArgumentError("Parameter parent is required.");
}
if (filter != null) {
_queryParams["filter"] = [filter];
}
if (pageSize != null) {
_queryParams["pageSize"] = ["${pageSize}"];
}
if (pageToken != null) {
_queryParams["pageToken"] = [pageToken];
}
if ($fields != null) {
_queryParams["fields"] = [$fields];
}
_url =
'v3/' + commons.Escaper.ecapeVariableReserved('$parent') + '/services';
var _response = _requester.request(_url, "GET",
body: _body,
queryParams: _queryParams,
uploadOptions: _uploadOptions,
uploadMedia: _uploadMedia,
downloadOptions: _downloadOptions);
return _response.then((data) => new ListServicesResponse.fromJson(data));
}
/// Update this Service.
///
/// [request] - The metadata request object.
///
/// Request parameters:
///
/// [name] - Resource name for this Service. The format is:
/// projects/[PROJECT_ID_OR_NUMBER]/services/[SERVICE_ID]
/// Value must have pattern "^[^/]+/[^/]+/services/[^/]+$".
///
/// [updateMask] - A set of field paths defining which fields to use for the
/// update.
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [Service].
///
/// 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<Service> patch(Service request, core.String name,
{core.String updateMask, core.String $fields}) {
var _url;
var _queryParams = new core.Map<core.String, core.List<core.String>>();
var _uploadMedia;
var _uploadOptions;
var _downloadOptions = commons.DownloadOptions.Metadata;
var _body;
if (request != null) {
_body = convert.json.encode((request).toJson());
}
if (name == null) {
throw new core.ArgumentError("Parameter name is required.");
}
if (updateMask != null) {
_queryParams["updateMask"] = [updateMask];
}
if ($fields != null) {
_queryParams["fields"] = [$fields];
}
_url = 'v3/' + commons.Escaper.ecapeVariableReserved('$name');
var _response = _requester.request(_url, "PATCH",
body: _body,
queryParams: _queryParams,
uploadOptions: _uploadOptions,
uploadMedia: _uploadMedia,
downloadOptions: _downloadOptions);
return _response.then((data) => new Service.fromJson(data));
}
}
class ServicesServiceLevelObjectivesResourceApi {
final commons.ApiRequester _requester;
ServicesServiceLevelObjectivesResourceApi(commons.ApiRequester client)
: _requester = client;
/// Create a ServiceLevelObjective for the given Service.
///
/// [request] - The metadata request object.
///
/// Request parameters:
///
/// [parent] - Required. Resource name of the parent Service. The format is:
/// projects/[PROJECT_ID_OR_NUMBER]/services/[SERVICE_ID]
/// Value must have pattern "^[^/]+/[^/]+/services/[^/]+$".
///
/// [serviceLevelObjectiveId] - Optional. The ServiceLevelObjective id to use
/// for this ServiceLevelObjective. If omitted, an id will be generated
/// instead. Must match the pattern [a-z0-9\-]+
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [ServiceLevelObjective].
///
/// 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<ServiceLevelObjective> create(
ServiceLevelObjective request, core.String parent,
{core.String serviceLevelObjectiveId, core.String $fields}) {
var _url;
var _queryParams = new core.Map<core.String, core.List<core.String>>();
var _uploadMedia;
var _uploadOptions;
var _downloadOptions = commons.DownloadOptions.Metadata;
var _body;
if (request != null) {
_body = convert.json.encode((request).toJson());
}
if (parent == null) {
throw new core.ArgumentError("Parameter parent is required.");
}
if (serviceLevelObjectiveId != null) {
_queryParams["serviceLevelObjectiveId"] = [serviceLevelObjectiveId];
}
if ($fields != null) {
_queryParams["fields"] = [$fields];
}
_url = 'v3/' +
commons.Escaper.ecapeVariableReserved('$parent') +
'/serviceLevelObjectives';
var _response = _requester.request(_url, "POST",
body: _body,
queryParams: _queryParams,
uploadOptions: _uploadOptions,
uploadMedia: _uploadMedia,
downloadOptions: _downloadOptions);
return _response.then((data) => new ServiceLevelObjective.fromJson(data));
}
/// Delete the given ServiceLevelObjective.
///
/// Request parameters:
///
/// [name] - Required. Resource name of the ServiceLevelObjective to delete.
/// The format is:
/// projects/[PROJECT_ID_OR_NUMBER]/services/[SERVICE_ID]/serviceLevelObjectives/[SLO_NAME]
/// Value must have pattern
/// "^[^/]+/[^/]+/services/[^/]+/serviceLevelObjectives/[^/]+$".
///
/// [$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 name, {core.String $fields}) {
var _url;
var _queryParams = new core.Map<core.String, core.List<core.String>>();
var _uploadMedia;
var _uploadOptions;
var _downloadOptions = commons.DownloadOptions.Metadata;
var _body;
if (name == null) {
throw new core.ArgumentError("Parameter name is required.");
}
if ($fields != null) {
_queryParams["fields"] = [$fields];
}
_url = 'v3/' + commons.Escaper.ecapeVariableReserved('$name');
var _response = _requester.request(_url, "DELETE",
body: _body,
queryParams: _queryParams,
uploadOptions: _uploadOptions,
uploadMedia: _uploadMedia,
downloadOptions: _downloadOptions);
return _response.then((data) => new Empty.fromJson(data));
}
/// Get a ServiceLevelObjective by name.
///
/// Request parameters:
///
/// [name] - Required. Resource name of the ServiceLevelObjective to get. The
/// format is:
/// projects/[PROJECT_ID_OR_NUMBER]/services/[SERVICE_ID]/serviceLevelObjectives/[SLO_NAME]
/// Value must have pattern
/// "^[^/]+/[^/]+/services/[^/]+/serviceLevelObjectives/[^/]+$".
///
/// [view] - View of the ServiceLevelObjective to return. If DEFAULT, return
/// the ServiceLevelObjective as originally defined. If EXPLICIT and the
/// ServiceLevelObjective is defined in terms of a BasicSli, replace the
/// BasicSli with a RequestBasedSli spelling out how the SLI is computed.
/// Possible string values are:
/// - "VIEW_UNSPECIFIED" : Same as FULL.
/// - "FULL" : Return the embedded ServiceLevelIndicator in the form in which
/// it was defined. If it was defined using a BasicSli, return that BasicSli.
/// - "EXPLICIT" : For ServiceLevelIndicators using BasicSli articulation,
/// instead return the ServiceLevelIndicator with its mode of computation
/// fully spelled out as a RequestBasedSli. For ServiceLevelIndicators using
/// RequestBasedSli or WindowsBasedSli, return the ServiceLevelIndicator as it
/// was provided.
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [ServiceLevelObjective].
///
/// 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<ServiceLevelObjective> get(core.String name,
{core.String view, core.String $fields}) {
var _url;
var _queryParams = new core.Map<core.String, core.List<core.String>>();
var _uploadMedia;
var _uploadOptions;
var _downloadOptions = commons.DownloadOptions.Metadata;
var _body;
if (name == null) {
throw new core.ArgumentError("Parameter name is required.");
}
if (view != null) {
_queryParams["view"] = [view];
}
if ($fields != null) {
_queryParams["fields"] = [$fields];
}
_url = 'v3/' + commons.Escaper.ecapeVariableReserved('$name');
var _response = _requester.request(_url, "GET",
body: _body,
queryParams: _queryParams,
uploadOptions: _uploadOptions,
uploadMedia: _uploadMedia,
downloadOptions: _downloadOptions);
return _response.then((data) => new ServiceLevelObjective.fromJson(data));
}
/// List the ServiceLevelObjectives for the given Service.
///
/// Request parameters:
///
/// [parent] - Required. Resource name of the parent containing the listed
/// SLOs, either a project or a Monitoring Workspace. The formats are:
/// projects/[PROJECT_ID_OR_NUMBER]/services/[SERVICE_ID]
/// workspaces/[HOST_PROJECT_ID_OR_NUMBER]/services/-
/// Value must have pattern "^[^/]+/[^/]+/services/[^/]+$".
///
/// [pageSize] - A non-negative number that is the maximum number of results
/// to return. When 0, use default page size.
///
/// [pageToken] - If this field is not empty then it must contain the
/// nextPageToken value returned by a previous call to this method. Using this
/// field causes the method to return additional results from the previous
/// method call.
///
/// [filter] - A filter specifying what ServiceLevelObjectives to return.
///
/// [view] - View of the ServiceLevelObjectives to return. If DEFAULT, return
/// each ServiceLevelObjective as originally defined. If EXPLICIT and the
/// ServiceLevelObjective is defined in terms of a BasicSli, replace the
/// BasicSli with a RequestBasedSli spelling out how the SLI is computed.
/// Possible string values are:
/// - "VIEW_UNSPECIFIED" : Same as FULL.
/// - "FULL" : Return the embedded ServiceLevelIndicator in the form in which
/// it was defined. If it was defined using a BasicSli, return that BasicSli.
/// - "EXPLICIT" : For ServiceLevelIndicators using BasicSli articulation,
/// instead return the ServiceLevelIndicator with its mode of computation
/// fully spelled out as a RequestBasedSli. For ServiceLevelIndicators using
/// RequestBasedSli or WindowsBasedSli, return the ServiceLevelIndicator as it
/// was provided.
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [ListServiceLevelObjectivesResponse].
///
/// 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<ListServiceLevelObjectivesResponse> list(core.String parent,
{core.int pageSize,
core.String pageToken,
core.String filter,
core.String view,
core.String $fields}) {
var _url;
var _queryParams = new core.Map<core.String, core.List<core.String>>();
var _uploadMedia;
var _uploadOptions;
var _downloadOptions = commons.DownloadOptions.Metadata;
var _body;
if (parent == null) {
throw new core.ArgumentError("Parameter parent is required.");
}
if (pageSize != null) {
_queryParams["pageSize"] = ["${pageSize}"];
}
if (pageToken != null) {
_queryParams["pageToken"] = [pageToken];
}
if (filter != null) {
_queryParams["filter"] = [filter];
}
if (view != null) {
_queryParams["view"] = [view];
}
if ($fields != null) {
_queryParams["fields"] = [$fields];
}
_url = 'v3/' +
commons.Escaper.ecapeVariableReserved('$parent') +
'/serviceLevelObjectives';
var _response = _requester.request(_url, "GET",
body: _body,
queryParams: _queryParams,
uploadOptions: _uploadOptions,
uploadMedia: _uploadMedia,
downloadOptions: _downloadOptions);
return _response
.then((data) => new ListServiceLevelObjectivesResponse.fromJson(data));
}
/// Update the given ServiceLevelObjective.
///
/// [request] - The metadata request object.
///
/// Request parameters:
///
/// [name] - Resource name for this ServiceLevelObjective. The format is:
/// projects/[PROJECT_ID_OR_NUMBER]/services/[SERVICE_ID]/serviceLevelObjectives/[SLO_NAME]
/// Value must have pattern
/// "^[^/]+/[^/]+/services/[^/]+/serviceLevelObjectives/[^/]+$".
///
/// [updateMask] - A set of field paths defining which fields to use for the
/// update.
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [ServiceLevelObjective].
///
/// 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<ServiceLevelObjective> patch(
ServiceLevelObjective request, core.String name,
{core.String updateMask, core.String $fields}) {
var _url;
var _queryParams = new core.Map<core.String, core.List<core.String>>();
var _uploadMedia;
var _uploadOptions;
var _downloadOptions = commons.DownloadOptions.Metadata;
var _body;
if (request != null) {
_body = convert.json.encode((request).toJson());
}
if (name == null) {
throw new core.ArgumentError("Parameter name is required.");
}
if (updateMask != null) {
_queryParams["updateMask"] = [updateMask];
}
if ($fields != null) {
_queryParams["fields"] = [$fields];
}
_url = 'v3/' + commons.Escaper.ecapeVariableReserved('$name');
var _response = _requester.request(_url, "PATCH",
body: _body,
queryParams: _queryParams,
uploadOptions: _uploadOptions,
uploadMedia: _uploadMedia,
downloadOptions: _downloadOptions);
return _response.then((data) => new ServiceLevelObjective.fromJson(data));
}
}
class UptimeCheckIpsResourceApi {
final commons.ApiRequester _requester;
UptimeCheckIpsResourceApi(commons.ApiRequester client) : _requester = client;
/// Returns the list of IP addresses that checkers run from
///
/// Request parameters:
///
/// [pageSize] - The maximum number of results to return in a single response.
/// The server may further constrain the maximum number of results returned in
/// a single page. If the page_size is <=0, the server will decide the number
/// of results to be returned. NOTE: this field is not yet implemented
///
/// [pageToken] - If this field is not empty then it must contain the
/// nextPageToken value returned by a previous call to this method. Using this
/// field causes the method to return more results from the previous method
/// call. NOTE: this field is not yet implemented
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [ListUptimeCheckIpsResponse].
///
/// 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<ListUptimeCheckIpsResponse> list(
{core.int pageSize, core.String pageToken, core.String $fields}) {
var _url;
var _queryParams = new core.Map<core.String, core.List<core.String>>();
var _uploadMedia;
var _uploadOptions;
var _downloadOptions = commons.DownloadOptions.Metadata;
var _body;
if (pageSize != null) {
_queryParams["pageSize"] = ["${pageSize}"];
}
if (pageToken != null) {
_queryParams["pageToken"] = [pageToken];
}
if ($fields != null) {
_queryParams["fields"] = [$fields];
}
_url = 'v3/uptimeCheckIps';
var _response = _requester.request(_url, "GET",
body: _body,
queryParams: _queryParams,
uploadOptions: _uploadOptions,
uploadMedia: _uploadMedia,
downloadOptions: _downloadOptions);
return _response
.then((data) => new ListUptimeCheckIpsResponse.fromJson(data));
}
}
/// Describes how to combine multiple time series to provide a different view of
/// the data. Aggregation of time series is done in two steps. First, each time
/// series in the set is aligned to the same time interval boundaries, then the
/// set of time series is optionally reduced in number.Alignment consists of
/// applying the per_series_aligner operation to each time series after its data
/// has been divided into regular alignment_period time intervals. This process
/// takes all of the data points in an alignment period, applies a mathematical
/// transformation such as averaging, minimum, maximum, delta, etc., and
/// converts them into a single data point per period.Reduction is when the
/// aligned and transformed time series can optionally be combined, reducing the
/// number of time series through similar mathematical transformations.
/// Reduction involves applying a cross_series_reducer to all the time series,
/// optionally sorting the time series into subsets with group_by_fields, and
/// applying the reducer to each subset.The raw time series data can contain a
/// huge amount of information from multiple sources. Alignment and reduction
/// transforms this mass of data into a more manageable and representative
/// collection of data, for example "the 95% latency across the average of all
/// tasks in a cluster". This representative data can be more easily graphed and
/// comprehended, and the individual time series data is still available for
/// later drilldown. For more details, see Filtering and aggregation
/// (https://cloud.google.com/monitoring/api/v3/aggregation).
class Aggregation {
/// The alignment_period specifies a time interval, in seconds, that is used
/// to divide the data in all the time series into consistent blocks of time.
/// This will be done before the per-series aligner can be applied to the
/// data.The value must be at least 60 seconds. If a per-series aligner other
/// than ALIGN_NONE is specified, this field is required or an error is
/// returned. If no per-series aligner is specified, or the aligner ALIGN_NONE
/// is specified, then this field is ignored.The maximum value of the
/// alignment_period is 104 weeks (2 years) for charts, and 90,000 seconds (25
/// hours) for alerting policies.
core.String alignmentPeriod;
/// The reduction operation to be used to combine time series into a single
/// time series, where the value of each data point in the resulting series is
/// a function of all the already aligned values in the input time series.Not
/// all reducer operations can be applied to all time series. The valid
/// choices depend on the metric_kind and the value_type of the original time
/// series. Reduction can yield a time series with a different metric_kind or
/// value_type than the input time series.Time series data must first be
/// aligned (see per_series_aligner) in order to perform cross-time series
/// reduction. If cross_series_reducer is specified, then per_series_aligner
/// must be specified, and must not be ALIGN_NONE. An alignment_period must
/// also be specified; otherwise, an error is returned.
/// Possible string values are:
/// - "REDUCE_NONE" : No cross-time series reduction. The output of the
/// Aligner is returned.
/// - "REDUCE_MEAN" : Reduce by computing the mean value across time series
/// for each alignment period. This reducer is valid for DELTA and GAUGE
/// metrics with numeric or distribution values. The value_type of the output
/// is DOUBLE.
/// - "REDUCE_MIN" : Reduce by computing the minimum value across time series
/// for each alignment period. This reducer is valid for DELTA and GAUGE
/// metrics with numeric values. The value_type of the output is the same as
/// the value_type of the input.
/// - "REDUCE_MAX" : Reduce by computing the maximum value across time series
/// for each alignment period. This reducer is valid for DELTA and GAUGE
/// metrics with numeric values. The value_type of the output is the same as
/// the value_type of the input.
/// - "REDUCE_SUM" : Reduce by computing the sum across time series for each
/// alignment period. This reducer is valid for DELTA and GAUGE metrics with
/// numeric and distribution values. The value_type of the output is the same
/// as the value_type of the input.
/// - "REDUCE_STDDEV" : Reduce by computing the standard deviation across time
/// series for each alignment period. This reducer is valid for DELTA and
/// GAUGE metrics with numeric or distribution values. The value_type of the
/// output is DOUBLE.
/// - "REDUCE_COUNT" : Reduce by computing the number of data points across
/// time series for each alignment period. This reducer is valid for DELTA and
/// GAUGE metrics of numeric, Boolean, distribution, and string value_type.
/// The value_type of the output is INT64.
/// - "REDUCE_COUNT_TRUE" : Reduce by computing the number of True-valued data
/// points across time series for each alignment period. This reducer is valid
/// for DELTA and GAUGE metrics of Boolean value_type. The value_type of the
/// output is INT64.
/// - "REDUCE_COUNT_FALSE" : Reduce by computing the number of False-valued
/// data points across time series for each alignment period. This reducer is
/// valid for DELTA and GAUGE metrics of Boolean value_type. The value_type of
/// the output is INT64.
/// - "REDUCE_FRACTION_TRUE" : Reduce by computing the ratio of the number of
/// True-valued data points to the total number of data points for each
/// alignment period. This reducer is valid for DELTA and GAUGE metrics of
/// Boolean value_type. The output value is in the range 0.0, 1.0 and has
/// value_type DOUBLE.
/// - "REDUCE_PERCENTILE_99" : Reduce by computing the 99th percentile
/// (https://en.wikipedia.org/wiki/Percentile) of data points across time
/// series for each alignment period. This reducer is valid for GAUGE and
/// DELTA metrics of numeric and distribution type. The value of the output is
/// DOUBLE.
/// - "REDUCE_PERCENTILE_95" : Reduce by computing the 95th percentile
/// (https://en.wikipedia.org/wiki/Percentile) of data points across time
/// series for each alignment period. This reducer is valid for GAUGE and
/// DELTA metrics of numeric and distribution type. The value of the output is
/// DOUBLE.
/// - "REDUCE_PERCENTILE_50" : Reduce by computing the 50th percentile
/// (https://en.wikipedia.org/wiki/Percentile) of data points across time
/// series for each alignment period. This reducer is valid for GAUGE and
/// DELTA metrics of numeric and distribution type. The value of the output is
/// DOUBLE.
/// - "REDUCE_PERCENTILE_05" : Reduce by computing the 5th percentile
/// (https://en.wikipedia.org/wiki/Percentile) of data points across time
/// series for each alignment period. This reducer is valid for GAUGE and
/// DELTA metrics of numeric and distribution type. The value of the output is
/// DOUBLE.
core.String crossSeriesReducer;
/// The set of fields to preserve when cross_series_reducer is specified. The
/// group_by_fields determine how the time series are partitioned into subsets
/// prior to applying the aggregation operation. Each subset contains time
/// series that have the same value for each of the grouping fields. Each
/// individual time series is a member of exactly one subset. The
/// cross_series_reducer is applied to each subset of time series. It is not
/// possible to reduce across different resource types, so this field
/// implicitly contains resource.type. Fields not specified in group_by_fields
/// are aggregated away. If group_by_fields is not specified and all the time
/// series have the same resource type, then the time series are aggregated
/// into a single output time series. If cross_series_reducer is not defined,
/// this field is ignored.
core.List<core.String> groupByFields;
/// An Aligner describes how to bring the data points in a single time series
/// into temporal alignment. Except for ALIGN_NONE, all alignments cause all
/// the data points in an alignment_period to be mathematically grouped
/// together, resulting in a single data point for each alignment_period with
/// end timestamp at the end of the period.Not all alignment operations may be
/// applied to all time series. The valid choices depend on the metric_kind
/// and value_type of the original time series. Alignment can change the
/// metric_kind or the value_type of the time series.Time series data must be
/// aligned in order to perform cross-time series reduction. If
/// cross_series_reducer is specified, then per_series_aligner must be
/// specified and not equal to ALIGN_NONE and alignment_period must be
/// specified; otherwise, an error is returned.
/// Possible string values are:
/// - "ALIGN_NONE" : No alignment. Raw data is returned. Not valid if
/// cross-series reduction is requested. The value_type of the result is the
/// same as the value_type of the input.
/// - "ALIGN_DELTA" : Align and convert to DELTA. The output is delta = y1 -
/// y0.This alignment is valid for CUMULATIVE and DELTA metrics. If the
/// selected alignment period results in periods with no data, then the
/// aligned value for such a period is created by interpolation. The
/// value_type of the aligned result is the same as the value_type of the
/// input.
/// - "ALIGN_RATE" : Align and convert to a rate. The result is computed as
/// rate = (y1 - y0)/(t1 - t0), or "delta over time". Think of this aligner as
/// providing the slope of the line that passes through the value at the start
/// and at the end of the alignment_period.This aligner is valid for
/// CUMULATIVE and DELTA metrics with numeric values. If the selected
/// alignment period results in periods with no data, then the aligned value
/// for such a period is created by interpolation. The output is a GAUGE
/// metric with value_type DOUBLE.If, by "rate", you mean "percentage change",
/// see the ALIGN_PERCENT_CHANGE aligner instead.
/// - "ALIGN_INTERPOLATE" : Align by interpolating between adjacent points
/// around the alignment period boundary. This aligner is valid for GAUGE
/// metrics with numeric values. The value_type of the aligned result is the
/// same as the value_type of the input.
/// - "ALIGN_NEXT_OLDER" : Align by moving the most recent data point before
/// the end of the alignment period to the boundary at the end of the
/// alignment period. This aligner is valid for GAUGE metrics. The value_type
/// of the aligned result is the same as the value_type of the input.
/// - "ALIGN_MIN" : Align the time series by returning the minimum value in
/// each alignment period. This aligner is valid for GAUGE and DELTA metrics
/// with numeric values. The value_type of the aligned result is the same as
/// the value_type of the input.
/// - "ALIGN_MAX" : Align the time series by returning the maximum value in
/// each alignment period. This aligner is valid for GAUGE and DELTA metrics
/// with numeric values. The value_type of the aligned result is the same as
/// the value_type of the input.
/// - "ALIGN_MEAN" : Align the time series by returning the mean value in each
/// alignment period. This aligner is valid for GAUGE and DELTA metrics with
/// numeric values. The value_type of the aligned result is DOUBLE.
/// - "ALIGN_COUNT" : Align the time series by returning the number of values
/// in each alignment period. This aligner is valid for GAUGE and DELTA
/// metrics with numeric or Boolean values. The value_type of the aligned
/// result is INT64.
/// - "ALIGN_SUM" : Align the time series by returning the sum of the values
/// in each alignment period. This aligner is valid for GAUGE and DELTA
/// metrics with numeric and distribution values. The value_type of the
/// aligned result is the same as the value_type of the input.
/// - "ALIGN_STDDEV" : Align the time series by returning the standard
/// deviation of the values in each alignment period. This aligner is valid
/// for GAUGE and DELTA metrics with numeric values. The value_type of the
/// output is DOUBLE.
/// - "ALIGN_COUNT_TRUE" : Align the time series by returning the number of
/// True values in each alignment period. This aligner is valid for GAUGE
/// metrics with Boolean values. The value_type of the output is INT64.
/// - "ALIGN_COUNT_FALSE" : Align the time series by returning the number of
/// False values in each alignment period. This aligner is valid for GAUGE
/// metrics with Boolean values. The value_type of the output is INT64.
/// - "ALIGN_FRACTION_TRUE" : Align the time series by returning the ratio of
/// the number of True values to the total number of values in each alignment
/// period. This aligner is valid for GAUGE metrics with Boolean values. The
/// output value is in the range 0.0, 1.0 and has value_type DOUBLE.
/// - "ALIGN_PERCENTILE_99" : Align the time series by using percentile
/// aggregation (https://en.wikipedia.org/wiki/Percentile). The resulting data
/// point in each alignment period is the 99th percentile of all data points
/// in the period. This aligner is valid for GAUGE and DELTA metrics with
/// distribution values. The output is a GAUGE metric with value_type DOUBLE.
/// - "ALIGN_PERCENTILE_95" : Align the time series by using percentile
/// aggregation (https://en.wikipedia.org/wiki/Percentile). The resulting data
/// point in each alignment period is the 95th percentile of all data points
/// in the period. This aligner is valid for GAUGE and DELTA metrics with
/// distribution values. The output is a GAUGE metric with value_type DOUBLE.
/// - "ALIGN_PERCENTILE_50" : Align the time series by using percentile
/// aggregation (https://en.wikipedia.org/wiki/Percentile). The resulting data
/// point in each alignment period is the 50th percentile of all data points
/// in the period. This aligner is valid for GAUGE and DELTA metrics with
/// distribution values. The output is a GAUGE metric with value_type DOUBLE.
/// - "ALIGN_PERCENTILE_05" : Align the time series by using percentile
/// aggregation (https://en.wikipedia.org/wiki/Percentile). The resulting data
/// point in each alignment period is the 5th percentile of all data points in
/// the period. This aligner is valid for GAUGE and DELTA metrics with
/// distribution values. The output is a GAUGE metric with value_type DOUBLE.
/// - "ALIGN_PERCENT_CHANGE" : Align and convert to a percentage change. This
/// aligner is valid for GAUGE and DELTA metrics with numeric values. This
/// alignment returns ((current - previous)/previous) * 100, where the value
/// of previous is determined based on the alignment_period.If the values of
/// current and previous are both 0, then the returned value is 0. If only
/// previous is 0, the returned value is infinity.A 10-minute moving mean is
/// computed at each point of the alignment period prior to the above
/// calculation to smooth the metric and prevent false positives from very
/// short-lived spikes. The moving mean is only applicable for data whose
/// values are >= 0. Any values < 0 are treated as a missing datapoint, and
/// are ignored. While DELTA metrics are accepted by this alignment, special
/// care should be taken that the values for the metric will always be
/// positive. The output is a GAUGE metric with value_type DOUBLE.
core.String perSeriesAligner;
Aggregation();
Aggregation.fromJson(core.Map _json) {
if (_json.containsKey("alignmentPeriod")) {
alignmentPeriod = _json["alignmentPeriod"];
}
if (_json.containsKey("crossSeriesReducer")) {
crossSeriesReducer = _json["crossSeriesReducer"];
}
if (_json.containsKey("groupByFields")) {
groupByFields = (_json["groupByFields"] as core.List).cast<core.String>();
}
if (_json.containsKey("perSeriesAligner")) {
perSeriesAligner = _json["perSeriesAligner"];
}
}
core.Map<core.String, core.Object> toJson() {
final core.Map<core.String, core.Object> _json =
new core.Map<core.String, core.Object>();
if (alignmentPeriod != null) {
_json["alignmentPeriod"] = alignmentPeriod;
}
if (crossSeriesReducer != null) {
_json["crossSeriesReducer"] = crossSeriesReducer;
}
if (groupByFields != null) {
_json["groupByFields"] = groupByFields;
}
if (perSeriesAligner != null) {
_json["perSeriesAligner"] = perSeriesAligner;
}
return _json;
}
}
/// A description of the conditions under which some aspect of your system is
/// considered to be "unhealthy" and the ways to notify people or services about
/// this state. For an overview of alert policies, see Introduction to Alerting
/// (https://cloud.google.com/monitoring/alerts/).
class AlertPolicy {
/// How to combine the results of multiple conditions to determine if an
/// incident should be opened. If condition_time_series_query_language is
/// present, this must be COMBINE_UNSPECIFIED.
/// Possible string values are:
/// - "COMBINE_UNSPECIFIED" : An unspecified combiner.
/// - "AND" : Combine conditions using the logical AND operator. An incident
/// is created only if all the conditions are met simultaneously. This
/// combiner is satisfied if all conditions are met, even if they are met on
/// completely different resources.
/// - "OR" : Combine conditions using the logical OR operator. An incident is
/// created if any of the listed conditions is met.
/// - "AND_WITH_MATCHING_RESOURCE" : Combine conditions using logical AND
/// operator, but unlike the regular AND option, an incident is created only
/// if all conditions are met simultaneously on at least one resource.
core.String combiner;
/// A list of conditions for the policy. The conditions are combined by AND or
/// OR according to the combiner field. If the combined conditions evaluate to
/// true, then an incident is created. A policy can have from one to six
/// conditions. If condition_time_series_query_language is present, it must be
/// the only condition.
core.List<Condition> conditions;
/// A read-only record of the creation of the alerting policy. If provided in
/// a call to create or update, this field will be ignored.
MutationRecord creationRecord;
/// A short name or phrase used to identify the policy in dashboards,
/// notifications, and incidents. To avoid confusion, don't use the same
/// display name for multiple policies in the same project. The name is
/// limited to 512 Unicode characters.
core.String displayName;
/// Documentation that is included with notifications and incidents related to
/// this policy. Best practice is for the documentation to include information
/// to help responders understand, mitigate, escalate, and correct the
/// underlying problems detected by the alerting policy. Notification channels
/// that have limited capacity might not show this documentation.
Documentation documentation;
/// Whether or not the policy is enabled. On write, the default interpretation
/// if unset is that the policy is enabled. On read, clients should not make
/// any assumption about the state if it has not been populated. The field
/// should always be populated on List and Get operations, unless a field
/// projection has been specified that strips it out.
core.bool enabled;
/// A read-only record of the most recent change to the alerting policy. If
/// provided in a call to create or update, this field will be ignored.
MutationRecord mutationRecord;
/// Required if the policy exists. The resource name for this policy. The
/// format is: projects/[PROJECT_ID_OR_NUMBER]/alertPolicies/[ALERT_POLICY_ID]
/// [ALERT_POLICY_ID] is assigned by Stackdriver Monitoring when the policy is
/// created. When calling the alertPolicies.create method, do not include the
/// name field in the alerting policy passed as part of the request.
core.String name;
/// Identifies the notification channels to which notifications should be sent
/// when incidents are opened or closed or when new violations occur on an
/// already opened incident. Each element of this array corresponds to the
/// name field in each of the NotificationChannel objects that are returned
/// from the ListNotificationChannels method. The format of the entries in
/// this field is:
/// projects/[PROJECT_ID_OR_NUMBER]/notificationChannels/[CHANNEL_ID]
core.List<core.String> notificationChannels;
/// User-supplied key/value data to be used for organizing and identifying the
/// AlertPolicy objects.The field can contain up to 64 entries. Each key and
/// value is limited to 63 Unicode characters or 128 bytes, whichever is
/// smaller. Labels and values can contain only lowercase letters, numerals,
/// underscores, and dashes. Keys must begin with a letter.
core.Map<core.String, core.String> userLabels;
/// Read-only description of how the alert policy is invalid. OK if the alert
/// policy is valid. If not OK, the alert policy will not generate incidents.
Status validity;
AlertPolicy();
AlertPolicy.fromJson(core.Map _json) {
if (_json.containsKey("combiner")) {
combiner = _json["combiner"];
}
if (_json.containsKey("conditions")) {
conditions = (_json["conditions"] as core.List)
.map<Condition>((value) => new Condition.fromJson(value))
.toList();
}
if (_json.containsKey("creationRecord")) {
creationRecord = new MutationRecord.fromJson(_json["creationRecord"]);
}
if (_json.containsKey("displayName")) {
displayName = _json["displayName"];
}
if (_json.containsKey("documentation")) {
documentation = new Documentation.fromJson(_json["documentation"]);
}
if (_json.containsKey("enabled")) {
enabled = _json["enabled"];
}
if (_json.containsKey("mutationRecord")) {
mutationRecord = new MutationRecord.fromJson(_json["mutationRecord"]);
}
if (_json.containsKey("name")) {
name = _json["name"];
}
if (_json.containsKey("notificationChannels")) {
notificationChannels =
(_json["notificationChannels"] as core.List).cast<core.String>();
}
if (_json.containsKey("userLabels")) {
userLabels =
(_json["userLabels"] as core.Map).cast<core.String, core.String>();
}
if (_json.containsKey("validity")) {
validity = new Status.fromJson(_json["validity"]);
}
}
core.Map<core.String, core.Object> toJson() {
final core.Map<core.String, core.Object> _json =
new core.Map<core.String, core.Object>();
if (combiner != null) {
_json["combiner"] = combiner;
}
if (conditions != null) {
_json["conditions"] =
conditions.map((value) => (value).toJson()).toList();
}
if (creationRecord != null) {
_json["creationRecord"] = (creationRecord).toJson();
}
if (displayName != null) {
_json["displayName"] = displayName;
}
if (documentation != null) {
_json["documentation"] = (documentation).toJson();
}
if (enabled != null) {
_json["enabled"] = enabled;
}
if (mutationRecord != null) {
_json["mutationRecord"] = (mutationRecord).toJson();
}
if (name != null) {
_json["name"] = name;
}
if (notificationChannels != null) {
_json["notificationChannels"] = notificationChannels;
}
if (userLabels != null) {
_json["userLabels"] = userLabels;
}
if (validity != null) {
_json["validity"] = (validity).toJson();
}
return _json;
}
}
/// App Engine service. Learn more at https://cloud.google.com/appengine.
class AppEngine {
/// The ID of the App Engine module underlying this service. Corresponds to
/// the module_id resource label in the gae_app monitored resource:
/// https://cloud.google.com/monitoring/api/resources#tag_gae_app
core.String moduleId;
AppEngine();
AppEngine.fromJson(core.Map _json) {
if (_json.containsKey("moduleId")) {
moduleId = _json["moduleId"];
}
}
core.Map<core.String, core.Object> toJson() {
final core.Map<core.String, core.Object> _json =
new core.Map<core.String, core.Object>();
if (moduleId != null) {
_json["moduleId"] = moduleId;
}
return _json;
}
}
/// Future parameters for the availability SLI.
class AvailabilityCriteria {
AvailabilityCriteria();
AvailabilityCriteria.fromJson(core.Map _json) {}
core.Map<core.String, core.Object> toJson() {
final core.Map<core.String, core.Object> _json =
new core.Map<core.String, core.Object>();
return _json;
}
}
/// The authentication parameters to provide to the specified resource or URL
/// that requires a username and password. Currently, only Basic HTTP
/// authentication (https://tools.ietf.org/html/rfc7617) is supported in Uptime
/// checks.
class BasicAuthentication {
/// The password to use when authenticating with the HTTP server.
core.String password;
/// The username to use when authenticating with the HTTP server.
core.String username;
BasicAuthentication();
BasicAuthentication.fromJson(core.Map _json) {
if (_json.containsKey("password")) {
password = _json["password"];
}
if (_json.containsKey("username")) {
username = _json["username"];
}
}
core.Map<core.String, core.Object> toJson() {
final core.Map<core.String, core.Object> _json =
new core.Map<core.String, core.Object>();
if (password != null) {
_json["password"] = password;
}
if (username != null) {
_json["username"] = username;
}
return _json;
}
}
/// An SLI measuring performance on a well-known service type. Performance will
/// be computed on the basis of pre-defined metrics. The type of the
/// service_resource determines the metrics to use and the
/// service_resource.labels and metric_labels are used to construct a monitoring
/// filter to filter that metric down to just the data relevant to this service.
class BasicSli {
/// Good service is defined to be the count of requests made to this service
/// that return successfully.
AvailabilityCriteria availability;
/// Good service is defined to be the count of requests made to this service
/// that are fast enough with respect to latency.threshold.
LatencyCriteria latency;
/// OPTIONAL: The set of locations to which this SLI is relevant. Telemetry
/// from other locations will not be used to calculate performance for this
/// SLI. If omitted, this SLI applies to all locations in which the Service
/// has activity. For service types that don't support breaking down by
/// location, setting this field will result in an error.
core.List<core.String> location;
/// OPTIONAL: The set of RPCs to which this SLI is relevant. Telemetry from
/// other methods will not be used to calculate performance for this SLI. If
/// omitted, this SLI applies to all the Service's methods. For service types
/// that don't support breaking down by method, setting this field will result
/// in an error.
core.List<core.String> method;
/// OPTIONAL: The set of API versions to which this SLI is relevant. Telemetry
/// from other API versions will not be used to calculate performance for this
/// SLI. If omitted, this SLI applies to all API versions. For service types
/// that don't support breaking down by version, setting this field will
/// result in an error.
core.List<core.String> version;
BasicSli();
BasicSli.fromJson(core.Map _json) {
if (_json.containsKey("availability")) {
availability = new AvailabilityCriteria.fromJson(_json["availability"]);
}
if (_json.containsKey("latency")) {
latency = new LatencyCriteria.fromJson(_json["latency"]);
}
if (_json.containsKey("location")) {
location = (_json["location"] as core.List).cast<core.String>();
}
if (_json.containsKey("method")) {
method = (_json["method"] as core.List).cast<core.String>();
}
if (_json.containsKey("version")) {
version = (_json["version"] as core.List).cast<core.String>();
}
}
core.Map<core.String, core.Object> toJson() {
final core.Map<core.String, core.Object> _json =
new core.Map<core.String, core.Object>();
if (availability != null) {
_json["availability"] = (availability).toJson();
}
if (latency != null) {
_json["latency"] = (latency).toJson();
}
if (location != null) {
_json["location"] = location;
}
if (method != null) {
_json["method"] = method;
}
if (version != null) {
_json["version"] = version;
}
return _json;
}
}
/// BucketOptions describes the bucket boundaries used to create a histogram for
/// the distribution. The buckets can be in a linear sequence, an exponential
/// sequence, or each bucket can be specified explicitly. BucketOptions does not
/// include the number of values in each bucket.A bucket has an inclusive lower
/// bound and exclusive upper bound for the values that are counted for that
/// bucket. The upper bound of a bucket must be strictly greater than the lower
/// bound. The sequence of N buckets for a distribution consists of an underflow
/// bucket (number 0), zero or more finite buckets (number 1 through N - 2) and
/// an overflow bucket (number N - 1). The buckets are contiguous: the lower
/// bound of bucket i (i > 0) is the same as the upper bound of bucket i - 1.
/// The buckets span the whole range of finite values: lower bound of the
/// underflow bucket is -infinity and the upper bound of the overflow bucket is
/// +infinity. The finite buckets are so-called because both bounds are finite.
class BucketOptions {
/// The explicit buckets.
Explicit explicitBuckets;
/// The exponential buckets.
Exponential exponentialBuckets;
/// The linear bucket.
Linear linearBuckets;
BucketOptions();
BucketOptions.fromJson(core.Map _json) {
if (_json.containsKey("explicitBuckets")) {
explicitBuckets = new Explicit.fromJson(_json["explicitBuckets"]);
}
if (_json.containsKey("exponentialBuckets")) {
exponentialBuckets =
new Exponential.fromJson(_json["exponentialBuckets"]);
}
if (_json.containsKey("linearBuckets")) {
linearBuckets = new Linear.fromJson(_json["linearBuckets"]);
}
}
core.Map<core.String, core.Object> toJson() {
final core.Map<core.String, core.Object> _json =
new core.Map<core.String, core.Object>();
if (explicitBuckets != null) {
_json["explicitBuckets"] = (explicitBuckets).toJson();
}
if (exponentialBuckets != null) {
_json["exponentialBuckets"] = (exponentialBuckets).toJson();
}
if (linearBuckets != null) {
_json["linearBuckets"] = (linearBuckets).toJson();
}
return _json;
}
}
/// Cloud Endpoints service. Learn more at https://cloud.google.com/endpoints.
class CloudEndpoints {
/// The name of the Cloud Endpoints service underlying this service.
/// Corresponds to the service resource label in the api monitored resource:
/// https://cloud.google.com/monitoring/api/resources#tag_api
core.String service;
CloudEndpoints();
CloudEndpoints.fromJson(core.Map _json) {
if (_json.containsKey("service")) {
service = _json["service"];
}
}
core.Map<core.String, core.Object> toJson() {
final core.Map<core.String, core.Object> _json =
new core.Map<core.String, core.Object>();
if (service != null) {
_json["service"] = service;
}
return _json;
}
}
/// Istio service scoped to a single Kubernetes cluster. Learn more at
/// http://istio.io.
class ClusterIstio {
/// The name of the Kubernetes cluster in which this Istio service is defined.
/// Corresponds to the cluster_name resource label in k8s_cluster resources.
core.String clusterName;
/// The location of the Kubernetes cluster in which this Istio service is
/// defined. Corresponds to the location resource label in k8s_cluster
/// resources.
core.String location;
/// The name of the Istio service underlying this service. Corresponds to the
/// destination_service_name metric label in Istio metrics.
core.String serviceName;
/// The namespace of the Istio service underlying this service. Corresponds to
/// the destination_service_namespace metric label in Istio metrics.
core.String serviceNamespace;
ClusterIstio();
ClusterIstio.fromJson(core.Map _json) {
if (_json.containsKey("clusterName")) {
clusterName = _json["clusterName"];
}
if (_json.containsKey("location")) {
location = _json["location"];
}
if (_json.containsKey("serviceName")) {
serviceName = _json["serviceName"];
}
if (_json.containsKey("serviceNamespace")) {
serviceNamespace = _json["serviceNamespace"];
}
}
core.Map<core.String, core.Object> toJson() {
final core.Map<core.String, core.Object> _json =
new core.Map<core.String, core.Object>();
if (clusterName != null) {
_json["clusterName"] = clusterName;
}
if (location != null) {
_json["location"] = location;
}
if (serviceName != null) {
_json["serviceName"] = serviceName;
}
if (serviceNamespace != null) {
_json["serviceNamespace"] = serviceNamespace;
}
return _json;
}
}
/// A collection of data points sent from a collectd-based plugin. See the
/// collectd documentation for more information.
class CollectdPayload {
/// The end time of the interval.
core.String endTime;
/// The measurement metadata. Example: "process_id" -> 12345
core.Map<core.String, TypedValue> metadata;
/// The name of the plugin. Example: "disk".
core.String plugin;
/// The instance name of the plugin Example: "hdcl".
core.String pluginInstance;
/// The start time of the interval.
core.String startTime;
/// The measurement type. Example: "memory".
core.String type;
/// The measurement type instance. Example: "used".
core.String typeInstance;
/// The measured values during this time interval. Each value must have a
/// different data_source_name.
core.List<CollectdValue> values;
CollectdPayload();
CollectdPayload.fromJson(core.Map _json) {
if (_json.containsKey("endTime")) {
endTime = _json["endTime"];
}
if (_json.containsKey("metadata")) {
metadata = commons.mapMap<core.Map, TypedValue>(
_json["metadata"].cast<core.String, core.Map>(),
(core.Map item) => new TypedValue.fromJson(item));
}
if (_json.containsKey("plugin")) {
plugin = _json["plugin"];
}
if (_json.containsKey("pluginInstance")) {
pluginInstance = _json["pluginInstance"];
}
if (_json.containsKey("startTime")) {
startTime = _json["startTime"];
}
if (_json.containsKey("type")) {
type = _json["type"];
}
if (_json.containsKey("typeInstance")) {
typeInstance = _json["typeInstance"];
}
if (_json.containsKey("values")) {
values = (_json["values"] as core.List)
.map<CollectdValue>((value) => new CollectdValue.fromJson(value))
.toList();
}
}
core.Map<core.String, core.Object> toJson() {
final core.Map<core.String, core.Object> _json =
new core.Map<core.String, core.Object>();
if (endTime != null) {
_json["endTime"] = endTime;
}
if (metadata != null) {
_json["metadata"] =
commons.mapMap<TypedValue, core.Map<core.String, core.Object>>(
metadata, (TypedValue item) => (item).toJson());
}
if (plugin != null) {
_json["plugin"] = plugin;
}
if (pluginInstance != null) {
_json["pluginInstance"] = pluginInstance;
}
if (startTime != null) {
_json["startTime"] = startTime;
}
if (type != null) {
_json["type"] = type;
}
if (typeInstance != null) {
_json["typeInstance"] = typeInstance;
}
if (values != null) {
_json["values"] = values.map((value) => (value).toJson()).toList();
}
return _json;
}
}
/// Describes the error status for payloads that were not written.
class CollectdPayloadError {
/// Records the error status for the payload. If this field is present, the
/// partial errors for nested values won't be populated.
Status error;
/// The zero-based index in CreateCollectdTimeSeriesRequest.collectd_payloads.
core.int index;
/// Records the error status for values that were not written due to an
/// error.Failed payloads for which nothing is written will not include
/// partial value errors.
core.List<CollectdValueError> valueErrors;
CollectdPayloadError();
CollectdPayloadError.fromJson(core.Map _json) {
if (_json.containsKey("error")) {
error = new Status.fromJson(_json["error"]);
}
if (_json.containsKey("index")) {
index = _json["index"];
}
if (_json.containsKey("valueErrors")) {
valueErrors = (_json["valueErrors"] as core.List)
.map<CollectdValueError>(
(value) => new CollectdValueError.fromJson(value))
.toList();
}
}
core.Map<core.String, core.Object> toJson() {
final core.Map<core.String, core.Object> _json =
new core.Map<core.String, core.Object>();
if (error != null) {
_json["error"] = (error).toJson();
}
if (index != null) {
_json["index"] = index;
}
if (valueErrors != null) {
_json["valueErrors"] =
valueErrors.map((value) => (value).toJson()).toList();
}
return _json;
}
}
/// A single data point from a collectd-based plugin.
class CollectdValue {
/// The data source for the collectd value. For example, there are two data
/// sources for network measurements: "rx" and "tx".
core.String dataSourceName;
/// The type of measurement.
/// Possible string values are:
/// - "UNSPECIFIED_DATA_SOURCE_TYPE" : An unspecified data source type. This
/// corresponds to
/// google.api.MetricDescriptor.MetricKind.METRIC_KIND_UNSPECIFIED.
/// - "GAUGE" : An instantaneous measurement of a varying quantity. This
/// corresponds to google.api.MetricDescriptor.MetricKind.GAUGE.
/// - "COUNTER" : A cumulative value over time. This corresponds to
/// google.api.MetricDescriptor.MetricKind.CUMULATIVE.
/// - "DERIVE" : A rate of change of the measurement.
/// - "ABSOLUTE" : An amount of change since the last measurement interval.
/// This corresponds to google.api.MetricDescriptor.MetricKind.DELTA.
core.String dataSourceType;
/// The measurement value.
TypedValue value;
CollectdValue();
CollectdValue.fromJson(core.Map _json) {
if (_json.containsKey("dataSourceName")) {
dataSourceName = _json["dataSourceName"];
}
if (_json.containsKey("dataSourceType")) {
dataSourceType = _json["dataSourceType"];
}
if (_json.containsKey("value")) {
value = new TypedValue.fromJson(_json["value"]);
}
}
core.Map<core.String, core.Object> toJson() {
final core.Map<core.String, core.Object> _json =
new core.Map<core.String, core.Object>();
if (dataSourceName != null) {
_json["dataSourceName"] = dataSourceName;
}
if (dataSourceType != null) {
_json["dataSourceType"] = dataSourceType;
}
if (value != null) {
_json["value"] = (value).toJson();
}
return _json;
}
}
/// Describes the error status for values that were not written.
class CollectdValueError {
/// Records the error status for the value.
Status error;
/// The zero-based index in CollectdPayload.values within the parent
/// CreateCollectdTimeSeriesRequest.collectd_payloads.
core.int index;
CollectdValueError();
CollectdValueError.fromJson(core.Map _json) {
if (_json.containsKey("error")) {
error = new Status.fromJson(_json["error"]);
}
if (_json.containsKey("index")) {
index = _json["index"];
}
}
core.Map<core.String, core.Object> toJson() {
final core.Map<core.String, core.Object> _json =
new core.Map<core.String, core.Object>();
if (error != null) {
_json["error"] = (error).toJson();
}
if (index != null) {
_json["index"] = index;
}
return _json;
}
}
/// A condition is a true/false test that determines when an alerting policy
/// should open an incident. If a condition evaluates to true, it signifies that
/// something is wrong.
class Condition {
/// A condition that checks that a time series continues to receive new data
/// points.
MetricAbsence conditionAbsent;
/// A condition that compares a time series against a threshold.
MetricThreshold conditionThreshold;
/// A short name or phrase used to identify the condition in dashboards,
/// notifications, and incidents. To avoid confusion, don't use the same
/// display name for multiple conditions in the same policy.
core.String displayName;
/// Required if the condition exists. The unique resource name for this
/// condition. Its format is:
/// projects/[PROJECT_ID_OR_NUMBER]/alertPolicies/[POLICY_ID]/conditions/[CONDITION_ID]
/// [CONDITION_ID] is assigned by Stackdriver Monitoring when the condition is
/// created as part of a new or updated alerting policy.When calling the
/// alertPolicies.create method, do not include the name field in the
/// conditions of the requested alerting policy. Stackdriver Monitoring
/// creates the condition identifiers and includes them in the new policy.When
/// calling the alertPolicies.update method to update a policy, including a
/// condition name causes the existing condition to be updated. Conditions
/// without names are added to the updated policy. Existing conditions are
/// deleted if they are not updated.Best practice is to preserve
/// [CONDITION_ID] if you make only small changes, such as those to condition
/// thresholds, durations, or trigger values. Otherwise, treat the change as a
/// new condition and let the existing condition be deleted.
core.String name;
Condition();
Condition.fromJson(core.Map _json) {
if (_json.containsKey("conditionAbsent")) {
conditionAbsent = new MetricAbsence.fromJson(_json["conditionAbsent"]);
}
if (_json.containsKey("conditionThreshold")) {
conditionThreshold =
new MetricThreshold.fromJson(_json["conditionThreshold"]);
}
if (_json.containsKey("displayName")) {
displayName = _json["displayName"];
}
if (_json.containsKey("name")) {
name = _json["name"];
}
}
core.Map<core.String, core.Object> toJson() {
final core.Map<core.String, core.Object> _json =
new core.Map<core.String, core.Object>();
if (conditionAbsent != null) {
_json["conditionAbsent"] = (conditionAbsent).toJson();
}
if (conditionThreshold != null) {
_json["conditionThreshold"] = (conditionThreshold).toJson();
}
if (displayName != null) {
_json["displayName"] = displayName;
}
if (name != null) {
_json["name"] = name;
}
return _json;
}
}
/// Optional. Used to perform content matching. This allows matching based on
/// substrings and regular expressions, together with their negations. Only the
/// first 4 MB of an HTTP or HTTPS check's response (and the first 1 MB of a TCP
/// check's response) are examined for purposes of content matching.
class ContentMatcher {
/// String or regex content to match. Maximum 1024 bytes. An empty content
/// string indicates no content matching is to be performed.
core.String content;
/// The type of content matcher that will be applied to the server output,
/// compared to the content string when the check is run.
/// Possible string values are:
/// - "CONTENT_MATCHER_OPTION_UNSPECIFIED" : No content matcher type specified
/// (maintained for backward compatibility, but deprecated for future use).
/// Treated as CONTAINS_STRING.
/// - "CONTAINS_STRING" : Selects substring matching. The match succeeds if
/// the output contains the content string. This is the default value for
/// checks without a matcher option, or where the value of matcher is
/// CONTENT_MATCHER_OPTION_UNSPECIFIED.
/// - "NOT_CONTAINS_STRING" : Selects negation of substring matching. The
/// match succeeds if the output does NOT contain the content string.
/// - "MATCHES_REGEX" : Selects regular-expression matching. The match
/// succeeds of the output matches the regular expression specified in the
/// content string.
/// - "NOT_MATCHES_REGEX" : Selects negation of regular-expression matching.
/// The match succeeds if the output does NOT match the regular expression
/// specified in the content string.
core.String matcher;
ContentMatcher();
ContentMatcher.fromJson(core.Map _json) {
if (_json.containsKey("content")) {
content = _json["content"];
}
if (_json.containsKey("matcher")) {
matcher = _json["matcher"];
}
}
core.Map<core.String, core.Object> toJson() {
final core.Map<core.String, core.Object> _json =
new core.Map<core.String, core.Object>();
if (content != null) {
_json["content"] = content;
}
if (matcher != null) {
_json["matcher"] = matcher;
}
return _json;
}
}
/// The CreateCollectdTimeSeries request.
class CreateCollectdTimeSeriesRequest {
/// The collectd payloads representing the time series data. You must not
/// include more than a single point for each time series, so no two payloads
/// can have the same values for all of the fields plugin, plugin_instance,
/// type, and type_instance.
core.List<CollectdPayload> collectdPayloads;
/// The version of collectd that collected the data. Example: "5.3.0-192.el6".
core.String collectdVersion;
/// The monitored resource associated with the time series.
MonitoredResource resource;
CreateCollectdTimeSeriesRequest();
CreateCollectdTimeSeriesRequest.fromJson(core.Map _json) {
if (_json.containsKey("collectdPayloads")) {
collectdPayloads = (_json["collectdPayloads"] as core.List)
.map<CollectdPayload>((value) => new CollectdPayload.fromJson(value))
.toList();
}
if (_json.containsKey("collectdVersion")) {
collectdVersion = _json["collectdVersion"];
}
if (_json.containsKey("resource")) {
resource = new MonitoredResource.fromJson(_json["resource"]);
}
}
core.Map<core.String, core.Object> toJson() {
final core.Map<core.String, core.Object> _json =
new core.Map<core.String, core.Object>();
if (collectdPayloads != null) {
_json["collectdPayloads"] =
collectdPayloads.map((value) => (value).toJson()).toList();
}
if (collectdVersion != null) {
_json["collectdVersion"] = collectdVersion;
}
if (resource != null) {
_json["resource"] = (resource).toJson();
}
return _json;
}
}
/// The CreateCollectdTimeSeries response.
class CreateCollectdTimeSeriesResponse {
/// Records the error status for points that were not written due to an error
/// in the request.Failed requests for which nothing is written will return an
/// error response instead. Requests where data points were rejected by the
/// backend will set summary instead.
core.List<CollectdPayloadError> payloadErrors;
/// Aggregate statistics from writing the payloads. This field is omitted if
/// all points were successfully written, so that the response is empty. This
/// is for backwards compatibility with clients that log errors on any
/// non-empty response.
CreateTimeSeriesSummary summary;
CreateCollectdTimeSeriesResponse();
CreateCollectdTimeSeriesResponse.fromJson(core.Map _json) {
if (_json.containsKey("payloadErrors")) {
payloadErrors = (_json["payloadErrors"] as core.List)
.map<CollectdPayloadError>(
(value) => new CollectdPayloadError.fromJson(value))
.toList();
}
if (_json.containsKey("summary")) {
summary = new CreateTimeSeriesSummary.fromJson(_json["summary"]);
}
}
core.Map<core.String, core.Object> toJson() {
final core.Map<core.String, core.Object> _json =
new core.Map<core.String, core.Object>();
if (payloadErrors != null) {
_json["payloadErrors"] =
payloadErrors.map((value) => (value).toJson()).toList();
}
if (summary != null) {
_json["summary"] = (summary).toJson();
}
return _json;
}
}
/// The CreateTimeSeries request.
class CreateTimeSeriesRequest {
/// Required. The new data to be added to a list of time series. Adds at most
/// one data point to each of several time series. The new data point must be
/// more recent than any other point in its time series. Each TimeSeries value
/// must fully specify a unique time series by supplying all label values for
/// the metric and the monitored resource.The maximum number of TimeSeries
/// objects per Create request is 200.
core.List<TimeSeries> timeSeries;
CreateTimeSeriesRequest();
CreateTimeSeriesRequest.fromJson(core.Map _json) {
if (_json.containsKey("timeSeries")) {
timeSeries = (_json["timeSeries"] as core.List)
.map<TimeSeries>((value) => new TimeSeries.fromJson(value))
.toList();
}
}
core.Map<core.String, core.Object> toJson() {
final core.Map<core.String, core.Object> _json =
new core.Map<core.String, core.Object>();
if (timeSeries != null) {
_json["timeSeries"] =
timeSeries.map((value) => (value).toJson()).toList();
}
return _json;
}
}
/// Summary of the result of a failed request to write data to a time series.
class CreateTimeSeriesSummary {
/// The number of points that failed to be written. Order is not guaranteed.
core.List<Error> errors;
/// The number of points that were successfully written.
core.int successPointCount;
/// The number of points in the request.
core.int totalPointCount;
CreateTimeSeriesSummary();
CreateTimeSeriesSummary.fromJson(core.Map _json) {
if (_json.containsKey("errors")) {
errors = (_json["errors"] as core.List)
.map<Error>((value) => new Error.fromJson(value))
.toList();
}
if (_json.containsKey("successPointCount")) {
successPointCount = _json["successPointCount"];
}
if (_json.containsKey("totalPointCount")) {
totalPointCount = _json["totalPointCount"];
}
}
core.Map<core.String, core.Object> toJson() {
final core.Map<core.String, core.Object> _json =
new core.Map<core.String, core.Object>();
if (errors != null) {
_json["errors"] = errors.map((value) => (value).toJson()).toList();
}
if (successPointCount != null) {
_json["successPointCount"] = successPointCount;
}
if (totalPointCount != null) {
_json["totalPointCount"] = totalPointCount;
}
return _json;
}
}
/// Custom view of service telemetry. Currently a place-holder pending final
/// design.
class Custom {
Custom();
Custom.fromJson(core.Map _json) {}
core.Map<core.String, core.Object> toJson() {
final core.Map<core.String, core.Object> _json =
new core.Map<core.String, core.Object>();
return _json;
}
}
/// Distribution contains summary statistics for a population of values. It
/// optionally contains a histogram representing the distribution of those
/// values across a set of buckets.The summary statistics are the count, mean,
/// sum of the squared deviation from the mean, the minimum, and the maximum of
/// the set of population of values. The histogram is based on a sequence of
/// buckets and gives a count of values that fall into each bucket. The
/// boundaries of the buckets are given either explicitly or by formulas for
/// buckets of fixed or exponentially increasing widths.Although it is not
/// forbidden, it is generally a bad idea to include non-finite values
/// (infinities or NaNs) in the population of values, as this will render the
/// mean and sum_of_squared_deviation fields meaningless.
class Distribution {
/// Required in the Cloud Monitoring API v3. The values for each bucket
/// specified in bucket_options. The sum of the values in bucketCounts must
/// equal the value in the count field of the Distribution object. The order
/// of the bucket counts follows the numbering schemes described for the three
/// bucket types. The underflow bucket has number 0; the finite buckets, if
/// any, have numbers 1 through N-2; and the overflow bucket has number N-1.
/// The size of bucket_counts must not be greater than N. If the size is less
/// than N, then the remaining buckets are assigned values of zero.
core.List<core.String> bucketCounts;
/// Required in the Cloud Monitoring API v3. Defines the histogram bucket
/// boundaries.
BucketOptions bucketOptions;
/// The number of values in the population. Must be non-negative. This value
/// must equal the sum of the values in bucket_counts if a histogram is
/// provided.
core.String count;
/// Must be in increasing order of value field.
core.List<Exemplar> exemplars;
/// The arithmetic mean of the values in the population. If count is zero then
/// this field must be zero.
core.double mean;
/// If specified, contains the range of the population values. The field must
/// not be present if the count is zero. This field is presently ignored by
/// the Cloud Monitoring API v3.
Range range;
/// The sum of squared deviations from the mean of the values in the
/// population. For values x_i this is: Sum[i=1..n]((x_i - mean)^2) Knuth,
/// "The Art of Computer Programming", Vol. 2, page 232, 3rd edition describes
/// Welford's method for accumulating this sum in one pass.If count is zero
/// then this field must be zero.
core.double sumOfSquaredDeviation;
Distribution();
Distribution.fromJson(core.Map _json) {
if (_json.containsKey("bucketCounts")) {
bucketCounts = (_json["bucketCounts"] as core.List).cast<core.String>();
}
if (_json.containsKey("bucketOptions")) {
bucketOptions = new BucketOptions.fromJson(_json["bucketOptions"]);
}
if (_json.containsKey("count")) {
count = _json["count"];
}
if (_json.containsKey("exemplars")) {
exemplars = (_json["exemplars"] as core.List)
.map<Exemplar>((value) => new Exemplar.fromJson(value))
.toList();
}
if (_json.containsKey("mean")) {
mean = _json["mean"].toDouble();
}
if (_json.containsKey("range")) {
range = new Range.fromJson(_json["range"]);
}
if (_json.containsKey("sumOfSquaredDeviation")) {
sumOfSquaredDeviation = _json["sumOfSquaredDeviation"].toDouble();
}
}
core.Map<core.String, core.Object> toJson() {
final core.Map<core.String, core.Object> _json =
new core.Map<core.String, core.Object>();
if (bucketCounts != null) {
_json["bucketCounts"] = bucketCounts;
}
if (bucketOptions != null) {
_json["bucketOptions"] = (bucketOptions).toJson();
}
if (count != null) {
_json["count"] = count;
}
if (exemplars != null) {
_json["exemplars"] = exemplars.map((value) => (value).toJson()).toList();
}
if (mean != null) {
_json["mean"] = mean;
}
if (range != null) {
_json["range"] = (range).toJson();
}
if (sumOfSquaredDeviation != null) {
_json["sumOfSquaredDeviation"] = sumOfSquaredDeviation;
}
return _json;
}
}
/// A DistributionCut defines a TimeSeries and thresholds used for measuring
/// good service and total service. The TimeSeries must have ValueType =
/// DISTRIBUTION and MetricKind = DELTA or MetricKind = CUMULATIVE. The computed
/// good_service will be the count of values x in the Distribution such that
/// range.min <= x < range.max.
class DistributionCut {
/// A monitoring filter (https://cloud.google.com/monitoring/api/v3/filters)
/// specifying a TimeSeries aggregating values. Must have ValueType =
/// DISTRIBUTION and MetricKind = DELTA or MetricKind = CUMULATIVE.
core.String distributionFilter;
/// Range of values considered "good." For a one-sided range, set one bound to
/// an infinite value.
GoogleMonitoringV3Range range;
DistributionCut();
DistributionCut.fromJson(core.Map _json) {
if (_json.containsKey("distributionFilter")) {
distributionFilter = _json["distributionFilter"];
}
if (_json.containsKey("range")) {
range = new GoogleMonitoringV3Range.fromJson(_json["range"]);
}
}
core.Map<core.String, core.Object> toJson() {
final core.Map<core.String, core.Object> _json =
new core.Map<core.String, core.Object>();
if (distributionFilter != null) {
_json["distributionFilter"] = distributionFilter;
}
if (range != null) {
_json["range"] = (range).toJson();
}
return _json;
}
}
/// A content string and a MIME type that describes the content string's format.
class Documentation {
/// The text of the documentation, interpreted according to mime_type. The
/// content may not exceed 8,192 Unicode characters and may not exceed more
/// than 10,240 bytes when encoded in UTF-8 format, whichever is smaller.
core.String content;
/// The format of the content field. Presently, only the value "text/markdown"
/// is supported. See Markdown (https://en.wikipedia.org/wiki/Markdown) for
/// more information.
core.String mimeType;
Documentation();
Documentation.fromJson(core.Map _json) {
if (_json.containsKey("content")) {
content = _json["content"];
}
if (_json.containsKey("mimeType")) {
mimeType = _json["mimeType"];
}
}
core.Map<core.String, core.Object> toJson() {
final core.Map<core.String, core.Object> _json =
new core.Map<core.String, core.Object>();
if (content != null) {
_json["content"] = content;
}
if (mimeType != null) {
_json["mimeType"] = mimeType;
}
return _json;
}
}
/// A set of (label, value) pairs that were removed from a Distribution time
/// series during aggregation and then added as an attachment to a
/// Distribution.Exemplar.The full label set for the exemplars is constructed by
/// using the dropped pairs in combination with the label values that remain on
/// the aggregated Distribution time series. The constructed full label set can
/// be used to identify the specific entity, such as the instance or job, which
/// might be contributing to a long-tail. However, with dropped labels, the
/// storage requirements are reduced because only the aggregated distribution
/// values for a large group of time series are stored.Note that there are no
/// guarantees on ordering of the labels from exemplar-to-exemplar and from
/// distribution-to-distribution in the same stream, and there may be
/// duplicates. It is up to clients to resolve any ambiguities.
class DroppedLabels {
/// Map from label to its value, for all labels dropped in any aggregation.
core.Map<core.String, core.String> label;
DroppedLabels();
DroppedLabels.fromJson(core.Map _json) {
if (_json.containsKey("label")) {
label = (_json["label"] as core.Map).cast<core.String, core.String>();
}
}
core.Map<core.String, core.Object> toJson() {
final core.Map<core.String, core.Object> _json =
new core.Map<core.String, core.Object>();
if (label != null) {
_json["label"] = label;
}
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(core.Map _json) {}
core.Map<core.String, core.Object> toJson() {
final core.Map<core.String, core.Object> _json =
new core.Map<core.String, core.Object>();
return _json;
}
}
/// Detailed information about an error category.
class Error {
/// The number of points that couldn't be written because of status.
core.int pointCount;
/// The status of the requested write operation.
Status status;
Error();
Error.fromJson(core.Map _json) {
if (_json.containsKey("pointCount")) {
pointCount = _json["pointCount"];
}
if (_json.containsKey("status")) {
status = new Status.fromJson(_json["status"]);
}
}
core.Map<core.String, core.Object> toJson() {
final core.Map<core.String, core.Object> _json =
new core.Map<core.String, core.Object>();
if (pointCount != null) {
_json["pointCount"] = pointCount;
}
if (status != null) {
_json["status"] = (status).toJson();
}
return _json;
}
}
/// Exemplars are example points that may be used to annotate aggregated
/// distribution values. They are metadata that gives information about a
/// particular value added to a Distribution bucket, such as a trace ID that was
/// active when a value was added. They may contain further information, such as
/// a example values and timestamps, origin, etc.
class Exemplar {
/// Contextual information about the example value. Examples are:Trace:
/// type.googleapis.com/google.monitoring.v3.SpanContextLiteral string:
/// type.googleapis.com/google.protobuf.StringValueLabels dropped during
/// aggregation: type.googleapis.com/google.monitoring.v3.DroppedLabelsThere
/// may be only a single attachment of any given message type in a single
/// exemplar, and this is enforced by the system.
///
/// The values for Object must be JSON objects. It can consist of `num`,
/// `String`, `bool` and `null` as well as `Map` and `List` values.
core.List<core.Map<core.String, core.Object>> attachments;
/// The observation (sampling) time of the above value.
core.String timestamp;
/// Value of the exemplar point. This value determines to which bucket the
/// exemplar belongs.
core.double value;
Exemplar();
Exemplar.fromJson(core.Map _json) {
if (_json.containsKey("attachments")) {
attachments = (_json["attachments"] as core.List)
.map<core.Map<core.String, core.Object>>(
(value) => (value as core.Map).cast<core.String, core.Object>())
.toList();
}
if (_json.containsKey("timestamp")) {
timestamp = _json["timestamp"];
}
if (_json.containsKey("value")) {
value = _json["value"].toDouble();
}
}
core.Map<core.String, core.Object> toJson() {
final core.Map<core.String, core.Object> _json =
new core.Map<core.String, core.Object>();
if (attachments != null) {
_json["attachments"] = attachments;
}
if (timestamp != null) {
_json["timestamp"] = timestamp;
}
if (value != null) {
_json["value"] = value;
}
return _json;
}
}
/// Specifies a set of buckets with arbitrary widths.There are size(bounds) + 1
/// (= N) buckets. Bucket i has the following boundaries:Upper bound (0 <= i <
/// N-1): boundsi Lower bound (1 <= i < N); boundsi - 1The bounds field must
/// contain at least one element. If bounds has only one element, then there are
/// no finite buckets, and that single element is the common boundary of the
/// overflow and underflow buckets.
class Explicit {
/// The values must be monotonically increasing.
core.List<core.double> bounds;
Explicit();
Explicit.fromJson(core.Map _json) {
if (_json.containsKey("bounds")) {
bounds = (_json["bounds"] as core.List)
.map<core.double>((value) => value.toDouble())
.toList();
}
}
core.Map<core.String, core.Object> toJson() {
final core.Map<core.String, core.Object> _json =
new core.Map<core.String, core.Object>();
if (bounds != null) {
_json["bounds"] = bounds;
}
return _json;
}
}
/// Specifies an exponential sequence of buckets that have a width that is
/// proportional to the value of the lower bound. Each bucket represents a
/// constant relative uncertainty on a specific value in the bucket.There are
/// num_finite_buckets + 2 (= N) buckets. Bucket i has the following
/// boundaries:Upper bound (0 <= i < N-1): scale * (growth_factor ^ i). Lower
/// bound (1 <= i < N): scale * (growth_factor ^ (i - 1)).
class Exponential {
/// Must be greater than 1.
core.double growthFactor;
/// Must be greater than 0.
core.int numFiniteBuckets;
/// Must be greater than 0.
core.double scale;
Exponential();
Exponential.fromJson(core.Map _json) {
if (_json.containsKey("growthFactor")) {
growthFactor = _json["growthFactor"].toDouble();
}
if (_json.containsKey("numFiniteBuckets")) {
numFiniteBuckets = _json["numFiniteBuckets"];
}
if (_json.containsKey("scale")) {
scale = _json["scale"].toDouble();
}
}
core.Map<core.String, core.Object> toJson() {
final core.Map<core.String, core.Object> _json =
new core.Map<core.String, core.Object>();
if (growthFactor != null) {
_json["growthFactor"] = growthFactor;
}
if (numFiniteBuckets != null) {
_json["numFiniteBuckets"] = numFiniteBuckets;
}
if (scale != null) {
_json["scale"] = scale;
}
return _json;
}
}
/// A single field of a message type.
class Field {
/// The field cardinality.
/// Possible string values are:
/// - "CARDINALITY_UNKNOWN" : For fields with unknown cardinality.
/// - "CARDINALITY_OPTIONAL" : For optional fields.
/// - "CARDINALITY_REQUIRED" : For required fields. Proto2 syntax only.
/// - "CARDINALITY_REPEATED" : For repeated fields.
core.String cardinality;
/// The string value of the default value of this field. Proto2 syntax only.
core.String defaultValue;
/// The field JSON name.
core.String jsonName;
/// The field type.
/// Possible string values are:
/// - "TYPE_UNKNOWN" : Field type unknown.
/// - "TYPE_DOUBLE" : Field type double.
/// - "TYPE_FLOAT" : Field type float.
/// - "TYPE_INT64" : Field type int64.
/// - "TYPE_UINT64" : Field type uint64.
/// - "TYPE_INT32" : Field type int32.
/// - "TYPE_FIXED64" : Field type fixed64.
/// - "TYPE_FIXED32" : Field type fixed32.
/// - "TYPE_BOOL" : Field type bool.
/// - "TYPE_STRING" : Field type string.
/// - "TYPE_GROUP" : Field type group. Proto2 syntax only, and deprecated.
/// - "TYPE_MESSAGE" : Field type message.
/// - "TYPE_BYTES" : Field type bytes.
/// - "TYPE_UINT32" : Field type uint32.
/// - "TYPE_ENUM" : Field type enum.
/// - "TYPE_SFIXED32" : Field type sfixed32.
/// - "TYPE_SFIXED64" : Field type sfixed64.
/// - "TYPE_SINT32" : Field type sint32.
/// - "TYPE_SINT64" : Field type sint64.
core.String kind;
/// The field name.
core.String name;
/// The field number.
core.int number;
/// The index of the field type in Type.oneofs, for message or enumeration
/// types. The first type has index 1; zero means the type is not in the list.
core.int oneofIndex;
/// The protocol buffer options.
core.List<Option> options;
/// Whether to use alternative packed wire representation.
core.bool packed;
/// The field type URL, without the scheme, for message or enumeration types.
/// Example: "type.googleapis.com/google.protobuf.Timestamp".
core.String typeUrl;
Field();
Field.fromJson(core.Map _json) {
if (_json.containsKey("cardinality")) {
cardinality = _json["cardinality"];
}
if (_json.containsKey("defaultValue")) {
defaultValue = _json["defaultValue"];
}
if (_json.containsKey("jsonName")) {
jsonName = _json["jsonName"];
}
if (_json.containsKey("kind")) {
kind = _json["kind"];
}
if (_json.containsKey("name")) {
name = _json["name"];
}
if (_json.containsKey("number")) {
number = _json["number"];
}
if (_json.containsKey("oneofIndex")) {
oneofIndex = _json["oneofIndex"];
}
if (_json.containsKey("options")) {
options = (_json["options"] as core.List)
.map<Option>((value) => new Option.fromJson(value))
.toList();
}
if (_json.containsKey("packed")) {
packed = _json["packed"];
}
if (_json.containsKey("typeUrl")) {
typeUrl = _json["typeUrl"];
}
}
core.Map<core.String, core.Object> toJson() {
final core.Map<core.String, core.Object> _json =
new core.Map<core.String, core.Object>();
if (cardinality != null) {
_json["cardinality"] = cardinality;
}
if (defaultValue != null) {
_json["defaultValue"] = defaultValue;
}
if (jsonName != null) {
_json["jsonName"] = jsonName;
}
if (kind != null) {
_json["kind"] = kind;
}
if (name != null) {
_json["name"] = name;
}
if (number != null) {
_json["number"] = number;
}
if (oneofIndex != null) {
_json["oneofIndex"] = oneofIndex;
}
if (options != null) {
_json["options"] = options.map((value) => (value).toJson()).toList();
}
if (packed != null) {
_json["packed"] = packed;
}
if (typeUrl != null) {
_json["typeUrl"] = typeUrl;
}
return _json;
}
}
/// The GetNotificationChannelVerificationCode request.
class GetNotificationChannelVerificationCodeRequest {
/// The desired expiration time. If specified, the API will guarantee that the
/// returned code will not be valid after the specified timestamp; however,
/// the API cannot guarantee that the returned code will be valid for at least
/// as long as the requested time (the API puts an upper bound on the amount
/// of time for which a code may be valid). If omitted, a default expiration
/// will be used, which may be less than the max permissible expiration (so
/// specifying an expiration may extend the code's lifetime over omitting an
/// expiration, even though the API does impose an upper limit on the maximum
/// expiration that is permitted).
core.String expireTime;
GetNotificationChannelVerificationCodeRequest();
GetNotificationChannelVerificationCodeRequest.fromJson(core.Map _json) {
if (_json.containsKey("expireTime")) {
expireTime = _json["expireTime"];
}
}
core.Map<core.String, core.Object> toJson() {
final core.Map<core.String, core.Object> _json =
new core.Map<core.String, core.Object>();
if (expireTime != null) {
_json["expireTime"] = expireTime;
}
return _json;
}
}
/// The GetNotificationChannelVerificationCode request.
class GetNotificationChannelVerificationCodeResponse {
/// The verification code, which may be used to verify other channels that
/// have an equivalent identity (i.e. other channels of the same type with the
/// same fingerprint such as other email channels with the same email address
/// or other sms channels with the same number).
core.String code;
/// The expiration time associated with the code that was returned. If an
/// expiration was provided in the request, this is the minimum of the
/// requested expiration in the request and the max permitted expiration.
core.String expireTime;
GetNotificationChannelVerificationCodeResponse();
GetNotificationChannelVerificationCodeResponse.fromJson(core.Map _json) {
if (_json.containsKey("code")) {
code = _json["code"];
}
if (_json.containsKey("expireTime")) {
expireTime = _json["expireTime"];
}
}
core.Map<core.String, core.Object> toJson() {
final core.Map<core.String, core.Object> _json =
new core.Map<core.String, core.Object>();
if (code != null) {
_json["code"] = code;
}
if (expireTime != null) {
_json["expireTime"] = expireTime;
}
return _json;
}
}
/// Range of numerical values, inclusive of min and exclusive of max. If the
/// open range "< range.max" is desired, set range.min = -infinity. If the open
/// range ">= range.min" is desired, set range.max = infinity.
class GoogleMonitoringV3Range {
/// Range maximum.
core.double max;
/// Range minimum.
core.double min;
GoogleMonitoringV3Range();
GoogleMonitoringV3Range.fromJson(core.Map _json) {
if (_json.containsKey("max")) {
max = _json["max"].toDouble();
}
if (_json.containsKey("min")) {
min = _json["min"].toDouble();
}
}
core.Map<core.String, core.Object> toJson() {
final core.Map<core.String, core.Object> _json =
new core.Map<core.String, core.Object>();
if (max != null) {
_json["max"] = max;
}
if (min != null) {
_json["min"] = min;
}
return _json;
}
}
/// The description of a dynamic collection of monitored resources. Each group
/// has a filter that is matched against monitored resources and their
/// associated metadata. If a group's filter matches an available monitored
/// resource, then that resource is a member of that group. Groups can contain
/// any number of monitored resources, and each monitored resource can be a
/// member of any number of groups.Groups can be nested in parent-child
/// hierarchies. The parentName field identifies an optional parent for each
/// group. If a group has a parent, then the only monitored resources available
/// to be matched by the group's filter are the resources contained in the
/// parent group. In other words, a group contains the monitored resources that
/// match its filter and the filters of all the group's ancestors. A group
/// without a parent can contain any monitored resource.For example, consider an
/// infrastructure running a set of instances with two user-defined tags:
/// "environment" and "role". A parent group has a filter,
/// environment="production". A child of that parent group has a filter,
/// role="transcoder". The parent group contains all instances in the production
/// environment, regardless of their roles. The child group contains instances
/// that have the transcoder role and are in the production environment.The
/// monitored resources contained in a group can change at any moment, depending
/// on what resources exist and what filters are associated with the group and
/// its ancestors.
class Group {
/// A user-assigned name for this group, used only for display purposes.
core.String displayName;
/// The filter used to determine which monitored resources belong to this
/// group.
core.String filter;
/// If true, the members of this group are considered to be a cluster. The
/// system can perform additional analysis on groups that are clusters.
core.bool isCluster;
/// Output only. The name of this group. The format is:
/// projects/[PROJECT_ID_OR_NUMBER]/groups/[GROUP_ID] When creating a group,
/// this field is ignored and a new name is created consisting of the project
/// specified in the call to CreateGroup and a unique [GROUP_ID] that is
/// generated automatically.
core.String name;
/// The name of the group's parent, if it has one. The format is:
/// projects/[PROJECT_ID_OR_NUMBER]/groups/[GROUP_ID] For groups with no
/// parent, parent_name is the empty string, "".
core.String parentName;
Group();
Group.fromJson(core.Map _json) {
if (_json.containsKey("displayName")) {
displayName = _json["displayName"];
}
if (_json.containsKey("filter")) {
filter = _json["filter"];
}
if (_json.containsKey("isCluster")) {
isCluster = _json["isCluster"];
}
if (_json.containsKey("name")) {
name = _json["name"];
}
if (_json.containsKey("parentName")) {
parentName = _json["parentName"];
}
}
core.Map<core.String, core.Object> toJson() {
final core.Map<core.String, core.Object> _json =
new core.Map<core.String, core.Object>();
if (displayName != null) {
_json["displayName"] = displayName;
}
if (filter != null) {
_json["filter"] = filter;
}
if (isCluster != null) {
_json["isCluster"] = isCluster;
}
if (name != null) {
_json["name"] = name;
}
if (parentName != null) {
_json["parentName"] = parentName;
}
return _json;
}
}
/// Information involved in an HTTP/HTTPS Uptime check request.
class HttpCheck {
/// The authentication information. Optional when creating an HTTP check;
/// defaults to empty.
BasicAuthentication authInfo;
/// The request body associated with the HTTP POST request. If content_type is
/// URL_ENCODED, the body passed in must be URL-encoded. Users can provide a
/// Content-Length header via the headers field or the API will do so. If the
/// request_method is GET and body is not empty, the API will return an error.
/// The maximum byte size is 1 megabyte. Note: As with all bytes fields JSON
/// representations are base64 encoded. e.g.: "foo=bar" in URL-encoded form is
/// "foo%3Dbar" and in base64 encoding is "Zm9vJTI1M0RiYXI=".
core.String body;
core.List<core.int> get bodyAsBytes {
return convert.base64.decode(body);
}
set bodyAsBytes(core.List<core.int> _bytes) {
body =
convert.base64.encode(_bytes).replaceAll("/", "_").replaceAll("+", "-");
}
/// The content type to use for the check.
/// Possible string values are:
/// - "TYPE_UNSPECIFIED" : No content type specified. If the request method is
/// POST, an unspecified content type results in a check creation rejection.
/// - "URL_ENCODED" : body is in URL-encoded form. Equivalent to setting the
/// Content-Type to application/x-www-form-urlencoded in the HTTP request.
core.String contentType;
/// The list of headers to send as part of the Uptime check request. If two
/// headers have the same key and different values, they should be entered as
/// a single header, with the value being a comma-separated list of all the
/// desired values as described at
/// https://www.w3.org/Protocols/rfc2616/rfc2616.txt (page 31). Entering two
/// separate headers with the same key in a Create call will cause the first
/// to be overwritten by the second. The maximum number of headers allowed is
/// 100.
core.Map<core.String, core.String> headers;
/// Boolean specifying whether to encrypt the header information. Encryption
/// should be specified for any headers related to authentication that you do
/// not wish to be seen when retrieving the configuration. The server will be
/// responsible for encrypting the headers. On Get/List calls, if mask_headers
/// is set to true then the headers will be obscured with ******.
core.bool maskHeaders;
/// Optional (defaults to "/"). The path to the page against which to run the
/// check. Will be combined with the host (specified within the
/// monitored_resource) and port to construct the full URL. If the provided
/// path does not begin with "/", a "/" will be prepended automatically.
core.String path;
/// Optional (defaults to 80 when use_ssl is false, and 443 when use_ssl is
/// true). The TCP port on the HTTP server against which to run the check.
/// Will be combined with host (specified within the monitored_resource) and
/// path to construct the full URL.
core.int port;
/// The HTTP request method to use for the check. If set to METHOD_UNSPECIFIED
/// then request_method defaults to GET.
/// Possible string values are:
/// - "METHOD_UNSPECIFIED" : No request method specified.
/// - "GET" : GET request.
/// - "POST" : POST request.
core.String requestMethod;
/// If true, use HTTPS instead of HTTP to run the check.
core.bool useSsl;
/// Boolean specifying whether to include SSL certificate validation as a part
/// of the Uptime check. Only applies to checks where monitored_resource is
/// set to uptime_url. If use_ssl is false, setting validate_ssl to true has
/// no effect.
core.bool validateSsl;
HttpCheck();
HttpCheck.fromJson(core.Map _json) {
if (_json.containsKey("authInfo")) {
authInfo = new BasicAuthentication.fromJson(_json["authInfo"]);
}
if (_json.containsKey("body")) {
body = _json["body"];
}
if (_json.containsKey("contentType")) {
contentType = _json["contentType"];
}
if (_json.containsKey("headers")) {
headers = (_json["headers"] as core.Map).cast<core.String, core.String>();
}
if (_json.containsKey("maskHeaders")) {
maskHeaders = _json["maskHeaders"];
}
if (_json.containsKey("path")) {
path = _json["path"];
}
if (_json.containsKey("port")) {
port = _json["port"];
}
if (_json.containsKey("requestMethod")) {
requestMethod = _json["requestMethod"];
}
if (_json.containsKey("useSsl")) {
useSsl = _json["useSsl"];
}
if (_json.containsKey("validateSsl")) {
validateSsl = _json["validateSsl"];
}
}
core.Map<core.String, core.Object> toJson() {
final core.Map<core.String, core.Object> _json =
new core.Map<core.String, core.Object>();
if (authInfo != null) {
_json["authInfo"] = (authInfo).toJson();
}
if (body != null) {
_json["body"] = body;
}
if (contentType != null) {
_json["contentType"] = contentType;
}
if (headers != null) {
_json["headers"] = headers;
}
if (maskHeaders != null) {
_json["maskHeaders"] = maskHeaders;
}
if (path != null) {
_json["path"] = path;
}
if (port != null) {
_json["port"] = port;
}
if (requestMethod != null) {
_json["requestMethod"] = requestMethod;
}
if (useSsl != null) {
_json["useSsl"] = useSsl;
}
if (validateSsl != null) {
_json["validateSsl"] = validateSsl;
}
return _json;
}
}
/// An internal checker allows Uptime checks to run on private/internal GCP
/// resources.
class InternalChecker {
/// The checker's human-readable name. The display name should be unique
/// within a Stackdriver Workspace in order to make it easier to identify;
/// however, uniqueness is not enforced.
core.String displayName;
/// The GCP zone the Uptime check should egress from. Only respected for
/// internal Uptime checks, where internal_network is specified.
core.String gcpZone;
/// A unique resource name for this InternalChecker. The format is:
/// projects/[PROJECT_ID_OR_NUMBER]/internalCheckers/[INTERNAL_CHECKER_ID]
/// [PROJECT_ID_OR_NUMBER] is the Stackdriver Workspace project for the Uptime
/// check config associated with the internal checker.
core.String name;
/// The GCP VPC network (https://cloud.google.com/vpc/docs/vpc) where the
/// internal resource lives (ex: "default").
core.String network;
/// The GCP project ID where the internal checker lives. Not necessary the
/// same as the Workspace project.
core.String peerProjectId;
/// The current operational state of the internal checker.
/// Possible string values are:
/// - "UNSPECIFIED" : An internal checker should never be in the unspecified
/// state.
/// - "CREATING" : The checker is being created, provisioned, and configured.
/// A checker in this state can be returned by ListInternalCheckers or
/// GetInternalChecker, as well as by examining the long running Operation
/// (https://cloud.google.com/apis/design/design_patterns#long_running_operations)
/// that created it.
/// - "RUNNING" : The checker is running and available for use. A checker in
/// this state can be returned by ListInternalCheckers or GetInternalChecker
/// as well as by examining the long running Operation
/// (https://cloud.google.com/apis/design/design_patterns#long_running_operations)
/// that created it. If a checker is being torn down, it is neither visible
/// nor usable, so there is no "deleting" or "down" state.
core.String state;
InternalChecker();
InternalChecker.fromJson(core.Map _json) {
if (_json.containsKey("displayName")) {
displayName = _json["displayName"];
}
if (_json.containsKey("gcpZone")) {
gcpZone = _json["gcpZone"];
}
if (_json.containsKey("name")) {
name = _json["name"];
}
if (_json.containsKey("network")) {
network = _json["network"];
}
if (_json.containsKey("peerProjectId")) {
peerProjectId = _json["peerProjectId"];
}
if (_json.containsKey("state")) {
state = _json["state"];
}
}
core.Map<core.String, core.Object> toJson() {
final core.Map<core.String, core.Object> _json =
new core.Map<core.String, core.Object>();
if (displayName != null) {
_json["displayName"] = displayName;
}
if (gcpZone != null) {
_json["gcpZone"] = gcpZone;
}
if (name != null) {
_json["name"] = name;
}
if (network != null) {
_json["network"] = network;
}
if (peerProjectId != null) {
_json["peerProjectId"] = peerProjectId;
}
if (state != null) {
_json["state"] = state;
}
return _json;
}
}
/// A description of a label.
class LabelDescriptor {
/// A human-readable description for the label.
core.String description;
/// The key for this label. The key must meet the following criteria: Does not
/// exceed 100 characters. Matches the following regular expression:
/// [a-zA-Z][a-zA-Z0-9_]* The first character must be an upper- or lower-case
/// letter. The remaining characters must be letters, digits, or underscores.
core.String key;
/// The type of data that can be assigned to the label.
/// Possible string values are:
/// - "STRING" : A variable-length string, not to exceed 1,024 characters.
/// This is the default value type.
/// - "BOOL" : Boolean; true or false.
/// - "INT64" : A 64-bit signed integer.
core.String valueType;
LabelDescriptor();
LabelDescriptor.fromJson(core.Map _json) {
if (_json.containsKey("description")) {
description = _json["description"];
}
if (_json.containsKey("key")) {
key = _json["key"];
}
if (_json.containsKey("valueType")) {
valueType = _json["valueType"];
}
}
core.Map<core.String, core.Object> toJson() {
final core.Map<core.String, core.Object> _json =
new core.Map<core.String, core.Object>();
if (description != null) {
_json["description"] = description;
}
if (key != null) {
_json["key"] = key;
}
if (valueType != null) {
_json["valueType"] = valueType;
}
return _json;
}
}
/// A label value.
class LabelValue {
/// A bool label value.
core.bool boolValue;
/// An int64 label value.
core.String int64Value;
/// A string label value.
core.String stringValue;
LabelValue();
LabelValue.fromJson(core.Map _json) {
if (_json.containsKey("boolValue")) {
boolValue = _json["boolValue"];
}
if (_json.containsKey("int64Value")) {
int64Value = _json["int64Value"];
}
if (_json.containsKey("stringValue")) {
stringValue = _json["stringValue"];
}
}
core.Map<core.String, core.Object> toJson() {
final core.Map<core.String, core.Object> _json =
new core.Map<core.String, core.Object>();
if (boolValue != null) {
_json["boolValue"] = boolValue;
}
if (int64Value != null) {
_json["int64Value"] = int64Value;
}
if (stringValue != null) {
_json["stringValue"] = stringValue;
}
return _json;
}
}
/// Parameters for a latency threshold SLI.
class LatencyCriteria {
/// Good service is defined to be the count of requests made to this service
/// that return in no more than threshold.
core.String threshold;
LatencyCriteria();
LatencyCriteria.fromJson(core.Map _json) {
if (_json.containsKey("threshold")) {
threshold = _json["threshold"];
}
}
core.Map<core.String, core.Object> toJson() {
final core.Map<core.String, core.Object> _json =
new core.Map<core.String, core.Object>();
if (threshold != null) {
_json["threshold"] = threshold;
}
return _json;
}
}
/// Specifies a linear sequence of buckets that all have the same width (except
/// overflow and underflow). Each bucket represents a constant absolute
/// uncertainty on the specific value in the bucket.There are num_finite_buckets
/// + 2 (= N) buckets. Bucket i has the following boundaries:Upper bound (0 <= i
/// < N-1): offset + (width * i). Lower bound (1 <= i < N): offset + (width * (i
/// - 1)).
class Linear {
/// Must be greater than 0.
core.int numFiniteBuckets;
/// Lower bound of the first bucket.
core.double offset;
/// Must be greater than 0.
core.double width;
Linear();
Linear.fromJson(core.Map _json) {
if (_json.containsKey("numFiniteBuckets")) {
numFiniteBuckets = _json["numFiniteBuckets"];
}
if (_json.containsKey("offset")) {
offset = _json["offset"].toDouble();
}
if (_json.containsKey("width")) {
width = _json["width"].toDouble();
}
}
core.Map<core.String, core.Object> toJson() {
final core.Map<core.String, core.Object> _json =
new core.Map<core.String, core.Object>();
if (numFiniteBuckets != null) {
_json["numFiniteBuckets"] = numFiniteBuckets;
}
if (offset != null) {
_json["offset"] = offset;
}
if (width != null) {
_json["width"] = width;
}
return _json;
}
}
/// The protocol for the ListAlertPolicies response.
class ListAlertPoliciesResponse {
/// The returned alert policies.
core.List<AlertPolicy> alertPolicies;
/// If there might be more results than were returned, then this field is set
/// to a non-empty value. To see the additional results, use that value as
/// page_token in the next call to this method.
core.String nextPageToken;
/// The total number of alert policies in all pages. This number is only an
/// estimate, and may change in subsequent pages. https://aip.dev/158
core.int totalSize;
ListAlertPoliciesResponse();
ListAlertPoliciesResponse.fromJson(core.Map _json) {
if (_json.containsKey("alertPolicies")) {
alertPolicies = (_json["alertPolicies"] as core.List)
.map<AlertPolicy>((value) => new AlertPolicy.fromJson(value))
.toList();
}
if (_json.containsKey("nextPageToken")) {
nextPageToken = _json["nextPageToken"];
}
if (_json.containsKey("totalSize")) {
totalSize = _json["totalSize"];
}
}
core.Map<core.String, core.Object> toJson() {
final core.Map<core.String, core.Object> _json =
new core.Map<core.String, core.Object>();
if (alertPolicies != null) {
_json["alertPolicies"] =
alertPolicies.map((value) => (value).toJson()).toList();
}
if (nextPageToken != null) {
_json["nextPageToken"] = nextPageToken;
}
if (totalSize != null) {
_json["totalSize"] = totalSize;
}
return _json;
}
}
/// The ListGroupMembers response.
class ListGroupMembersResponse {
/// A set of monitored resources in the group.
core.List<MonitoredResource> members;
/// If there are more results than have been returned, then this field is set
/// to a non-empty value. To see the additional results, use that value as
/// page_token in the next call to this method.
core.String nextPageToken;
/// The total number of elements matching this request.
core.int totalSize;
ListGroupMembersResponse();
ListGroupMembersResponse.fromJson(core.Map _json) {
if (_json.containsKey("members")) {
members = (_json["members"] as core.List)
.map<MonitoredResource>(
(value) => new MonitoredResource.fromJson(value))
.toList();
}
if (_json.containsKey("nextPageToken")) {
nextPageToken = _json["nextPageToken"];
}
if (_json.containsKey("totalSize")) {
totalSize = _json["totalSize"];
}
}
core.Map<core.String, core.Object> toJson() {
final core.Map<core.String, core.Object> _json =
new core.Map<core.String, core.Object>();
if (members != null) {
_json["members"] = members.map((value) => (value).toJson()).toList();
}
if (nextPageToken != null) {
_json["nextPageToken"] = nextPageToken;
}
if (totalSize != null) {
_json["totalSize"] = totalSize;
}
return _json;
}
}
/// The ListGroups response.
class ListGroupsResponse {
/// The groups that match the specified filters.
core.List<Group> group;
/// If there are more results than have been returned, then this field is set
/// to a non-empty value. To see the additional results, use that value as
/// page_token in the next call to this method.
core.String nextPageToken;
ListGroupsResponse();
ListGroupsResponse.fromJson(core.Map _json) {
if (_json.containsKey("group")) {
group = (_json["group"] as core.List)
.map<Group>((value) => new Group.fromJson(value))
.toList();
}
if (_json.containsKey("nextPageToken")) {
nextPageToken = _json["nextPageToken"];
}
}
core.Map<core.String, core.Object> toJson() {
final core.Map<core.String, core.Object> _json =
new core.Map<core.String, core.Object>();
if (group != null) {
_json["group"] = group.map((value) => (value).toJson()).toList();
}
if (nextPageToken != null) {
_json["nextPageToken"] = nextPageToken;
}
return _json;
}
}
/// The ListMetricDescriptors response.
class ListMetricDescriptorsResponse {
/// The metric descriptors that are available to the project and that match
/// the value of filter, if present.
core.List<MetricDescriptor> metricDescriptors;
/// If there are more results than have been returned, then this field is set
/// to a non-empty value. To see the additional results, use that value as
/// page_token in the next call to this method.
core.String nextPageToken;
ListMetricDescriptorsResponse();
ListMetricDescriptorsResponse.fromJson(core.Map _json) {
if (_json.containsKey("metricDescriptors")) {
metricDescriptors = (_json["metricDescriptors"] as core.List)
.map<MetricDescriptor>(
(value) => new MetricDescriptor.fromJson(value))
.toList();
}
if (_json.containsKey("nextPageToken")) {
nextPageToken = _json["nextPageToken"];
}
}
core.Map<core.String, core.Object> toJson() {
final core.Map<core.String, core.Object> _json =
new core.Map<core.String, core.Object>();
if (metricDescriptors != null) {
_json["metricDescriptors"] =
metricDescriptors.map((value) => (value).toJson()).toList();
}
if (nextPageToken != null) {
_json["nextPageToken"] = nextPageToken;
}
return _json;
}
}
/// The ListMonitoredResourceDescriptors response.
class ListMonitoredResourceDescriptorsResponse {
/// If there are more results than have been returned, then this field is set
/// to a non-empty value. To see the additional results, use that value as
/// page_token in the next call to this method.
core.String nextPageToken;
/// The monitored resource descriptors that are available to this project and
/// that match filter, if present.
core.List<MonitoredResourceDescriptor> resourceDescriptors;
ListMonitoredResourceDescriptorsResponse();
ListMonitoredResourceDescriptorsResponse.fromJson(core.Map _json) {
if (_json.containsKey("nextPageToken")) {
nextPageToken = _json["nextPageToken"];
}
if (_json.containsKey("resourceDescriptors")) {
resourceDescriptors = (_json["resourceDescriptors"] as core.List)
.map<MonitoredResourceDescriptor>(
(value) => new MonitoredResourceDescriptor.fromJson(value))
.toList();
}
}
core.Map<core.String, core.Object> toJson() {
final core.Map<core.String, core.Object> _json =
new core.Map<core.String, core.Object>();
if (nextPageToken != null) {
_json["nextPageToken"] = nextPageToken;
}
if (resourceDescriptors != null) {
_json["resourceDescriptors"] =
resourceDescriptors.map((value) => (value).toJson()).toList();
}
return _json;
}
}
/// The ListNotificationChannelDescriptors response.
class ListNotificationChannelDescriptorsResponse {
/// The monitored resource descriptors supported for the specified project,
/// optionally filtered.
core.List<NotificationChannelDescriptor> channelDescriptors;
/// If not empty, indicates that there may be more results that match the
/// request. Use the value in the page_token field in a subsequent request to
/// fetch the next set of results. If empty, all results have been returned.
core.String nextPageToken;
ListNotificationChannelDescriptorsResponse();
ListNotificationChannelDescriptorsResponse.fromJson(core.Map _json) {
if (_json.containsKey("channelDescriptors")) {
channelDescriptors = (_json["channelDescriptors"] as core.List)
.map<NotificationChannelDescriptor>(
(value) => new NotificationChannelDescriptor.fromJson(value))
.toList();
}
if (_json.containsKey("nextPageToken")) {
nextPageToken = _json["nextPageToken"];
}
}
core.Map<core.String, core.Object> toJson() {
final core.Map<core.String, core.Object> _json =
new core.Map<core.String, core.Object>();
if (channelDescriptors != null) {
_json["channelDescriptors"] =
channelDescriptors.map((value) => (value).toJson()).toList();
}
if (nextPageToken != null) {
_json["nextPageToken"] = nextPageToken;
}
return _json;
}
}
/// The ListNotificationChannels response.
class ListNotificationChannelsResponse {
/// If not empty, indicates that there may be more results that match the
/// request. Use the value in the page_token field in a subsequent request to
/// fetch the next set of results. If empty, all results have been returned.
core.String nextPageToken;
/// The notification channels defined for the specified project.
core.List<NotificationChannel> notificationChannels;
/// The total number of notification channels in all pages. This number is
/// only an estimate, and may change in subsequent pages. https://aip.dev/158
core.int totalSize;
ListNotificationChannelsResponse();
ListNotificationChannelsResponse.fromJson(core.Map _json) {
if (_json.containsKey("nextPageToken")) {
nextPageToken = _json["nextPageToken"];
}
if (_json.containsKey("notificationChannels")) {
notificationChannels = (_json["notificationChannels"] as core.List)
.map<NotificationChannel>(
(value) => new NotificationChannel.fromJson(value))
.toList();
}
if (_json.containsKey("totalSize")) {
totalSize = _json["totalSize"];
}
}
core.Map<core.String, core.Object> toJson() {
final core.Map<core.String, core.Object> _json =
new core.Map<core.String, core.Object>();
if (nextPageToken != null) {
_json["nextPageToken"] = nextPageToken;
}
if (notificationChannels != null) {
_json["notificationChannels"] =
notificationChannels.map((value) => (value).toJson()).toList();
}
if (totalSize != null) {
_json["totalSize"] = totalSize;
}
return _json;
}
}
/// The ListServiceLevelObjectives response.
class ListServiceLevelObjectivesResponse {
/// If there are more results than have been returned, then this field is set
/// to a non-empty value. To see the additional results, use that value as
/// page_token in the next call to this method.
core.String nextPageToken;
/// The ServiceLevelObjectives matching the specified filter.
core.List<ServiceLevelObjective> serviceLevelObjectives;
ListServiceLevelObjectivesResponse();
ListServiceLevelObjectivesResponse.fromJson(core.Map _json) {
if (_json.containsKey("nextPageToken")) {
nextPageToken = _json["nextPageToken"];
}
if (_json.containsKey("serviceLevelObjectives")) {
serviceLevelObjectives = (_json["serviceLevelObjectives"] as core.List)
.map<ServiceLevelObjective>(
(value) => new ServiceLevelObjective.fromJson(value))
.toList();
}
}
core.Map<core.String, core.Object> toJson() {
final core.Map<core.String, core.Object> _json =
new core.Map<core.String, core.Object>();
if (nextPageToken != null) {
_json["nextPageToken"] = nextPageToken;
}
if (serviceLevelObjectives != null) {
_json["serviceLevelObjectives"] =
serviceLevelObjectives.map((value) => (value).toJson()).toList();
}
return _json;
}
}
/// The ListServices response.
class ListServicesResponse {
/// If there are more results than have been returned, then this field is set
/// to a non-empty value. To see the additional results, use that value as
/// page_token in the next call to this method.
core.String nextPageToken;
/// The Services matching the specified filter.
core.List<Service> services;
ListServicesResponse();
ListServicesResponse.fromJson(core.Map _json) {
if (_json.containsKey("nextPageToken")) {
nextPageToken = _json["nextPageToken"];
}
if (_json.containsKey("services")) {
services = (_json["services"] as core.List)
.map<Service>((value) => new Service.fromJson(value))
.toList();
}
}
core.Map<core.String, core.Object> toJson() {
final core.Map<core.String, core.Object> _json =
new core.Map<core.String, core.Object>();
if (nextPageToken != null) {
_json["nextPageToken"] = nextPageToken;
}
if (services != null) {
_json["services"] = services.map((value) => (value).toJson()).toList();
}
return _json;
}
}
/// The ListTimeSeries response.
class ListTimeSeriesResponse {
/// Query execution errors that may have caused the time series data returned
/// to be incomplete.
core.List<Status> executionErrors;
/// If there are more results than have been returned, then this field is set
/// to a non-empty value. To see the additional results, use that value as
/// page_token in the next call to this method.
core.String nextPageToken;
/// One or more time series that match the filter included in the request.
core.List<TimeSeries> timeSeries;
/// The unit in which all time_series point values are reported. unit follows
/// the UCUM format for units as seen in https://unitsofmeasure.org/ucum.html.
/// If different time_series have different units (for example, because they
/// come from different metric types, or a unit is absent), then unit will be
/// "{not_a_unit}".
core.String unit;
ListTimeSeriesResponse();
ListTimeSeriesResponse.fromJson(core.Map _json) {
if (_json.containsKey("executionErrors")) {
executionErrors = (_json["executionErrors"] as core.List)
.map<Status>((value) => new Status.fromJson(value))
.toList();
}
if (_json.containsKey("nextPageToken")) {
nextPageToken = _json["nextPageToken"];
}
if (_json.containsKey("timeSeries")) {
timeSeries = (_json["timeSeries"] as core.List)
.map<TimeSeries>((value) => new TimeSeries.fromJson(value))
.toList();
}
if (_json.containsKey("unit")) {
unit = _json["unit"];
}
}
core.Map<core.String, core.Object> toJson() {
final core.Map<core.String, core.Object> _json =
new core.Map<core.String, core.Object>();
if (executionErrors != null) {
_json["executionErrors"] =
executionErrors.map((value) => (value).toJson()).toList();
}
if (nextPageToken != null) {
_json["nextPageToken"] = nextPageToken;
}
if (timeSeries != null) {
_json["timeSeries"] =
timeSeries.map((value) => (value).toJson()).toList();
}
if (unit != null) {
_json["unit"] = unit;
}
return _json;
}
}
/// The protocol for the ListUptimeCheckConfigs response.
class ListUptimeCheckConfigsResponse {
/// This field represents the pagination token to retrieve the next page of
/// results. If the value is empty, it means no further results for the
/// request. To retrieve the next page of results, the value of the
/// next_page_token is passed to the subsequent List method call (in the
/// request message's page_token field).
core.String nextPageToken;
/// The total number of Uptime check configurations for the project,
/// irrespective of any pagination.
core.int totalSize;
/// The returned Uptime check configurations.
core.List<UptimeCheckConfig> uptimeCheckConfigs;
ListUptimeCheckConfigsResponse();
ListUptimeCheckConfigsResponse.fromJson(core.Map _json) {
if (_json.containsKey("nextPageToken")) {
nextPageToken = _json["nextPageToken"];
}
if (_json.containsKey("totalSize")) {
totalSize = _json["totalSize"];
}
if (_json.containsKey("uptimeCheckConfigs")) {
uptimeCheckConfigs = (_json["uptimeCheckConfigs"] as core.List)
.map<UptimeCheckConfig>(
(value) => new UptimeCheckConfig.fromJson(value))
.toList();
}
}
core.Map<core.String, core.Object> toJson() {
final core.Map<core.String, core.Object> _json =
new core.Map<core.String, core.Object>();
if (nextPageToken != null) {
_json["nextPageToken"] = nextPageToken;
}
if (totalSize != null) {
_json["totalSize"] = totalSize;
}
if (uptimeCheckConfigs != null) {
_json["uptimeCheckConfigs"] =
uptimeCheckConfigs.map((value) => (value).toJson()).toList();
}
return _json;
}
}
/// The protocol for the ListUptimeCheckIps response.
class ListUptimeCheckIpsResponse {
/// This field represents the pagination token to retrieve the next page of
/// results. If the value is empty, it means no further results for the
/// request. To retrieve the next page of results, the value of the
/// next_page_token is passed to the subsequent List method call (in the
/// request message's page_token field). NOTE: this field is not yet
/// implemented
core.String nextPageToken;
/// The returned list of IP addresses (including region and location) that the
/// checkers run from.
core.List<UptimeCheckIp> uptimeCheckIps;
ListUptimeCheckIpsResponse();
ListUptimeCheckIpsResponse.fromJson(core.Map _json) {
if (_json.containsKey("nextPageToken")) {
nextPageToken = _json["nextPageToken"];
}
if (_json.containsKey("uptimeCheckIps")) {
uptimeCheckIps = (_json["uptimeCheckIps"] as core.List)
.map<UptimeCheckIp>((value) => new UptimeCheckIp.fromJson(value))
.toList();
}
}
core.Map<core.String, core.Object> toJson() {
final core.Map<core.String, core.Object> _json =
new core.Map<core.String, core.Object>();
if (nextPageToken != null) {
_json["nextPageToken"] = nextPageToken;
}
if (uptimeCheckIps != null) {
_json["uptimeCheckIps"] =
uptimeCheckIps.map((value) => (value).toJson()).toList();
}
return _json;
}
}
/// Istio service scoped to an Istio mesh
class MeshIstio {
/// Identifier for the mesh in which this Istio service is defined.
/// Corresponds to the mesh_uid metric label in Istio metrics.
core.String meshUid;
/// The name of the Istio service underlying this service. Corresponds to the
/// destination_service_name metric label in Istio metrics.
core.String serviceName;
/// The namespace of the Istio service underlying this service. Corresponds to
/// the destination_service_namespace metric label in Istio metrics.
core.String serviceNamespace;
MeshIstio();
MeshIstio.fromJson(core.Map _json) {
if (_json.containsKey("meshUid")) {
meshUid = _json["meshUid"];
}
if (_json.containsKey("serviceName")) {
serviceName = _json["serviceName"];
}
if (_json.containsKey("serviceNamespace")) {
serviceNamespace = _json["serviceNamespace"];
}
}
core.Map<core.String, core.Object> toJson() {
final core.Map<core.String, core.Object> _json =
new core.Map<core.String, core.Object>();
if (meshUid != null) {
_json["meshUid"] = meshUid;
}
if (serviceName != null) {
_json["serviceName"] = serviceName;
}
if (serviceNamespace != null) {
_json["serviceNamespace"] = serviceNamespace;
}
return _json;
}
}
/// A specific metric, identified by specifying values for all of the labels of
/// a MetricDescriptor.
class Metric {
/// The set of label values that uniquely identify this metric. All labels
/// listed in the MetricDescriptor must be assigned values.
core.Map<core.String, core.String> labels;
/// An existing metric type, see google.api.MetricDescriptor. For example,
/// custom.googleapis.com/invoice/paid/amount.
core.String type;
Metric();
Metric.fromJson(core.Map _json) {
if (_json.containsKey("labels")) {
labels = (_json["labels"] as core.Map).cast<core.String, core.String>();
}
if (_json.containsKey("type")) {
type = _json["type"];
}
}
core.Map<core.String, core.Object> toJson() {
final core.Map<core.String, core.Object> _json =
new core.Map<core.String, core.Object>();
if (labels != null) {
_json["labels"] = labels;
}
if (type != null) {
_json["type"] = type;
}
return _json;
}
}
/// A condition type that checks that monitored resources are reporting data.
/// The configuration defines a metric and a set of monitored resources. The
/// predicate is considered in violation when a time series for the specified
/// metric of a monitored resource does not include any data in the specified
/// duration.
class MetricAbsence {
/// Specifies the alignment of data points in individual time series as well
/// as how to combine the retrieved time series together (such as when
/// aggregating multiple streams on each resource to a single stream for each
/// resource or when aggregating streams across all members of a group of
/// resrouces). Multiple aggregations are applied in the order specified.This
/// field is similar to the one in the ListTimeSeries request
/// (https://cloud.google.com/monitoring/api/ref_v3/rest/v3/projects.timeSeries/list).
/// It is advisable to use the ListTimeSeries method when debugging this
/// field.
core.List<Aggregation> aggregations;
/// The amount of time that a time series must fail to report new data to be
/// considered failing. Currently, only values that are a multiple of a
/// minute--e.g. 60, 120, or 300 seconds--are supported. If an invalid value
/// is given, an error will be returned. The Duration.nanos field is ignored.
core.String duration;
/// A filter (https://cloud.google.com/monitoring/api/v3/filters) that
/// identifies which time series should be compared with the threshold.The
/// filter is similar to the one that is specified in the ListTimeSeries
/// request
/// (https://cloud.google.com/monitoring/api/ref_v3/rest/v3/projects.timeSeries/list)
/// (that call is useful to verify the time series that will be retrieved /
/// processed) and must specify the metric type and optionally may contain
/// restrictions on resource type, resource labels, and metric labels. This
/// field may not exceed 2048 Unicode characters in length.
core.String filter;
/// The number/percent of time series for which the comparison must hold in
/// order for the condition to trigger. If unspecified, then the condition
/// will trigger if the comparison is true for any of the time series that
/// have been identified by filter and aggregations.
Trigger trigger;
MetricAbsence();
MetricAbsence.fromJson(core.Map _json) {
if (_json.containsKey("aggregations")) {
aggregations = (_json["aggregations"] as core.List)
.map<Aggregation>((value) => new Aggregation.fromJson(value))
.toList();
}
if (_json.containsKey("duration")) {
duration = _json["duration"];
}
if (_json.containsKey("filter")) {
filter = _json["filter"];
}
if (_json.containsKey("trigger")) {
trigger = new Trigger.fromJson(_json["trigger"]);
}
}
core.Map<core.String, core.Object> toJson() {
final core.Map<core.String, core.Object> _json =
new core.Map<core.String, core.Object>();
if (aggregations != null) {
_json["aggregations"] =
aggregations.map((value) => (value).toJson()).toList();
}
if (duration != null) {
_json["duration"] = duration;
}
if (filter != null) {
_json["filter"] = filter;
}
if (trigger != null) {
_json["trigger"] = (trigger).toJson();
}
return _json;
}
}
/// Defines a metric type and its schema. Once a metric descriptor is created,
/// deleting or altering it stops data collection and makes the metric type's
/// existing data unusable.
class MetricDescriptor {
/// A detailed description of the metric, which can be used in documentation.
core.String description;
/// A concise name for the metric, which can be displayed in user interfaces.
/// Use sentence case without an ending period, for example "Request count".
/// This field is optional but it is recommended to be set for any metrics
/// associated with user-visible concepts, such as Quota.
core.String displayName;
/// The set of labels that can be used to describe a specific instance of this
/// metric type. For example, the
/// appengine.googleapis.com/http/server/response_latencies metric type has a
/// label for the HTTP response code, response_code, so you can look at
/// latencies for successful responses or just for responses that failed.
core.List<LabelDescriptor> labels;
/// Optional. The launch stage of the metric definition.
/// Possible string values are:
/// - "LAUNCH_STAGE_UNSPECIFIED" : Do not use this default value.
/// - "UNIMPLEMENTED" : The feature is not yet implemented. Users can not use
/// it.
/// - "PRELAUNCH" : Prelaunch features are hidden from users and are only
/// visible internally.
/// - "EARLY_ACCESS" : Early Access features are limited to a closed group of
/// testers. To use these features, you must sign up in advance and sign a
/// Trusted Tester agreement (which includes confidentiality provisions).
/// These features may be unstable, changed in backward-incompatible ways, and
/// are not guaranteed to be released.
/// - "ALPHA" : Alpha is a limited availability test for releases before they
/// are cleared for widespread use. By Alpha, all significant design issues
/// are resolved and we are in the process of verifying functionality. Alpha
/// customers need to apply for access, agree to applicable terms, and have
/// their projects whitelisted. Alpha releases don’t have to be feature
/// complete, no SLAs are provided, and there are no technical support
/// obligations, but they will be far enough along that customers can actually
/// use them in test environments or for limited-use tests -- just like they
/// would in normal production cases.
/// - "BETA" : Beta is the point at which we are ready to open a release for
/// any customer to use. There are no SLA or technical support obligations in
/// a Beta release. Products will be complete from a feature perspective, but
/// may have some open outstanding issues. Beta releases are suitable for
/// limited production use cases.
/// - "GA" : GA features are open to all developers and are considered stable
/// and fully qualified for production use.
/// - "DEPRECATED" : Deprecated features are scheduled to be shut down and
/// removed. For more information, see the “Deprecation Policy” section of our
/// Terms of Service (https://cloud.google.com/terms/) and the Google Cloud
/// Platform Subject to the Deprecation Policy
/// (https://cloud.google.com/terms/deprecation) documentation.
core.String launchStage;
/// Optional. Metadata which can be used to guide usage of the metric.
MetricDescriptorMetadata metadata;
/// Whether the metric records instantaneous values, changes to a value, etc.
/// Some combinations of metric_kind and value_type might not be supported.
/// Possible string values are:
/// - "METRIC_KIND_UNSPECIFIED" : Do not use this default value.
/// - "GAUGE" : An instantaneous measurement of a value.
/// - "DELTA" : The change in a value during a time interval.
/// - "CUMULATIVE" : A value accumulated over a time interval. Cumulative
/// measurements in a time series should have the same start time and
/// increasing end times, until an event resets the cumulative value to zero
/// and sets a new start time for the following points.
core.String metricKind;
/// Read-only. If present, then a time series, which is identified partially
/// by a metric type and a MonitoredResourceDescriptor, that is associated
/// with this metric type can only be associated with one of the monitored
/// resource types listed here.
core.List<core.String> monitoredResourceTypes;
/// The resource name of the metric descriptor.
core.String name;
/// The metric type, including its DNS name prefix. The type is not
/// URL-encoded. All user-defined metric types have the DNS name
/// custom.googleapis.com or external.googleapis.com. Metric types should use
/// a natural hierarchical grouping. For example:
/// "custom.googleapis.com/invoice/paid/amount"
/// "external.googleapis.com/prometheus/up"
/// "appengine.googleapis.com/http/server/response_latencies"
core.String type;
/// The units in which the metric value is reported. It is only applicable if
/// the value_type is INT64, DOUBLE, or DISTRIBUTION. The unit defines the
/// representation of the stored metric values.Different systems may scale the
/// values to be more easily displayed (so a value of 0.02KBy might be
/// displayed as 20By, and a value of 3523KBy might be displayed as 3.5MBy).
/// However, if the unit is KBy, then the value of the metric is always in
/// thousands of bytes, no matter how it may be displayed..If you want a
/// custom metric to record the exact number of CPU-seconds used by a job, you
/// can create an INT64 CUMULATIVE metric whose unit is s{CPU} (or
/// equivalently 1s{CPU} or just s). If the job uses 12,005 CPU-seconds, then
/// the value is written as 12005.Alternatively, if you want a custom metric
/// to record data in a more granular way, you can create a DOUBLE CUMULATIVE
/// metric whose unit is ks{CPU}, and then write the value 12.005 (which is
/// 12005/1000), or use Kis{CPU} and write 11.723 (which is 12005/1024).The
/// supported units are a subset of The Unified Code for Units of Measure
/// (http://unitsofmeasure.org/ucum.html) standard:Basic units (UNIT) bit bit
/// By byte s second min minute h hour d day 1 dimensionlessPrefixes (PREFIX)
/// k kilo (10^3) M mega (10^6) G giga (10^9) T tera (10^12) P peta (10^15) E
/// exa (10^18) Z zetta (10^21) Y yotta (10^24) m milli (10^-3) u micro
/// (10^-6) n nano (10^-9) p pico (10^-12) f femto (10^-15) a atto (10^-18) z
/// zepto (10^-21) y yocto (10^-24) Ki kibi (2^10) Mi mebi (2^20) Gi gibi
/// (2^30) Ti tebi (2^40) Pi pebi (2^50)GrammarThe grammar also includes these
/// connectors: / division or ratio (as an infix operator). For examples,
/// kBy/{email} or MiBy/10ms (although you should almost never have /s in a
/// metric unit; rates should always be computed at query time from the
/// underlying cumulative or delta value). . multiplication or composition (as
/// an infix operator). For examples, GBy.d or k{watt}.h.The grammar for a
/// unit is as follows: Expression = Component { "." Component } { "/"
/// Component } ; Component = ( [ PREFIX ] UNIT | "%" ) [ Annotation ] |
/// Annotation | "1" ; Annotation = "{" NAME "}" ; Notes: Annotation is just a
/// comment if it follows a UNIT. If the annotation is used alone, then the
/// unit is equivalent to 1. For examples, {request}/s == 1/s,
/// By{transmitted}/s == By/s. NAME is a sequence of non-blank printable ASCII
/// characters not containing { or }. 1 represents a unitary dimensionless
/// unit (https://en.wikipedia.org/wiki/Dimensionless_quantity) of 1, such as
/// in 1/s. It is typically used when none of the basic units are appropriate.
/// For example, "new users per day" can be represented as 1/d or
/// {new-users}/d (and a metric value 5 would mean "5 new users).
/// Alternatively, "thousands of page views per day" would be represented as
/// 1000/d or k1/d or k{page_views}/d (and a metric value of 5.3 would mean
/// "5300 page views per day"). % represents dimensionless value of 1/100, and
/// annotates values giving a percentage (so the metric values are typically
/// in the range of 0..100, and a metric value 3 means "3 percent"). 10^2.%
/// indicates a metric contains a ratio, typically in the range 0..1, that
/// will be multiplied by 100 and displayed as a percentage (so a metric value
/// 0.03 means "3 percent").
core.String unit;
/// Whether the measurement is an integer, a floating-point number, etc. Some
/// combinations of metric_kind and value_type might not be supported.
/// Possible string values are:
/// - "VALUE_TYPE_UNSPECIFIED" : Do not use this default value.
/// - "BOOL" : The value is a boolean. This value type can be used only if the
/// metric kind is GAUGE.
/// - "INT64" : The value is a signed 64-bit integer.
/// - "DOUBLE" : The value is a double precision floating point number.
/// - "STRING" : The value is a text string. This value type can be used only
/// if the metric kind is GAUGE.
/// - "DISTRIBUTION" : The value is a Distribution.
/// - "MONEY" : The value is money.
core.String valueType;
MetricDescriptor();
MetricDescriptor.fromJson(core.Map _json) {
if (_json.containsKey("description")) {
description = _json["description"];
}
if (_json.containsKey("displayName")) {
displayName = _json["displayName"];
}
if (_json.containsKey("labels")) {
labels = (_json["labels"] as core.List)
.map<LabelDescriptor>((value) => new LabelDescriptor.fromJson(value))
.toList();
}
if (_json.containsKey("launchStage")) {
launchStage = _json["launchStage"];
}
if (_json.containsKey("metadata")) {
metadata = new MetricDescriptorMetadata.fromJson(_json["metadata"]);
}
if (_json.containsKey("metricKind")) {
metricKind = _json["metricKind"];
}
if (_json.containsKey("monitoredResourceTypes")) {
monitoredResourceTypes =
(_json["monitoredResourceTypes"] as core.List).cast<core.String>();
}
if (_json.containsKey("name")) {
name = _json["name"];
}
if (_json.containsKey("type")) {
type = _json["type"];
}
if (_json.containsKey("unit")) {
unit = _json["unit"];
}
if (_json.containsKey("valueType")) {
valueType = _json["valueType"];
}
}
core.Map<core.String, core.Object> toJson() {
final core.Map<core.String, core.Object> _json =
new core.Map<core.String, core.Object>();
if (description != null) {
_json["description"] = description;
}
if (displayName != null) {
_json["displayName"] = displayName;
}
if (labels != null) {
_json["labels"] = labels.map((value) => (value).toJson()).toList();
}
if (launchStage != null) {
_json["launchStage"] = launchStage;
}
if (metadata != null) {
_json["metadata"] = (metadata).toJson();
}
if (metricKind != null) {
_json["metricKind"] = metricKind;
}
if (monitoredResourceTypes != null) {
_json["monitoredResourceTypes"] = monitoredResourceTypes;
}
if (name != null) {
_json["name"] = name;
}
if (type != null) {
_json["type"] = type;
}
if (unit != null) {
_json["unit"] = unit;
}
if (valueType != null) {
_json["valueType"] = valueType;
}
return _json;
}
}
/// Additional annotations that can be used to guide the usage of a metric.
class MetricDescriptorMetadata {
/// The delay of data points caused by ingestion. Data points older than this
/// age are guaranteed to be ingested and available to be read, excluding data
/// loss due to errors.
core.String ingestDelay;
/// Deprecated. Must use the MetricDescriptor.launch_stage instead.
/// Possible string values are:
/// - "LAUNCH_STAGE_UNSPECIFIED" : Do not use this default value.
/// - "UNIMPLEMENTED" : The feature is not yet implemented. Users can not use
/// it.
/// - "PRELAUNCH" : Prelaunch features are hidden from users and are only
/// visible internally.
/// - "EARLY_ACCESS" : Early Access features are limited to a closed group of
/// testers. To use these features, you must sign up in advance and sign a
/// Trusted Tester agreement (which includes confidentiality provisions).
/// These features may be unstable, changed in backward-incompatible ways, and
/// are not guaranteed to be released.
/// - "ALPHA" : Alpha is a limited availability test for releases before they
/// are cleared for widespread use. By Alpha, all significant design issues
/// are resolved and we are in the process of verifying functionality. Alpha
/// customers need to apply for access, agree to applicable terms, and have
/// their projects whitelisted. Alpha releases don’t have to be feature
/// complete, no SLAs are provided, and there are no technical support
/// obligations, but they will be far enough along that customers can actually
/// use them in test environments or for limited-use tests -- just like they
/// would in normal production cases.
/// - "BETA" : Beta is the point at which we are ready to open a release for
/// any customer to use. There are no SLA or technical support obligations in
/// a Beta release. Products will be complete from a feature perspective, but
/// may have some open outstanding issues. Beta releases are suitable for
/// limited production use cases.
/// - "GA" : GA features are open to all developers and are considered stable
/// and fully qualified for production use.
/// - "DEPRECATED" : Deprecated features are scheduled to be shut down and
/// removed. For more information, see the “Deprecation Policy” section of our
/// Terms of Service (https://cloud.google.com/terms/) and the Google Cloud
/// Platform Subject to the Deprecation Policy
/// (https://cloud.google.com/terms/deprecation) documentation.
core.String launchStage;
/// The sampling period of metric data points. For metrics which are written
/// periodically, consecutive data points are stored at this time interval,
/// excluding data loss due to errors. Metrics with a higher granularity have
/// a smaller sampling period.
core.String samplePeriod;
MetricDescriptorMetadata();
MetricDescriptorMetadata.fromJson(core.Map _json) {
if (_json.containsKey("ingestDelay")) {
ingestDelay = _json["ingestDelay"];
}
if (_json.containsKey("launchStage")) {
launchStage = _json["launchStage"];
}
if (_json.containsKey("samplePeriod")) {
samplePeriod = _json["samplePeriod"];
}
}
core.Map<core.String, core.Object> toJson() {
final core.Map<core.String, core.Object> _json =
new core.Map<core.String, core.Object>();
if (ingestDelay != null) {
_json["ingestDelay"] = ingestDelay;
}
if (launchStage != null) {
_json["launchStage"] = launchStage;
}
if (samplePeriod != null) {
_json["samplePeriod"] = samplePeriod;
}
return _json;
}
}
/// A MetricRange is used when each window is good when the value x of a single
/// TimeSeries satisfies range.min <= x < range.max. The provided TimeSeries
/// must have ValueType = INT64 or ValueType = DOUBLE and MetricKind = GAUGE.
class MetricRange {
/// Range of values considered "good." For a one-sided range, set one bound to
/// an infinite value.
GoogleMonitoringV3Range range;
/// A monitoring filter (https://cloud.google.com/monitoring/api/v3/filters)
/// specifying the TimeSeries to use for evaluating window quality.
core.String timeSeries;
MetricRange();
MetricRange.fromJson(core.Map _json) {
if (_json.containsKey("range")) {
range = new GoogleMonitoringV3Range.fromJson(_json["range"]);
}
if (_json.containsKey("timeSeries")) {
timeSeries = _json["timeSeries"];
}
}
core.Map<core.String, core.Object> toJson() {
final core.Map<core.String, core.Object> _json =
new core.Map<core.String, core.Object>();
if (range != null) {
_json["range"] = (range).toJson();
}
if (timeSeries != null) {
_json["timeSeries"] = timeSeries;
}
return _json;
}
}
/// A condition type that compares a collection of time series against a
/// threshold.
class MetricThreshold {
/// Specifies the alignment of data points in individual time series as well
/// as how to combine the retrieved time series together (such as when
/// aggregating multiple streams on each resource to a single stream for each
/// resource or when aggregating streams across all members of a group of
/// resrouces). Multiple aggregations are applied in the order specified.This
/// field is similar to the one in the ListTimeSeries request
/// (https://cloud.google.com/monitoring/api/ref_v3/rest/v3/projects.timeSeries/list).
/// It is advisable to use the ListTimeSeries method when debugging this
/// field.
core.List<Aggregation> aggregations;
/// The comparison to apply between the time series (indicated by filter and
/// aggregation) and the threshold (indicated by threshold_value). The
/// comparison is applied on each time series, with the time series on the
/// left-hand side and the threshold on the right-hand side.Only COMPARISON_LT
/// and COMPARISON_GT are supported currently.
/// Possible string values are:
/// - "COMPARISON_UNSPECIFIED" : No ordering relationship is specified.
/// - "COMPARISON_GT" : True if the left argument is greater than the right
/// argument.
/// - "COMPARISON_GE" : True if the left argument is greater than or equal to
/// the right argument.
/// - "COMPARISON_LT" : True if the left argument is less than the right
/// argument.
/// - "COMPARISON_LE" : True if the left argument is less than or equal to the
/// right argument.
/// - "COMPARISON_EQ" : True if the left argument is equal to the right
/// argument.
/// - "COMPARISON_NE" : True if the left argument is not equal to the right
/// argument.
core.String comparison;
/// Specifies the alignment of data points in individual time series selected
/// by denominatorFilter as well as how to combine the retrieved time series
/// together (such as when aggregating multiple streams on each resource to a
/// single stream for each resource or when aggregating streams across all
/// members of a group of resources).When computing ratios, the aggregations
/// and denominator_aggregations fields must use the same alignment period and
/// produce time series that have the same periodicity and labels.
core.List<Aggregation> denominatorAggregations;
/// A filter (https://cloud.google.com/monitoring/api/v3/filters) that
/// identifies a time series that should be used as the denominator of a ratio
/// that will be compared with the threshold. If a denominator_filter is
/// specified, the time series specified by the filter field will be used as
/// the numerator.The filter must specify the metric type and optionally may
/// contain restrictions on resource type, resource labels, and metric labels.
/// This field may not exceed 2048 Unicode characters in length.
core.String denominatorFilter;
/// The amount of time that a time series must violate the threshold to be
/// considered failing. Currently, only values that are a multiple of a
/// minute--e.g., 0, 60, 120, or 300 seconds--are supported. If an invalid
/// value is given, an error will be returned. When choosing a duration, it is
/// useful to keep in mind the frequency of the underlying time series data
/// (which may also be affected by any alignments specified in the
/// aggregations field); a good duration is long enough so that a single
/// outlier does not generate spurious alerts, but short enough that unhealthy
/// states are detected and alerted on quickly.
core.String duration;
/// A filter (https://cloud.google.com/monitoring/api/v3/filters) that
/// identifies which time series should be compared with the threshold.The
/// filter is similar to the one that is specified in the ListTimeSeries
/// request
/// (https://cloud.google.com/monitoring/api/ref_v3/rest/v3/projects.timeSeries/list)
/// (that call is useful to verify the time series that will be retrieved /
/// processed) and must specify the metric type and optionally may contain
/// restrictions on resource type, resource labels, and metric labels. This
/// field may not exceed 2048 Unicode characters in length.
core.String filter;
/// A value against which to compare the time series.
core.double thresholdValue;
/// The number/percent of time series for which the comparison must hold in
/// order for the condition to trigger. If unspecified, then the condition
/// will trigger if the comparison is true for any of the time series that
/// have been identified by filter and aggregations, or by the ratio, if
/// denominator_filter and denominator_aggregations are specified.
Trigger trigger;
MetricThreshold();
MetricThreshold.fromJson(core.Map _json) {
if (_json.containsKey("aggregations")) {
aggregations = (_json["aggregations"] as core.List)
.map<Aggregation>((value) => new Aggregation.fromJson(value))
.toList();
}
if (_json.containsKey("comparison")) {
comparison = _json["comparison"];
}
if (_json.containsKey("denominatorAggregations")) {
denominatorAggregations = (_json["denominatorAggregations"] as core.List)
.map<Aggregation>((value) => new Aggregation.fromJson(value))
.toList();
}
if (_json.containsKey("denominatorFilter")) {
denominatorFilter = _json["denominatorFilter"];
}
if (_json.containsKey("duration")) {
duration = _json["duration"];
}
if (_json.containsKey("filter")) {
filter = _json["filter"];
}
if (_json.containsKey("thresholdValue")) {
thresholdValue = _json["thresholdValue"].toDouble();
}
if (_json.containsKey("trigger")) {
trigger = new Trigger.fromJson(_json["trigger"]);
}
}
core.Map<core.String, core.Object> toJson() {
final core.Map<core.String, core.Object> _json =
new core.Map<core.String, core.Object>();
if (aggregations != null) {
_json["aggregations"] =
aggregations.map((value) => (value).toJson()).toList();
}
if (comparison != null) {
_json["comparison"] = comparison;
}
if (denominatorAggregations != null) {
_json["denominatorAggregations"] =
denominatorAggregations.map((value) => (value).toJson()).toList();
}
if (denominatorFilter != null) {
_json["denominatorFilter"] = denominatorFilter;
}
if (duration != null) {
_json["duration"] = duration;
}
if (filter != null) {
_json["filter"] = filter;
}
if (thresholdValue != null) {
_json["thresholdValue"] = thresholdValue;
}
if (trigger != null) {
_json["trigger"] = (trigger).toJson();
}
return _json;
}
}
/// An object representing a resource that can be used for monitoring, logging,
/// billing, or other purposes. Examples include virtual machine instances,
/// databases, and storage devices such as disks. The type field identifies a
/// MonitoredResourceDescriptor object that describes the resource's schema.
/// Information in the labels field identifies the actual resource and its
/// attributes according to the schema. For example, a particular Compute Engine
/// VM instance could be represented by the following object, because the
/// MonitoredResourceDescriptor for "gce_instance" has labels "instance_id" and
/// "zone": { "type": "gce_instance", "labels": { "instance_id":
/// "12345678901234", "zone": "us-central1-a" }}
class MonitoredResource {
/// Required. Values for all of the labels listed in the associated monitored
/// resource descriptor. For example, Compute Engine VM instances use the
/// labels "project_id", "instance_id", and "zone".
core.Map<core.String, core.String> labels;
/// Required. The monitored resource type. This field must match the type
/// field of a MonitoredResourceDescriptor object. For example, the type of a
/// Compute Engine VM instance is gce_instance. For a list of types, see
/// Monitoring resource types and Logging resource types.
core.String type;
MonitoredResource();
MonitoredResource.fromJson(core.Map _json) {
if (_json.containsKey("labels")) {
labels = (_json["labels"] as core.Map).cast<core.String, core.String>();
}
if (_json.containsKey("type")) {
type = _json["type"];
}
}
core.Map<core.String, core.Object> toJson() {
final core.Map<core.String, core.Object> _json =
new core.Map<core.String, core.Object>();
if (labels != null) {
_json["labels"] = labels;
}
if (type != null) {
_json["type"] = type;
}
return _json;
}
}
/// An object that describes the schema of a MonitoredResource object using a
/// type name and a set of labels. For example, the monitored resource
/// descriptor for Google Compute Engine VM instances has a type of
/// "gce_instance" and specifies the use of the labels "instance_id" and "zone"
/// to identify particular VM instances.Different APIs can support different
/// monitored resource types. APIs generally provide a list method that returns
/// the monitored resource descriptors used by the API.
class MonitoredResourceDescriptor {
/// Optional. A detailed description of the monitored resource type that might
/// be used in documentation.
core.String description;
/// Optional. A concise name for the monitored resource type that might be
/// displayed in user interfaces. It should be a Title Cased Noun Phrase,
/// without any article or other determiners. For example, "Google Cloud SQL
/// Database".
core.String displayName;
/// Required. A set of labels used to describe instances of this monitored
/// resource type. For example, an individual Google Cloud SQL database is
/// identified by values for the labels "database_id" and "zone".
core.List<LabelDescriptor> labels;
/// Optional. The launch stage of the monitored resource definition.
/// Possible string values are:
/// - "LAUNCH_STAGE_UNSPECIFIED" : Do not use this default value.
/// - "UNIMPLEMENTED" : The feature is not yet implemented. Users can not use
/// it.
/// - "PRELAUNCH" : Prelaunch features are hidden from users and are only
/// visible internally.
/// - "EARLY_ACCESS" : Early Access features are limited to a closed group of
/// testers. To use these features, you must sign up in advance and sign a
/// Trusted Tester agreement (which includes confidentiality provisions).
/// These features may be unstable, changed in backward-incompatible ways, and
/// are not guaranteed to be released.
/// - "ALPHA" : Alpha is a limited availability test for releases before they
/// are cleared for widespread use. By Alpha, all significant design issues
/// are resolved and we are in the process of verifying functionality. Alpha
/// customers need to apply for access, agree to applicable terms, and have
/// their projects whitelisted. Alpha releases don’t have to be feature
/// complete, no SLAs are provided, and there are no technical support
/// obligations, but they will be far enough along that customers can actually
/// use them in test environments or for limited-use tests -- just like they
/// would in normal production cases.
/// - "BETA" : Beta is the point at which we are ready to open a release for
/// any customer to use. There are no SLA or technical support obligations in
/// a Beta release. Products will be complete from a feature perspective, but
/// may have some open outstanding issues. Beta releases are suitable for
/// limited production use cases.
/// - "GA" : GA features are open to all developers and are considered stable
/// and fully qualified for production use.
/// - "DEPRECATED" : Deprecated features are scheduled to be shut down and
/// removed. For more information, see the “Deprecation Policy” section of our
/// Terms of Service (https://cloud.google.com/terms/) and the Google Cloud
/// Platform Subject to the Deprecation Policy
/// (https://cloud.google.com/terms/deprecation) documentation.
core.String launchStage;
/// Optional. The resource name of the monitored resource descriptor:
/// "projects/{project_id}/monitoredResourceDescriptors/{type}" where {type}
/// is the value of the type field in this object and {project_id} is a
/// project ID that provides API-specific context for accessing the type. APIs
/// that do not use project information can use the resource name format
/// "monitoredResourceDescriptors/{type}".
core.String name;
/// Required. The monitored resource type. For example, the type
/// "cloudsql_database" represents databases in Google Cloud SQL.
core.String type;
MonitoredResourceDescriptor();
MonitoredResourceDescriptor.fromJson(core.Map _json) {
if (_json.containsKey("description")) {
description = _json["description"];
}
if (_json.containsKey("displayName")) {
displayName = _json["displayName"];
}
if (_json.containsKey("labels")) {
labels = (_json["labels"] as core.List)
.map<LabelDescriptor>((value) => new LabelDescriptor.fromJson(value))
.toList();
}
if (_json.containsKey("launchStage")) {
launchStage = _json["launchStage"];
}
if (_json.containsKey("name")) {
name = _json["name"];
}
if (_json.containsKey("type")) {
type = _json["type"];
}
}
core.Map<core.String, core.Object> toJson() {
final core.Map<core.String, core.Object> _json =
new core.Map<core.String, core.Object>();
if (description != null) {
_json["description"] = description;
}
if (displayName != null) {
_json["displayName"] = displayName;
}
if (labels != null) {
_json["labels"] = labels.map((value) => (value).toJson()).toList();
}
if (launchStage != null) {
_json["launchStage"] = launchStage;
}
if (name != null) {
_json["name"] = name;
}
if (type != null) {
_json["type"] = type;
}
return _json;
}
}
/// Auxiliary metadata for a MonitoredResource object. MonitoredResource objects
/// contain the minimum set of information to uniquely identify a monitored
/// resource instance. There is some other useful auxiliary metadata. Monitoring
/// and Logging use an ingestion pipeline to extract metadata for cloud
/// resources of all types, and store the metadata in this message.
class MonitoredResourceMetadata {
/// Output only. Values for predefined system metadata labels. System labels
/// are a kind of metadata extracted by Google, including "machine_image",
/// "vpc", "subnet_id", "security_group", "name", etc. System label values can
/// be only strings, Boolean values, or a list of strings. For example: {
/// "name": "my-test-instance", "security_group": ["a", "b", "c"],
/// "spot_instance": false }
///
/// The values for Object must be JSON objects. It can consist of `num`,
/// `String`, `bool` and `null` as well as `Map` and `List` values.
core.Map<core.String, core.Object> systemLabels;
/// Output only. A map of user-defined metadata labels.
core.Map<core.String, core.String> userLabels;
MonitoredResourceMetadata();
MonitoredResourceMetadata.fromJson(core.Map _json) {
if (_json.containsKey("systemLabels")) {
systemLabels =
(_json["systemLabels"] as core.Map).cast<core.String, core.Object>();
}
if (_json.containsKey("userLabels")) {
userLabels =
(_json["userLabels"] as core.Map).cast<core.String, core.String>();
}
}
core.Map<core.String, core.Object> toJson() {
final core.Map<core.String, core.Object> _json =
new core.Map<core.String, core.Object>();
if (systemLabels != null) {
_json["systemLabels"] = systemLabels;
}
if (userLabels != null) {
_json["userLabels"] = userLabels;
}
return _json;
}
}
/// Describes a change made to a configuration.
class MutationRecord {
/// When the change occurred.
core.String mutateTime;
/// The email address of the user making the change.
core.String mutatedBy;
MutationRecord();
MutationRecord.fromJson(core.Map _json) {
if (_json.containsKey("mutateTime")) {
mutateTime = _json["mutateTime"];
}
if (_json.containsKey("mutatedBy")) {
mutatedBy = _json["mutatedBy"];
}
}
core.Map<core.String, core.Object> toJson() {
final core.Map<core.String, core.Object> _json =
new core.Map<core.String, core.Object>();
if (mutateTime != null) {
_json["mutateTime"] = mutateTime;
}
if (mutatedBy != null) {
_json["mutatedBy"] = mutatedBy;
}
return _json;
}
}
/// A NotificationChannel is a medium through which an alert is delivered when a
/// policy violation is detected. Examples of channels include email, SMS, and
/// third-party messaging applications. Fields containing sensitive information
/// like authentication tokens or contact info are only partially populated on
/// retrieval.
class NotificationChannel {
/// An optional human-readable description of this notification channel. This
/// description may provide additional details, beyond the display name, for
/// the channel. This may not exceed 1024 Unicode characters.
core.String description;
/// An optional human-readable name for this notification channel. It is
/// recommended that you specify a non-empty and unique name in order to make
/// it easier to identify the channels in your project, though this is not
/// enforced. The display name is limited to 512 Unicode characters.
core.String displayName;
/// Whether notifications are forwarded to the described channel. This makes
/// it possible to disable delivery of notifications to a particular channel
/// without removing the channel from all alerting policies that reference the
/// channel. This is a more convenient approach when the change is temporary
/// and you want to receive notifications from the same set of alerting
/// policies on the channel at some point in the future.
core.bool enabled;
/// Configuration fields that define the channel and its behavior. The
/// permissible and required labels are specified in the
/// NotificationChannelDescriptor.labels of the NotificationChannelDescriptor
/// corresponding to the type field.
core.Map<core.String, core.String> labels;
/// The full REST resource name for this channel. The format is:
/// projects/[PROJECT_ID_OR_NUMBER]/notificationChannels/[CHANNEL_ID] The
/// [CHANNEL_ID] is automatically assigned by the server on creation.
core.String name;
/// The type of the notification channel. This field matches the value of the
/// NotificationChannelDescriptor.type field.
core.String type;
/// User-supplied key/value data that does not need to conform to the
/// corresponding NotificationChannelDescriptor's schema, unlike the labels
/// field. This field is intended to be used for organizing and identifying
/// the NotificationChannel objects.The field can contain up to 64 entries.
/// Each key and value is limited to 63 Unicode characters or 128 bytes,
/// whichever is smaller. Labels and values can contain only lowercase
/// letters, numerals, underscores, and dashes. Keys must begin with a letter.
core.Map<core.String, core.String> userLabels;
/// Indicates whether this channel has been verified or not. On a
/// ListNotificationChannels or GetNotificationChannel operation, this field
/// is expected to be populated.If the value is UNVERIFIED, then it indicates
/// that the channel is non-functioning (it both requires verification and
/// lacks verification); otherwise, it is assumed that the channel works.If
/// the channel is neither VERIFIED nor UNVERIFIED, it implies that the
/// channel is of a type that does not require verification or that this
/// specific channel has been exempted from verification because it was
/// created prior to verification being required for channels of this
/// type.This field cannot be modified using a standard
/// UpdateNotificationChannel operation. To change the value of this field,
/// you must call VerifyNotificationChannel.
/// Possible string values are:
/// - "VERIFICATION_STATUS_UNSPECIFIED" : Sentinel value used to indicate that
/// the state is unknown, omitted, or is not applicable (as in the case of
/// channels that neither support nor require verification in order to
/// function).
/// - "UNVERIFIED" : The channel has yet to be verified and requires
/// verification to function. Note that this state also applies to the case
/// where the verification process has been initiated by sending a
/// verification code but where the verification code has not been submitted
/// to complete the process.
/// - "VERIFIED" : It has been proven that notifications can be received on
/// this notification channel and that someone on the project has access to
/// messages that are delivered to that channel.
core.String verificationStatus;
NotificationChannel();
NotificationChannel.fromJson(core.Map _json) {
if (_json.containsKey("description")) {
description = _json["description"];
}
if (_json.containsKey("displayName")) {
displayName = _json["displayName"];
}
if (_json.containsKey("enabled")) {
enabled = _json["enabled"];
}
if (_json.containsKey("labels")) {
labels = (_json["labels"] as core.Map).cast<core.String, core.String>();
}
if (_json.containsKey("name")) {
name = _json["name"];
}
if (_json.containsKey("type")) {
type = _json["type"];
}
if (_json.containsKey("userLabels")) {
userLabels =
(_json["userLabels"] as core.Map).cast<core.String, core.String>();
}
if (_json.containsKey("verificationStatus")) {
verificationStatus = _json["verificationStatus"];
}
}
core.Map<core.String, core.Object> toJson() {
final core.Map<core.String, core.Object> _json =
new core.Map<core.String, core.Object>();
if (description != null) {
_json["description"] = description;
}
if (displayName != null) {
_json["displayName"] = displayName;
}
if (enabled != null) {
_json["enabled"] = enabled;
}
if (labels != null) {
_json["labels"] = labels;
}
if (name != null) {
_json["name"] = name;
}
if (type != null) {
_json["type"] = type;
}
if (userLabels != null) {
_json["userLabels"] = userLabels;
}
if (verificationStatus != null) {
_json["verificationStatus"] = verificationStatus;
}
return _json;
}
}
/// A description of a notification channel. The descriptor includes the
/// properties of the channel and the set of labels or fields that must be
/// specified to configure channels of a given type.
class NotificationChannelDescriptor {
/// A human-readable description of the notification channel type. The
/// description may include a description of the properties of the channel and
/// pointers to external documentation.
core.String description;
/// A human-readable name for the notification channel type. This form of the
/// name is suitable for a user interface.
core.String displayName;
/// The set of labels that must be defined to identify a particular channel of
/// the corresponding type. Each label includes a description for how that
/// field should be populated.
core.List<LabelDescriptor> labels;
/// The product launch stage for channels of this type.
/// Possible string values are:
/// - "LAUNCH_STAGE_UNSPECIFIED" : Do not use this default value.
/// - "UNIMPLEMENTED" : The feature is not yet implemented. Users can not use
/// it.
/// - "PRELAUNCH" : Prelaunch features are hidden from users and are only
/// visible internally.
/// - "EARLY_ACCESS" : Early Access features are limited to a closed group of
/// testers. To use these features, you must sign up in advance and sign a
/// Trusted Tester agreement (which includes confidentiality provisions).
/// These features may be unstable, changed in backward-incompatible ways, and
/// are not guaranteed to be released.
/// - "ALPHA" : Alpha is a limited availability test for releases before they
/// are cleared for widespread use. By Alpha, all significant design issues
/// are resolved and we are in the process of verifying functionality. Alpha
/// customers need to apply for access, agree to applicable terms, and have
/// their projects whitelisted. Alpha releases don’t have to be feature
/// complete, no SLAs are provided, and there are no technical support
/// obligations, but they will be far enough along that customers can actually
/// use them in test environments or for limited-use tests -- just like they
/// would in normal production cases.
/// - "BETA" : Beta is the point at which we are ready to open a release for
/// any customer to use. There are no SLA or technical support obligations in
/// a Beta release. Products will be complete from a feature perspective, but
/// may have some open outstanding issues. Beta releases are suitable for
/// limited production use cases.
/// - "GA" : GA features are open to all developers and are considered stable
/// and fully qualified for production use.
/// - "DEPRECATED" : Deprecated features are scheduled to be shut down and
/// removed. For more information, see the “Deprecation Policy” section of our
/// Terms of Service (https://cloud.google.com/terms/) and the Google Cloud
/// Platform Subject to the Deprecation Policy
/// (https://cloud.google.com/terms/deprecation) documentation.
core.String launchStage;
/// The full REST resource name for this descriptor. The format is:
/// projects/[PROJECT_ID_OR_NUMBER]/notificationChannelDescriptors/[TYPE] In
/// the above, [TYPE] is the value of the type field.
core.String name;
/// The type of notification channel, such as "email" and "sms". To view the
/// full list of channels, see Channel descriptors
/// (https://cloud.google.com/monitoring/alerts/using-channels-api#ncd).
/// Notification channel types are globally unique.
core.String type;
NotificationChannelDescriptor();
NotificationChannelDescriptor.fromJson(core.Map _json) {
if (_json.containsKey("description")) {
description = _json["description"];
}
if (_json.containsKey("displayName")) {
displayName = _json["displayName"];
}
if (_json.containsKey("labels")) {
labels = (_json["labels"] as core.List)
.map<LabelDescriptor>((value) => new LabelDescriptor.fromJson(value))
.toList();
}
if (_json.containsKey("launchStage")) {
launchStage = _json["launchStage"];
}
if (_json.containsKey("name")) {
name = _json["name"];
}
if (_json.containsKey("type")) {
type = _json["type"];
}
}
core.Map<core.String, core.Object> toJson() {
final core.Map<core.String, core.Object> _json =
new core.Map<core.String, core.Object>();
if (description != null) {
_json["description"] = description;
}
if (displayName != null) {
_json["displayName"] = displayName;
}
if (labels != null) {
_json["labels"] = labels.map((value) => (value).toJson()).toList();
}
if (launchStage != null) {
_json["launchStage"] = launchStage;
}
if (name != null) {
_json["name"] = name;
}
if (type != null) {
_json["type"] = type;
}
return _json;
}
}
/// A protocol buffer option, which can be attached to a message, field,
/// enumeration, etc.
class Option {
/// The option's name. For protobuf built-in options (options defined in
/// descriptor.proto), this is the short name. For example, "map_entry". For
/// custom options, it should be the fully-qualified name. For example,
/// "google.api.http".
core.String name;
/// The option's value packed in an Any message. If the value is a primitive,
/// the corresponding wrapper type defined in google/protobuf/wrappers.proto
/// should be used. If the value is an enum, it should be stored as an int32
/// value using the google.protobuf.Int32Value type.
///
/// The values for Object must be JSON objects. It can consist of `num`,
/// `String`, `bool` and `null` as well as `Map` and `List` values.
core.Map<core.String, core.Object> value;
Option();
Option.fromJson(core.Map _json) {
if (_json.containsKey("name")) {
name = _json["name"];
}
if (_json.containsKey("value")) {
value = (_json["value"] as core.Map).cast<core.String, core.Object>();
}
}
core.Map<core.String, core.Object> toJson() {
final core.Map<core.String, core.Object> _json =
new core.Map<core.String, core.Object>();
if (name != null) {
_json["name"] = name;
}
if (value != null) {
_json["value"] = value;
}
return _json;
}
}
/// A PerformanceThreshold is used when each window is good when that window has
/// a sufficiently high performance.
class PerformanceThreshold {
/// BasicSli to evaluate to judge window quality.
BasicSli basicSliPerformance;
/// RequestBasedSli to evaluate to judge window quality.
RequestBasedSli performance;
/// If window performance >= threshold, the window is counted as good.
core.double threshold;
PerformanceThreshold();
PerformanceThreshold.fromJson(core.Map _json) {
if (_json.containsKey("basicSliPerformance")) {
basicSliPerformance = new BasicSli.fromJson(_json["basicSliPerformance"]);
}
if (_json.containsKey("performance")) {
performance = new RequestBasedSli.fromJson(_json["performance"]);
}
if (_json.containsKey("threshold")) {
threshold = _json["threshold"].toDouble();
}
}
core.Map<core.String, core.Object> toJson() {
final core.Map<core.String, core.Object> _json =
new core.Map<core.String, core.Object>();
if (basicSliPerformance != null) {
_json["basicSliPerformance"] = (basicSliPerformance).toJson();
}
if (performance != null) {
_json["performance"] = (performance).toJson();
}
if (threshold != null) {
_json["threshold"] = threshold;
}
return _json;
}
}
/// A single data point in a time series.
class Point {
/// The time interval to which the data point applies. For GAUGE metrics, the
/// start time is optional, but if it is supplied, it must equal the end time.
/// For DELTA metrics, the start and end time should specify a non-zero
/// interval, with subsequent points specifying contiguous and non-overlapping
/// intervals. For CUMULATIVE metrics, the start and end time should specify a
/// non-zero interval, with subsequent points specifying the same start time
/// and increasing end times, until an event resets the cumulative value to
/// zero and sets a new start time for the following points.
TimeInterval interval;
/// The value of the data point.
TypedValue value;
Point();
Point.fromJson(core.Map _json) {
if (_json.containsKey("interval")) {
interval = new TimeInterval.fromJson(_json["interval"]);
}
if (_json.containsKey("value")) {
value = new TypedValue.fromJson(_json["value"]);
}
}
core.Map<core.String, core.Object> toJson() {
final core.Map<core.String, core.Object> _json =
new core.Map<core.String, core.Object>();
if (interval != null) {
_json["interval"] = (interval).toJson();
}
if (value != null) {
_json["value"] = (value).toJson();
}
return _json;
}
}
/// A point's value columns and time interval. Each point has one or more point
/// values corresponding to the entries in point_descriptors field in the
/// TimeSeriesDescriptor associated with this object.
class PointData {
/// The time interval associated with the point.
TimeInterval timeInterval;
/// The values that make up the point.
core.List<TypedValue> values;
PointData();
PointData.fromJson(core.Map _json) {
if (_json.containsKey("timeInterval")) {
timeInterval = new TimeInterval.fromJson(_json["timeInterval"]);
}
if (_json.containsKey("values")) {
values = (_json["values"] as core.List)
.map<TypedValue>((value) => new TypedValue.fromJson(value))
.toList();
}
}
core.Map<core.String, core.Object> toJson() {
final core.Map<core.String, core.Object> _json =
new core.Map<core.String, core.Object>();
if (timeInterval != null) {
_json["timeInterval"] = (timeInterval).toJson();
}
if (values != null) {
_json["values"] = values.map((value) => (value).toJson()).toList();
}
return _json;
}
}
/// The QueryTimeSeries request.
class QueryTimeSeriesRequest {
/// A positive number that is the maximum number of time_series_data to
/// return.
core.int pageSize;
/// If this field is not empty then it must contain the nextPageToken value
/// returned by a previous call to this method. Using this field causes the
/// method to return additional results from the previous method call.
core.String pageToken;
/// Required. The query in the Monitoring Query Language
/// (https://cloud.google.com/monitoring/mql/reference) format. The default
/// time zone is in UTC.
core.String query;
QueryTimeSeriesRequest();
QueryTimeSeriesRequest.fromJson(core.Map _json) {
if (_json.containsKey("pageSize")) {
pageSize = _json["pageSize"];
}
if (_json.containsKey("pageToken")) {
pageToken = _json["pageToken"];
}
if (_json.containsKey("query")) {
query = _json["query"];
}
}
core.Map<core.String, core.Object> toJson() {
final core.Map<core.String, core.Object> _json =
new core.Map<core.String, core.Object>();
if (pageSize != null) {
_json["pageSize"] = pageSize;
}
if (pageToken != null) {
_json["pageToken"] = pageToken;
}
if (query != null) {
_json["query"] = query;
}
return _json;
}
}
/// The QueryTimeSeries response.
class QueryTimeSeriesResponse {
/// If there are more results than have been returned, then this field is set
/// to a non-empty value. To see the additional results, use that value as
/// page_token in the next call to this method.
core.String nextPageToken;
/// Query execution errors that may have caused the time series data returned
/// to be incomplete. The available data will be available in the response.
core.List<Status> partialErrors;
/// The time series data.
core.List<TimeSeriesData> timeSeriesData;
/// The descriptor for the time series data.
TimeSeriesDescriptor timeSeriesDescriptor;
QueryTimeSeriesResponse();
QueryTimeSeriesResponse.fromJson(core.Map _json) {
if (_json.containsKey("nextPageToken")) {
nextPageToken = _json["nextPageToken"];
}
if (_json.containsKey("partialErrors")) {
partialErrors = (_json["partialErrors"] as core.List)
.map<Status>((value) => new Status.fromJson(value))
.toList();
}
if (_json.containsKey("timeSeriesData")) {
timeSeriesData = (_json["timeSeriesData"] as core.List)
.map<TimeSeriesData>((value) => new TimeSeriesData.fromJson(value))
.toList();
}
if (_json.containsKey("timeSeriesDescriptor")) {
timeSeriesDescriptor =
new TimeSeriesDescriptor.fromJson(_json["timeSeriesDescriptor"]);
}
}
core.Map<core.String, core.Object> toJson() {
final core.Map<core.String, core.Object> _json =
new core.Map<core.String, core.Object>();
if (nextPageToken != null) {
_json["nextPageToken"] = nextPageToken;
}
if (partialErrors != null) {
_json["partialErrors"] =
partialErrors.map((value) => (value).toJson()).toList();
}
if (timeSeriesData != null) {
_json["timeSeriesData"] =
timeSeriesData.map((value) => (value).toJson()).toList();
}
if (timeSeriesDescriptor != null) {
_json["timeSeriesDescriptor"] = (timeSeriesDescriptor).toJson();
}
return _json;
}
}
/// The range of the population values.
class Range {
/// The maximum of the population values.
core.double max;
/// The minimum of the population values.
core.double min;
Range();
Range.fromJson(core.Map _json) {
if (_json.containsKey("max")) {
max = _json["max"].toDouble();
}
if (_json.containsKey("min")) {
min = _json["min"].toDouble();
}
}
core.Map<core.String, core.Object> toJson() {
final core.Map<core.String, core.Object> _json =
new core.Map<core.String, core.Object>();
if (max != null) {
_json["max"] = max;
}
if (min != null) {
_json["min"] = min;
}
return _json;
}
}
/// Service Level Indicators for which atomic units of service are counted
/// directly.
class RequestBasedSli {
/// distribution_cut is used when good_service is a count of values aggregated
/// in a Distribution that fall into a good range. The total_service is the
/// total count of all values aggregated in the Distribution.
DistributionCut distributionCut;
/// good_total_ratio is used when the ratio of good_service to total_service
/// is computed from two TimeSeries.
TimeSeriesRatio goodTotalRatio;
RequestBasedSli();
RequestBasedSli.fromJson(core.Map _json) {
if (_json.containsKey("distributionCut")) {
distributionCut = new DistributionCut.fromJson(_json["distributionCut"]);
}
if (_json.containsKey("goodTotalRatio")) {
goodTotalRatio = new TimeSeriesRatio.fromJson(_json["goodTotalRatio"]);
}
}
core.Map<core.String, core.Object> toJson() {
final core.Map<core.String, core.Object> _json =
new core.Map<core.String, core.Object>();
if (distributionCut != null) {
_json["distributionCut"] = (distributionCut).toJson();
}
if (goodTotalRatio != null) {
_json["goodTotalRatio"] = (goodTotalRatio).toJson();
}
return _json;
}
}
/// The resource submessage for group checks. It can be used instead of a
/// monitored resource, when multiple resources are being monitored.
class ResourceGroup {
/// The group of resources being monitored. Should be only the [GROUP_ID], and
/// not the full-path projects/[PROJECT_ID_OR_NUMBER]/groups/[GROUP_ID].
core.String groupId;
/// The resource type of the group members.
/// Possible string values are:
/// - "RESOURCE_TYPE_UNSPECIFIED" : Default value (not valid).
/// - "INSTANCE" : A group of instances from Google Cloud Platform (GCP) or
/// Amazon Web Services (AWS).
/// - "AWS_ELB_LOAD_BALANCER" : A group of Amazon ELB load balancers.
core.String resourceType;
ResourceGroup();
ResourceGroup.fromJson(core.Map _json) {
if (_json.containsKey("groupId")) {
groupId = _json["groupId"];
}
if (_json.containsKey("resourceType")) {
resourceType = _json["resourceType"];
}
}
core.Map<core.String, core.Object> toJson() {
final core.Map<core.String, core.Object> _json =
new core.Map<core.String, core.Object>();
if (groupId != null) {
_json["groupId"] = groupId;
}
if (resourceType != null) {
_json["resourceType"] = resourceType;
}
return _json;
}
}
/// The SendNotificationChannelVerificationCode request.
class SendNotificationChannelVerificationCodeRequest {
SendNotificationChannelVerificationCodeRequest();
SendNotificationChannelVerificationCodeRequest.fromJson(core.Map _json) {}
core.Map<core.String, core.Object> toJson() {
final core.Map<core.String, core.Object> _json =
new core.Map<core.String, core.Object>();
return _json;
}
}
/// A Service is a discrete, autonomous, and network-accessible unit, designed
/// to solve an individual concern (Wikipedia
/// (https://en.wikipedia.org/wiki/Service-orientation)). In Cloud Monitoring, a
/// Service acts as the root resource under which operational aspects of the
/// service are accessible.
class Service {
/// Type used for App Engine services.
AppEngine appEngine;
/// Type used for Cloud Endpoints services.
CloudEndpoints cloudEndpoints;
/// Type used for Istio services that live in a Kubernetes cluster.
ClusterIstio clusterIstio;
/// Custom service type.
Custom custom;
/// Name used for UI elements listing this Service.
core.String displayName;
/// Type used for Istio services scoped to an Istio mesh.
MeshIstio meshIstio;
/// Resource name for this Service. The format is:
/// projects/[PROJECT_ID_OR_NUMBER]/services/[SERVICE_ID]
core.String name;
/// Configuration for how to query telemetry on a Service.
Telemetry telemetry;
Service();
Service.fromJson(core.Map _json) {
if (_json.containsKey("appEngine")) {
appEngine = new AppEngine.fromJson(_json["appEngine"]);
}
if (_json.containsKey("cloudEndpoints")) {
cloudEndpoints = new CloudEndpoints.fromJson(_json["cloudEndpoints"]);
}
if (_json.containsKey("clusterIstio")) {
clusterIstio = new ClusterIstio.fromJson(_json["clusterIstio"]);
}
if (_json.containsKey("custom")) {
custom = new Custom.fromJson(_json["custom"]);
}
if (_json.containsKey("displayName")) {
displayName = _json["displayName"];
}
if (_json.containsKey("meshIstio")) {
meshIstio = new MeshIstio.fromJson(_json["meshIstio"]);
}
if (_json.containsKey("name")) {
name = _json["name"];
}
if (_json.containsKey("telemetry")) {
telemetry = new Telemetry.fromJson(_json["telemetry"]);
}
}
core.Map<core.String, core.Object> toJson() {
final core.Map<core.String, core.Object> _json =
new core.Map<core.String, core.Object>();
if (appEngine != null) {
_json["appEngine"] = (appEngine).toJson();
}
if (cloudEndpoints != null) {
_json["cloudEndpoints"] = (cloudEndpoints).toJson();
}
if (clusterIstio != null) {
_json["clusterIstio"] = (clusterIstio).toJson();
}
if (custom != null) {
_json["custom"] = (custom).toJson();
}
if (displayName != null) {
_json["displayName"] = displayName;
}
if (meshIstio != null) {
_json["meshIstio"] = (meshIstio).toJson();
}
if (name != null) {
_json["name"] = name;
}
if (telemetry != null) {
_json["telemetry"] = (telemetry).toJson();
}
return _json;
}
}
/// A Service-Level Indicator (SLI) describes the "performance" of a service.
/// For some services, the SLI is well-defined. In such cases, the SLI can be
/// described easily by referencing the well-known SLI and providing the needed
/// parameters. Alternatively, a "custom" SLI can be defined with a query to the
/// underlying metric store. An SLI is defined to be good_service /
/// total_service over any queried time interval. The value of performance
/// always falls into the range 0 <= performance <= 1. A custom SLI describes
/// how to compute this ratio, whether this is by dividing values from a pair of
/// time series, cutting a Distribution into good and bad counts, or counting
/// time windows in which the service complies with a criterion. For separation
/// of concerns, a single Service-Level Indicator measures performance for only
/// one aspect of service quality, such as fraction of successful queries or
/// fast-enough queries.
class ServiceLevelIndicator {
/// Basic SLI on a well-known service type.
BasicSli basicSli;
/// Request-based SLIs
RequestBasedSli requestBased;
/// Windows-based SLIs
WindowsBasedSli windowsBased;
ServiceLevelIndicator();
ServiceLevelIndicator.fromJson(core.Map _json) {
if (_json.containsKey("basicSli")) {
basicSli = new BasicSli.fromJson(_json["basicSli"]);
}
if (_json.containsKey("requestBased")) {
requestBased = new RequestBasedSli.fromJson(_json["requestBased"]);
}
if (_json.containsKey("windowsBased")) {
windowsBased = new WindowsBasedSli.fromJson(_json["windowsBased"]);
}
}
core.Map<core.String, core.Object> toJson() {
final core.Map<core.String, core.Object> _json =
new core.Map<core.String, core.Object>();
if (basicSli != null) {
_json["basicSli"] = (basicSli).toJson();
}
if (requestBased != null) {
_json["requestBased"] = (requestBased).toJson();
}
if (windowsBased != null) {
_json["windowsBased"] = (windowsBased).toJson();
}
return _json;
}
}
/// A Service-Level Objective (SLO) describes a level of desired good service.
/// It consists of a service-level indicator (SLI), a performance goal, and a
/// period over which the objective is to be evaluated against that goal. The
/// SLO can use SLIs defined in a number of different manners. Typical SLOs
/// might include "99% of requests in each rolling week have latency below 200
/// milliseconds" or "99.5% of requests in each calendar month return
/// successfully."
class ServiceLevelObjective {
/// A calendar period, semantically "since the start of the current ". At this
/// time, only DAY, WEEK, FORTNIGHT, and MONTH are supported.
/// Possible string values are:
/// - "CALENDAR_PERIOD_UNSPECIFIED" : Undefined period, raises an error.
/// - "DAY" : A day.
/// - "WEEK" : A week. Weeks begin on Monday, following ISO 8601
/// (https://en.wikipedia.org/wiki/ISO_week_date).
/// - "FORTNIGHT" : A fortnight. The first calendar fortnight of the year
/// begins at the start of week 1 according to ISO 8601
/// (https://en.wikipedia.org/wiki/ISO_week_date).
/// - "MONTH" : A month.
/// - "QUARTER" : A quarter. Quarters start on dates 1-Jan, 1-Apr, 1-Jul, and
/// 1-Oct of each year.
/// - "HALF" : A half-year. Half-years start on dates 1-Jan and 1-Jul.
/// - "YEAR" : A year.
core.String calendarPeriod;
/// Name used for UI elements listing this SLO.
core.String displayName;
/// The fraction of service that must be good in order for this objective to
/// be met. 0 < goal <= 0.999.
core.double goal;
/// Resource name for this ServiceLevelObjective. The format is:
/// projects/[PROJECT_ID_OR_NUMBER]/services/[SERVICE_ID]/serviceLevelObjectives/[SLO_NAME]
core.String name;
/// A rolling time period, semantically "in the past ". Must be an integer
/// multiple of 1 day no larger than 30 days.
core.String rollingPeriod;
/// The definition of good service, used to measure and calculate the quality
/// of the Service's performance with respect to a single aspect of service
/// quality.
ServiceLevelIndicator serviceLevelIndicator;
ServiceLevelObjective();
ServiceLevelObjective.fromJson(core.Map _json) {
if (_json.containsKey("calendarPeriod")) {
calendarPeriod = _json["calendarPeriod"];
}
if (_json.containsKey("displayName")) {
displayName = _json["displayName"];
}
if (_json.containsKey("goal")) {
goal = _json["goal"].toDouble();
}
if (_json.containsKey("name")) {
name = _json["name"];
}
if (_json.containsKey("rollingPeriod")) {
rollingPeriod = _json["rollingPeriod"];
}
if (_json.containsKey("serviceLevelIndicator")) {
serviceLevelIndicator =
new ServiceLevelIndicator.fromJson(_json["serviceLevelIndicator"]);
}
}
core.Map<core.String, core.Object> toJson() {
final core.Map<core.String, core.Object> _json =
new core.Map<core.String, core.Object>();
if (calendarPeriod != null) {
_json["calendarPeriod"] = calendarPeriod;
}
if (displayName != null) {
_json["displayName"] = displayName;
}
if (goal != null) {
_json["goal"] = goal;
}
if (name != null) {
_json["name"] = name;
}
if (rollingPeriod != null) {
_json["rollingPeriod"] = rollingPeriod;
}
if (serviceLevelIndicator != null) {
_json["serviceLevelIndicator"] = (serviceLevelIndicator).toJson();
}
return _json;
}
}
/// SourceContext represents information about the source of a protobuf element,
/// like the file in which it is defined.
class SourceContext {
/// The path-qualified name of the .proto file that contained the associated
/// protobuf element. For example: "google/protobuf/source_context.proto".
core.String fileName;
SourceContext();
SourceContext.fromJson(core.Map _json) {
if (_json.containsKey("fileName")) {
fileName = _json["fileName"];
}
}
core.Map<core.String, core.Object> toJson() {
final core.Map<core.String, core.Object> _json =
new core.Map<core.String, core.Object>();
if (fileName != null) {
_json["fileName"] = fileName;
}
return _json;
}
}
/// The context of a span, attached to Exemplars in Distribution values during
/// aggregation.It contains the name of a span with format:
/// projects/[PROJECT_ID_OR_NUMBER]/traces/[TRACE_ID]/spans/[SPAN_ID]
class SpanContext {
/// The resource name of the span. The format is:
/// projects/[PROJECT_ID_OR_NUMBER]/traces/[TRACE_ID]/spans/[SPAN_ID]
/// [TRACE_ID] is a unique identifier for a trace within a project; it is a
/// 32-character hexadecimal encoding of a 16-byte array.[SPAN_ID] is a unique
/// identifier for a span within a trace; it is a 16-character hexadecimal
/// encoding of an 8-byte array.
core.String spanName;
SpanContext();
SpanContext.fromJson(core.Map _json) {
if (_json.containsKey("spanName")) {
spanName = _json["spanName"];
}
}
core.Map<core.String, core.Object> toJson() {
final core.Map<core.String, core.Object> _json =
new core.Map<core.String, core.Object>();
if (spanName != null) {
_json["spanName"] = spanName;
}
return _json;
}
}
/// The Status type defines a logical error model that is suitable for different
/// programming environments, including REST APIs and RPC APIs. It is used by
/// gRPC (https://github.com/grpc). Each Status message contains three pieces of
/// data: error code, error message, and error details.You can find out more
/// about this error model and how to work with it in the API Design Guide
/// (https://cloud.google.com/apis/design/errors).
class Status {
/// The status code, which should be an enum value of google.rpc.Code.
core.int code;
/// A list of messages that carry the error details. There is a common set of
/// message types for APIs to use.
///
/// The values for Object must be JSON objects. It can consist of `num`,
/// `String`, `bool` and `null` as well as `Map` and `List` values.
core.List<core.Map<core.String, core.Object>> details;
/// A developer-facing error message, which should be in English. Any
/// user-facing error message should be localized and sent in the
/// google.rpc.Status.details field, or localized by the client.
core.String message;
Status();
Status.fromJson(core.Map _json) {
if (_json.containsKey("code")) {
code = _json["code"];
}
if (_json.containsKey("details")) {
details = (_json["details"] as core.List)
.map<core.Map<core.String, core.Object>>(
(value) => (value as core.Map).cast<core.String, core.Object>())
.toList();
}
if (_json.containsKey("message")) {
message = _json["message"];
}
}
core.Map<core.String, core.Object> toJson() {
final core.Map<core.String, core.Object> _json =
new core.Map<core.String, core.Object>();
if (code != null) {
_json["code"] = code;
}
if (details != null) {
_json["details"] = details;
}
if (message != null) {
_json["message"] = message;
}
return _json;
}
}
/// Information required for a TCP Uptime check request.
class TcpCheck {
/// The TCP port on the server against which to run the check. Will be
/// combined with host (specified within the monitored_resource) to construct
/// the full URL. Required.
core.int port;
TcpCheck();
TcpCheck.fromJson(core.Map _json) {
if (_json.containsKey("port")) {
port = _json["port"];
}
}
core.Map<core.String, core.Object> toJson() {
final core.Map<core.String, core.Object> _json =
new core.Map<core.String, core.Object>();
if (port != null) {
_json["port"] = port;
}
return _json;
}
}
/// Configuration for how to query telemetry on a Service.
class Telemetry {
/// The full name of the resource that defines this service. Formatted as
/// described in https://cloud.google.com/apis/design/resource_names.
core.String resourceName;
Telemetry();
Telemetry.fromJson(core.Map _json) {
if (_json.containsKey("resourceName")) {
resourceName = _json["resourceName"];
}
}
core.Map<core.String, core.Object> toJson() {
final core.Map<core.String, core.Object> _json =
new core.Map<core.String, core.Object>();
if (resourceName != null) {
_json["resourceName"] = resourceName;
}
return _json;
}
}
/// A closed time interval. It extends from the start time to the end time, and
/// includes both: [startTime, endTime]. Valid time intervals depend on the
/// MetricKind of the metric value. The end time must not be earlier than the
/// start time. When writing data points, the start time must not be more than
/// 25 hours in the past and the end time must not be more than five minutes in
/// the future. For GAUGE metrics, the startTime value is technically optional;
/// if no value is specified, the start time defaults to the value of the end
/// time, and the interval represents a single point in time. If both start and
/// end times are specified, they must be identical. Such an interval is valid
/// only for GAUGE metrics, which are point-in-time measurements. The end time
/// of a new interval must be at least a millisecond after the end time of the
/// previous interval. For DELTA metrics, the start time and end time must
/// specify a non-zero interval, with subsequent points specifying contiguous
/// and non-overlapping intervals. For DELTA metrics, the start time of the next
/// interval must be at least a millisecond after the end time of the previous
/// interval. For CUMULATIVE metrics, the start time and end time must specify a
/// a non-zero interval, with subsequent points specifying the same start time
/// and increasing end times, until an event resets the cumulative value to zero
/// and sets a new start time for the following points. The new start time must
/// be at least a millisecond after the end time of the previous interval. The
/// start time of a new interval must be at least a millisecond after the end
/// time of the previous interval because intervals are closed. If the start
/// time of a new interval is the same as the end time of the previous interval,
/// then data written at the new start time could overwrite data written at the
/// previous end time.
class TimeInterval {
/// Required. The end of the time interval.
core.String endTime;
/// Optional. The beginning of the time interval. The default value for the
/// start time is the end time. The start time must not be later than the end
/// time.
core.String startTime;
TimeInterval();
TimeInterval.fromJson(core.Map _json) {
if (_json.containsKey("endTime")) {
endTime = _json["endTime"];
}
if (_json.containsKey("startTime")) {
startTime = _json["startTime"];
}
}
core.Map<core.String, core.Object> toJson() {
final core.Map<core.String, core.Object> _json =
new core.Map<core.String, core.Object>();
if (endTime != null) {
_json["endTime"] = endTime;
}
if (startTime != null) {
_json["startTime"] = startTime;
}
return _json;
}
}
/// A collection of data points that describes the time-varying values of a
/// metric. A time series is identified by a combination of a fully-specified
/// monitored resource and a fully-specified metric. This type is used for both
/// listing and creating time series.
class TimeSeries {
/// Output only. The associated monitored resource metadata. When reading a
/// time series, this field will include metadata labels that are explicitly
/// named in the reduction. When creating a time series, this field is
/// ignored.
MonitoredResourceMetadata metadata;
/// The associated metric. A fully-specified metric used to identify the time
/// series.
Metric metric;
/// The metric kind of the time series. When listing time series, this metric
/// kind might be different from the metric kind of the associated metric if
/// this time series is an alignment or reduction of other time series.When
/// creating a time series, this field is optional. If present, it must be the
/// same as the metric kind of the associated metric. If the associated
/// metric's descriptor must be auto-created, then this field specifies the
/// metric kind of the new descriptor and must be either GAUGE (the default)
/// or CUMULATIVE.
/// Possible string values are:
/// - "METRIC_KIND_UNSPECIFIED" : Do not use this default value.
/// - "GAUGE" : An instantaneous measurement of a value.
/// - "DELTA" : The change in a value during a time interval.
/// - "CUMULATIVE" : A value accumulated over a time interval. Cumulative
/// measurements in a time series should have the same start time and
/// increasing end times, until an event resets the cumulative value to zero
/// and sets a new start time for the following points.
core.String metricKind;
/// The data points of this time series. When listing time series, points are
/// returned in reverse time order.When creating a time series, this field
/// must contain exactly one point and the point's type must be the same as
/// the value type of the associated metric. If the associated metric's
/// descriptor must be auto-created, then the value type of the descriptor is
/// determined by the point's type, which must be BOOL, INT64, DOUBLE, or
/// DISTRIBUTION.
core.List<Point> points;
/// The associated monitored resource. Custom metrics can use only certain
/// monitored resource types in their time series data.
MonitoredResource resource;
/// The units in which the metric value is reported. It is only applicable if
/// the value_type is INT64, DOUBLE, or DISTRIBUTION. The unit defines the
/// representation of the stored metric values.
core.String unit;
/// The value type of the time series. When listing time series, this value
/// type might be different from the value type of the associated metric if
/// this time series is an alignment or reduction of other time series.When
/// creating a time series, this field is optional. If present, it must be the
/// same as the type of the data in the points field.
/// Possible string values are:
/// - "VALUE_TYPE_UNSPECIFIED" : Do not use this default value.
/// - "BOOL" : The value is a boolean. This value type can be used only if the
/// metric kind is GAUGE.
/// - "INT64" : The value is a signed 64-bit integer.
/// - "DOUBLE" : The value is a double precision floating point number.
/// - "STRING" : The value is a text string. This value type can be used only
/// if the metric kind is GAUGE.
/// - "DISTRIBUTION" : The value is a Distribution.
/// - "MONEY" : The value is money.
core.String valueType;
TimeSeries();
TimeSeries.fromJson(core.Map _json) {
if (_json.containsKey("metadata")) {
metadata = new MonitoredResourceMetadata.fromJson(_json["metadata"]);
}
if (_json.containsKey("metric")) {
metric = new Metric.fromJson(_json["metric"]);
}
if (_json.containsKey("metricKind")) {
metricKind = _json["metricKind"];
}
if (_json.containsKey("points")) {
points = (_json["points"] as core.List)
.map<Point>((value) => new Point.fromJson(value))
.toList();
}
if (_json.containsKey("resource")) {
resource = new MonitoredResource.fromJson(_json["resource"]);
}
if (_json.containsKey("unit")) {
unit = _json["unit"];
}
if (_json.containsKey("valueType")) {
valueType = _json["valueType"];
}
}
core.Map<core.String, core.Object> toJson() {
final core.Map<core.String, core.Object> _json =
new core.Map<core.String, core.Object>();
if (metadata != null) {
_json["metadata"] = (metadata).toJson();
}
if (metric != null) {
_json["metric"] = (metric).toJson();
}
if (metricKind != null) {
_json["metricKind"] = metricKind;
}
if (points != null) {
_json["points"] = points.map((value) => (value).toJson()).toList();
}
if (resource != null) {
_json["resource"] = (resource).toJson();
}
if (unit != null) {
_json["unit"] = unit;
}
if (valueType != null) {
_json["valueType"] = valueType;
}
return _json;
}
}
/// Represents the values of a time series associated with a
/// TimeSeriesDescriptor.
class TimeSeriesData {
/// The values of the labels in the time series identifier, given in the same
/// order as the label_descriptors field of the TimeSeriesDescriptor
/// associated with this object. Each value must have a value of the type
/// given in the corresponding entry of label_descriptors.
core.List<LabelValue> labelValues;
/// The points in the time series.
core.List<PointData> pointData;
TimeSeriesData();
TimeSeriesData.fromJson(core.Map _json) {
if (_json.containsKey("labelValues")) {
labelValues = (_json["labelValues"] as core.List)
.map<LabelValue>((value) => new LabelValue.fromJson(value))
.toList();
}
if (_json.containsKey("pointData")) {
pointData = (_json["pointData"] as core.List)
.map<PointData>((value) => new PointData.fromJson(value))
.toList();
}
}
core.Map<core.String, core.Object> toJson() {
final core.Map<core.String, core.Object> _json =
new core.Map<core.String, core.Object>();
if (labelValues != null) {
_json["labelValues"] =
labelValues.map((value) => (value).toJson()).toList();
}
if (pointData != null) {
_json["pointData"] = pointData.map((value) => (value).toJson()).toList();
}
return _json;
}
}
/// A descriptor for the labels and points in a time series.
class TimeSeriesDescriptor {
/// Descriptors for the labels.
core.List<LabelDescriptor> labelDescriptors;
/// Descriptors for the point data value columns.
core.List<ValueDescriptor> pointDescriptors;
TimeSeriesDescriptor();
TimeSeriesDescriptor.fromJson(core.Map _json) {
if (_json.containsKey("labelDescriptors")) {
labelDescriptors = (_json["labelDescriptors"] as core.List)
.map<LabelDescriptor>((value) => new LabelDescriptor.fromJson(value))
.toList();
}
if (_json.containsKey("pointDescriptors")) {
pointDescriptors = (_json["pointDescriptors"] as core.List)
.map<ValueDescriptor>((value) => new ValueDescriptor.fromJson(value))
.toList();
}
}
core.Map<core.String, core.Object> toJson() {
final core.Map<core.String, core.Object> _json =
new core.Map<core.String, core.Object>();
if (labelDescriptors != null) {
_json["labelDescriptors"] =
labelDescriptors.map((value) => (value).toJson()).toList();
}
if (pointDescriptors != null) {
_json["pointDescriptors"] =
pointDescriptors.map((value) => (value).toJson()).toList();
}
return _json;
}
}
/// A TimeSeriesRatio specifies two TimeSeries to use for computing the
/// good_service / total_service ratio. The specified TimeSeries must have
/// ValueType = DOUBLE or ValueType = INT64 and must have MetricKind = DELTA or
/// MetricKind = CUMULATIVE. The TimeSeriesRatio must specify exactly two of
/// good, bad, and total, and the relationship good_service + bad_service =
/// total_service will be assumed.
class TimeSeriesRatio {
/// A monitoring filter (https://cloud.google.com/monitoring/api/v3/filters)
/// specifying a TimeSeries quantifying bad service, either demanded service
/// that was not provided or demanded service that was of inadequate quality.
/// Must have ValueType = DOUBLE or ValueType = INT64 and must have MetricKind
/// = DELTA or MetricKind = CUMULATIVE.
core.String badServiceFilter;
/// A monitoring filter (https://cloud.google.com/monitoring/api/v3/filters)
/// specifying a TimeSeries quantifying good service provided. Must have
/// ValueType = DOUBLE or ValueType = INT64 and must have MetricKind = DELTA
/// or MetricKind = CUMULATIVE.
core.String goodServiceFilter;
/// A monitoring filter (https://cloud.google.com/monitoring/api/v3/filters)
/// specifying a TimeSeries quantifying total demanded service. Must have
/// ValueType = DOUBLE or ValueType = INT64 and must have MetricKind = DELTA
/// or MetricKind = CUMULATIVE.
core.String totalServiceFilter;
TimeSeriesRatio();
TimeSeriesRatio.fromJson(core.Map _json) {
if (_json.containsKey("badServiceFilter")) {
badServiceFilter = _json["badServiceFilter"];
}
if (_json.containsKey("goodServiceFilter")) {
goodServiceFilter = _json["goodServiceFilter"];
}
if (_json.containsKey("totalServiceFilter")) {
totalServiceFilter = _json["totalServiceFilter"];
}
}
core.Map<core.String, core.Object> toJson() {
final core.Map<core.String, core.Object> _json =
new core.Map<core.String, core.Object>();
if (badServiceFilter != null) {
_json["badServiceFilter"] = badServiceFilter;
}
if (goodServiceFilter != null) {
_json["goodServiceFilter"] = goodServiceFilter;
}
if (totalServiceFilter != null) {
_json["totalServiceFilter"] = totalServiceFilter;
}
return _json;
}
}
/// Specifies how many time series must fail a predicate to trigger a condition.
/// If not specified, then a {count: 1} trigger is used.
class Trigger {
/// The absolute number of time series that must fail the predicate for the
/// condition to be triggered.
core.int count;
/// The percentage of time series that must fail the predicate for the
/// condition to be triggered.
core.double percent;
Trigger();
Trigger.fromJson(core.Map _json) {
if (_json.containsKey("count")) {
count = _json["count"];
}
if (_json.containsKey("percent")) {
percent = _json["percent"].toDouble();
}
}
core.Map<core.String, core.Object> toJson() {
final core.Map<core.String, core.Object> _json =
new core.Map<core.String, core.Object>();
if (count != null) {
_json["count"] = count;
}
if (percent != null) {
_json["percent"] = percent;
}
return _json;
}
}
/// A protocol buffer message type.
class Type {
/// The list of fields.
core.List<Field> fields;
/// The fully qualified message name.
core.String name;
/// The list of types appearing in oneof definitions in this type.
core.List<core.String> oneofs;
/// The protocol buffer options.
core.List<Option> options;
/// The source context.
SourceContext sourceContext;
/// The source syntax.
/// Possible string values are:
/// - "SYNTAX_PROTO2" : Syntax proto2.
/// - "SYNTAX_PROTO3" : Syntax proto3.
core.String syntax;
Type();
Type.fromJson(core.Map _json) {
if (_json.containsKey("fields")) {
fields = (_json["fields"] as core.List)
.map<Field>((value) => new Field.fromJson(value))
.toList();
}
if (_json.containsKey("name")) {
name = _json["name"];
}
if (_json.containsKey("oneofs")) {
oneofs = (_json["oneofs"] as core.List).cast<core.String>();
}
if (_json.containsKey("options")) {
options = (_json["options"] as core.List)
.map<Option>((value) => new Option.fromJson(value))
.toList();
}
if (_json.containsKey("sourceContext")) {
sourceContext = new SourceContext.fromJson(_json["sourceContext"]);
}
if (_json.containsKey("syntax")) {
syntax = _json["syntax"];
}
}
core.Map<core.String, core.Object> toJson() {
final core.Map<core.String, core.Object> _json =
new core.Map<core.String, core.Object>();
if (fields != null) {
_json["fields"] = fields.map((value) => (value).toJson()).toList();
}
if (name != null) {
_json["name"] = name;
}
if (oneofs != null) {
_json["oneofs"] = oneofs;
}
if (options != null) {
_json["options"] = options.map((value) => (value).toJson()).toList();
}
if (sourceContext != null) {
_json["sourceContext"] = (sourceContext).toJson();
}
if (syntax != null) {
_json["syntax"] = syntax;
}
return _json;
}
}
/// A single strongly-typed value.
class TypedValue {
/// A Boolean value: true or false.
core.bool boolValue;
/// A distribution value.
Distribution distributionValue;
/// A 64-bit double-precision floating-point number. Its magnitude is
/// approximately ±10±300 and it has 16 significant digits of precision.
core.double doubleValue;
/// A 64-bit integer. Its range is approximately ±9.2x1018.
core.String int64Value;
/// A variable-length string value.
core.String stringValue;
TypedValue();
TypedValue.fromJson(core.Map _json) {
if (_json.containsKey("boolValue")) {
boolValue = _json["boolValue"];
}
if (_json.containsKey("distributionValue")) {
distributionValue = new Distribution.fromJson(_json["distributionValue"]);
}
if (_json.containsKey("doubleValue")) {
doubleValue = _json["doubleValue"].toDouble();
}
if (_json.containsKey("int64Value")) {
int64Value = _json["int64Value"];
}
if (_json.containsKey("stringValue")) {
stringValue = _json["stringValue"];
}
}
core.Map<core.String, core.Object> toJson() {
final core.Map<core.String, core.Object> _json =
new core.Map<core.String, core.Object>();
if (boolValue != null) {
_json["boolValue"] = boolValue;
}
if (distributionValue != null) {
_json["distributionValue"] = (distributionValue).toJson();
}
if (doubleValue != null) {
_json["doubleValue"] = doubleValue;
}
if (int64Value != null) {
_json["int64Value"] = int64Value;
}
if (stringValue != null) {
_json["stringValue"] = stringValue;
}
return _json;
}
}
/// This message configures which resources and services to monitor for
/// availability.
class UptimeCheckConfig {
/// The content that is expected to appear in the data returned by the target
/// server against which the check is run. Currently, only the first entry in
/// the content_matchers list is supported, and additional entries will be
/// ignored. This field is optional and should only be specified if a content
/// match is required as part of the/ Uptime check.
core.List<ContentMatcher> contentMatchers;
/// A human-friendly name for the Uptime check configuration. The display name
/// should be unique within a Stackdriver Workspace in order to make it easier
/// to identify; however, uniqueness is not enforced. Required.
core.String displayName;
/// Contains information needed to make an HTTP or HTTPS check.
HttpCheck httpCheck;
/// The internal checkers that this check will egress from. If is_internal is
/// true and this list is empty, the check will egress from all the
/// InternalCheckers configured for the project that owns this
/// UptimeCheckConfig.
core.List<InternalChecker> internalCheckers;
/// If this is true, then checks are made only from the 'internal_checkers'.
/// If it is false, then checks are made only from the 'selected_regions'. It
/// is an error to provide 'selected_regions' when is_internal is true, or to
/// provide 'internal_checkers' when is_internal is false.
core.bool isInternal;
/// The monitored resource (https://cloud.google.com/monitoring/api/resources)
/// associated with the configuration. The following monitored resource types
/// are supported for Uptime checks: uptime_url, gce_instance, gae_app,
/// aws_ec2_instance, aws_elb_load_balancer
MonitoredResource monitoredResource;
/// A unique resource name for this Uptime check configuration. The format is:
/// projects/[PROJECT_ID_OR_NUMBER]/uptimeCheckConfigs/[UPTIME_CHECK_ID] This
/// field should be omitted when creating the Uptime check configuration; on
/// create, the resource name is assigned by the server and included in the
/// response.
core.String name;
/// How often, in seconds, the Uptime check is performed. Currently, the only
/// supported values are 60s (1 minute), 300s (5 minutes), 600s (10 minutes),
/// and 900s (15 minutes). Optional, defaults to 60s.
core.String period;
/// The group resource associated with the configuration.
ResourceGroup resourceGroup;
/// The list of regions from which the check will be run. Some regions contain
/// one location, and others contain more than one. If this field is
/// specified, enough regions must be provided to include a minimum of 3
/// locations. Not specifying this field will result in Uptime checks running
/// from all available regions.
core.List<core.String> selectedRegions;
/// Contains information needed to make a TCP check.
TcpCheck tcpCheck;
/// The maximum amount of time to wait for the request to complete (must be
/// between 1 and 60 seconds). Required.
core.String timeout;
UptimeCheckConfig();
UptimeCheckConfig.fromJson(core.Map _json) {
if (_json.containsKey("contentMatchers")) {
contentMatchers = (_json["contentMatchers"] as core.List)
.map<ContentMatcher>((value) => new ContentMatcher.fromJson(value))
.toList();
}
if (_json.containsKey("displayName")) {
displayName = _json["displayName"];
}
if (_json.containsKey("httpCheck")) {
httpCheck = new HttpCheck.fromJson(_json["httpCheck"]);
}
if (_json.containsKey("internalCheckers")) {
internalCheckers = (_json["internalCheckers"] as core.List)
.map<InternalChecker>((value) => new InternalChecker.fromJson(value))
.toList();
}
if (_json.containsKey("isInternal")) {
isInternal = _json["isInternal"];
}
if (_json.containsKey("monitoredResource")) {
monitoredResource =
new MonitoredResource.fromJson(_json["monitoredResource"]);
}
if (_json.containsKey("name")) {
name = _json["name"];
}
if (_json.containsKey("period")) {
period = _json["period"];
}
if (_json.containsKey("resourceGroup")) {
resourceGroup = new ResourceGroup.fromJson(_json["resourceGroup"]);
}
if (_json.containsKey("selectedRegions")) {
selectedRegions =
(_json["selectedRegions"] as core.List).cast<core.String>();
}
if (_json.containsKey("tcpCheck")) {
tcpCheck = new TcpCheck.fromJson(_json["tcpCheck"]);
}
if (_json.containsKey("timeout")) {
timeout = _json["timeout"];
}
}
core.Map<core.String, core.Object> toJson() {
final core.Map<core.String, core.Object> _json =
new core.Map<core.String, core.Object>();
if (contentMatchers != null) {
_json["contentMatchers"] =
contentMatchers.map((value) => (value).toJson()).toList();
}
if (displayName != null) {
_json["displayName"] = displayName;
}
if (httpCheck != null) {
_json["httpCheck"] = (httpCheck).toJson();
}
if (internalCheckers != null) {
_json["internalCheckers"] =
internalCheckers.map((value) => (value).toJson()).toList();
}
if (isInternal != null) {
_json["isInternal"] = isInternal;
}
if (monitoredResource != null) {
_json["monitoredResource"] = (monitoredResource).toJson();
}
if (name != null) {
_json["name"] = name;
}
if (period != null) {
_json["period"] = period;
}
if (resourceGroup != null) {
_json["resourceGroup"] = (resourceGroup).toJson();
}
if (selectedRegions != null) {
_json["selectedRegions"] = selectedRegions;
}
if (tcpCheck != null) {
_json["tcpCheck"] = (tcpCheck).toJson();
}
if (timeout != null) {
_json["timeout"] = timeout;
}
return _json;
}
}
/// Contains the region, location, and list of IP addresses where checkers in
/// the location run from.
class UptimeCheckIp {
/// The IP address from which the Uptime check originates. This is a fully
/// specified IP address (not an IP address range). Most IP addresses, as of
/// this publication, are in IPv4 format; however, one should not rely on the
/// IP addresses being in IPv4 format indefinitely, and should support
/// interpreting this field in either IPv4 or IPv6 format.
core.String ipAddress;
/// A more specific location within the region that typically encodes a
/// particular city/town/metro (and its containing state/province or country)
/// within the broader umbrella region category.
core.String location;
/// A broad region category in which the IP address is located.
/// Possible string values are:
/// - "REGION_UNSPECIFIED" : Default value if no region is specified. Will
/// result in Uptime checks running from all regions.
/// - "USA" : Allows checks to run from locations within the United States of
/// America.
/// - "EUROPE" : Allows checks to run from locations within the continent of
/// Europe.
/// - "SOUTH_AMERICA" : Allows checks to run from locations within the
/// continent of South America.
/// - "ASIA_PACIFIC" : Allows checks to run from locations within the Asia
/// Pacific area (ex: Singapore).
core.String region;
UptimeCheckIp();
UptimeCheckIp.fromJson(core.Map _json) {
if (_json.containsKey("ipAddress")) {
ipAddress = _json["ipAddress"];
}
if (_json.containsKey("location")) {
location = _json["location"];
}
if (_json.containsKey("region")) {
region = _json["region"];
}
}
core.Map<core.String, core.Object> toJson() {
final core.Map<core.String, core.Object> _json =
new core.Map<core.String, core.Object>();
if (ipAddress != null) {
_json["ipAddress"] = ipAddress;
}
if (location != null) {
_json["location"] = location;
}
if (region != null) {
_json["region"] = region;
}
return _json;
}
}
/// A descriptor for the value columns in a data point.
class ValueDescriptor {
/// The value key.
core.String key;
/// The value stream kind.
/// Possible string values are:
/// - "METRIC_KIND_UNSPECIFIED" : Do not use this default value.
/// - "GAUGE" : An instantaneous measurement of a value.
/// - "DELTA" : The change in a value during a time interval.
/// - "CUMULATIVE" : A value accumulated over a time interval. Cumulative
/// measurements in a time series should have the same start time and
/// increasing end times, until an event resets the cumulative value to zero
/// and sets a new start time for the following points.
core.String metricKind;
/// The unit in which time_series point values are reported. unit follows the
/// UCUM format for units as seen in https://unitsofmeasure.org/ucum.html.
/// unit is only valid if value_type is INTEGER, DOUBLE, DISTRIBUTION.
core.String unit;
/// The value type.
/// Possible string values are:
/// - "VALUE_TYPE_UNSPECIFIED" : Do not use this default value.
/// - "BOOL" : The value is a boolean. This value type can be used only if the
/// metric kind is GAUGE.
/// - "INT64" : The value is a signed 64-bit integer.
/// - "DOUBLE" : The value is a double precision floating point number.
/// - "STRING" : The value is a text string. This value type can be used only
/// if the metric kind is GAUGE.
/// - "DISTRIBUTION" : The value is a Distribution.
/// - "MONEY" : The value is money.
core.String valueType;
ValueDescriptor();
ValueDescriptor.fromJson(core.Map _json) {
if (_json.containsKey("key")) {
key = _json["key"];
}
if (_json.containsKey("metricKind")) {
metricKind = _json["metricKind"];
}
if (_json.containsKey("unit")) {
unit = _json["unit"];
}
if (_json.containsKey("valueType")) {
valueType = _json["valueType"];
}
}
core.Map<core.String, core.Object> toJson() {
final core.Map<core.String, core.Object> _json =
new core.Map<core.String, core.Object>();
if (key != null) {
_json["key"] = key;
}
if (metricKind != null) {
_json["metricKind"] = metricKind;
}
if (unit != null) {
_json["unit"] = unit;
}
if (valueType != null) {
_json["valueType"] = valueType;
}
return _json;
}
}
/// The VerifyNotificationChannel request.
class VerifyNotificationChannelRequest {
/// Required. The verification code that was delivered to the channel as a
/// result of invoking the SendNotificationChannelVerificationCode API method
/// or that was retrieved from a verified channel via
/// GetNotificationChannelVerificationCode. For example, one might have
/// "G-123456" or "TKNZGhhd2EyN3I1MnRnMjRv" (in general, one is only
/// guaranteed that the code is valid UTF-8; one should not make any
/// assumptions regarding the structure or format of the code).
core.String code;
VerifyNotificationChannelRequest();
VerifyNotificationChannelRequest.fromJson(core.Map _json) {
if (_json.containsKey("code")) {
code = _json["code"];
}
}
core.Map<core.String, core.Object> toJson() {
final core.Map<core.String, core.Object> _json =
new core.Map<core.String, core.Object>();
if (code != null) {
_json["code"] = code;
}
return _json;
}
}
/// A WindowsBasedSli defines good_service as the count of time windows for
/// which the provided service was of good quality. Criteria for determining if
/// service was good are embedded in the window_criterion.
class WindowsBasedSli {
/// A monitoring filter (https://cloud.google.com/monitoring/api/v3/filters)
/// specifying a TimeSeries with ValueType = BOOL. The window is good if any
/// true values appear in the window.
core.String goodBadMetricFilter;
/// A window is good if its performance is high enough.
PerformanceThreshold goodTotalRatioThreshold;
/// A window is good if the metric's value is in a good range, averaged across
/// returned streams.
MetricRange metricMeanInRange;
/// A window is good if the metric's value is in a good range, summed across
/// returned streams.
MetricRange metricSumInRange;
/// Duration over which window quality is evaluated. Must be an integer
/// fraction of a day and at least 60s.
core.String windowPeriod;
WindowsBasedSli();
WindowsBasedSli.fromJson(core.Map _json) {
if (_json.containsKey("goodBadMetricFilter")) {
goodBadMetricFilter = _json["goodBadMetricFilter"];
}
if (_json.containsKey("goodTotalRatioThreshold")) {
goodTotalRatioThreshold =
new PerformanceThreshold.fromJson(_json["goodTotalRatioThreshold"]);
}
if (_json.containsKey("metricMeanInRange")) {
metricMeanInRange = new MetricRange.fromJson(_json["metricMeanInRange"]);
}
if (_json.containsKey("metricSumInRange")) {
metricSumInRange = new MetricRange.fromJson(_json["metricSumInRange"]);
}
if (_json.containsKey("windowPeriod")) {
windowPeriod = _json["windowPeriod"];
}
}
core.Map<core.String, core.Object> toJson() {
final core.Map<core.String, core.Object> _json =
new core.Map<core.String, core.Object>();
if (goodBadMetricFilter != null) {
_json["goodBadMetricFilter"] = goodBadMetricFilter;
}
if (goodTotalRatioThreshold != null) {
_json["goodTotalRatioThreshold"] = (goodTotalRatioThreshold).toJson();
}
if (metricMeanInRange != null) {
_json["metricMeanInRange"] = (metricMeanInRange).toJson();
}
if (metricSumInRange != null) {
_json["metricSumInRange"] = (metricSumInRange).toJson();
}
if (windowPeriod != null) {
_json["windowPeriod"] = windowPeriod;
}
return _json;
}
}