-- Hoogle documentation, generated by Haddock
-- See Hoogle, http://www.haskell.org/hoogle/


-- | Google Cloud Resource Manager SDK.
--   
--   The Google Cloud Resource Manager API provides methods for creating,
--   reading, and updating project metadata.
--   
--   <i>Warning:</i> This is an experimental prototype/preview release
--   which is still under exploratory development and not intended for
--   public use, caveat emptor!
--   
--   This library is compatible with version <tt>v1</tt> of the API.
@package gogol-resourcemanager
@version 0.3.0


module Network.Google.ResourceManager.Types

-- | Default request referring to version <tt>v1</tt> of the Google Cloud
--   Resource Manager API. This contains the host and root path used as a
--   starting point for constructing service requests.
resourceManagerService :: ServiceConfig

-- | View your data across Google Cloud Platform services
cloudPlatformReadOnlyScope :: Proxy '["https://www.googleapis.com/auth/cloud-platform.read-only"]

-- | View and manage your data across Google Cloud Platform services
cloudPlatformScope :: Proxy '["https://www.googleapis.com/auth/cloud-platform"]

-- | 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 <a>gRPC</a>. The error model is designed to be: - Simple
--   to use and understand for most users - Flexible enough to meet
--   unexpected needs # Overview The `Status` message contains three pieces
--   of data: error code, error message, and error details. The error code
--   should be an enum value of google.rpc.Code, but it may accept
--   additional error codes if needed. The error message should be a
--   developer-facing English message that helps developers *understand*
--   and *resolve* the error. If a localized user-facing error message is
--   needed, put the localized message in the error details or localize it
--   in the client. The optional error details may contain arbitrary
--   information about the error. There is a predefined set of error detail
--   types in the package `google.rpc` which can be used for common error
--   conditions. # Language mapping The `Status` message is the logical
--   representation of the error model, but it is not necessarily the
--   actual wire format. When the `Status` message is exposed in different
--   client libraries and different wire protocols, it can be mapped
--   differently. For example, it will likely be mapped to some exceptions
--   in Java, but more likely mapped to some error codes in C. # Other uses
--   The error model and the `Status` message can be used in a variety of
--   environments, either with or without APIs, to provide a consistent
--   developer experience across different environments. Example uses of
--   this error model include: - Partial errors. If a service needs to
--   return partial errors to the client, it may embed the `Status` in the
--   normal response to indicate the partial errors. - Workflow errors. A
--   typical workflow has multiple steps. Each step may have a `Status`
--   message for error reporting purpose. - Batch operations. If a client
--   uses batch request and batch response, the `Status` message should be
--   used directly inside batch response, one for each error sub-response.
--   - Asynchronous operations. If an API call embeds asynchronous
--   operation results in its response, the status of those operations
--   should be represented directly using the `Status` message. - Logging.
--   If some API errors are stored in logs, the message `Status` could be
--   used directly after any stripping needed for security/privacy reasons.
--   
--   <i>See:</i> <a>status</a> smart constructor.
data Status

-- | Creates a value of <a>Status</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>sDetails</a></li>
--   <li><a>sCode</a></li>
--   <li><a>sMessage</a></li>
--   </ul>
status :: Status

-- | A list of messages that carry the error details. There will be a
--   common set of message types for APIs to use.
sDetails :: Lens' Status [StatusDetailsItem]

-- | The status code, which should be an enum value of google.rpc.Code.
sCode :: Lens' Status (Maybe Int32)

-- | 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.
sMessage :: Lens' Status (Maybe Text)

-- | The request sent to the `SearchOrganizations` method.
--   
--   <i>See:</i> <a>searchOrganizationsRequest</a> smart constructor.
data SearchOrganizationsRequest

-- | Creates a value of <a>SearchOrganizationsRequest</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>sorFilter</a></li>
--   <li><a>sorPageToken</a></li>
--   <li><a>sorPageSize</a></li>
--   </ul>
searchOrganizationsRequest :: SearchOrganizationsRequest

-- | An optional query string used to filter the Organizations to return in
--   the response. Filter rules are case-insensitive. Organizations may be
--   filtered by `owner.directoryCustomerId` or by `domain`, where the
--   domain is a Google for Work domain, for example: |Filter|Description|
--   |------|-----------|
--   |owner.directorycustomerid:123456789|Organizations with
--   `owner.directory_customer_id` equal to `123456789`.|
--   |domain:google.com|Organizations corresponding to the domain
--   `google.com`.| This field is optional.
sorFilter :: Lens' SearchOrganizationsRequest (Maybe Text)

-- | A pagination token returned from a previous call to
--   `SearchOrganizations` that indicates from where listing should
--   continue. This field is optional.
sorPageToken :: Lens' SearchOrganizationsRequest (Maybe Text)

-- | The maximum number of Organizations to return in the response. This
--   field is optional.
sorPageSize :: Lens' SearchOrganizationsRequest (Maybe Int32)

-- | A container to reference an id for any resource type. A `resource` in
--   Google Cloud Platform is a generic term for something you (a
--   developer) may want to interact with through one of our API's. Some
--   examples are an AppEngine app, a Compute Engine instance, a Cloud SQL
--   database, and so on.
--   
--   <i>See:</i> <a>resourceId</a> smart constructor.
data ResourceId

-- | Creates a value of <a>ResourceId</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>riId</a></li>
--   <li><a>riType</a></li>
--   </ul>
resourceId :: ResourceId

-- | Required field for the type-specific id. This should correspond to the
--   id used in the type-specific API's.
riId :: Lens' ResourceId (Maybe Text)

-- | Required field representing the resource type this id is for. At
--   present, the only valid type is "organization".
riType :: Lens' ResourceId (Maybe Text)

-- | A page of the response received from the 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.
--   
--   <i>See:</i> <a>listProjectsResponse</a> smart constructor.
data ListProjectsResponse

-- | Creates a value of <a>ListProjectsResponse</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>lprNextPageToken</a></li>
--   <li><a>lprProjects</a></li>
--   </ul>
listProjectsResponse :: 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.
lprNextPageToken :: Lens' ListProjectsResponse (Maybe Text)

-- | The list of Projects that matched the list filter. This list can be
--   paginated.
lprProjects :: Lens' ListProjectsResponse [Project]

-- | Request message for `GetIamPolicy` method.
--   
--   <i>See:</i> <a>getIAMPolicyRequest</a> smart constructor.
data GetIAMPolicyRequest

-- | Creates a value of <a>GetIAMPolicyRequest</a> with the minimum fields
--   required to make a request.
getIAMPolicyRequest :: GetIAMPolicyRequest

-- | The entity that owns an Organization. The lifetime of the Organization
--   and all of its descendants are bound to the `OrganizationOwner`. If
--   the `OrganizationOwner` is deleted, the Organization and all its
--   descendants will be deleted.
--   
--   <i>See:</i> <a>organizationOwner</a> smart constructor.
data OrganizationOwner

-- | Creates a value of <a>OrganizationOwner</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ooDirectoryCustomerId</a></li>
--   </ul>
organizationOwner :: OrganizationOwner

-- | The Google for Work customer id used in the Directory API.
ooDirectoryCustomerId :: Lens' OrganizationOwner (Maybe Text)

-- | The organization's current lifecycle state. Assigned by the server.
--   'OutputOnly
data OrganizationLifecycleState

-- | <tt>LIFECYCLE_STATE_UNSPECIFIED</tt> Unspecified state. This is only
--   useful for distinguishing unset values.
LifecycleStateUnspecified :: OrganizationLifecycleState

-- | <tt>ACTIVE</tt> The normal and active state.
Active :: OrganizationLifecycleState

-- | <tt>DELETE_REQUESTED</tt> The organization has been marked for
--   deletion by the user.
DeleteRequested :: OrganizationLifecycleState

-- | 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.
--   
--   <i>See:</i> <a>project</a> smart constructor.
data Project

-- | Creates a value of <a>Project</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>pParent</a></li>
--   <li><a>pProjectNumber</a></li>
--   <li><a>pName</a></li>
--   <li><a>pLabels</a></li>
--   <li><a>pProjectId</a></li>
--   <li><a>pLifecycleState</a></li>
--   <li><a>pCreateTime</a></li>
--   </ul>
project :: Project

-- | An optional reference to a parent Resource. The only supported parent
--   type is "organization". Once set, the parent cannot be modified. The
--   `parent` can be set on creation or using the `UpdateProject` method;
--   the end user must have the `resourcemanager.projects.create`
--   permission on the parent. Read-write.
pParent :: Lens' Project (Maybe ResourceId)

-- | The number uniquely identifying the project. Example: '415104041262'
--   Read-only.
pProjectNumber :: Lens' Project (Maybe Int64)

-- | The user-assigned display name of the Project. It must be 4 to 30
--   characters. Allowed characters are: lowercase and uppercase letters,
--   numbers, hyphen, single-quote, double-quote, space, and exclamation
--   point. Example: 'My Project' Read-write.
pName :: Lens' Project (Maybe Text)

-- | 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.
pLabels :: Lens' Project (Maybe ProjectLabels)

-- | 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.
pProjectId :: Lens' Project (Maybe Text)

-- | The Project lifecycle state. Read-only.
pLifecycleState :: Lens' Project (Maybe ProjectLifecycleState)

-- | Creation time. Read-only.
pCreateTime :: Lens' Project (Maybe UTCTime)

-- | This resource represents a long-running operation that is the result
--   of a network API call.
--   
--   <i>See:</i> <a>operation</a> smart constructor.
data Operation

-- | Creates a value of <a>Operation</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>oDone</a></li>
--   <li><a>oError</a></li>
--   <li><a>oResponse</a></li>
--   <li><a>oName</a></li>
--   <li><a>oMetadata</a></li>
--   </ul>
operation :: Operation

-- | If the value is `false`, it means the operation is still in progress.
--   If true, the operation is completed, and either `error` or `response`
--   is available.
oDone :: Lens' Operation (Maybe Bool)

-- | The error result of the operation in case of failure or cancellation.
oError :: Lens' Operation (Maybe Status)

-- | The normal response of the operation in case of success. If the
--   original method returns no data on success, such as `Delete`, the
--   response is `google.protobuf.Empty`. If the original method is
--   standard `Get`/`Create`/`Update`, the response should be the resource.
--   For other methods, the response should have the type `XxxResponse`,
--   where `Xxx` is the original method name. For example, if the original
--   method name is `TakeSnapshot()`, the inferred response type is
--   `TakeSnapshotResponse`.
oResponse :: Lens' Operation (Maybe OperationResponse)

-- | The server-assigned name, which is only unique within the same service
--   that originally returns it. If you use the default HTTP mapping, the
--   `name` should have the format of `operations/some/unique/name`.
oName :: Lens' Operation (Maybe Text)

-- | Service-specific metadata associated with the operation. It typically
--   contains progress information and common metadata such as create time.
--   Some services might not provide such metadata. Any method that returns
--   a long-running operation should document the metadata type, if any.
oMetadata :: Lens' Operation (Maybe OperationMetadata)

-- | 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 `{}`.
--   
--   <i>See:</i> <a>empty</a> smart constructor.
data Empty

-- | Creates a value of <a>Empty</a> with the minimum fields required to
--   make a request.
empty :: Empty

-- | The type of operation error experienced.
data FolderOperationErrorErrorMessageId

-- | <tt>ERROR_TYPE_UNSPECIFIED</tt> The error type was unrecognized or
--   unspecified.
ErrorTypeUnspecified :: FolderOperationErrorErrorMessageId

-- | <tt>FOLDER_HEIGHT_VIOLATION</tt> The attempted action would violate
--   the max folder depth constraint.
FolderHeightViolation :: FolderOperationErrorErrorMessageId

-- | <tt>MAX_CHILD_FOLDERS_VIOLATION</tt> The attempted action would
--   violate the max child folders constraint.
MaxChildFoldersViolation :: FolderOperationErrorErrorMessageId

-- | <tt>FOLDER_NAME_UNIQUENESS_VIOLATION</tt> The attempted action would
--   violate the locally-unique folder display_name constraint.
FolderNameUniquenessViolation :: FolderOperationErrorErrorMessageId

-- | <tt>RESOURCE_DELETED</tt> The resource being moved has been deleted.
ResourceDeleted :: FolderOperationErrorErrorMessageId

-- | <tt>PARENT_DELETED</tt> The resource a folder was being added to has
--   been deleted.
ParentDeleted :: FolderOperationErrorErrorMessageId

-- | <tt>CYCLE_INTRODUCED_ERROR</tt> The attempted action would introduce
--   cycle in resource path.
CycleIntroducedError :: FolderOperationErrorErrorMessageId

-- | <tt>FOLDER_ALREADY_BEING_MOVED</tt> The attempted action would move a
--   folder that is already being moved.
FolderAlreadyBeingMoved :: FolderOperationErrorErrorMessageId

-- | <tt>FOLDER_TO_DELETE_NON_EMPTY</tt> The folder the caller is trying to
--   delete contains active resources.
FolderToDeleteNonEmpty :: FolderOperationErrorErrorMessageId

-- | A status object which is used as the `metadata` field for the
--   Operation returned by CreateProject. It provides insight for when
--   significant phases of Project creation have completed.
--   
--   <i>See:</i> <a>projectCreationStatus</a> smart constructor.
data ProjectCreationStatus

-- | Creates a value of <a>ProjectCreationStatus</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>pcsGettable</a></li>
--   <li><a>pcsReady</a></li>
--   <li><a>pcsCreateTime</a></li>
--   </ul>
projectCreationStatus :: ProjectCreationStatus

-- | True if the project can be retrieved using GetProject. No other
--   operations on the project are guaranteed to work until the project
--   creation is complete.
pcsGettable :: Lens' ProjectCreationStatus (Maybe Bool)

-- | True if the project creation process is complete.
pcsReady :: Lens' ProjectCreationStatus (Maybe Bool)

-- | Creation time of the project creation workflow.
pcsCreateTime :: Lens' ProjectCreationStatus (Maybe UTCTime)
data StatusDetailsItem

-- | Creates a value of <a>StatusDetailsItem</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>sdiAddtional</a></li>
--   </ul>
statusDetailsItem :: HashMap Text JSONValue -> StatusDetailsItem

-- | Properties of the object. Contains field 'type with type URL.
sdiAddtional :: Lens' StatusDetailsItem (HashMap Text JSONValue)

-- | A classification of the Folder Operation error.
--   
--   <i>See:</i> <a>folderOperationError</a> smart constructor.
data FolderOperationError

