| Index: generated/googleapis_beta/lib/cloudresourcemanager/v1beta1.dart | 
| diff --git a/generated/googleapis_beta/lib/cloudresourcemanager/v1beta1.dart b/generated/googleapis_beta/lib/cloudresourcemanager/v1beta1.dart | 
| new file mode 100644 | 
| index 0000000000000000000000000000000000000000..b96e84b9468577147188cb4f2324fc37bdcdc329 | 
| --- /dev/null | 
| +++ b/generated/googleapis_beta/lib/cloudresourcemanager/v1beta1.dart | 
| @@ -0,0 +1,1140 @@ | 
| +// This is a generated file (see the discoveryapis_generator project). | 
| + | 
| +library googleapis_beta.cloudresourcemanager.v1beta1; | 
| + | 
| +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:crypto/crypto.dart' as crypto; | 
| +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 cloudresourcemanager/v1beta1'; | 
| + | 
| +/** | 
| + * The Google Cloud Resource Manager API provides methods for creating, reading, | 
| + * and updating of project metadata. | 
| + */ | 
| +class CloudresourcemanagerApi { | 
| +  /** View and manage your data across Google Cloud Platform services */ | 
| +  static const CloudPlatformScope = "https://www.googleapis.com/auth/cloud-platform"; | 
| + | 
| + | 
| +  final commons.ApiRequester _requester; | 
| + | 
| +  ProjectsResourceApi get projects => new ProjectsResourceApi(_requester); | 
| + | 
| +  CloudresourcemanagerApi(http.Client client, {core.String rootUrl: "https://cloudresourcemanager.googleapis.com/", core.String servicePath: ""}) : | 
| +      _requester = new commons.ApiRequester(client, rootUrl, servicePath, USER_AGENT); | 
| +} | 
| + | 
| + | 
| +class ProjectsResourceApi { | 
| +  final commons.ApiRequester _requester; | 
| + | 
| +  ProjectsResourceApi(commons.ApiRequester client) : | 
| +      _requester = client; | 
| + | 
| +  /** | 
| +   * Creates a project resource. Initially, the project resource is owned by its | 
| +   * creator exclusively. The creator can later grant permission to others to | 
| +   * read or update the project. Several APIs are activated automatically for | 
| +   * the project, including Google Cloud Storage. | 
| +   * | 
| +   * [request] - The metadata request object. | 
| +   * | 
| +   * Request parameters: | 
| +   * | 
| +   * Completes with a [Project]. | 
| +   * | 
| +   * 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<Project> create(Project request) { | 
| +    var _url = null; | 
| +    var _queryParams = new core.Map(); | 
| +    var _uploadMedia = null; | 
| +    var _uploadOptions = null; | 
| +    var _downloadOptions = commons.DownloadOptions.Metadata; | 
| +    var _body = null; | 
| + | 
| +    if (request != null) { | 
| +      _body = convert.JSON.encode((request).toJson()); | 
| +    } | 
| + | 
| +    _url = 'v1beta1/projects'; | 
| + | 
| +    var _response = _requester.request(_url, | 
| +                                       "POST", | 
| +                                       body: _body, | 
| +                                       queryParams: _queryParams, | 
| +                                       uploadOptions: _uploadOptions, | 
| +                                       uploadMedia: _uploadMedia, | 
| +                                       downloadOptions: _downloadOptions); | 
| +    return _response.then((data) => new Project.fromJson(data)); | 
| +  } | 
| + | 
| +  /** | 
| +   * Marks the project identified by the specified `project_id` (for example, | 
| +   * `my-project-123`) for deletion. This method will only affect the project if | 
| +   * the following criteria are met: + The project does not have a billing | 
| +   * account associated with it. + The project has a lifecycle state of | 
| +   * [ACTIVE][google.cloudresourcemanager.projects.v1beta1.LifecycleState.ACTIVE]. | 
| +   * This method changes the project's lifecycle state from | 
| +   * [ACTIVE][google.cloudresourcemanager.projects.v1beta1.LifecycleState.ACTIVE] | 
| +   * to [DELETE_REQUESTED] | 
| +   * [google.cloudresourcemanager.projects.v1beta1.LifecycleState.DELETE_REQUESTED]. | 
| +   * The deletion starts at an unspecified time, at which point the lifecycle | 
| +   * state changes to [DELETE_IN_PROGRESS] | 
| +   * [google.cloudresourcemanager.projects.v1beta1.LifecycleState.DELETE_IN_PROGRESS]. | 
| +   * Until the deletion completes, you can check the lifecycle state checked by | 
| +   * retrieving the project with [GetProject] | 
| +   * [google.cloudresourcemanager.projects.v1beta1.DeveloperProjects.GetProject], | 
| +   * and the project remains visible to [ListProjects] | 
| +   * [google.cloudresourcemanager.projects.v1beta1.DeveloperProjects.ListProjects]. | 
| +   * However, you cannot update the project. After the deletion completes, the | 
| +   * project is not retrievable by the [GetProject] | 
| +   * [google.cloudresourcemanager.projects.v1beta1.DeveloperProjects.GetProject] | 
| +   * and [ListProjects] | 
| +   * [google.cloudresourcemanager.projects.v1beta1.DeveloperProjects.ListProjects] | 
| +   * methods. The caller must have modify permissions for this project. | 
| +   * | 
| +   * Request parameters: | 
| +   * | 
| +   * [projectId] - The project ID (for example, `foo-bar-123`). Required. | 
| +   * | 
| +   * 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 projectId) { | 
| +    var _url = null; | 
| +    var _queryParams = new core.Map(); | 
| +    var _uploadMedia = null; | 
| +    var _uploadOptions = null; | 
| +    var _downloadOptions = commons.DownloadOptions.Metadata; | 
| +    var _body = null; | 
| + | 
| +    if (projectId == null) { | 
| +      throw new core.ArgumentError("Parameter projectId is required."); | 
| +    } | 
| + | 
| +    _url = 'v1beta1/projects/' + commons.Escaper.ecapeVariable('$projectId'); | 
| + | 
| +    var _response = _requester.request(_url, | 
| +                                       "DELETE", | 
| +                                       body: _body, | 
| +                                       queryParams: _queryParams, | 
| +                                       uploadOptions: _uploadOptions, | 
| +                                       uploadMedia: _uploadMedia, | 
| +                                       downloadOptions: _downloadOptions); | 
| +    return _response.then((data) => new Empty.fromJson(data)); | 
| +  } | 
| + | 
| +  /** | 
| +   * Retrieves the project identified by the specified `project_id` (for | 
| +   * example, `my-project-123`). The caller must have read permissions for this | 
| +   * project. | 
| +   * | 
| +   * Request parameters: | 
| +   * | 
| +   * [projectId] - The project ID (for example, `my-project-123`). Required. | 
| +   * | 
| +   * Completes with a [Project]. | 
| +   * | 
| +   * 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<Project> get(core.String projectId) { | 
| +    var _url = null; | 
| +    var _queryParams = new core.Map(); | 
| +    var _uploadMedia = null; | 
| +    var _uploadOptions = null; | 
| +    var _downloadOptions = commons.DownloadOptions.Metadata; | 
| +    var _body = null; | 
| + | 
| +    if (projectId == null) { | 
| +      throw new core.ArgumentError("Parameter projectId is required."); | 
| +    } | 
| + | 
| +    _url = 'v1beta1/projects/' + commons.Escaper.ecapeVariable('$projectId'); | 
| + | 
| +    var _response = _requester.request(_url, | 
| +                                       "GET", | 
| +                                       body: _body, | 
| +                                       queryParams: _queryParams, | 
| +                                       uploadOptions: _uploadOptions, | 
| +                                       uploadMedia: _uploadMedia, | 
| +                                       downloadOptions: _downloadOptions); | 
| +    return _response.then((data) => new Project.fromJson(data)); | 
| +  } | 
| + | 
| +  /** | 
| +   * Returns the IAM access control policy for specified project. | 
| +   * | 
| +   * [request] - The metadata request object. | 
| +   * | 
| +   * Request parameters: | 
| +   * | 
| +   * [resource] - REQUIRED: The resource for which policy is being requested. | 
| +   * Resource is usually specified as a path, such as, projects/{project}. | 
| +   * | 
| +   * Completes with a [Policy]. | 
| +   * | 
| +   * Completes with a [commons.ApiRequestError] if the API endpoint returned an | 
| +   * error. | 
| +   * | 
| +   * If the used [http.Client] completes with an error when making a REST call, | 
| +   * this method will complete with the same error. | 
| +   */ | 
| +  async.Future<Policy> getIamPolicy(GetIamPolicyRequest request, core.String resource) { | 
| +    var _url = null; | 
| +    var _queryParams = new core.Map(); | 
| +    var _uploadMedia = null; | 
| +    var _uploadOptions = null; | 
| +    var _downloadOptions = commons.DownloadOptions.Metadata; | 
| +    var _body = null; | 
| + | 
| +    if (request != null) { | 
| +      _body = convert.JSON.encode((request).toJson()); | 
| +    } | 
| +    if (resource == null) { | 
| +      throw new core.ArgumentError("Parameter resource is required."); | 
| +    } | 
| + | 
| +    _url = 'v1beta1/projects/' + commons.Escaper.ecapeVariable('$resource') + ':getIamPolicy'; | 
| + | 
| +    var _response = _requester.request(_url, | 
| +                                       "POST", | 
| +                                       body: _body, | 
| +                                       queryParams: _queryParams, | 
| +                                       uploadOptions: _uploadOptions, | 
| +                                       uploadMedia: _uploadMedia, | 
| +                                       downloadOptions: _downloadOptions); | 
| +    return _response.then((data) => new Policy.fromJson(data)); | 
| +  } | 
| + | 
| +  /** | 
| +   * Lists projects that are visible to the user and satisfy the specified | 
| +   * filter. This method returns projects in an unspecified order. New projects | 
| +   * do not necessarily appear at the end of the list. | 
| +   * | 
| +   * Request parameters: | 
| +   * | 
| +   * [pageToken] - A pagination token returned from a previous call to | 
| +   * ListProject that indicates from where listing should continue. Note: | 
| +   * pagination is not yet supported; the server ignores this field. Optional. | 
| +   * | 
| +   * [pageSize] - The maximum number of Projects to return in the response. The | 
| +   * server can return fewer projects than requested. If unspecified, server | 
| +   * picks an appropriate default. Note: pagination is not yet supported; the | 
| +   * server ignores this field. Optional. | 
| +   * | 
| +   * [filter] - An expression for filtering the results of the request. Filter | 
| +   * rules are case insensitive. The fields eligible for filtering are: + `name` | 
| +   * + `id` + labels.key where *key* is the name of a label Some examples of | 
| +   * using labels as filters: |Filter|Description| |------|-----------| | 
| +   * |name:*|The project has a name.| |name:Howl|The project's name is `Howl` or | 
| +   * `howl`.| |name:HOWL|Equivalent to above.| |NAME:howl|Equivalent to above.| | 
| +   * |labels.color:*|The project has the label `color`.| |labels.color:red|The | 
| +   * project's label `color` has the value `red`.| | 
| +   * |labels.color:red label.size:big|The project's label `color` has the value | 
| +   * `red` and its label `size` has the value `big`. Optional. | 
| +   * | 
| +   * Completes with a [ListProjectsResponse]. | 
| +   * | 
| +   * 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<ListProjectsResponse> list({core.String pageToken, core.int pageSize, core.String filter}) { | 
| +    var _url = null; | 
| +    var _queryParams = new core.Map(); | 
| +    var _uploadMedia = null; | 
| +    var _uploadOptions = null; | 
| +    var _downloadOptions = commons.DownloadOptions.Metadata; | 
| +    var _body = null; | 
| + | 
| +    if (pageToken != null) { | 
| +      _queryParams["pageToken"] = [pageToken]; | 
| +    } | 
| +    if (pageSize != null) { | 
| +      _queryParams["pageSize"] = ["${pageSize}"]; | 
| +    } | 
| +    if (filter != null) { | 
| +      _queryParams["filter"] = [filter]; | 
| +    } | 
| + | 
| +    _url = 'v1beta1/projects'; | 
| + | 
| +    var _response = _requester.request(_url, | 
| +                                       "GET", | 
| +                                       body: _body, | 
| +                                       queryParams: _queryParams, | 
| +                                       uploadOptions: _uploadOptions, | 
| +                                       uploadMedia: _uploadMedia, | 
| +                                       downloadOptions: _downloadOptions); | 
| +    return _response.then((data) => new ListProjectsResponse.fromJson(data)); | 
| +  } | 
| + | 
| +  /** | 
| +   * Sets the IAM access control policy for the specified project. We do not | 
| +   * currently support 'domain:' prefixed members in a Binding of a Policy. | 
| +   * Calling this method requires enabling the App Engine Admin API. | 
| +   * | 
| +   * [request] - The metadata request object. | 
| +   * | 
| +   * Request parameters: | 
| +   * | 
| +   * [resource] - REQUIRED: The resource for which policy is being specified. | 
| +   * Resource is usually specified as a path, such as, | 
| +   * projects/{project}/zones/{zone}/disks/{disk}. | 
| +   * | 
| +   * Completes with a [Policy]. | 
| +   * | 
| +   * Completes with a [commons.ApiRequestError] if the API endpoint returned an | 
| +   * error. | 
| +   * | 
| +   * If the used [http.Client] completes with an error when making a REST call, | 
| +   * this method will complete with the same error. | 
| +   */ | 
| +  async.Future<Policy> setIamPolicy(SetIamPolicyRequest request, core.String resource) { | 
| +    var _url = null; | 
| +    var _queryParams = new core.Map(); | 
| +    var _uploadMedia = null; | 
| +    var _uploadOptions = null; | 
| +    var _downloadOptions = commons.DownloadOptions.Metadata; | 
| +    var _body = null; | 
| + | 
| +    if (request != null) { | 
| +      _body = convert.JSON.encode((request).toJson()); | 
| +    } | 
| +    if (resource == null) { | 
| +      throw new core.ArgumentError("Parameter resource is required."); | 
| +    } | 
| + | 
| +    _url = 'v1beta1/projects/' + commons.Escaper.ecapeVariable('$resource') + ':setIamPolicy'; | 
| + | 
| +    var _response = _requester.request(_url, | 
| +                                       "POST", | 
| +                                       body: _body, | 
| +                                       queryParams: _queryParams, | 
| +                                       uploadOptions: _uploadOptions, | 
| +                                       uploadMedia: _uploadMedia, | 
| +                                       downloadOptions: _downloadOptions); | 
| +    return _response.then((data) => new Policy.fromJson(data)); | 
| +  } | 
| + | 
| +  /** | 
| +   * Tests the specified permissions against the IAM access control policy for | 
| +   * the specified project. | 
| +   * | 
| +   * [request] - The metadata request object. | 
| +   * | 
| +   * Request parameters: | 
| +   * | 
| +   * [resource] - REQUIRED: The resource for which policy detail is being | 
| +   * requested. Resource is usually specified as a path, such as, | 
| +   * projects/{project}. | 
| +   * | 
| +   * Completes with a [TestIamPermissionsResponse]. | 
| +   * | 
| +   * Completes with a [commons.ApiRequestError] if the API endpoint returned an | 
| +   * error. | 
| +   * | 
| +   * If the used [http.Client] completes with an error when making a REST call, | 
| +   * this method will complete with the same error. | 
| +   */ | 
| +  async.Future<TestIamPermissionsResponse> testIamPermissions(TestIamPermissionsRequest request, core.String resource) { | 
| +    var _url = null; | 
| +    var _queryParams = new core.Map(); | 
| +    var _uploadMedia = null; | 
| +    var _uploadOptions = null; | 
| +    var _downloadOptions = commons.DownloadOptions.Metadata; | 
| +    var _body = null; | 
| + | 
| +    if (request != null) { | 
| +      _body = convert.JSON.encode((request).toJson()); | 
| +    } | 
| +    if (resource == null) { | 
| +      throw new core.ArgumentError("Parameter resource is required."); | 
| +    } | 
| + | 
| +    _url = 'v1beta1/projects/' + commons.Escaper.ecapeVariable('$resource') + ':testIamPermissions'; | 
| + | 
| +    var _response = _requester.request(_url, | 
| +                                       "POST", | 
| +                                       body: _body, | 
| +                                       queryParams: _queryParams, | 
| +                                       uploadOptions: _uploadOptions, | 
| +                                       uploadMedia: _uploadMedia, | 
| +                                       downloadOptions: _downloadOptions); | 
| +    return _response.then((data) => new TestIamPermissionsResponse.fromJson(data)); | 
| +  } | 
| + | 
| +  /** | 
| +   * Restores the project identified by the specified `project_id` (for example, | 
| +   * `my-project-123`). You can only use this method for a project that has a | 
| +   * lifecycle state of [DELETE_REQUESTED] | 
| +   * [google.cloudresourcemanager.projects.v1beta1.LifecycleState.DELETE_REQUESTED]. | 
| +   * After deletion starts, as indicated by a lifecycle state of | 
| +   * [DELETE_IN_PROGRESS] | 
| +   * [google.cloudresourcemanager.projects.v1beta1.LifecycleState.DELETE_IN_PROGRESS], | 
| +   * the project cannot be restored. The caller must have modify permissions for | 
| +   * this project. | 
| +   * | 
| +   * Request parameters: | 
| +   * | 
| +   * [projectId] - The project ID (for example, `foo-bar-123`). Required. | 
| +   * | 
| +   * 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> undelete(core.String projectId) { | 
| +    var _url = null; | 
| +    var _queryParams = new core.Map(); | 
| +    var _uploadMedia = null; | 
| +    var _uploadOptions = null; | 
| +    var _downloadOptions = commons.DownloadOptions.Metadata; | 
| +    var _body = null; | 
| + | 
| +    if (projectId == null) { | 
| +      throw new core.ArgumentError("Parameter projectId is required."); | 
| +    } | 
| + | 
| +    _url = 'v1beta1/projects/' + commons.Escaper.ecapeVariable('$projectId') + ':undelete'; | 
| + | 
| +    var _response = _requester.request(_url, | 
| +                                       "POST", | 
| +                                       body: _body, | 
| +                                       queryParams: _queryParams, | 
| +                                       uploadOptions: _uploadOptions, | 
| +                                       uploadMedia: _uploadMedia, | 
| +                                       downloadOptions: _downloadOptions); | 
| +    return _response.then((data) => new Empty.fromJson(data)); | 
| +  } | 
| + | 
| +  /** | 
| +   * Updates the attributes of the project identified by the specified | 
| +   * `project_id` (for example, `my-project-123`). The caller must have modify | 
| +   * permissions for this project. | 
| +   * | 
| +   * [request] - The metadata request object. | 
| +   * | 
| +   * Request parameters: | 
| +   * | 
| +   * [projectId] - The project ID (for example, `my-project-123`). Required. | 
| +   * | 
| +   * Completes with a [Project]. | 
| +   * | 
| +   * 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<Project> update(Project request, core.String projectId) { | 
| +    var _url = null; | 
| +    var _queryParams = new core.Map(); | 
| +    var _uploadMedia = null; | 
| +    var _uploadOptions = null; | 
| +    var _downloadOptions = commons.DownloadOptions.Metadata; | 
| +    var _body = null; | 
| + | 
| +    if (request != null) { | 
| +      _body = convert.JSON.encode((request).toJson()); | 
| +    } | 
| +    if (projectId == null) { | 
| +      throw new core.ArgumentError("Parameter projectId is required."); | 
| +    } | 
| + | 
| +    _url = 'v1beta1/projects/' + commons.Escaper.ecapeVariable('$projectId'); | 
| + | 
| +    var _response = _requester.request(_url, | 
| +                                       "PUT", | 
| +                                       body: _body, | 
| +                                       queryParams: _queryParams, | 
| +                                       uploadOptions: _uploadOptions, | 
| +                                       uploadMedia: _uploadMedia, | 
| +                                       downloadOptions: _downloadOptions); | 
| +    return _response.then((data) => new Project.fromJson(data)); | 
| +  } | 
| + | 
| +} | 
| + | 
| + | 
| + | 
| +/** Associates members with roles. See below for allowed formats of members. */ | 
| +class Binding { | 
| +  /** | 
| +   * Format of member entries: 1. allUsers Matches any requesting principal | 
| +   * (users, service accounts or anonymous). 2. allAuthenticatedUsers Matches | 
| +   * any requesting authenticated principal (users or service accounts). 3. | 
| +   * user:{emailid} A google user account using an email address. For example | 
| +   * alice@gmail.com, joe@example.com 4. serviceAccount:{emailid} An service | 
| +   * account email. 5. group:{emailid} A google group with an email address. For | 
| +   * example auth-ti-cloud@google.com 6. domain:{domain} A Google Apps domain | 
| +   * name. For example google.com, example.com | 
| +   */ | 
| +  core.List<core.String> members; | 
| +  /** | 
| +   * The name of the role to which the members should be bound. Examples: | 
| +   * "roles/viewer", "roles/editor", "roles/owner". Required | 
| +   */ | 
| +  core.String role; | 
| + | 
| +  Binding(); | 
| + | 
| +  Binding.fromJson(core.Map _json) { | 
| +    if (_json.containsKey("members")) { | 
| +      members = _json["members"]; | 
| +    } | 
| +    if (_json.containsKey("role")) { | 
| +      role = _json["role"]; | 
| +    } | 
| +  } | 
| + | 
| +  core.Map toJson() { | 
| +    var _json = new core.Map(); | 
| +    if (members != null) { | 
| +      _json["members"] = members; | 
| +    } | 
| +    if (role != null) { | 
| +      _json["role"] = role; | 
| +    } | 
| +    return _json; | 
| +  } | 
| +} | 
| + | 
| +/** Write a Cloud Audit log */ | 
| +class CloudAuditOptions { | 
| + | 
| +  CloudAuditOptions(); | 
| + | 
| +  CloudAuditOptions.fromJson(core.Map _json) { | 
| +  } | 
| + | 
| +  core.Map toJson() { | 
| +    var _json = new core.Map(); | 
| +    return _json; | 
| +  } | 
| +} | 
| + | 
| +/** A condition to be met. */ | 
| +class Condition { | 
| +  /** | 
| +   * Trusted attributes supplied by the IAM system. | 
| +   * Possible string values are: | 
| +   * - "NO_ATTR" : A NO_ATTR. | 
| +   * - "AUTHORITY" : A AUTHORITY. | 
| +   * - "ATTRIBUTION" : A ATTRIBUTION. | 
| +   */ | 
| +  core.String iam; | 
| +  /** | 
| +   * An operator to apply the subject with. | 
| +   * Possible string values are: | 
| +   * - "NO_OP" : A NO_OP. | 
| +   * - "EQUALS" : A EQUALS. | 
| +   * - "NOT_EQUALS" : A NOT_EQUALS. | 
| +   * - "IN" : A IN. | 
| +   * - "NOT_IN" : A NOT_IN. | 
| +   * - "DISCHARGED" : A DISCHARGED. | 
| +   */ | 
| +  core.String op; | 
| +  /** Trusted attributes discharged by the service. */ | 
| +  core.String svc; | 
| +  /** | 
| +   * Trusted attributes supplied by any service that owns resources and uses the | 
| +   * IAM system for access control. | 
| +   * Possible string values are: | 
| +   * - "NO_ATTR" : A NO_ATTR. | 
| +   * - "REGION" : A REGION. | 
| +   * - "SERVICE" : A SERVICE. | 
| +   * - "NAME" : A NAME. | 
| +   * - "IP" : A IP. | 
| +   */ | 
| +  core.String sys; | 
| +  /** The object of the condition. Exactly one of these must be set. */ | 
| +  core.String value; | 
| +  /** The objects of the condition. This is mutually exclusive with 'value'. */ | 
| +  core.List<core.String> values; | 
| + | 
| +  Condition(); | 
| + | 
| +  Condition.fromJson(core.Map _json) { | 
| +    if (_json.containsKey("iam")) { | 
| +      iam = _json["iam"]; | 
| +    } | 
| +    if (_json.containsKey("op")) { | 
| +      op = _json["op"]; | 
| +    } | 
| +    if (_json.containsKey("svc")) { | 
| +      svc = _json["svc"]; | 
| +    } | 
| +    if (_json.containsKey("sys")) { | 
| +      sys = _json["sys"]; | 
| +    } | 
| +    if (_json.containsKey("value")) { | 
| +      value = _json["value"]; | 
| +    } | 
| +    if (_json.containsKey("values")) { | 
| +      values = _json["values"]; | 
| +    } | 
| +  } | 
| + | 
| +  core.Map toJson() { | 
| +    var _json = new core.Map(); | 
| +    if (iam != null) { | 
| +      _json["iam"] = iam; | 
| +    } | 
| +    if (op != null) { | 
| +      _json["op"] = op; | 
| +    } | 
| +    if (svc != null) { | 
| +      _json["svc"] = svc; | 
| +    } | 
| +    if (sys != null) { | 
| +      _json["sys"] = sys; | 
| +    } | 
| +    if (value != null) { | 
| +      _json["value"] = value; | 
| +    } | 
| +    if (values != null) { | 
| +      _json["values"] = values; | 
| +    } | 
| +    return _json; | 
| +  } | 
| +} | 
| + | 
| +/** Options for counters */ | 
| +class CounterOptions { | 
| +  /** The field value to attribute. */ | 
| +  core.String field; | 
| +  /** The metric to update. */ | 
| +  core.String metric; | 
| + | 
| +  CounterOptions(); | 
| + | 
| +  CounterOptions.fromJson(core.Map _json) { | 
| +    if (_json.containsKey("field")) { | 
| +      field = _json["field"]; | 
| +    } | 
| +    if (_json.containsKey("metric")) { | 
| +      metric = _json["metric"]; | 
| +    } | 
| +  } | 
| + | 
| +  core.Map toJson() { | 
| +    var _json = new core.Map(); | 
| +    if (field != null) { | 
| +      _json["field"] = field; | 
| +    } | 
| +    if (metric != null) { | 
| +      _json["metric"] = metric; | 
| +    } | 
| +    return _json; | 
| +  } | 
| +} | 
| + | 
| +/** Write a Data Access (Gin) log */ | 
| +class DataAccessOptions { | 
| + | 
| +  DataAccessOptions(); | 
| + | 
| +  DataAccessOptions.fromJson(core.Map _json) { | 
| +  } | 
| + | 
| +  core.Map toJson() { | 
| +    var _json = new core.Map(); | 
| +    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 toJson() { | 
| +    var _json = new core.Map(); | 
| +    return _json; | 
| +  } | 
| +} | 
| + | 
| +/** Request message for `GetIamPolicy` method. */ | 
| +class GetIamPolicyRequest { | 
| + | 
| +  GetIamPolicyRequest(); | 
| + | 
| +  GetIamPolicyRequest.fromJson(core.Map _json) { | 
| +  } | 
| + | 
| +  core.Map toJson() { | 
| +    var _json = new core.Map(); | 
| +    return _json; | 
| +  } | 
| +} | 
| + | 
| +/** | 
| + * A page of the response received from the | 
| + * [ListProjects][google.cloudresourcemanager.projects.v1beta1.DeveloperProjects.ListProjects] | 
| + * method. A paginated response where more pages are available has | 
| + * `next_page_token` set. This token can be used in a subsequent request to | 
| + * retrieve the next request page. | 
| + */ | 
| +class ListProjectsResponse { | 
| +  /** | 
| +   * Pagination token. If the result set is too large to fit in a single | 
| +   * response, this token is returned. It encodes the position of the current | 
| +   * result cursor. Feeding this value into a new list request with the | 
| +   * `page_token` parameter gives the next page of the results. When | 
| +   * `next_page_token` is not filled in, there is no next page and the list | 
| +   * returned is the last page in the result set. Pagination tokens have a | 
| +   * limited lifetime. Note: pagination is not yet supported; the server will | 
| +   * not set this field. | 
| +   */ | 
| +  core.String nextPageToken; | 
| +  /** | 
| +   * The list of projects that matched the list filter. This list can be | 
| +   * paginated. | 
| +   */ | 
| +  core.List<Project> projects; | 
| + | 
| +  ListProjectsResponse(); | 
| + | 
| +  ListProjectsResponse.fromJson(core.Map _json) { | 
| +    if (_json.containsKey("nextPageToken")) { | 
| +      nextPageToken = _json["nextPageToken"]; | 
| +    } | 
| +    if (_json.containsKey("projects")) { | 
| +      projects = _json["projects"].map((value) => new Project.fromJson(value)).toList(); | 
| +    } | 
| +  } | 
| + | 
| +  core.Map toJson() { | 
| +    var _json = new core.Map(); | 
| +    if (nextPageToken != null) { | 
| +      _json["nextPageToken"] = nextPageToken; | 
| +    } | 
| +    if (projects != null) { | 
| +      _json["projects"] = projects.map((value) => (value).toJson()).toList(); | 
| +    } | 
| +    return _json; | 
| +  } | 
| +} | 
| + | 
| +/** | 
| + * Specifies what kind of log the caller must write Increment a streamz counter | 
| + * with the specified metric and field names. Metric names should start with a | 
| + * '/', generally be lowercase-only, and end in "_count". Field names should not | 
| + * contain an initial slash. The actual exported metric names will have | 
| + * "/iam/policy" prepended. Field names correspond to IAM request parameters and | 
| + * field values are their respective values. At present only "iam_principal", | 
| + * corresponding to IAMContext.principal, is supported. Examples: counter { | 
| + * metric: "/debug_access_count" field: "iam_principal" } ==> increment counter | 
| + * /iam/policy/backend_debug_access_count {iam_principal=[value of | 
| + * IAMContext.principal]} At this time we do not support: * multiple field names | 
| + * (though this may be supported in the future) * decrementing the counter * | 
| + * incrementing it by anything other than 1 | 
| + */ | 
| +class LogConfig { | 
| +  /** Cloud audit options. */ | 
| +  CloudAuditOptions cloudAudit; | 
| +  /** Counter options. */ | 
| +  CounterOptions counter; | 
| +  /** Data access options. */ | 
| +  DataAccessOptions dataAccess; | 
| + | 
| +  LogConfig(); | 
| + | 
| +  LogConfig.fromJson(core.Map _json) { | 
| +    if (_json.containsKey("cloudAudit")) { | 
| +      cloudAudit = new CloudAuditOptions.fromJson(_json["cloudAudit"]); | 
| +    } | 
| +    if (_json.containsKey("counter")) { | 
| +      counter = new CounterOptions.fromJson(_json["counter"]); | 
| +    } | 
| +    if (_json.containsKey("dataAccess")) { | 
| +      dataAccess = new DataAccessOptions.fromJson(_json["dataAccess"]); | 
| +    } | 
| +  } | 
| + | 
| +  core.Map toJson() { | 
| +    var _json = new core.Map(); | 
| +    if (cloudAudit != null) { | 
| +      _json["cloudAudit"] = (cloudAudit).toJson(); | 
| +    } | 
| +    if (counter != null) { | 
| +      _json["counter"] = (counter).toJson(); | 
| +    } | 
| +    if (dataAccess != null) { | 
| +      _json["dataAccess"] = (dataAccess).toJson(); | 
| +    } | 
| +    return _json; | 
| +  } | 
| +} | 
| + | 
| +/** | 
| + * # Overview The `Policy` defines an access control policy language. It is used | 
| + * to define policies that are attached to resources like files, folders, VMs, | 
| + * etc. # Policy structure A `Policy` consists of a list of bindings. A | 
| + * `Binding` binds a set of members to a role, where the members include user | 
| + * accounts, user groups, user domains, and service accounts. A 'role' is a | 
| + * named set of permissions, defined by IAM. The definition of a role is outside | 
| + * the policy. A permission check first determines the roles that include the | 
| + * specified permission, and then determines if the principal specified is a | 
| + * member of a binding to at least one of these roles. The membership check is | 
| + * recursive when a group is bound to a role. Policy examples: ``` { "bindings": | 
| + * [ { "role": "roles/owner", "members": [ "user:mike@example.com", | 
| + * "group:admins@example.com", "domain:google.com", | 
| + * "serviceAccount:frontend@example.iam.gserviceaccounts.com"] }, { "role": | 
| + * "roles/viewer", "members": ["user:sean@example.com"] } ] } ``` | 
| + */ | 
| +class Policy { | 
| +  /** | 
| +   * It is an error to specify multiple bindings for the same role. It is an | 
| +   * error to specify a binding with no members. | 
| +   */ | 
| +  core.List<Binding> bindings; | 
| +  /** Can be used to perform a read-modify-write. */ | 
| +  core.String etag; | 
| +  core.List<core.int> get etagAsBytes { | 
| +    return crypto.CryptoUtils.base64StringToBytes(etag); | 
| +  } | 
| + | 
| +  void set etagAsBytes(core.List<core.int> _bytes) { | 
| +    etag = crypto.CryptoUtils.bytesToBase64(_bytes, urlSafe: true); | 
| +  } | 
| +  core.List<Rule> rules; | 
| +  /** | 
| +   * The policy language version. The version of the policy is represented by | 
| +   * the etag. The default version is 0. | 
| +   */ | 
| +  core.int version; | 
| + | 
| +  Policy(); | 
| + | 
| +  Policy.fromJson(core.Map _json) { | 
| +    if (_json.containsKey("bindings")) { | 
| +      bindings = _json["bindings"].map((value) => new Binding.fromJson(value)).toList(); | 
| +    } | 
| +    if (_json.containsKey("etag")) { | 
| +      etag = _json["etag"]; | 
| +    } | 
| +    if (_json.containsKey("rules")) { | 
| +      rules = _json["rules"].map((value) => new Rule.fromJson(value)).toList(); | 
| +    } | 
| +    if (_json.containsKey("version")) { | 
| +      version = _json["version"]; | 
| +    } | 
| +  } | 
| + | 
| +  core.Map toJson() { | 
| +    var _json = new core.Map(); | 
| +    if (bindings != null) { | 
| +      _json["bindings"] = bindings.map((value) => (value).toJson()).toList(); | 
| +    } | 
| +    if (etag != null) { | 
| +      _json["etag"] = etag; | 
| +    } | 
| +    if (rules != null) { | 
| +      _json["rules"] = rules.map((value) => (value).toJson()).toList(); | 
| +    } | 
| +    if (version != null) { | 
| +      _json["version"] = version; | 
| +    } | 
| +    return _json; | 
| +  } | 
| +} | 
| + | 
| +/** | 
| + * A Project is a high-level Google Cloud Platform entity. It is a container for | 
| + * ACLs, APIs, AppEngine Apps, VMs, and other Google Cloud Platform resources. | 
| + */ | 
| +class Project { | 
| +  /** Creation time. Read-only. */ | 
| +  core.String createTime; | 
| +  /** | 
| +   * The labels associated with this project. Label keys must be between 1 and | 
| +   * 63 characters long and must conform to the following regular expression: | 
| +   * \[a-z\](\[-a-z0-9\]*\[a-z0-9\])?. Label values must be between 0 and 63 | 
| +   * characters long and must conform to the regular expression | 
| +   * (\[a-z\](\[-a-z0-9\]*\[a-z0-9\])?)?. No more than 256 labels can be | 
| +   * associated with a given resource. Clients should store labels in a | 
| +   * representation such as JSON that does not depend on specific characters | 
| +   * being disallowed. Example: "environment" : "dev" Read-write. | 
| +   */ | 
| +  core.Map<core.String, core.String> labels; | 
| +  /** | 
| +   * The project lifecycle state. Read-only. | 
| +   * Possible string values are: | 
| +   * - "LIFECYCLE_STATE_UNSPECIFIED" : A LIFECYCLE_STATE_UNSPECIFIED. | 
| +   * - "ACTIVE" : A ACTIVE. | 
| +   * - "DELETE_REQUESTED" : A DELETE_REQUESTED. | 
| +   * - "DELETE_IN_PROGRESS" : A DELETE_IN_PROGRESS. | 
| +   */ | 
| +  core.String lifecycleState; | 
| +  /** | 
| +   * The user-assigned name of the project. This field is optional and can | 
| +   * remain unset. Allowed characters are: lowercase and uppercase letters, | 
| +   * numbers, hyphen, single-quote, double-quote, space, and exclamation point. | 
| +   * Example: My Project Read-write. | 
| +   */ | 
| +  core.String name; | 
| +  /** | 
| +   * The unique, user-assigned ID of the project. It must be 6 to 30 lowercase | 
| +   * letters, digits, or hyphens. It must start with a letter. Trailing hyphens | 
| +   * are prohibited. Example: tokyo-rain-123 Read-only after creation. | 
| +   */ | 
| +  core.String projectId; | 
| +  /** | 
| +   * The number uniquely identifying the project. Example: 415104041262 | 
| +   * Read-only. | 
| +   */ | 
| +  core.String projectNumber; | 
| + | 
| +  Project(); | 
| + | 
| +  Project.fromJson(core.Map _json) { | 
| +    if (_json.containsKey("createTime")) { | 
| +      createTime = _json["createTime"]; | 
| +    } | 
| +    if (_json.containsKey("labels")) { | 
| +      labels = _json["labels"]; | 
| +    } | 
| +    if (_json.containsKey("lifecycleState")) { | 
| +      lifecycleState = _json["lifecycleState"]; | 
| +    } | 
| +    if (_json.containsKey("name")) { | 
| +      name = _json["name"]; | 
| +    } | 
| +    if (_json.containsKey("projectId")) { | 
| +      projectId = _json["projectId"]; | 
| +    } | 
| +    if (_json.containsKey("projectNumber")) { | 
| +      projectNumber = _json["projectNumber"]; | 
| +    } | 
| +  } | 
| + | 
| +  core.Map toJson() { | 
| +    var _json = new core.Map(); | 
| +    if (createTime != null) { | 
| +      _json["createTime"] = createTime; | 
| +    } | 
| +    if (labels != null) { | 
| +      _json["labels"] = labels; | 
| +    } | 
| +    if (lifecycleState != null) { | 
| +      _json["lifecycleState"] = lifecycleState; | 
| +    } | 
| +    if (name != null) { | 
| +      _json["name"] = name; | 
| +    } | 
| +    if (projectId != null) { | 
| +      _json["projectId"] = projectId; | 
| +    } | 
| +    if (projectNumber != null) { | 
| +      _json["projectNumber"] = projectNumber; | 
| +    } | 
| +    return _json; | 
| +  } | 
| +} | 
| + | 
| +/** A rule to be applied in a Policy. */ | 
| +class Rule { | 
| +  /** | 
| +   * Required | 
| +   * Possible string values are: | 
| +   * - "NO_ACTION" : A NO_ACTION. | 
| +   * - "ALLOW" : A ALLOW. | 
| +   * - "ALLOW_WITH_LOG" : A ALLOW_WITH_LOG. | 
| +   * - "DENY" : A DENY. | 
| +   * - "DENY_WITH_LOG" : A DENY_WITH_LOG. | 
| +   * - "LOG" : A LOG. | 
| +   */ | 
| +  core.String action; | 
| +  /** Additional restrictions that must be met */ | 
| +  core.List<Condition> conditions; | 
| +  /** Human-readable description of the rule. */ | 
| +  core.String description; | 
| +  /** | 
| +   * The rule matches if the PRINCIPAL/AUTHORITY_SELECTOR is in this set of | 
| +   * entries. | 
| +   */ | 
| +  core.List<core.String> in_; | 
| +  /** | 
| +   * The config returned to callers of tech.iam.IAM.CheckPolicy for any entries | 
| +   * that match the LOG action. | 
| +   */ | 
| +  core.List<LogConfig> logConfig; | 
| +  /** | 
| +   * The rule matches if the PRINCIPAL/AUTHORITY_SELECTOR is not in this set of | 
| +   * entries. The formation for in and not_in entries is the same as members in | 
| +   * a Binding above. | 
| +   */ | 
| +  core.List<core.String> notIn; | 
| +  /** | 
| +   * A permission is a string of form '..' (e.g., 'storage.buckets.list'). A | 
| +   * value of '*' matches all permissions, and a verb part of '*' (e.g., | 
| +   * 'storage.buckets.*') matches all verbs. | 
| +   */ | 
| +  core.List<core.String> permissions; | 
| + | 
| +  Rule(); | 
| + | 
| +  Rule.fromJson(core.Map _json) { | 
| +    if (_json.containsKey("action")) { | 
| +      action = _json["action"]; | 
| +    } | 
| +    if (_json.containsKey("conditions")) { | 
| +      conditions = _json["conditions"].map((value) => new Condition.fromJson(value)).toList(); | 
| +    } | 
| +    if (_json.containsKey("description")) { | 
| +      description = _json["description"]; | 
| +    } | 
| +    if (_json.containsKey("in")) { | 
| +      in_ = _json["in"]; | 
| +    } | 
| +    if (_json.containsKey("logConfig")) { | 
| +      logConfig = _json["logConfig"].map((value) => new LogConfig.fromJson(value)).toList(); | 
| +    } | 
| +    if (_json.containsKey("notIn")) { | 
| +      notIn = _json["notIn"]; | 
| +    } | 
| +    if (_json.containsKey("permissions")) { | 
| +      permissions = _json["permissions"]; | 
| +    } | 
| +  } | 
| + | 
| +  core.Map toJson() { | 
| +    var _json = new core.Map(); | 
| +    if (action != null) { | 
| +      _json["action"] = action; | 
| +    } | 
| +    if (conditions != null) { | 
| +      _json["conditions"] = conditions.map((value) => (value).toJson()).toList(); | 
| +    } | 
| +    if (description != null) { | 
| +      _json["description"] = description; | 
| +    } | 
| +    if (in_ != null) { | 
| +      _json["in"] = in_; | 
| +    } | 
| +    if (logConfig != null) { | 
| +      _json["logConfig"] = logConfig.map((value) => (value).toJson()).toList(); | 
| +    } | 
| +    if (notIn != null) { | 
| +      _json["notIn"] = notIn; | 
| +    } | 
| +    if (permissions != null) { | 
| +      _json["permissions"] = permissions; | 
| +    } | 
| +    return _json; | 
| +  } | 
| +} | 
| + | 
| +/** Request message for `SetIamPolicy` method. */ | 
| +class SetIamPolicyRequest { | 
| +  /** | 
| +   * REQUIRED: The complete policy to be applied to the 'resource'. The size of | 
| +   * the policy is limited to a few 10s of KB. An empty policy is in general a | 
| +   * valid policy but certain services (like Projects) might reject them. | 
| +   */ | 
| +  Policy policy; | 
| + | 
| +  SetIamPolicyRequest(); | 
| + | 
| +  SetIamPolicyRequest.fromJson(core.Map _json) { | 
| +    if (_json.containsKey("policy")) { | 
| +      policy = new Policy.fromJson(_json["policy"]); | 
| +    } | 
| +  } | 
| + | 
| +  core.Map toJson() { | 
| +    var _json = new core.Map(); | 
| +    if (policy != null) { | 
| +      _json["policy"] = (policy).toJson(); | 
| +    } | 
| +    return _json; | 
| +  } | 
| +} | 
| + | 
| +/** Request message for `TestIamPermissions` method. */ | 
| +class TestIamPermissionsRequest { | 
| +  /** | 
| +   * The set of permissions to check for the 'resource'. Permissions with | 
| +   * wildcards (such as '*' or 'storage.*') are not allowed. | 
| +   */ | 
| +  core.List<core.String> permissions; | 
| + | 
| +  TestIamPermissionsRequest(); | 
| + | 
| +  TestIamPermissionsRequest.fromJson(core.Map _json) { | 
| +    if (_json.containsKey("permissions")) { | 
| +      permissions = _json["permissions"]; | 
| +    } | 
| +  } | 
| + | 
| +  core.Map toJson() { | 
| +    var _json = new core.Map(); | 
| +    if (permissions != null) { | 
| +      _json["permissions"] = permissions; | 
| +    } | 
| +    return _json; | 
| +  } | 
| +} | 
| + | 
| +/** Response message for `TestIamPermissions` method. */ | 
| +class TestIamPermissionsResponse { | 
| +  /** | 
| +   * A subset of `TestPermissionsRequest.permissions` that the caller is | 
| +   * allowed. | 
| +   */ | 
| +  core.List<core.String> permissions; | 
| + | 
| +  TestIamPermissionsResponse(); | 
| + | 
| +  TestIamPermissionsResponse.fromJson(core.Map _json) { | 
| +    if (_json.containsKey("permissions")) { | 
| +      permissions = _json["permissions"]; | 
| +    } | 
| +  } | 
| + | 
| +  core.Map toJson() { | 
| +    var _json = new core.Map(); | 
| +    if (permissions != null) { | 
| +      _json["permissions"] = permissions; | 
| +    } | 
| +    return _json; | 
| +  } | 
| +} | 
|  |