-- | Creates a value of <a>FolderOperationError</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>foeErrorMessageId</a></li>
--   </ul>
folderOperationError :: FolderOperationError

-- | The type of operation error experienced.
foeErrorMessageId :: Lens' FolderOperationError (Maybe FolderOperationErrorErrorMessageId)

-- | The type of this operation.
data FolderOperationOperationType

-- | <tt>OPERATION_TYPE_UNSPECIFIED</tt> Operation type not specified.
OperationTypeUnspecified :: FolderOperationOperationType

-- | <tt>CREATE</tt> A create folder operation.
Create :: FolderOperationOperationType

-- | <tt>MOVE</tt> A move folder operation.
Move :: FolderOperationOperationType

-- | Request message for `SetIamPolicy` method.
--   
--   <i>See:</i> <a>setIAMPolicyRequest</a> smart constructor.
data SetIAMPolicyRequest

-- | Creates a value of <a>SetIAMPolicyRequest</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>siprPolicy</a></li>
--   </ul>
setIAMPolicyRequest :: SetIAMPolicyRequest

-- | REQUIRED: The complete policy to be applied to the `resource`. The
--   size of the policy is limited to a few 10s of KB. An empty policy is a
--   valid policy but certain Cloud Platform services (such as Projects)
--   might reject them.
siprPolicy :: Lens' SetIAMPolicyRequest (Maybe Policy)

-- | The Project lifecycle state. Read-only.
data ProjectLifecycleState

-- | <tt>LIFECYCLE_STATE_UNSPECIFIED</tt> Unspecified state. This is only
--   used/useful for distinguishing unset values.
PLSLifecycleStateUnspecified :: ProjectLifecycleState

-- | <tt>ACTIVE</tt> The normal and active state.
PLSActive :: ProjectLifecycleState

-- | <tt>DELETE_REQUESTED</tt> The project has been marked for deletion by
--   the user (by invoking DeleteProject) or by the system (Google Cloud
--   Platform). This can generally be reversed by invoking UndeleteProject.
PLSDeleteRequested :: ProjectLifecycleState

-- | <tt>DELETE_IN_PROGRESS</tt> This lifecycle state is no longer used and
--   not returned by the API.
PLSDeleteInProgress :: ProjectLifecycleState

-- | V1 error format.
data Xgafv

-- | <tt>1</tt> v1 error format
X1 :: Xgafv

-- | <tt>2</tt> v2 error format
X2 :: Xgafv

-- | Request message for `TestIamPermissions` method.
--   
--   <i>See:</i> <a>testIAMPermissionsRequest</a> smart constructor.
data TestIAMPermissionsRequest

-- | Creates a value of <a>TestIAMPermissionsRequest</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>tiprPermissions</a></li>
--   </ul>
testIAMPermissionsRequest :: TestIAMPermissionsRequest

-- | The set of permissions to check for the `resource`. Permissions with
--   wildcards (such as '*' or 'storage.*') are not allowed. For more
--   information see <a>IAM Overview</a>.
tiprPermissions :: Lens' TestIAMPermissionsRequest [Text]

-- | The request sent to the GetAncestry method.
--   
--   <i>See:</i> <a>getAncestryRequest</a> smart constructor.
data GetAncestryRequest

-- | Creates a value of <a>GetAncestryRequest</a> with the minimum fields
--   required to make a request.
getAncestryRequest :: GetAncestryRequest

-- | The response returned from the `SearchOrganizations` method.
--   
--   <i>See:</i> <a>searchOrganizationsResponse</a> smart constructor.
data SearchOrganizationsResponse

-- | Creates a value of <a>SearchOrganizationsResponse</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>sorNextPageToken</a></li>
--   <li><a>sorOrganizations</a></li>
--   </ul>
searchOrganizationsResponse :: SearchOrganizationsResponse

-- | A pagination token to be used to retrieve the next page of results. If
--   the result is too large to fit within the page size specified in the
--   request, this field will be set with a token that can be used to fetch
--   the next page of results. If this field is empty, it indicates that
--   this response contains the last page of results.
sorNextPageToken :: Lens' SearchOrganizationsResponse (Maybe Text)

-- | The list of Organizations that matched the search query, possibly
--   paginated.
sorOrganizations :: Lens' SearchOrganizationsResponse [Organization]

-- | Response from the GetAncestry method.
--   
--   <i>See:</i> <a>getAncestryResponse</a> smart constructor.
data GetAncestryResponse

-- | Creates a value of <a>GetAncestryResponse</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>garAncestor</a></li>
--   </ul>
getAncestryResponse :: GetAncestryResponse

-- | Ancestors are ordered from bottom to top of the resource hierarchy.
--   The first ancestor is the project itself, followed by the project's
--   parent, etc.
garAncestor :: Lens' GetAncestryResponse [Ancestor]

-- | Response message for `TestIamPermissions` method.
--   
--   <i>See:</i> <a>testIAMPermissionsResponse</a> smart constructor.
data TestIAMPermissionsResponse

-- | Creates a value of <a>TestIAMPermissionsResponse</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>tiamprPermissions</a></li>
--   </ul>
testIAMPermissionsResponse :: TestIAMPermissionsResponse

-- | A subset of `TestPermissionsRequest.permissions` that the caller is
--   allowed.
tiamprPermissions :: Lens' TestIAMPermissionsResponse [Text]

-- | Defines an Identity and Access Management (IAM) policy. It is used to
--   specify access control policies for Cloud Platform resources. A
--   `Policy` consists of a list of `bindings`. A `Binding` binds a list of
--   `members` to a `role`, where the members can be user accounts, Google
--   groups, Google domains, and service accounts. A `role` is a named list
--   of permissions defined by IAM. **Example** { "bindings": [ { "role":
--   "roles/owner", "members": [ "user:mike'example.com",
--   "group:admins'example.com", "domain:google.com",
--   "serviceAccount:my-other-app'appspot.gserviceaccount.com", ] }, {
--   "role": "roles/viewer", "members": ["user:sean'example.com"] } ] } For
--   a description of IAM and its features, see the <a>IAM developer's
--   guide</a>.
--   
--   <i>See:</i> <a>policy</a> smart constructor.
data Policy

-- | Creates a value of <a>Policy</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>pEtag</a></li>
--   <li><a>pVersion</a></li>
--   <li><a>pBindings</a></li>
--   </ul>
policy :: Policy

-- | `etag` is used for optimistic concurrency control as a way to help
--   prevent simultaneous updates of a policy from overwriting each other.
--   It is strongly suggested that systems make use of the `etag` in the
--   read-modify-write cycle to perform policy updates in order to avoid
--   race conditions: An `etag` is returned in the response to
--   `getIamPolicy`, and systems are expected to put that etag in the
--   request to `setIamPolicy` to ensure that their change will be applied
--   to the same version of the policy. If no `etag` is provided in the
--   call to `setIamPolicy`, then the existing policy is overwritten
--   blindly.
pEtag :: Lens' Policy (Maybe ByteString)

-- | Version of the `Policy`. The default version is 0.
pVersion :: Lens' Policy (Maybe Int32)

-- | Associates a list of `members` to a `role`. Multiple `bindings` must
--   not be specified for the same `role`. `bindings` with no members will
--   result in an error.
pBindings :: Lens' Policy [Binding]

-- | 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.
--   
--   <i>See:</i> <a>projectLabels</a> smart constructor.
data ProjectLabels

-- | Creates a value of <a>ProjectLabels</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>plAddtional</a></li>
--   </ul>
projectLabels :: HashMap Text Text -> ProjectLabels
plAddtional :: Lens' ProjectLabels (HashMap Text Text)

-- | Service-specific metadata associated with the operation. It typically
--   contains progress information and common metadata such as create time.
--   Some services might not provide such metadata. Any method that returns
--   a long-running operation should document the metadata type, if any.
--   
--   <i>See:</i> <a>operationMetadata</a> smart constructor.
data OperationMetadata

-- | Creates a value of <a>OperationMetadata</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>omAddtional</a></li>
--   </ul>
operationMetadata :: HashMap Text JSONValue -> OperationMetadata

-- | Properties of the object. Contains field 'type with type URL.
omAddtional :: Lens' OperationMetadata (HashMap Text JSONValue)

-- | Metadata describing a long running folder operation
--   
--   <i>See:</i> <a>folderOperation</a> smart constructor.
data FolderOperation

-- | Creates a value of <a>FolderOperation</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>foDestinationParent</a></li>
--   <li><a>foDisplayName</a></li>
--   <li><a>foOperationType</a></li>
--   <li><a>foSourceParent</a></li>
--   </ul>
folderOperation :: FolderOperation

-- | The resource name of the folder or organization we are either creating
--   the folder under or moving the folder to.
foDestinationParent :: Lens' FolderOperation (Maybe Text)

-- | The display name of the folder.
foDisplayName :: Lens' FolderOperation (Maybe Text)

-- | The type of this operation.
foOperationType :: Lens' FolderOperation (Maybe FolderOperationOperationType)

-- | The resource name of the folder's parent. Only applicable when the
--   operation_type is MOVE.
foSourceParent :: Lens' FolderOperation (Maybe Text)

-- | The root node in the resource hierarchy to which a particular entity's
--   (e.g., company) resources belong.
--   
--   <i>See:</i> <a>organization</a> smart constructor.
data Organization

-- | Creates a value of <a>Organization</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>orgCreationTime</a></li>
--   <li><a>orgOwner</a></li>
--   <li><a>orgName</a></li>
--   <li><a>orgDisplayName</a></li>
--   <li><a>orgLifecycleState</a></li>
--   </ul>
organization :: Organization

-- | Timestamp when the Organization was created. Assigned by the server.
--   'OutputOnly
orgCreationTime :: Lens' Organization (Maybe UTCTime)

-- | The owner of this Organization. The owner should be specified on
--   creation. Once set, it cannot be changed. This field is required.
orgOwner :: Lens' Organization (Maybe OrganizationOwner)

-- | Output Only. The resource name of the organization. This is the
--   organization's relative path in the API. Its format is
--   "organizations/[organization_id]". For example, "organizations/1234".
orgName :: Lens' Organization (Maybe Text)

-- | A friendly string to be used to refer to the Organization in the UI.
--   Assigned by the server, set to the firm name of the Google For Work
--   customer that owns this organization. 'OutputOnly
orgDisplayName :: Lens' Organization (Maybe Text)

-- | The organization's current lifecycle state. Assigned by the server.
--   'OutputOnly
orgLifecycleState :: Lens' Organization (Maybe OrganizationLifecycleState)

-- | Identifying information for a single ancestor of a project.
--   
--   <i>See:</i> <a>ancestor</a> smart constructor.
data Ancestor

-- | Creates a value of <a>Ancestor</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>aResourceId</a></li>
--   </ul>
ancestor :: Ancestor

-- | Resource id of the ancestor.
aResourceId :: Lens' Ancestor (Maybe ResourceId)

-- | The normal response of the operation in case of success. If the
--   original method returns no data on success, such as `Delete`, the
--   response is `google.protobuf.Empty`. If the original method is
--   standard `Get`/`Create`/`Update`, the response should be the resource.
--   For other methods, the response should have the type `XxxResponse`,
--   where `Xxx` is the original method name. For example, if the original
--   method name is `TakeSnapshot()`, the inferred response type is
--   `TakeSnapshotResponse`.
--   
--   <i>See:</i> <a>operationResponse</a> smart constructor.
data OperationResponse

-- | Creates a value of <a>OperationResponse</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>orAddtional</a></li>
--   </ul>
operationResponse :: HashMap Text JSONValue -> OperationResponse

-- | Properties of the object. Contains field 'type with type URL.
orAddtional :: Lens' OperationResponse (HashMap Text JSONValue)

-- | The request sent to the UndeleteProject method.
--   
--   <i>See:</i> <a>undeleteProjectRequest</a> smart constructor.
data UndeleteProjectRequest

-- | Creates a value of <a>UndeleteProjectRequest</a> with the minimum
--   fields required to make a request.
undeleteProjectRequest :: UndeleteProjectRequest

-- | Associates `members` with a `role`.
--   
--   <i>See:</i> <a>binding</a> smart constructor.
data Binding

-- | Creates a value of <a>Binding</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>bMembers</a></li>
--   <li><a>bRole</a></li>
--   </ul>
binding :: Binding

-- | Specifies the identities requesting access for a Cloud Platform
--   resource. `members` can have the following values: * `allUsers`: A
--   special identifier that represents anyone who is on the internet; with
--   or without a Google account. * `allAuthenticatedUsers`: A special
--   identifier that represents anyone who is authenticated with a Google
--   account or a service account. * `user:{emailid}`: An email address
--   that represents a specific Google account. For example,
--   `alice'gmail.com` or `joe'example.com`. * `serviceAccount:{emailid}`:
--   An email address that represents a service account. For example,
--   `my-other-app'appspot.gserviceaccount.com`. * `group:{emailid}`: An
--   email address that represents a Google group. For example,
--   `admins'example.com`. * `domain:{domain}`: A Google Apps domain name
--   that represents all the users of that domain. For example,
--   `google.com` or `example.com`.
bMembers :: Lens' Binding [Text]

-- | Role that is assigned to `members`. For example, `roles/viewer`,
--   `roles/editor`, or `roles/owner`. Required
bRole :: Lens' Binding (Maybe Text)


-- | 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.
--   
--   <i>See:</i> <a>Google Cloud Resource Manager API Reference</a> for
--   <tt>cloudresourcemanager.projects.update</tt>.
module Network.Google.Resource.CloudResourceManager.Projects.Update

-- | A resource alias for <tt>cloudresourcemanager.projects.update</tt>
--   method which the <a>ProjectsUpdate</a> request conforms to.
type ProjectsUpdateResource = "v1" :> ("projects" :> (Capture "projectId" Text :> (QueryParam "$.xgafv" Xgafv :> (QueryParam "upload_protocol" Text :> (QueryParam "pp" Bool :> (QueryParam "access_token" Text :> (QueryParam "uploadType" Text :> (QueryParam "bearer_token" Text :> (QueryParam "callback" Text :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] Project :> Put '[JSON] Project)))))))))))

-- | Creates a value of <a>ProjectsUpdate</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>proXgafv</a></li>
--   <li><a>proUploadProtocol</a></li>
--   <li><a>proPp</a></li>
--   <li><a>proAccessToken</a></li>
--   <li><a>proUploadType</a></li>
--   <li><a>proPayload</a></li>
--   <li><a>proBearerToken</a></li>
--   <li><a>proProjectId</a></li>
--   <li><a>proCallback</a></li>
--   </ul>
projectsUpdate :: Project -> Text -> ProjectsUpdate

-- | 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.
--   
--   <i>See:</i> <a>projectsUpdate</a> smart constructor.
data ProjectsUpdate

-- | V1 error format.
proXgafv :: Lens' ProjectsUpdate (Maybe Xgafv)

-- | Upload protocol for media (e.g. "raw", "multipart").
proUploadProtocol :: Lens' ProjectsUpdate (Maybe Text)

-- | Pretty-print response.
proPp :: Lens' ProjectsUpdate Bool

-- | OAuth access token.
proAccessToken :: Lens' ProjectsUpdate (Maybe Text)

-- | Legacy upload protocol for media (e.g. "media", "multipart").
proUploadType :: Lens' ProjectsUpdate (Maybe Text)

-- | Multipart request metadata.
proPayload :: Lens' ProjectsUpdate Project

-- | OAuth bearer token.
proBearerToken :: Lens' ProjectsUpdate (Maybe Text)

-- | The project ID (for example, `my-project-123`). Required.
proProjectId :: Lens' ProjectsUpdate Text

-- | JSONP
proCallback :: Lens' ProjectsUpdate (Maybe Text)
instance GHC.Generics.Generic Network.Google.Resource.CloudResourceManager.Projects.Update.ProjectsUpdate
instance Data.Data.Data Network.Google.Resource.CloudResourceManager.Projects.Update.ProjectsUpdate
instance GHC.Show.Show Network.Google.Resource.CloudResourceManager.Projects.Update.ProjectsUpdate
instance GHC.Classes.Eq Network.Google.Resource.CloudResourceManager.Projects.Update.ProjectsUpdate
instance Network.Google.Types.GoogleRequest Network.Google.Resource.CloudResourceManager.Projects.Update.ProjectsUpdate


-- | 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. After deletion starts,
--   the Project cannot be restored. The caller must have modify
--   permissions for this Project.
--   
--   <i>See:</i> <a>Google Cloud Resource Manager API Reference</a> for
--   <tt>cloudresourcemanager.projects.undelete</tt>.
module Network.Google.Resource.CloudResourceManager.Projects.Undelete

-- | A resource alias for <tt>cloudresourcemanager.projects.undelete</tt>
--   method which the <a>ProjectsUndelete</a> request conforms to.
type ProjectsUndeleteResource = "v1" :> ("projects" :> (CaptureMode "projectId" "undelete" Text :> (QueryParam "$.xgafv" Xgafv :> (QueryParam "upload_protocol" Text :> (QueryParam "pp" Bool :> (QueryParam "access_token" Text :> (QueryParam "uploadType" Text :> (QueryParam "bearer_token" Text :> (QueryParam "callback" Text :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] UndeleteProjectRequest :> Post '[JSON] Empty)))))))))))

-- | Creates a value of <a>ProjectsUndelete</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>puXgafv</a></li>
--   <li><a>puUploadProtocol</a></li>
--   <li><a>puPp</a></li>
--   <li><a>puAccessToken</a></li>
--   <li><a>puUploadType</a></li>
--   <li><a>puPayload</a></li>
--   <li><a>puBearerToken</a></li>
--   <li><a>puProjectId</a></li>
--   <li><a>puCallback</a></li>
--   </ul>
projectsUndelete :: UndeleteProjectRequest -> Text -> ProjectsUndelete

-- | 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. After deletion starts,
--   the Project cannot be restored. The caller must have modify
--   permissions for this Project.
--   
--   <i>See:</i> <a>projectsUndelete</a> smart constructor.
data ProjectsUndelete

-- | V1 error format.
puXgafv :: Lens' ProjectsUndelete (Maybe Xgafv)

-- | Upload protocol for media (e.g. "raw", "multipart").
puUploadProtocol :: Lens' ProjectsUndelete (Maybe Text)

-- | Pretty-print response.
puPp :: Lens' ProjectsUndelete Bool

-- | OAuth access token.
puAccessToken :: Lens' ProjectsUndelete (Maybe Text)

-- | Legacy upload protocol for media (e.g. "media", "multipart").
puUploadType :: Lens' ProjectsUndelete (Maybe Text)

-- | Multipart request metadata.
puPayload :: Lens' ProjectsUndelete UndeleteProjectRequest

-- | OAuth bearer token.
puBearerToken :: Lens' ProjectsUndelete (Maybe Text)

-- | The project ID (for example, `foo-bar-123`). Required.
puProjectId :: Lens' ProjectsUndelete Text

-- | JSONP
puCallback :: Lens' ProjectsUndelete (Maybe Text)
instance GHC.Generics.Generic Network.Google.Resource.CloudResourceManager.Projects.Undelete.ProjectsUndelete
instance Data.Data.Data Network.Google.Resource.CloudResourceManager.Projects.Undelete.ProjectsUndelete
instance GHC.Show.Show Network.Google.Resource.CloudResourceManager.Projects.Undelete.ProjectsUndelete
instance GHC.Classes.Eq Network.Google.Resource.CloudResourceManager.Projects.Undelete.ProjectsUndelete
instance Network.Google.Types.GoogleRequest Network.Google.Resource.CloudResourceManager.Projects.Undelete.ProjectsUndelete


-- | Returns permissions that a caller has on the specified Project.
--   
--   <i>See:</i> <a>Google Cloud Resource Manager API Reference</a> for
--   <tt>cloudresourcemanager.projects.testIamPermissions</tt>.
module Network.Google.Resource.CloudResourceManager.Projects.TestIAMPermissions

-- | A resource alias for
--   <tt>cloudresourcemanager.projects.testIamPermissions</tt> method which
--   the <a>ProjectsTestIAMPermissions</a> request conforms to.
type ProjectsTestIAMPermissionsResource = "v1" :> ("projects" :> (CaptureMode "resource" "testIamPermissions" Text :> (QueryParam "$.xgafv" Xgafv :> (QueryParam "upload_protocol" Text :> (QueryParam "pp" Bool :> (QueryParam "access_token" Text :> (QueryParam "uploadType" Text :> (QueryParam "bearer_token" Text :> (QueryParam "callback" Text :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] TestIAMPermissionsRequest :> Post '[JSON] TestIAMPermissionsResponse)))))))))))

-- | Creates a value of <a>ProjectsTestIAMPermissions</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ptipXgafv</a></li>
--   <li><a>ptipUploadProtocol</a></li>
--   <li><a>ptipPp</a></li>
--   <li><a>ptipAccessToken</a></li>
--   <li><a>ptipUploadType</a></li>
--   <li><a>ptipPayload</a></li>
--   <li><a>ptipBearerToken</a></li>
--   <li><a>ptipResource</a></li>
--   <li><a>ptipCallback</a></li>
--   </ul>
projectsTestIAMPermissions :: TestIAMPermissionsRequest -> Text -> ProjectsTestIAMPermissions

-- | Returns permissions that a caller has on the specified Project.
--   
--   <i>See:</i> <a>projectsTestIAMPermissions</a> smart constructor.
data ProjectsTestIAMPermissions

-- | V1 error format.
ptipXgafv :: Lens' ProjectsTestIAMPermissions (Maybe Xgafv)

-- | Upload protocol for media (e.g. "raw", "multipart").
ptipUploadProtocol :: Lens' ProjectsTestIAMPermissions (Maybe Text)

-- | Pretty-print response.
ptipPp :: Lens' ProjectsTestIAMPermissions Bool

-- | OAuth access token.
ptipAccessToken :: Lens' ProjectsTestIAMPermissions (Maybe Text)

-- | Legacy upload protocol for media (e.g. "media", "multipart").
ptipUploadType :: Lens' ProjectsTestIAMPermissions (Maybe Text)

-- | Multipart request metadata.
ptipPayload :: Lens' ProjectsTestIAMPermissions TestIAMPermissionsRequest

-- | OAuth bearer token.
ptipBearerToken :: Lens' ProjectsTestIAMPermissions (Maybe Text)

-- | REQUIRED: The resource for which the policy detail is being requested.
--   `resource` is usually specified as a path. For example, a Project
--   resource is specified as `projects/{project}`.
ptipResource :: Lens' ProjectsTestIAMPermissions Text

-- | JSONP
ptipCallback :: Lens' ProjectsTestIAMPermissions (Maybe Text)
instance GHC.Generics.Generic Network.Google.Resource.CloudResourceManager.Projects.TestIAMPermissions.ProjectsTestIAMPermissions
instance Data.Data.Data Network.Google.Resource.CloudResourceManager.Projects.TestIAMPermissions.ProjectsTestIAMPermissions
instance GHC.Show.Show Network.Google.Resource.CloudResourceManager.Projects.TestIAMPermissions.ProjectsTestIAMPermissions
instance GHC.Classes.Eq Network.Google.Resource.CloudResourceManager.Projects.TestIAMPermissions.ProjectsTestIAMPermissions
instance Network.Google.Types.GoogleRequest Network.Google.Resource.CloudResourceManager.Projects.TestIAMPermissions.ProjectsTestIAMPermissions


-- | Sets the IAM access control policy for the specified Project. Replaces
--   any existing policy. The following constraints apply when using
--   `setIamPolicy()`: + Project does not support `allUsers` and
--   `allAuthenticatedUsers` as `members` in a `Binding` of a `Policy`. +
--   The owner role can be granted only to `user` and `serviceAccount`. +
--   Service accounts can be made owners of a project directly without any
--   restrictions. However, to be added as an owner, a user must be invited
--   via Cloud Platform console and must accept the invitation. + A user
--   cannot be granted the owner role using `setIamPolicy()`. The user must
--   be granted the owner role using the Cloud Platform Console and must
--   explicitly accept the invitation. + Invitations to grant the owner
--   role cannot be sent using `setIamPolicy()`; they must be sent only
--   using the Cloud Platform Console. + Membership changes that leave the
--   project without any owners that have accepted the Terms of Service
--   (ToS) will be rejected. + There must be at least one owner who has
--   accepted the Terms of Service (ToS) agreement in the policy. Calling
--   `setIamPolicy()` to to remove the last ToS-accepted owner from the
--   policy will fail. This restriction also applies to legacy projects
--   that no longer have owners who have accepted the ToS. Edits to IAM
--   policies will be rejected until the lack of a ToS-accepting owner is
--   rectified. + Calling this method requires enabling the App Engine
--   Admin API. Note: Removing service accounts from policies or changing
--   their roles can render services completely inoperable. It is important
--   to understand how the service account is being used before removing or
--   updating its roles.
--   
--   <i>See:</i> <a>Google Cloud Resource Manager API Reference</a> for
--   <tt>cloudresourcemanager.projects.setIamPolicy</tt>.
module Network.Google.Resource.CloudResourceManager.Projects.SetIAMPolicy

-- | A resource alias for
--   <tt>cloudresourcemanager.projects.setIamPolicy</tt> method which the
--   <a>ProjectsSetIAMPolicy</a> request conforms to.
type ProjectsSetIAMPolicyResource = "v1" :> ("projects" :> (CaptureMode "resource" "setIamPolicy" Text :> (QueryParam "$.xgafv" Xgafv :> (QueryParam "upload_protocol" Text :> (QueryParam "pp" Bool :> (QueryParam "access_token" Text :> (QueryParam "uploadType" Text :> (QueryParam "bearer_token" Text :> (QueryParam "callback" Text :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] SetIAMPolicyRequest :> Post '[JSON] Policy)))))))))))

-- | Creates a value of <a>ProjectsSetIAMPolicy</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>psipXgafv</a></li>
--   <li><a>psipUploadProtocol</a></li>
--   <li><a>psipPp</a></li>
--   <li><a>psipAccessToken</a></li>
--   <li><a>psipUploadType</a></li>
--   <li><a>psipPayload</a></li>
--   <li><a>psipBearerToken</a></li>
--   <li><a>psipResource</a></li>
--   <li><a>psipCallback</a></li>
--   </ul>
projectsSetIAMPolicy :: SetIAMPolicyRequest -> Text -> ProjectsSetIAMPolicy

-- | Sets the IAM access control policy for the specified Project. Replaces
--   any existing policy. The following constraints apply when using
--   `setIamPolicy()`: + Project does not support `allUsers` and
--   `allAuthenticatedUsers` as `members` in a `Binding` of a `Policy`. +
--   The owner role can be granted only to `user` and `serviceAccount`. +
--   Service accounts can be made owners of a project directly without any
--   restrictions. However, to be added as an owner, a user must be invited
--   via Cloud Platform console and must accept the invitation. + A user
--   cannot be granted the owner role using `setIamPolicy()`. The user must
--   be granted the owner role using the Cloud Platform Console and must
--   explicitly accept the invitation. + Invitations to grant the owner
--   role cannot be sent using `setIamPolicy()`; they must be sent only
--   using the Cloud Platform Console. + Membership changes that leave the
--   project without any owners that have accepted the Terms of Service
--   (ToS) will be rejected. + There must be at least one owner who has
--   accepted the Terms of Service (ToS) agreement in the policy. Calling
--   `setIamPolicy()` to to remove the last ToS-accepted owner from the
--   policy will fail. This restriction also applies to legacy projects
--   that no longer have owners who have accepted the ToS. Edits to IAM
--   policies will be rejected until the lack of a ToS-accepting owner is
--   rectified. + Calling this method requires enabling the App Engine
--   Admin API. Note: Removing service accounts from policies or changing
--   their roles can render services completely inoperable. It is important
--   to understand how the service account is being used before removing or
--   updating its roles.
--   
--   <i>See:</i> <a>projectsSetIAMPolicy</a> smart constructor.
data ProjectsSetIAMPolicy

-- | V1 error format.
psipXgafv :: Lens' ProjectsSetIAMPolicy (Maybe Xgafv)

-- | Upload protocol for media (e.g. "raw", "multipart").
psipUploadProtocol :: Lens' ProjectsSetIAMPolicy (Maybe Text)

-- | Pretty-print response.
psipPp :: Lens' ProjectsSetIAMPolicy Bool

-- | OAuth access token.
psipAccessToken :: Lens' ProjectsSetIAMPolicy (Maybe Text)

-- | Legacy upload protocol for media (e.g. "media", "multipart").
psipUploadType :: Lens' ProjectsSetIAMPolicy (Maybe Text)

-- | Multipart request metadata.
psipPayload :: Lens' ProjectsSetIAMPolicy SetIAMPolicyRequest

-- | OAuth bearer token.
psipBearerToken :: Lens' ProjectsSetIAMPolicy (Maybe Text)

-- | REQUIRED: The resource for which the policy is being specified.
--   `resource` is usually specified as a path. For example, a Project
--   resource is specified as `projects/{project}`.
psipResource :: Lens' ProjectsSetIAMPolicy Text

-- | JSONP
psipCallback :: Lens' ProjectsSetIAMPolicy (Maybe Text)
instance GHC.Generics.Generic Network.Google.Resource.CloudResourceManager.Projects.SetIAMPolicy.ProjectsSetIAMPolicy
instance Data.Data.Data Network.Google.Resource.CloudResourceManager.Projects.SetIAMPolicy.ProjectsSetIAMPolicy
instance GHC.Show.Show Network.Google.Resource.CloudResourceManager.Projects.SetIAMPolicy.ProjectsSetIAMPolicy
instance GHC.Classes.Eq Network.Google.Resource.CloudResourceManager.Projects.SetIAMPolicy.ProjectsSetIAMPolicy
instance Network.Google.Types.GoogleRequest Network.Google.Resource.CloudResourceManager.Projects.SetIAMPolicy.ProjectsSetIAMPolicy


-- | 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.
--   
--   <i>See:</i> <a>Google Cloud Resource Manager API Reference</a> for
--   <tt>cloudresourcemanager.projects.list</tt>.
module Network.Google.Resource.CloudResourceManager.Projects.List

-- | A resource alias for <tt>cloudresourcemanager.projects.list</tt>
--   method which the <a>ProjectsList</a> request conforms to.
type ProjectsListResource = "v1" :> ("projects" :> (QueryParam "$.xgafv" Xgafv :> (QueryParam "upload_protocol" Text :> (QueryParam "pp" Bool :> (QueryParam "access_token" Text :> (QueryParam "uploadType" Text :> (QueryParam "bearer_token" Text :> (QueryParam "filter" Text :> (QueryParam "pageToken" Text :> (QueryParam "pageSize" (Textual Int32) :> (QueryParam "callback" Text :> (QueryParam "alt" AltJSON :> Get '[JSON] ListProjectsResponse))))))))))))

-- | Creates a value of <a>ProjectsList</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>plXgafv</a></li>
--   <li><a>plUploadProtocol</a></li>
--   <li><a>plPp</a></li>
--   <li><a>plAccessToken</a></li>
--   <li><a>plUploadType</a></li>
--   <li><a>plBearerToken</a></li>
--   <li><a>plFilter</a></li>
--   <li><a>plPageToken</a></li>
--   <li><a>plPageSize</a></li>
--   <li><a>plCallback</a></li>
--   </ul>
projectsList :: ProjectsList

-- | 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.
--   
--   <i>See:</i> <a>projectsList</a> smart constructor.
data ProjectsList

-- | V1 error format.
plXgafv :: Lens' ProjectsList (Maybe Xgafv)

-- | Upload protocol for media (e.g. "raw", "multipart").
plUploadProtocol :: Lens' ProjectsList (Maybe Text)

-- | Pretty-print response.
plPp :: Lens' ProjectsList Bool

-- | OAuth access token.
plAccessToken :: Lens' ProjectsList (Maybe Text)

-- | Legacy upload protocol for media (e.g. "media", "multipart").
plUploadType :: Lens' ProjectsList (Maybe Text)

-- | OAuth bearer token.
plBearerToken :: Lens' ProjectsList (Maybe Text)

-- | 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.
plFilter :: Lens' ProjectsList (Maybe Text)

-- | A pagination token returned from a previous call to ListProjects that
--   indicates from where listing should continue. Optional.
plPageToken :: Lens' ProjectsList (Maybe Text)

-- | 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. Optional.
plPageSize :: Lens' ProjectsList (Maybe Int32)

-- | JSONP
plCallback :: Lens' ProjectsList (Maybe Text)
instance GHC.Generics.Generic Network.Google.Resource.CloudResourceManager.Projects.List.ProjectsList
instance Data.Data.Data Network.Google.Resource.CloudResourceManager.Projects.List.ProjectsList
instance GHC.Show.Show Network.Google.Resource.CloudResourceManager.Projects.List.ProjectsList
instance GHC.Classes.Eq Network.Google.Resource.CloudResourceManager.Projects.List.ProjectsList
instance Network.Google.Types.GoogleRequest Network.Google.Resource.CloudResourceManager.Projects.List.ProjectsList


-- | Returns the IAM access control policy for the specified Project.
--   Permission is denied if the policy or the resource does not exist.
--   
--   <i>See:</i> <a>Google Cloud Resource Manager API Reference</a> for
--   <tt>cloudresourcemanager.projects.getIamPolicy</tt>.
module Network.Google.Resource.CloudResourceManager.Projects.GetIAMPolicy

-- | A resource alias for
--   <tt>cloudresourcemanager.projects.getIamPolicy</tt> method which the
--   <a>ProjectsGetIAMPolicy</a> request conforms to.
type ProjectsGetIAMPolicyResource = "v1" :> ("projects" :> (CaptureMode "resource" "getIamPolicy" Text :> (QueryParam "$.xgafv" Xgafv :> (QueryParam "upload_protocol" Text :> (QueryParam "pp" Bool :> (QueryParam "access_token" Text :> (QueryParam "uploadType" Text :> (QueryParam "bearer_token" Text :> (QueryParam "callback" Text :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] GetIAMPolicyRequest :> Post '[JSON] Policy)))))))))))

-- | Creates a value of <a>ProjectsGetIAMPolicy</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>pgipXgafv</a></li>
--   <li><a>pgipUploadProtocol</a></li>
--   <li><a>pgipPp</a></li>
--   <li><a>pgipAccessToken</a></li>
--   <li><a>pgipUploadType</a></li>
--   <li><a>pgipPayload</a></li>
--   <li><a>pgipBearerToken</a></li>
--   <li><a>pgipResource</a></li>
--   <li><a>pgipCallback</a></li>
--   </ul>
projectsGetIAMPolicy :: GetIAMPolicyRequest -> Text -> ProjectsGetIAMPolicy

-- | Returns the IAM access control policy for the specified Project.
--   Permission is denied if the policy or the resource does not exist.
--   
--   <i>See:</i> <a>projectsGetIAMPolicy</a> smart constructor.
data ProjectsGetIAMPolicy

-- | V1 error format.
pgipXgafv :: Lens' ProjectsGetIAMPolicy (Maybe Xgafv)

-- | Upload protocol for media (e.g. "raw", "multipart").
pgipUploadProtocol :: Lens' ProjectsGetIAMPolicy (Maybe Text)

-- | Pretty-print response.
pgipPp :: Lens' ProjectsGetIAMPolicy Bool

-- | OAuth access token.
pgipAccessToken :: Lens' ProjectsGetIAMPolicy (Maybe Text)

-- | Legacy upload protocol for media (e.g. "media", "multipart").
pgipUploadType :: Lens' ProjectsGetIAMPolicy (Maybe Text)

-- | Multipart request metadata.
pgipPayload :: Lens' ProjectsGetIAMPolicy GetIAMPolicyRequest

-- | OAuth bearer token.
pgipBearerToken :: Lens' ProjectsGetIAMPolicy (Maybe Text)

-- | REQUIRED: The resource for which the policy is being requested.
--   `resource` is usually specified as a path. For example, a Project
--   resource is specified as `projects/{project}`.
pgipResource :: Lens' ProjectsGetIAMPolicy Text

-- | JSONP
pgipCallback :: Lens' ProjectsGetIAMPolicy (Maybe Text)
instance GHC.Generics.Generic Network.Google.Resource.CloudResourceManager.Projects.GetIAMPolicy.ProjectsGetIAMPolicy
instance Data.Data.Data Network.Google.Resource.CloudResourceManager.Projects.GetIAMPolicy.ProjectsGetIAMPolicy
instance GHC.Show.Show Network.Google.Resource.CloudResourceManager.Projects.GetIAMPolicy.ProjectsGetIAMPolicy
instance GHC.Classes.Eq Network.Google.Resource.CloudResourceManager.Projects.GetIAMPolicy.ProjectsGetIAMPolicy
instance Network.Google.Types.GoogleRequest Network.Google.Resource.CloudResourceManager.Projects.GetIAMPolicy.ProjectsGetIAMPolicy


-- | Gets a list of ancestors in the resource hierarchy for the Project
--   identified by the specified `project_id` (for example,
--   `my-project-123`). The caller must have read permissions for this
--   Project.
--   
--   <i>See:</i> <a>Google Cloud Resource Manager API Reference</a> for
--   <tt>cloudresourcemanager.projects.getAncestry</tt>.
module Network.Google.Resource.CloudResourceManager.Projects.GetAncestry

-- | A resource alias for
--   <tt>cloudresourcemanager.projects.getAncestry</tt> method which the
--   <a>ProjectsGetAncestry</a> request conforms to.
type ProjectsGetAncestryResource = "v1" :> ("projects" :> (CaptureMode "projectId" "getAncestry" Text :> (QueryParam "$.xgafv" Xgafv :> (QueryParam "upload_protocol" Text :> (QueryParam "pp" Bool :> (QueryParam "access_token" Text :> (QueryParam "uploadType" Text :> (QueryParam "bearer_token" Text :> (QueryParam "callback" Text :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] GetAncestryRequest :> Post '[JSON] GetAncestryResponse)))))))))))

-- | Creates a value of <a>ProjectsGetAncestry</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>pgaXgafv</a></li>
--   <li><a>pgaUploadProtocol</a></li>
--   <li><a>pgaPp</a></li>
--   <li><a>pgaAccessToken</a></li>
--   <li><a>pgaUploadType</a></li>
--   <li><a>pgaPayload</a></li>
--   <li><a>pgaBearerToken</a></li>
--   <li><a>pgaProjectId</a></li>
--   <li><a>pgaCallback</a></li>
--   </ul>
projectsGetAncestry :: GetAncestryRequest -> Text -> ProjectsGetAncestry

-- | Gets a list of ancestors in the resource hierarchy for the Project
--   identified by the specified `project_id` (for example,
--   `my-project-123`). The caller must have read permissions for this
--   Project.
--   
--   <i>See:</i> <a>projectsGetAncestry</a> smart constructor.
data ProjectsGetAncestry

-- | V1 error format.
pgaXgafv :: Lens' ProjectsGetAncestry (Maybe Xgafv)

-- | Upload protocol for media (e.g. "raw", "multipart").
pgaUploadProtocol :: Lens' ProjectsGetAncestry (Maybe Text)

-- | Pretty-print response.
pgaPp :: Lens' ProjectsGetAncestry Bool

-- | OAuth access token.
pgaAccessToken :: Lens' ProjectsGetAncestry (Maybe Text)

-- | Legacy upload protocol for media (e.g. "media", "multipart").
pgaUploadType :: Lens' ProjectsGetAncestry (Maybe Text)

-- | Multipart request metadata.
pgaPayload :: Lens' ProjectsGetAncestry GetAncestryRequest

-- | OAuth bearer token.
pgaBearerToken :: Lens' ProjectsGetAncestry (Maybe Text)

-- | The Project ID (for example, `my-project-123`). Required.
pgaProjectId :: Lens' ProjectsGetAncestry Text

-- | JSONP
pgaCallback :: Lens' ProjectsGetAncestry (Maybe Text)
instance GHC.Generics.Generic Network.Google.Resource.CloudResourceManager.Projects.GetAncestry.ProjectsGetAncestry
instance Data.Data.Data Network.Google.Resource.CloudResourceManager.Projects.GetAncestry.ProjectsGetAncestry
instance GHC.Show.Show Network.Google.Resource.CloudResourceManager.Projects.GetAncestry.ProjectsGetAncestry
instance GHC.Classes.Eq Network.Google.Resource.CloudResourceManager.Projects.GetAncestry.ProjectsGetAncestry
instance Network.Google.Types.GoogleRequest Network.Google.Resource.CloudResourceManager.Projects.GetAncestry.ProjectsGetAncestry


-- | Retrieves the Project identified by the specified `project_id` (for
--   example, `my-project-123`). The caller must have read permissions for
--   this Project.
--   
--   <i>See:</i> <a>Google Cloud Resource Manager API Reference</a> for
--   <tt>cloudresourcemanager.projects.get</tt>.
module Network.Google.Resource.CloudResourceManager.Projects.Get

-- | A resource alias for <tt>cloudresourcemanager.projects.get</tt> method
--   which the <a>ProjectsGet</a> request conforms to.
type ProjectsGetResource = "v1" :> ("projects" :> (Capture "projectId" Text :> (QueryParam "$.xgafv" Xgafv :> (QueryParam "upload_protocol" Text :> (QueryParam "pp" Bool :> (QueryParam "access_token" Text :> (QueryParam "uploadType" Text :> (QueryParam "bearer_token" Text :> (QueryParam "callback" Text :> (QueryParam "alt" AltJSON :> Get '[JSON] Project))))))))))

-- | Creates a value of <a>ProjectsGet</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>pgXgafv</a></li>
--   <li><a>pgUploadProtocol</a></li>
--   <li><a>pgPp</a></li>
--   <li><a>pgAccessToken</a></li>
--   <li><a>pgUploadType</a></li>
--   <li><a>pgBearerToken</a></li>
--   <li><a>pgProjectId</a></li>
--   <li><a>pgCallback</a></li>
--   </ul>
projectsGet :: Text -> ProjectsGet

-- | Retrieves the Project identified by the specified `project_id` (for
--   example, `my-project-123`). The caller must have read permissions for
--   this Project.
--   
--   <i>See:</i> <a>projectsGet</a> smart constructor.
data ProjectsGet

-- | V1 error format.
pgXgafv :: Lens' ProjectsGet (Maybe Xgafv)

-- | Upload protocol for media (e.g. "raw", "multipart").
pgUploadProtocol :: Lens' ProjectsGet (Maybe Text)

-- | Pretty-print response.
pgPp :: Lens' ProjectsGet Bool

-- | OAuth access token.
pgAccessToken :: Lens' ProjectsGet (Maybe Text)

-- | Legacy upload protocol for media (e.g. "media", "multipart").
pgUploadType :: Lens' ProjectsGet (Maybe Text)

-- | OAuth bearer token.
pgBearerToken :: Lens' ProjectsGet (Maybe Text)

-- | The Project ID (for example, `my-project-123`). Required.
pgProjectId :: Lens' ProjectsGet Text

-- | JSONP
pgCallback :: Lens' ProjectsGet (Maybe Text)
instance GHC.Generics.Generic Network.Google.Resource.CloudResourceManager.Projects.Get.ProjectsGet
instance Data.Data.Data Network.Google.Resource.CloudResourceManager.Projects.Get.ProjectsGet
instance GHC.Show.Show Network.Google.Resource.CloudResourceManager.Projects.Get.ProjectsGet
instance GHC.Classes.Eq Network.Google.Resource.CloudResourceManager.Projects.Get.ProjectsGet
instance Network.Google.Types.GoogleRequest Network.Google.Resource.CloudResourceManager.Projects.Get.ProjectsGet


-- | 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. This method changes the Project's lifecycle
--   state from ACTIVE to DELETE_REQUESTED. The deletion starts at an
--   unspecified time, at which point the Project is no longer accessible.
--   Until the deletion completes, you can check the lifecycle state
--   checked by retrieving the Project with GetProject, and the Project
--   remains visible to ListProjects. However, you cannot update the
--   project. After the deletion completes, the Project is not retrievable
--   by the GetProject and ListProjects methods. The caller must have
--   modify permissions for this Project.
--   
--   <i>See:</i> <a>Google Cloud Resource Manager API Reference</a> for
--   <tt>cloudresourcemanager.projects.delete</tt>.
module Network.Google.Resource.CloudResourceManager.Projects.Delete

-- | A resource alias for <tt>cloudresourcemanager.projects.delete</tt>
--   method which the <a>ProjectsDelete</a> request conforms to.
type ProjectsDeleteResource = "v1" :> ("projects" :> (Capture "projectId" Text :> (QueryParam "$.xgafv" Xgafv :> (QueryParam "upload_protocol" Text :> (QueryParam "pp" Bool :> (QueryParam "access_token" Text :> (QueryParam "uploadType" Text :> (QueryParam "bearer_token" Text :> (QueryParam "callback" Text :> (QueryParam "alt" AltJSON :> Delete '[JSON] Empty))))))))))

-- | Creates a value of <a>ProjectsDelete</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>pdXgafv</a></li>
--   <li><a>pdUploadProtocol</a></li>
--   <li><a>pdPp</a></li>
--   <li><a>pdAccessToken</a></li>
--   <li><a>pdUploadType</a></li>
--   <li><a>pdBearerToken</a></li>
--   <li><a>pdProjectId</a></li>
--   <li><a>pdCallback</a></li>
--   </ul>
projectsDelete :: Text -> ProjectsDelete

-- | 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. This method changes the Project's lifecycle
--   state from ACTIVE to DELETE_REQUESTED. The deletion starts at an
--   unspecified time, at which point the Project is no longer accessible.
--   Until the deletion completes, you can check the lifecycle state
--   checked by retrieving the Project with GetProject, and the Project
--   remains visible to ListProjects. However, you cannot update the
--   project. After the deletion completes, the Project is not retrievable
--   by the GetProject and ListProjects methods. The caller must have
--   modify permissions for this Project.
--   
--   <i>See:</i> <a>projectsDelete</a> smart constructor.
data ProjectsDelete

-- | V1 error format.
pdXgafv :: Lens' ProjectsDelete (Maybe Xgafv)

-- | Upload protocol for media (e.g. "raw", "multipart").
pdUploadProtocol :: Lens' ProjectsDelete (Maybe Text)

-- | Pretty-print response.
pdPp :: Lens' ProjectsDelete Bool

-- | OAuth access token.
pdAccessToken :: Lens' ProjectsDelete (Maybe Text)

-- | Legacy upload protocol for media (e.g. "media", "multipart").
pdUploadType :: Lens' ProjectsDelete (Maybe Text)

-- | OAuth bearer token.
pdBearerToken :: Lens' ProjectsDelete (Maybe Text)

-- | The Project ID (for example, `foo-bar-123`). Required.
pdProjectId :: Lens' ProjectsDelete Text

-- | JSONP
pdCallback :: Lens' ProjectsDelete (Maybe Text)
instance GHC.Generics.Generic Network.Google.Resource.CloudResourceManager.Projects.Delete.ProjectsDelete
instance Data.Data.Data Network.Google.Resource.CloudResourceManager.Projects.Delete.ProjectsDelete
instance GHC.Show.Show Network.Google.Resource.CloudResourceManager.Projects.Delete.ProjectsDelete
instance GHC.Classes.Eq Network.Google.Resource.CloudResourceManager.Projects.Delete.ProjectsDelete
instance Network.Google.Types.GoogleRequest Network.Google.Resource.CloudResourceManager.Projects.Delete.ProjectsDelete


-- | Request that a new Project be created. The result is an Operation
--   which can be used to track the creation process. It is automatically
--   deleted after a few hours, so there is no need to call
--   DeleteOperation. Our SLO permits Project creation to take up to 30
--   seconds at the 90th percentile. As of 2016-08-29, we are observing 6
--   seconds 50th percentile latency. 95th percentile latency is around 11
--   seconds. We recommend polling at the 5th second with an exponential
--   backoff.
--   
--   <i>See:</i> <a>Google Cloud Resource Manager API Reference</a> for
--   <tt>cloudresourcemanager.projects.create</tt>.
module Network.Google.Resource.CloudResourceManager.Projects.Create

-- | A resource alias for <tt>cloudresourcemanager.projects.create</tt>
--   method which the <a>ProjectsCreate</a> request conforms to.
type ProjectsCreateResource = "v1" :> ("projects" :> (QueryParam "$.xgafv" Xgafv :> (QueryParam "upload_protocol" Text :> (QueryParam "pp" Bool :> (QueryParam "access_token" Text :> (QueryParam "uploadType" Text :> (QueryParam "bearer_token" Text :> (QueryParam "callback" Text :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] Project :> Post '[JSON] Operation))))))))))

-- | Creates a value of <a>ProjectsCreate</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>pcXgafv</a></li>
--   <li><a>pcUploadProtocol</a></li>
--   <li><a>pcPp</a></li>
--   <li><a>pcAccessToken</a></li>
--   <li><a>pcUploadType</a></li>
--   <li><a>pcPayload</a></li>
--   <li><a>pcBearerToken</a></li>
--   <li><a>pcCallback</a></li>
--   </ul>
projectsCreate :: Project -> ProjectsCreate

-- | Request that a new Project be created. The result is an Operation
--   which can be used to track the creation process. It is automatically
--   deleted after a few hours, so there is no need to call
--   DeleteOperation. Our SLO permits Project creation to take up to 30
--   seconds at the 90th percentile. As of 2016-08-29, we are observing 6
--   seconds 50th percentile latency. 95th percentile latency is around 11
--   seconds. We recommend polling at the 5th second with an exponential
--   backoff.
--   
--   <i>See:</i> <a>projectsCreate</a> smart constructor.
data ProjectsCreate

-- | V1 error format.
pcXgafv :: Lens' ProjectsCreate (Maybe Xgafv)

-- | Upload protocol for media (e.g. "raw", "multipart").
pcUploadProtocol :: Lens' ProjectsCreate (Maybe Text)

-- | Pretty-print response.
pcPp :: Lens' ProjectsCreate Bool

-- | OAuth access token.
pcAccessToken :: Lens' ProjectsCreate (Maybe Text)

-- | Legacy upload protocol for media (e.g. "media", "multipart").
pcUploadType :: Lens' ProjectsCreate (Maybe Text)

-- | Multipart request metadata.
pcPayload :: Lens' ProjectsCreate Project

-- | OAuth bearer token.
pcBearerToken :: Lens' ProjectsCreate (Maybe Text)

-- | JSONP
pcCallback :: Lens' ProjectsCreate (Maybe Text)
instance GHC.Generics.Generic Network.Google.Resource.CloudResourceManager.Projects.Create.ProjectsCreate
instance Data.Data.Data Network.Google.Resource.CloudResourceManager.Projects.Create.ProjectsCreate
instance GHC.Show.Show Network.Google.Resource.CloudResourceManager.Projects.Create.ProjectsCreate
instance GHC.Classes.Eq Network.Google.Resource.CloudResourceManager.Projects.Create.ProjectsCreate
instance Network.Google.Types.GoogleRequest Network.Google.Resource.CloudResourceManager.Projects.Create.ProjectsCreate


-- | Returns permissions that a caller has on the specified Organization.
--   The `resource` field should be the organization's resource name, e.g.
--   "organizations/123".
--   
--   <i>See:</i> <a>Google Cloud Resource Manager API Reference</a> for
--   <tt>cloudresourcemanager.organizations.testIamPermissions</tt>.
module Network.Google.Resource.CloudResourceManager.Organizations.TestIAMPermissions

-- | A resource alias for
--   <tt>cloudresourcemanager.organizations.testIamPermissions</tt> method
--   which the <a>OrganizationsTestIAMPermissions</a> request conforms to.
type OrganizationsTestIAMPermissionsResource = "v1" :> (CaptureMode "resource" "testIamPermissions" Text :> (QueryParam "$.xgafv" Xgafv :> (QueryParam "upload_protocol" Text :> (QueryParam "pp" Bool :> (QueryParam "access_token" Text :> (QueryParam "uploadType" Text :> (QueryParam "bearer_token" Text :> (QueryParam "callback" Text :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] TestIAMPermissionsRequest :> Post '[JSON] TestIAMPermissionsResponse))))))))))

-- | Creates a value of <a>OrganizationsTestIAMPermissions</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>otipXgafv</a></li>
--   <li><a>otipUploadProtocol</a></li>
--   <li><a>otipPp</a></li>
--   <li><a>otipAccessToken</a></li>
--   <li><a>otipUploadType</a></li>
--   <li><a>otipPayload</a></li>
--   <li><a>otipBearerToken</a></li>
--   <li><a>otipResource</a></li>
--   <li><a>otipCallback</a></li>
--   </ul>
organizationsTestIAMPermissions :: TestIAMPermissionsRequest -> Text -> OrganizationsTestIAMPermissions

-- | Returns permissions that a caller has on the specified Organization.
--   The `resource` field should be the organization's resource name, e.g.
--   "organizations/123".
--   
--   <i>See:</i> <a>organizationsTestIAMPermissions</a> smart constructor.
data OrganizationsTestIAMPermissions

-- | V1 error format.
otipXgafv :: Lens' OrganizationsTestIAMPermissions (Maybe Xgafv)

-- | Upload protocol for media (e.g. "raw", "multipart").
otipUploadProtocol :: Lens' OrganizationsTestIAMPermissions (Maybe Text)

-- | Pretty-print response.
otipPp :: Lens' OrganizationsTestIAMPermissions Bool

-- | OAuth access token.
otipAccessToken :: Lens' OrganizationsTestIAMPermissions (Maybe Text)

-- | Legacy upload protocol for media (e.g. "media", "multipart").
otipUploadType :: Lens' OrganizationsTestIAMPermissions (Maybe Text)

-- | Multipart request metadata.
otipPayload :: Lens' OrganizationsTestIAMPermissions TestIAMPermissionsRequest

-- | OAuth bearer token.
otipBearerToken :: Lens' OrganizationsTestIAMPermissions (Maybe Text)

-- | REQUIRED: The resource for which the policy detail is being requested.
--   `resource` is usually specified as a path. For example, a Project
--   resource is specified as `projects/{project}`.
otipResource :: Lens' OrganizationsTestIAMPermissions Text

-- | JSONP
otipCallback :: Lens' OrganizationsTestIAMPermissions (Maybe Text)
instance GHC.Generics.Generic Network.Google.Resource.CloudResourceManager.Organizations.TestIAMPermissions.OrganizationsTestIAMPermissions
instance Data.Data.Data Network.Google.Resource.CloudResourceManager.Organizations.TestIAMPermissions.OrganizationsTestIAMPermissions
instance GHC.Show.Show Network.Google.Resource.CloudResourceManager.Organizations.TestIAMPermissions.OrganizationsTestIAMPermissions
instance GHC.Classes.Eq Network.Google.Resource.CloudResourceManager.Organizations.TestIAMPermissions.OrganizationsTestIAMPermissions
instance Network.Google.Types.GoogleRequest Network.Google.Resource.CloudResourceManager.Organizations.TestIAMPermissions.OrganizationsTestIAMPermissions


-- | Sets the access control policy on an Organization resource. Replaces
--   any existing policy. The `resource` field should be the organization's
--   resource name, e.g. "organizations/123".
--   
--   <i>See:</i> <a>Google Cloud Resource Manager API Reference</a> for
--   <tt>cloudresourcemanager.organizations.setIamPolicy</tt>.
module Network.Google.Resource.CloudResourceManager.Organizations.SetIAMPolicy

-- | A resource alias for
--   <tt>cloudresourcemanager.organizations.setIamPolicy</tt> method which
--   the <a>OrganizationsSetIAMPolicy</a> request conforms to.
type OrganizationsSetIAMPolicyResource = "v1" :> (CaptureMode "resource" "setIamPolicy" Text :> (QueryParam "$.xgafv" Xgafv :> (QueryParam "upload_protocol" Text :> (QueryParam "pp" Bool :> (QueryParam "access_token" Text :> (QueryParam "uploadType" Text :> (QueryParam "bearer_token" Text :> (QueryParam "callback" Text :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] SetIAMPolicyRequest :> Post '[JSON] Policy))))))))))

-- | Creates a value of <a>OrganizationsSetIAMPolicy</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>osipXgafv</a></li>
--   <li><a>osipUploadProtocol</a></li>
--   <li><a>osipPp</a></li>
--   <li><a>osipAccessToken</a></li>
--   <li><a>osipUploadType</a></li>
--   <li><a>osipPayload</a></li>
--   <li><a>osipBearerToken</a></li>
--   <li><a>osipResource</a></li>
--   <li><a>osipCallback</a></li>
--   </ul>
organizationsSetIAMPolicy :: SetIAMPolicyRequest -> Text -> OrganizationsSetIAMPolicy

-- | Sets the access control policy on an Organization resource. Replaces
--   any existing policy. The `resource` field should be the organization's
--   resource name, e.g. "organizations/123".
--   
--   <i>See:</i> <a>organizationsSetIAMPolicy</a> smart constructor.
data OrganizationsSetIAMPolicy

-- | V1 error format.
osipXgafv :: Lens' OrganizationsSetIAMPolicy (Maybe Xgafv)

-- | Upload protocol for media (e.g. "raw", "multipart").
osipUploadProtocol :: Lens' OrganizationsSetIAMPolicy (Maybe Text)

-- | Pretty-print response.
osipPp :: Lens' OrganizationsSetIAMPolicy Bool

-- | OAuth access token.
osipAccessToken :: Lens' OrganizationsSetIAMPolicy (Maybe Text)

-- | Legacy upload protocol for media (e.g. "media", "multipart").
osipUploadType :: Lens' OrganizationsSetIAMPolicy (Maybe Text)

-- | Multipart request metadata.
osipPayload :: Lens' OrganizationsSetIAMPolicy SetIAMPolicyRequest

-- | OAuth bearer token.
osipBearerToken :: Lens' OrganizationsSetIAMPolicy (Maybe Text)

-- | REQUIRED: The resource for which the policy is being specified.
--   `resource` is usually specified as a path. For example, a Project
--   resource is specified as `projects/{project}`.
osipResource :: Lens' OrganizationsSetIAMPolicy Text

-- | JSONP
osipCallback :: Lens' OrganizationsSetIAMPolicy (Maybe Text)
instance GHC.Generics.Generic Network.Google.Resource.CloudResourceManager.Organizations.SetIAMPolicy.OrganizationsSetIAMPolicy
instance Data.Data.Data Network.Google.Resource.CloudResourceManager.Organizations.SetIAMPolicy.OrganizationsSetIAMPolicy
instance GHC.Show.Show Network.Google.Resource.CloudResourceManager.Organizations.SetIAMPolicy.OrganizationsSetIAMPolicy
instance GHC.Classes.Eq Network.Google.Resource.CloudResourceManager.Organizations.SetIAMPolicy.OrganizationsSetIAMPolicy
instance Network.Google.Types.GoogleRequest Network.Google.Resource.CloudResourceManager.Organizations.SetIAMPolicy.OrganizationsSetIAMPolicy


-- | Searches Organization resources that are visible to the user and
--   satisfy the specified filter. This method returns Organizations in an
--   unspecified order. New Organizations do not necessarily appear at the
--   end of the results.
--   
--   <i>See:</i> <a>Google Cloud Resource Manager API Reference</a> for
--   <tt>cloudresourcemanager.organizations.search</tt>.
module Network.Google.Resource.CloudResourceManager.Organizations.Search

-- | A resource alias for
--   <tt>cloudresourcemanager.organizations.search</tt> method which the
--   <a>OrganizationsSearch</a> request conforms to.
type OrganizationsSearchResource = "v1" :> ("organizations:search" :> (QueryParam "$.xgafv" Xgafv :> (QueryParam "upload_protocol" Text :> (QueryParam "pp" Bool :> (QueryParam "access_token" Text :> (QueryParam "uploadType" Text :> (QueryParam "bearer_token" Text :> (QueryParam "callback" Text :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] SearchOrganizationsRequest :> Post '[JSON] SearchOrganizationsResponse))))))))))

-- | Creates a value of <a>OrganizationsSearch</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>osXgafv</a></li>
--   <li><a>osUploadProtocol</a></li>
--   <li><a>osPp</a></li>
--   <li><a>osAccessToken</a></li>
--   <li><a>osUploadType</a></li>
--   <li><a>osPayload</a></li>
--   <li><a>osBearerToken</a></li>
--   <li><a>osCallback</a></li>
--   </ul>
organizationsSearch :: SearchOrganizationsRequest -> OrganizationsSearch

-- | Searches Organization resources that are visible to the user and
--   satisfy the specified filter. This method returns Organizations in an
--   unspecified order. New Organizations do not necessarily appear at the
--   end of the results.
--   
--   <i>See:</i> <a>organizationsSearch</a> smart constructor.
data OrganizationsSearch

-- | V1 error format.
osXgafv :: Lens' OrganizationsSearch (Maybe Xgafv)

-- | Upload protocol for media (e.g. "raw", "multipart").
osUploadProtocol :: Lens' OrganizationsSearch (Maybe Text)

-- | Pretty-print response.
osPp :: Lens' OrganizationsSearch Bool

-- | OAuth access token.
osAccessToken :: Lens' OrganizationsSearch (Maybe Text)

-- | Legacy upload protocol for media (e.g. "media", "multipart").
osUploadType :: Lens' OrganizationsSearch (Maybe Text)

-- | Multipart request metadata.
osPayload :: Lens' OrganizationsSearch SearchOrganizationsRequest

-- | OAuth bearer token.
osBearerToken :: Lens' OrganizationsSearch (Maybe Text)

-- | JSONP
osCallback :: Lens' OrganizationsSearch (Maybe Text)
instance GHC.Generics.Generic Network.Google.Resource.CloudResourceManager.Organizations.Search.OrganizationsSearch
instance Data.Data.Data Network.Google.Resource.CloudResourceManager.Organizations.Search.OrganizationsSearch
instance GHC.Show.Show Network.Google.Resource.CloudResourceManager.Organizations.Search.OrganizationsSearch
instance GHC.Classes.Eq Network.Google.Resource.CloudResourceManager.Organizations.Search.OrganizationsSearch
instance Network.Google.Types.GoogleRequest Network.Google.Resource.CloudResourceManager.Organizations.Search.OrganizationsSearch


-- | Gets the access control policy for an Organization resource. May be
--   empty if no such policy or resource exists. The `resource` field
--   should be the organization's resource name, e.g. "organizations/123".
--   
--   <i>See:</i> <a>Google Cloud Resource Manager API Reference</a> for
--   <tt>cloudresourcemanager.organizations.getIamPolicy</tt>.
module Network.Google.Resource.CloudResourceManager.Organizations.GetIAMPolicy

-- | A resource alias for
--   <tt>cloudresourcemanager.organizations.getIamPolicy</tt> method which
--   the <a>OrganizationsGetIAMPolicy</a> request conforms to.
type OrganizationsGetIAMPolicyResource = "v1" :> (CaptureMode "resource" "getIamPolicy" Text :> (QueryParam "$.xgafv" Xgafv :> (QueryParam "upload_protocol" Text :> (QueryParam "pp" Bool :> (QueryParam "access_token" Text :> (QueryParam "uploadType" Text :> (QueryParam "bearer_token" Text :> (QueryParam "callback" Text :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] GetIAMPolicyRequest :> Post '[JSON] Policy))))))))))

-- | Creates a value of <a>OrganizationsGetIAMPolicy</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ogipXgafv</a></li>
--   <li><a>ogipUploadProtocol</a></li>
--   <li><a>ogipPp</a></li>
--   <li><a>ogipAccessToken</a></li>
--   <li><a>ogipUploadType</a></li>
--   <li><a>ogipPayload</a></li>
--   <li><a>ogipBearerToken</a></li>
--   <li><a>ogipResource</a></li>
--   <li><a>ogipCallback</a></li>
--   </ul>
organizationsGetIAMPolicy :: GetIAMPolicyRequest -> Text -> OrganizationsGetIAMPolicy

-- | Gets the access control policy for an Organization resource. May be
--   empty if no such policy or resource exists. The `resource` field
--   should be the organization's resource name, e.g. "organizations/123".
--   
--   <i>See:</i> <a>organizationsGetIAMPolicy</a> smart constructor.
data OrganizationsGetIAMPolicy

-- | V1 error format.
ogipXgafv :: Lens' OrganizationsGetIAMPolicy (Maybe Xgafv)

-- | Upload protocol for media (e.g. "raw", "multipart").
ogipUploadProtocol :: Lens' OrganizationsGetIAMPolicy (Maybe Text)

-- | Pretty-print response.
ogipPp :: Lens' OrganizationsGetIAMPolicy Bool

-- | OAuth access token.
ogipAccessToken :: Lens' OrganizationsGetIAMPolicy (Maybe Text)

-- | Legacy upload protocol for media (e.g. "media", "multipart").
ogipUploadType :: Lens' OrganizationsGetIAMPolicy (Maybe Text)

-- | Multipart request metadata.
ogipPayload :: Lens' OrganizationsGetIAMPolicy GetIAMPolicyRequest

-- | OAuth bearer token.
ogipBearerToken :: Lens' OrganizationsGetIAMPolicy (Maybe Text)

-- | REQUIRED: The resource for which the policy is being requested.
--   `resource` is usually specified as a path. For example, a Project
--   resource is specified as `projects/{project}`.
ogipResource :: Lens' OrganizationsGetIAMPolicy Text

-- | JSONP
ogipCallback :: Lens' OrganizationsGetIAMPolicy (Maybe Text)
instance GHC.Generics.Generic Network.Google.Resource.CloudResourceManager.Organizations.GetIAMPolicy.OrganizationsGetIAMPolicy
instance Data.Data.Data Network.Google.Resource.CloudResourceManager.Organizations.GetIAMPolicy.OrganizationsGetIAMPolicy
instance GHC.Show.Show Network.Google.Resource.CloudResourceManager.Organizations.GetIAMPolicy.OrganizationsGetIAMPolicy
instance GHC.Classes.Eq Network.Google.Resource.CloudResourceManager.Organizations.GetIAMPolicy.OrganizationsGetIAMPolicy
instance Network.Google.Types.GoogleRequest Network.Google.Resource.CloudResourceManager.Organizations.GetIAMPolicy.OrganizationsGetIAMPolicy


-- | Fetches an Organization resource identified by the specified resource
--   name.
--   
--   <i>See:</i> <a>Google Cloud Resource Manager API Reference</a> for
--   <tt>cloudresourcemanager.organizations.get</tt>.
module Network.Google.Resource.CloudResourceManager.Organizations.Get

-- | A resource alias for <tt>cloudresourcemanager.organizations.get</tt>
--   method which the <a>OrganizationsGet</a> request conforms to.
type OrganizationsGetResource = "v1" :> (Capture "name" Text :> (QueryParam "$.xgafv" Xgafv :> (QueryParam "upload_protocol" Text :> (QueryParam "pp" Bool :> (QueryParam "access_token" Text :> (QueryParam "uploadType" Text :> (QueryParam "bearer_token" Text :> (QueryParam "callback" Text :> (QueryParam "alt" AltJSON :> Get '[JSON] Organization)))))))))

-- | Creates a value of <a>OrganizationsGet</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>oggXgafv</a></li>
--   <li><a>oggUploadProtocol</a></li>
--   <li><a>oggPp</a></li>
--   <li><a>oggAccessToken</a></li>
--   <li><a>oggUploadType</a></li>
--   <li><a>oggBearerToken</a></li>
--   <li><a>oggName</a></li>
--   <li><a>oggCallback</a></li>
--   </ul>
organizationsGet :: Text -> OrganizationsGet

-- | Fetches an Organization resource identified by the specified resource
--   name.
--   
--   <i>See:</i> <a>organizationsGet</a> smart constructor.
data OrganizationsGet

-- | V1 error format.
oggXgafv :: Lens' OrganizationsGet (Maybe Xgafv)

-- | Upload protocol for media (e.g. "raw", "multipart").
oggUploadProtocol :: Lens' OrganizationsGet (Maybe Text)

-- | Pretty-print response.
oggPp :: Lens' OrganizationsGet Bool

-- | OAuth access token.
oggAccessToken :: Lens' OrganizationsGet (Maybe Text)

-- | Legacy upload protocol for media (e.g. "media", "multipart").
oggUploadType :: Lens' OrganizationsGet (Maybe Text)

-- | OAuth bearer token.
oggBearerToken :: Lens' OrganizationsGet (Maybe Text)

-- | The resource name of the Organization to fetch, e.g.
--   "organizations/1234".
oggName :: Lens' OrganizationsGet Text

-- | JSONP
oggCallback :: Lens' OrganizationsGet (Maybe Text)
instance GHC.Generics.Generic Network.Google.Resource.CloudResourceManager.Organizations.Get.OrganizationsGet
instance Data.Data.Data Network.Google.Resource.CloudResourceManager.Organizations.Get.OrganizationsGet
instance GHC.Show.Show Network.Google.Resource.CloudResourceManager.Organizations.Get.OrganizationsGet
instance GHC.Classes.Eq Network.Google.Resource.CloudResourceManager.Organizations.Get.OrganizationsGet
instance Network.Google.Types.GoogleRequest Network.Google.Resource.CloudResourceManager.Organizations.Get.OrganizationsGet


-- | Gets the latest state of a long-running operation. Clients can use
--   this method to poll the operation result at intervals as recommended
--   by the API service.
--   
--   <i>See:</i> <a>Google Cloud Resource Manager API Reference</a> for
--   <tt>cloudresourcemanager.operations.get</tt>.
module Network.Google.Resource.CloudResourceManager.Operations.Get

-- | A resource alias for <tt>cloudresourcemanager.operations.get</tt>
--   method which the <a>OperationsGet</a> request conforms to.
type OperationsGetResource = "v1" :> (Capture "name" Text :> (QueryParam "$.xgafv" Xgafv :> (QueryParam "upload_protocol" Text :> (QueryParam "pp" Bool :> (QueryParam "access_token" Text :> (QueryParam "uploadType" Text :> (QueryParam "bearer_token" Text :> (QueryParam "callback" Text :> (QueryParam "alt" AltJSON :> Get '[JSON] Operation)))))))))

-- | Creates a value of <a>OperationsGet</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ogXgafv</a></li>
--   <li><a>ogUploadProtocol</a></li>
--   <li><a>ogPp</a></li>
--   <li><a>ogAccessToken</a></li>
--   <li><a>ogUploadType</a></li>
--   <li><a>ogBearerToken</a></li>
--   <li><a>ogName</a></li>
--   <li><a>ogCallback</a></li>
--   </ul>
operationsGet :: Text -> OperationsGet

-- | Gets the latest state of a long-running operation. Clients can use
--   this method to poll the operation result at intervals as recommended
--   by the API service.
--   
--   <i>See:</i> <a>operationsGet</a> smart constructor.
data OperationsGet

-- | V1 error format.
ogXgafv :: Lens' OperationsGet (Maybe Xgafv)

-- | Upload protocol for media (e.g. "raw", "multipart").
ogUploadProtocol :: Lens' OperationsGet (Maybe Text)

-- | Pretty-print response.
ogPp :: Lens' OperationsGet Bool

-- | OAuth access token.
ogAccessToken :: Lens' OperationsGet (Maybe Text)

-- | Legacy upload protocol for media (e.g. "media", "multipart").
ogUploadType :: Lens' OperationsGet (Maybe Text)

-- | OAuth bearer token.
ogBearerToken :: Lens' OperationsGet (Maybe Text)

-- | The name of the operation resource.
ogName :: Lens' OperationsGet Text

-- | JSONP
ogCallback :: Lens' OperationsGet (Maybe Text)
instance GHC.Generics.Generic Network.Google.Resource.CloudResourceManager.Operations.Get.OperationsGet
instance Data.Data.Data Network.Google.Resource.CloudResourceManager.Operations.Get.OperationsGet
instance GHC.Show.Show Network.Google.Resource.CloudResourceManager.Operations.Get.OperationsGet
instance GHC.Classes.Eq Network.Google.Resource.CloudResourceManager.Operations.Get.OperationsGet
instance Network.Google.Types.GoogleRequest Network.Google.Resource.CloudResourceManager.Operations.Get.OperationsGet


-- | The Google Cloud Resource Manager API provides methods for creating,
--   reading, and updating project metadata.
--   
--   <i>See:</i> <a>Google Cloud Resource Manager API Reference</a>
module Network.Google.ResourceManager

-- | Default request referring to version <tt>v1</tt> of the Google Cloud
--   Resource Manager API. This contains the host and root path used as a
--   starting point for constructing service requests.
resourceManagerService :: ServiceConfig

-- | View your data across Google Cloud Platform services
cloudPlatformReadOnlyScope :: Proxy '["https://www.googleapis.com/auth/cloud-platform.read-only"]

-- | View and manage your data across Google Cloud Platform services
cloudPlatformScope :: Proxy '["https://www.googleapis.com/auth/cloud-platform"]

-- | Represents the entirety of the methods and resources available for the
--   Google Cloud Resource Manager API service.
type ResourceManagerAPI = OrganizationsGetIAMPolicyResource :<|> (OrganizationsGetResource :<|> (OrganizationsSetIAMPolicyResource :<|> (OrganizationsTestIAMPermissionsResource :<|> (OrganizationsSearchResource :<|> (OperationsGetResource :<|> (ProjectsListResource :<|> (ProjectsUndeleteResource :<|> (ProjectsGetIAMPolicyResource :<|> (ProjectsGetResource :<|> (ProjectsCreateResource :<|> (ProjectsSetIAMPolicyResource :<|> (ProjectsTestIAMPermissionsResource :<|> (ProjectsGetAncestryResource :<|> (ProjectsDeleteResource :<|> ProjectsUpdateResource))))))))))))))

-- | 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 <a>gRPC</a>. The error model is designed to be: - Simple
--   to use and understand for most users - Flexible enough to meet
--   unexpected needs # Overview The `Status` message contains three pieces
--   of data: error code, error message, and error details. The error code
--   should be an enum value of google.rpc.Code, but it may accept
--   additional error codes if needed. The error message should be a
--   developer-facing English message that helps developers *understand*
--   and *resolve* the error. If a localized user-facing error message is
--   needed, put the localized message in the error details or localize it
--   in the client. The optional error details may contain arbitrary
--   information about the error. There is a predefined set of error detail
--   types in the package `google.rpc` which can be used for common error
--   conditions. # Language mapping The `Status` message is the logical
--   representation of the error model, but it is not necessarily the
--   actual wire format. When the `Status` message is exposed in different
--   client libraries and different wire protocols, it can be mapped
--   differently. For example, it will likely be mapped to some exceptions
--   in Java, but more likely mapped to some error codes in C. # Other uses
--   The error model and the `Status` message can be used in a variety of
--   environments, either with or without APIs, to provide a consistent
--   developer experience across different environments. Example uses of
--   this error model include: - Partial errors. If a service needs to
--   return partial errors to the client, it may embed the `Status` in the
--   normal response to indicate the partial errors. - Workflow errors. A
--   typical workflow has multiple steps. Each step may have a `Status`
--   message for error reporting purpose. - Batch operations. If a client
--   uses batch request and batch response, the `Status` message should be
--   used directly inside batch response, one for each error sub-response.
--   - Asynchronous operations. If an API call embeds asynchronous
--   operation results in its response, the status of those operations
--   should be represented directly using the `Status` message. - Logging.
--   If some API errors are stored in logs, the message `Status` could be
--   used directly after any stripping needed for security/privacy reasons.
--   
--   <i>See:</i> <a>status</a> smart constructor.
data Status

-- | Creates a value of <a>Status</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>sDetails</a></li>
--   <li><a>sCode</a></li>
--   <li><a>sMessage</a></li>
--   </ul>
status :: Status

-- | A list of messages that carry the error details. There will be a
--   common set of message types for APIs to use.
sDetails :: Lens' Status [StatusDetailsItem]

-- | The status code, which should be an enum value of google.rpc.Code.
sCode :: Lens' Status (Maybe Int32)

-- | 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.
sMessage :: Lens' Status (Maybe Text)

-- | The request sent to the `SearchOrganizations` method.
--   
--   <i>See:</i> <a>searchOrganizationsRequest</a> smart constructor.
data SearchOrganizationsRequest

-- | Creates a value of <a>SearchOrganizationsRequest</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>sorFilter</a></li>
--   <li><a>sorPageToken</a></li>
--   <li><a>sorPageSize</a></li>
--   </ul>
searchOrganizationsRequest :: SearchOrganizationsRequest

-- | An optional query string used to filter the Organizations to return in
--   the response. Filter rules are case-insensitive. Organizations may be
--   filtered by `owner.directoryCustomerId` or by `domain`, where the
--   domain is a Google for Work domain, for example: |Filter|Description|
--   |------|-----------|
--   |owner.directorycustomerid:123456789|Organizations with
--   `owner.directory_customer_id` equal to `123456789`.|
--   |domain:google.com|Organizations corresponding to the domain
--   `google.com`.| This field is optional.
sorFilter :: Lens' SearchOrganizationsRequest (Maybe Text)

-- | A pagination token returned from a previous call to
--   `SearchOrganizations` that indicates from where listing should
--   continue. This field is optional.
sorPageToken :: Lens' SearchOrganizationsRequest (Maybe Text)

-- | The maximum number of Organizations to return in the response. This
--   field is optional.
sorPageSize :: Lens' SearchOrganizationsRequest (Maybe Int32)

-- | A container to reference an id for any resource type. A `resource` in
--   Google Cloud Platform is a generic term for something you (a
--   developer) may want to interact with through one of our API's. Some
--   examples are an AppEngine app, a Compute Engine instance, a Cloud SQL
--   database, and so on.
--   
--   <i>See:</i> <a>resourceId</a> smart constructor.
data ResourceId

-- | Creates a value of <a>ResourceId</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>riId</a></li>
--   <li><a>riType</a></li>
--   </ul>
resourceId :: ResourceId

-- | Required field for the type-specific id. This should correspond to the
--   id used in the type-specific API's.
riId :: Lens' ResourceId (Maybe Text)

-- | Required field representing the resource type this id is for. At
--   present, the only valid type is "organization".
riType :: Lens' ResourceId (Maybe Text)

-- | A page of the response received from the 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.
--   
--   <i>See:</i> <a>listProjectsResponse</a> smart constructor.
data ListProjectsResponse

-- | Creates a value of <a>ListProjectsResponse</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>lprNextPageToken</a></li>
--   <li><a>lprProjects</a></li>
--   </ul>
listProjectsResponse :: 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.
lprNextPageToken :: Lens' ListProjectsResponse (Maybe Text)

-- | The list of Projects that matched the list filter. This list can be
--   paginated.
lprProjects :: Lens' ListProjectsResponse [Project]

-- | Request message for `GetIamPolicy` method.
--   
--   <i>See:</i> <a>getIAMPolicyRequest</a> smart constructor.
data GetIAMPolicyRequest

-- | Creates a value of <a>GetIAMPolicyRequest</a> with the minimum fields
--   required to make a request.
getIAMPolicyRequest :: GetIAMPolicyRequest

-- | The entity that owns an Organization. The lifetime of the Organization
--   and all of its descendants are bound to the `OrganizationOwner`. If
--   the `OrganizationOwner` is deleted, the Organization and all its
--   descendants will be deleted.
--   
--   <i>See:</i> <a>organizationOwner</a> smart constructor.
data OrganizationOwner

-- | Creates a value of <a>OrganizationOwner</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ooDirectoryCustomerId</a></li>
--   </ul>
organizationOwner :: OrganizationOwner

-- | The Google for Work customer id used in the Directory API.
ooDirectoryCustomerId :: Lens' OrganizationOwner (Maybe Text)

-- | The organization's current lifecycle state. Assigned by the server.
--   'OutputOnly
data OrganizationLifecycleState

-- | <tt>LIFECYCLE_STATE_UNSPECIFIED</tt> Unspecified state. This is only
--   useful for distinguishing unset values.
LifecycleStateUnspecified :: OrganizationLifecycleState

-- | <tt>ACTIVE</tt> The normal and active state.
Active :: OrganizationLifecycleState

-- | <tt>DELETE_REQUESTED</tt> The organization has been marked for
--   deletion by the user.
DeleteRequested :: OrganizationLifecycleState

-- | 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.
--   
--   <i>See:</i> <a>project</a> smart constructor.
data Project

-- | Creates a value of <a>Project</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>pParent</a></li>
--   <li><a>pProjectNumber</a></li>
--   <li><a>pName</a></li>
--   <li><a>pLabels</a></li>
--   <li><a>pProjectId</a></li>
--   <li><a>pLifecycleState</a></li>
--   <li><a>pCreateTime</a></li>
--   </ul>
project :: Project

-- | An optional reference to a parent Resource. The only supported parent
--   type is "organization". Once set, the parent cannot be modified. The
--   `parent` can be set on creation or using the `UpdateProject` method;
--   the end user must have the `resourcemanager.projects.create`
--   permission on the parent. Read-write.
pParent :: Lens' Project (Maybe ResourceId)

-- | The number uniquely identifying the project. Example: '415104041262'
--   Read-only.
pProjectNumber :: Lens' Project (Maybe Int64)

-- | The user-assigned display name of the Project. It must be 4 to 30
--   characters. Allowed characters are: lowercase and uppercase letters,
--   numbers, hyphen, single-quote, double-quote, space, and exclamation
--   point. Example: 'My Project' Read-write.
pName :: Lens' Project (Maybe Text)

-- | 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.
pLabels :: Lens' Project (Maybe ProjectLabels)

-- | 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.
pProjectId :: Lens' Project (Maybe Text)

-- | The Project lifecycle state. Read-only.
pLifecycleState :: Lens' Project (Maybe ProjectLifecycleState)

-- | Creation time. Read-only.
pCreateTime :: Lens' Project (Maybe UTCTime)

-- | This resource represents a long-running operation that is the result
--   of a network API call.
--   
--   <i>See:</i> <a>operation</a> smart constructor.
data Operation

-- | Creates a value of <a>Operation</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>oDone</a></li>
--   <li><a>oError</a></li>
--   <li><a>oResponse</a></li>
--   <li><a>oName</a></li>
--   <li><a>oMetadata</a></li>
--   </ul>
operation :: Operation

-- | If the value is `false`, it means the operation is still in progress.
--   If true, the operation is completed, and either `error` or `response`
--   is available.
oDone :: Lens' Operation (Maybe Bool)

-- | The error result of the operation in case of failure or cancellation.
oError :: Lens' Operation (Maybe Status)

-- | The normal response of the operation in case of success. If the
--   original method returns no data on success, such as `Delete`, the
--   response is `google.protobuf.Empty`. If the original method is
--   standard `Get`/`Create`/`Update`, the response should be the resource.
--   For other methods, the response should have the type `XxxResponse`,
--   where `Xxx` is the original method name. For example, if the original
--   method name is `TakeSnapshot()`, the inferred response type is
--   `TakeSnapshotResponse`.
oResponse :: Lens' Operation (Maybe OperationResponse)

-- | The server-assigned name, which is only unique within the same service
--   that originally returns it. If you use the default HTTP mapping, the
--   `name` should have the format of `operations/some/unique/name`.
oName :: Lens' Operation (Maybe Text)

-- | Service-specific metadata associated with the operation. It typically
--   contains progress information and common metadata such as create time.
--   Some services might not provide such metadata. Any method that returns
--   a long-running operation should document the metadata type, if any.
oMetadata :: Lens' Operation (Maybe OperationMetadata)

-- | 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 `{}`.
--   
--   <i>See:</i> <a>empty</a> smart constructor.
data Empty

-- | Creates a value of <a>Empty</a> with the minimum fields required to
--   make a request.
empty :: Empty

-- | The type of operation error experienced.
data FolderOperationErrorErrorMessageId

-- | <tt>ERROR_TYPE_UNSPECIFIED</tt> The error type was unrecognized or
--   unspecified.
ErrorTypeUnspecified :: FolderOperationErrorErrorMessageId

-- | <tt>FOLDER_HEIGHT_VIOLATION</tt> The attempted action would violate
--   the max folder depth constraint.
FolderHeightViolation :: FolderOperationErrorErrorMessageId

-- | <tt>MAX_CHILD_FOLDERS_VIOLATION</tt> The attempted action would
--   violate the max child folders constraint.
MaxChildFoldersViolation :: FolderOperationErrorErrorMessageId

-- | <tt>FOLDER_NAME_UNIQUENESS_VIOLATION</tt> The attempted action would
--   violate the locally-unique folder display_name constraint.
FolderNameUniquenessViolation :: FolderOperationErrorErrorMessageId

-- | <tt>RESOURCE_DELETED</tt> The resource being moved has been deleted.
ResourceDeleted :: FolderOperationErrorErrorMessageId

-- | <tt>PARENT_DELETED</tt> The resource a folder was being added to has
--   been deleted.
ParentDeleted :: FolderOperationErrorErrorMessageId

-- | <tt>CYCLE_INTRODUCED_ERROR</tt> The attempted action would introduce
--   cycle in resource path.
CycleIntroducedError :: FolderOperationErrorErrorMessageId

-- | <tt>FOLDER_ALREADY_BEING_MOVED</tt> The attempted action would move a
--   folder that is already being moved.
FolderAlreadyBeingMoved :: FolderOperationErrorErrorMessageId

-- | <tt>FOLDER_TO_DELETE_NON_EMPTY</tt> The folder the caller is trying to
--   delete contains active resources.
FolderToDeleteNonEmpty :: FolderOperationErrorErrorMessageId

-- | A status object which is used as the `metadata` field for the
--   Operation returned by CreateProject. It provides insight for when
--   significant phases of Project creation have completed.
--   
--   <i>See:</i> <a>projectCreationStatus</a> smart constructor.
data ProjectCreationStatus

-- | Creates a value of <a>ProjectCreationStatus</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>pcsGettable</a></li>
--   <li><a>pcsReady</a></li>
--   <li><a>pcsCreateTime</a></li>
--   </ul>
projectCreationStatus :: ProjectCreationStatus

-- | True if the project can be retrieved using GetProject. No other
--   operations on the project are guaranteed to work until the project
--   creation is complete.
pcsGettable :: Lens' ProjectCreationStatus (Maybe Bool)

-- | True if the project creation process is complete.
pcsReady :: Lens' ProjectCreationStatus (Maybe Bool)

-- | Creation time of the project creation workflow.
pcsCreateTime :: Lens' ProjectCreationStatus (Maybe UTCTime)
data StatusDetailsItem

-- | Creates a value of <a>StatusDetailsItem</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>sdiAddtional</a></li>
--   </ul>
statusDetailsItem :: HashMap Text JSONValue -> StatusDetailsItem

-- | Properties of the object. Contains field 'type with type URL.
sdiAddtional :: Lens' StatusDetailsItem (HashMap Text JSONValue)

-- | A classification of the Folder Operation error.
--   
--   <i>See:</i> <a>folderOperationError</a> smart constructor.
data FolderOperationError

-- | Creates a value of <a>FolderOperationError</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>foeErrorMessageId</a></li>
--   </ul>
folderOperationError :: FolderOperationError

-- | The type of operation error experienced.
foeErrorMessageId :: Lens' FolderOperationError (Maybe FolderOperationErrorErrorMessageId)

-- | The type of this operation.
data FolderOperationOperationType

-- | <tt>OPERATION_TYPE_UNSPECIFIED</tt> Operation type not specified.
OperationTypeUnspecified :: FolderOperationOperationType

-- | <tt>CREATE</tt> A create folder operation.
Create :: FolderOperationOperationType

-- | <tt>MOVE</tt> A move folder operation.
Move :: FolderOperationOperationType

-- | Request message for `SetIamPolicy` method.
--   
--   <i>See:</i> <a>setIAMPolicyRequest</a> smart constructor.
data SetIAMPolicyRequest

-- | Creates a value of <a>SetIAMPolicyRequest</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>siprPolicy</a></li>
--   </ul>
setIAMPolicyRequest :: SetIAMPolicyRequest

-- | REQUIRED: The complete policy to be applied to the `resource`. The
--   size of the policy is limited to a few 10s of KB. An empty policy is a
--   valid policy but certain Cloud Platform services (such as Projects)
--   might reject them.
siprPolicy :: Lens' SetIAMPolicyRequest (Maybe Policy)

-- | The Project lifecycle state. Read-only.
data ProjectLifecycleState

-- | <tt>LIFECYCLE_STATE_UNSPECIFIED</tt> Unspecified state. This is only
--   used/useful for distinguishing unset values.
PLSLifecycleStateUnspecified :: ProjectLifecycleState

-- | <tt>ACTIVE</tt> The normal and active state.
PLSActive :: ProjectLifecycleState

-- | <tt>DELETE_REQUESTED</tt> The project has been marked for deletion by
--   the user (by invoking DeleteProject) or by the system (Google Cloud
--   Platform). This can generally be reversed by invoking UndeleteProject.
PLSDeleteRequested :: ProjectLifecycleState

-- | <tt>DELETE_IN_PROGRESS</tt> This lifecycle state is no longer used and
--   not returned by the API.
PLSDeleteInProgress :: ProjectLifecycleState

-- | V1 error format.
data Xgafv

-- | <tt>1</tt> v1 error format
X1 :: Xgafv

-- | <tt>2</tt> v2 error format
X2 :: Xgafv

-- | Request message for `TestIamPermissions` method.
--   
--   <i>See:</i> <a>testIAMPermissionsRequest</a> smart constructor.
data TestIAMPermissionsRequest

-- | Creates a value of <a>TestIAMPermissionsRequest</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>tiprPermissions</a></li>
--   </ul>
testIAMPermissionsRequest :: TestIAMPermissionsRequest

-- | The set of permissions to check for the `resource`. Permissions with
--   wildcards (such as '*' or 'storage.*') are not allowed. For more
--   information see <a>IAM Overview</a>.
tiprPermissions :: Lens' TestIAMPermissionsRequest [Text]

-- | The request sent to the GetAncestry method.
--   
--   <i>See:</i> <a>getAncestryRequest</a> smart constructor.
data GetAncestryRequest

-- | Creates a value of <a>GetAncestryRequest</a> with the minimum fields
--   required to make a request.
getAncestryRequest :: GetAncestryRequest

-- | The response returned from the `SearchOrganizations` method.
--   
--   <i>See:</i> <a>searchOrganizationsResponse</a> smart constructor.
data SearchOrganizationsResponse

-- | Creates a value of <a>SearchOrganizationsResponse</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>sorNextPageToken</a></li>
--   <li><a>sorOrganizations</a></li>
--   </ul>
searchOrganizationsResponse :: SearchOrganizationsResponse

-- | A pagination token to be used to retrieve the next page of results. If
--   the result is too large to fit within the page size specified in the
--   request, this field will be set with a token that can be used to fetch
--   the next page of results. If this field is empty, it indicates that
--   this response contains the last page of results.
sorNextPageToken :: Lens' SearchOrganizationsResponse (Maybe Text)

-- | The list of Organizations that matched the search query, possibly
--   paginated.
sorOrganizations :: Lens' SearchOrganizationsResponse [Organization]

-- | Response from the GetAncestry method.
--   
--   <i>See:</i> <a>getAncestryResponse</a> smart constructor.
data GetAncestryResponse

-- | Creates a value of <a>GetAncestryResponse</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>garAncestor</a></li>
--   </ul>
getAncestryResponse :: GetAncestryResponse

-- | Ancestors are ordered from bottom to top of the resource hierarchy.
--   The first ancestor is the project itself, followed by the project's
--   parent, etc.
garAncestor :: Lens' GetAncestryResponse [Ancestor]

-- | Response message for `TestIamPermissions` method.
--   
--   <i>See:</i> <a>testIAMPermissionsResponse</a> smart constructor.
data TestIAMPermissionsResponse

-- | Creates a value of <a>TestIAMPermissionsResponse</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>tiamprPermissions</a></li>
--   </ul>
testIAMPermissionsResponse :: TestIAMPermissionsResponse

-- | A subset of `TestPermissionsRequest.permissions` that the caller is
--   allowed.
tiamprPermissions :: Lens' TestIAMPermissionsResponse [Text]

-- | Defines an Identity and Access Management (IAM) policy. It is used to
--   specify access control policies for Cloud Platform resources. A
--   `Policy` consists of a list of `bindings`. A `Binding` binds a list of
--   `members` to a `role`, where the members can be user accounts, Google
--   groups, Google domains, and service accounts. A `role` is a named list
--   of permissions defined by IAM. **Example** { "bindings": [ { "role":
--   "roles/owner", "members": [ "user:mike'example.com",
--   "group:admins'example.com", "domain:google.com",
--   "serviceAccount:my-other-app'appspot.gserviceaccount.com", ] }, {
--   "role": "roles/viewer", "members": ["user:sean'example.com"] } ] } For
--   a description of IAM and its features, see the <a>IAM developer's
--   guide</a>.
--   
--   <i>See:</i> <a>policy</a> smart constructor.
data Policy

-- | Creates a value of <a>Policy</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>pEtag</a></li>
--   <li><a>pVersion</a></li>
--   <li><a>pBindings</a></li>
--   </ul>
policy :: Policy

-- | `etag` is used for optimistic concurrency control as a way to help
--   prevent simultaneous updates of a policy from overwriting each other.
--   It is strongly suggested that systems make use of the `etag` in the
--   read-modify-write cycle to perform policy updates in order to avoid
--   race conditions: An `etag` is returned in the response to
--   `getIamPolicy`, and systems are expected to put that etag in the
--   request to `setIamPolicy` to ensure that their change will be applied
--   to the same version of the policy. If no `etag` is provided in the
--   call to `setIamPolicy`, then the existing policy is overwritten
--   blindly.
pEtag :: Lens' Policy (Maybe ByteString)

-- | Version of the `Policy`. The default version is 0.
pVersion :: Lens' Policy (Maybe Int32)

-- | Associates a list of `members` to a `role`. Multiple `bindings` must
--   not be specified for the same `role`. `bindings` with no members will
--   result in an error.
pBindings :: Lens' Policy [Binding]

-- | 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.
--   
--   <i>See:</i> <a>projectLabels</a> smart constructor.
data ProjectLabels

-- | Creates a value of <a>ProjectLabels</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>plAddtional</a></li>
--   </ul>
projectLabels :: HashMap Text Text -> ProjectLabels
plAddtional :: Lens' ProjectLabels (HashMap Text Text)

-- | Service-specific metadata associated with the operation. It typically
--   contains progress information and common metadata such as create time.
--   Some services might not provide such metadata. Any method that returns
--   a long-running operation should document the metadata type, if any.
--   
--   <i>See:</i> <a>operationMetadata</a> smart constructor.
data OperationMetadata

-- | Creates a value of <a>OperationMetadata</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>omAddtional</a></li>
--   </ul>
operationMetadata :: HashMap Text JSONValue -> OperationMetadata

-- | Properties of the object. Contains field 'type with type URL.
omAddtional :: Lens' OperationMetadata (HashMap Text JSONValue)

-- | Metadata describing a long running folder operation
--   
--   <i>See:</i> <a>folderOperation</a> smart constructor.
data FolderOperation

-- | Creates a value of <a>FolderOperation</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>foDestinationParent</a></li>
--   <li><a>foDisplayName</a></li>
--   <li><a>foOperationType</a></li>
--   <li><a>foSourceParent</a></li>
--   </ul>
folderOperation :: FolderOperation

-- | The resource name of the folder or organization we are either creating
--   the folder under or moving the folder to.
foDestinationParent :: Lens' FolderOperation (Maybe Text)

-- | The display name of the folder.
foDisplayName :: Lens' FolderOperation (Maybe Text)

-- | The type of this operation.
foOperationType :: Lens' FolderOperation (Maybe FolderOperationOperationType)

-- | The resource name of the folder's parent. Only applicable when the
--   operation_type is MOVE.
foSourceParent :: Lens' FolderOperation (Maybe Text)

-- | The root node in the resource hierarchy to which a particular entity's
--   (e.g., company) resources belong.
--   
--   <i>See:</i> <a>organization</a> smart constructor.
data Organization

-- | Creates a value of <a>Organization</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>orgCreationTime</a></li>
--   <li><a>orgOwner</a></li>
--   <li><a>orgName</a></li>
--   <li><a>orgDisplayName</a></li>
--   <li><a>orgLifecycleState</a></li>
--   </ul>
organization :: Organization

-- | Timestamp when the Organization was created. Assigned by the server.
--   'OutputOnly
orgCreationTime :: Lens' Organization (Maybe UTCTime)

-- | The owner of this Organization. The owner should be specified on
--   creation. Once set, it cannot be changed. This field is required.
orgOwner :: Lens' Organization (Maybe OrganizationOwner)

-- | Output Only. The resource name of the organization. This is the
--   organization's relative path in the API. Its format is
--   "organizations/[organization_id]". For example, "organizations/1234".
orgName :: Lens' Organization (Maybe Text)

-- | A friendly string to be used to refer to the Organization in the UI.
--   Assigned by the server, set to the firm name of the Google For Work
--   customer that owns this organization. 'OutputOnly
orgDisplayName :: Lens' Organization (Maybe Text)

-- | The organization's current lifecycle state. Assigned by the server.
--   'OutputOnly
orgLifecycleState :: Lens' Organization (Maybe OrganizationLifecycleState)

-- | Identifying information for a single ancestor of a project.
--   
--   <i>See:</i> <a>ancestor</a> smart constructor.
data Ancestor

-- | Creates a value of <a>Ancestor</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>aResourceId</a></li>
--   </ul>
ancestor :: Ancestor

-- | Resource id of the ancestor.
aResourceId :: Lens' Ancestor (Maybe ResourceId)

-- | The normal response of the operation in case of success. If the
--   original method returns no data on success, such as `Delete`, the
--   response is `google.protobuf.Empty`. If the original method is
--   standard `Get`/`Create`/`Update`, the response should be the resource.
--   For other methods, the response should have the type `XxxResponse`,
--   where `Xxx` is the original method name. For example, if the original
--   method name is `TakeSnapshot()`, the inferred response type is
--   `TakeSnapshotResponse`.
--   
--   <i>See:</i> <a>operationResponse</a> smart constructor.
data OperationResponse

-- | Creates a value of <a>OperationResponse</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>orAddtional</a></li>
--   </ul>
operationResponse :: HashMap Text JSONValue -> OperationResponse

-- | Properties of the object. Contains field 'type with type URL.
orAddtional :: Lens' OperationResponse (HashMap Text JSONValue)

-- | The request sent to the UndeleteProject method.
--   
--   <i>See:</i> <a>undeleteProjectRequest</a> smart constructor.
data UndeleteProjectRequest

-- | Creates a value of <a>UndeleteProjectRequest</a> with the minimum
--   fields required to make a request.
undeleteProjectRequest :: UndeleteProjectRequest

-- | Associates `members` with a `role`.
--   
--   <i>See:</i> <a>binding</a> smart constructor.
data Binding

-- | Creates a value of <a>Binding</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>bMembers</a></li>
--   <li><a>bRole</a></li>
--   </ul>
binding :: Binding

-- | Specifies the identities requesting access for a Cloud Platform
--   resource. `members` can have the following values: * `allUsers`: A
--   special identifier that represents anyone who is on the internet; with
--   or without a Google account. * `allAuthenticatedUsers`: A special
--   identifier that represents anyone who is authenticated with a Google
--   account or a service account. * `user:{emailid}`: An email address
--   that represents a specific Google account. For example,
--   `alice'gmail.com` or `joe'example.com`. * `serviceAccount:{emailid}`:
--   An email address that represents a service account. For example,
--   `my-other-app'appspot.gserviceaccount.com`. * `group:{emailid}`: An
--   email address that represents a Google group. For example,
--   `admins'example.com`. * `domain:{domain}`: A Google Apps domain name
--   that represents all the users of that domain. For example,
--   `google.com` or `example.com`.
bMembers :: Lens' Binding [Text]

-- | Role that is assigned to `members`. For example, `roles/viewer`,
--   `roles/editor`, or `roles/owner`. Required
bRole :: Lens' Binding (Maybe Text)
