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


-- | Google Cloud Pub/Sub SDK.
--   
--   Provides reliable, many-to-many, asynchronous messaging between
--   applications.
--   
--   <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-pubsub
@version 0.3.0


module Network.Google.PubSub.Types

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

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

-- | View and manage Pub/Sub topics and subscriptions
pubSubScope :: Proxy '["https://www.googleapis.com/auth/pubsub"]

-- | Configuration for a push delivery endpoint.
--   
--   <i>See:</i> <a>pushConfig</a> smart constructor.
data PushConfig

-- | Creates a value of <a>PushConfig</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>pcAttributes</a></li>
--   <li><a>pcPushEndpoint</a></li>
--   </ul>
pushConfig :: PushConfig

-- | Endpoint configuration attributes. Every endpoint has a set of API
--   supported attributes that can be used to control different aspects of
--   the message delivery. The currently supported attribute is
--   `x-goog-version`, which you can use to change the format of the push
--   message. This attribute indicates the version of the data expected by
--   the endpoint. This controls the shape of the envelope (i.e. its fields
--   and metadata). The endpoint version is based on the version of the
--   Pub/Sub API. If not present during the `CreateSubscription` call, it
--   will default to the version of the API used to make such call. If not
--   present during a `ModifyPushConfig` call, its value will not be
--   changed. `GetSubscription` calls will always return a valid version,
--   even if the subscription was created without this attribute. The
--   possible values for this attribute are: * `v1beta1`: uses the push
--   format defined in the v1beta1 Pub/Sub API. * `v1` or `v1beta2`: uses
--   the push format defined in the v1 Pub/Sub API.
pcAttributes :: Lens' PushConfig (Maybe PushConfigAttributes)

-- | A URL locating the endpoint to which messages should be pushed. For
--   example, a Webhook endpoint might use "https://example.com/push".
pcPushEndpoint :: Lens' PushConfig (Maybe Text)

-- | A message and its corresponding acknowledgment ID.
--   
--   <i>See:</i> <a>receivedMessage</a> smart constructor.
data ReceivedMessage

-- | Creates a value of <a>ReceivedMessage</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>rmAckId</a></li>
--   <li><a>rmMessage</a></li>
--   </ul>
receivedMessage :: ReceivedMessage

-- | This ID can be used to acknowledge the received message.
rmAckId :: Lens' ReceivedMessage (Maybe Text)

-- | The message.
rmMessage :: Lens' ReceivedMessage (Maybe PubsubMessage)

-- | Request for the ModifyAckDeadline method.
--   
--   <i>See:</i> <a>modifyAckDeadlineRequest</a> smart constructor.
data ModifyAckDeadlineRequest

-- | Creates a value of <a>ModifyAckDeadlineRequest</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>madrAckIds</a></li>
--   <li><a>madrAckDeadlineSeconds</a></li>
--   </ul>
modifyAckDeadlineRequest :: ModifyAckDeadlineRequest

-- | List of acknowledgment IDs.
madrAckIds :: Lens' ModifyAckDeadlineRequest [Text]

-- | The new ack deadline with respect to the time this request was sent to
--   the Pub/Sub system. For example, if the value is 10, the new ack
--   deadline will expire 10 seconds after the `ModifyAckDeadline` call was
--   made. Specifying zero may immediately make the message available for
--   another pull request. The minimum deadline you can specify is 0
--   seconds. The maximum deadline you can specify is 600 seconds (10
--   minutes).
madrAckDeadlineSeconds :: Lens' ModifyAckDeadlineRequest (Maybe Int32)

-- | Request for the ModifyPushConfig method.
--   
--   <i>See:</i> <a>modifyPushConfigRequest</a> smart constructor.
data ModifyPushConfigRequest

-- | Creates a value of <a>ModifyPushConfigRequest</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>mpcrPushConfig</a></li>
--   </ul>
modifyPushConfigRequest :: ModifyPushConfigRequest

-- | The push configuration for future deliveries. An empty `pushConfig`
--   indicates that the Pub/Sub system should stop pushing messages from
--   the given subscription and allow messages to be pulled and
--   acknowledged - effectively pausing the subscription if `Pull` is not
--   called.
mpcrPushConfig :: Lens' ModifyPushConfigRequest (Maybe PushConfig)

-- | 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

-- | A message data and its attributes. The message payload must not be
--   empty; it must contain either a non-empty data field, or at least one
--   attribute.
--   
--   <i>See:</i> <a>pubsubMessage</a> smart constructor.
data PubsubMessage

-- | Creates a value of <a>PubsubMessage</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>pmData</a></li>
--   <li><a>pmPublishTime</a></li>
--   <li><a>pmAttributes</a></li>
--   <li><a>pmMessageId</a></li>
--   </ul>
pubsubMessage :: PubsubMessage

-- | The message payload.
pmData :: Lens' PubsubMessage (Maybe ByteString)

-- | The time at which the message was published, populated by the server
--   when it receives the `Publish` call. It must not be populated by the
--   publisher in a `Publish` call.
pmPublishTime :: Lens' PubsubMessage (Maybe UTCTime)

-- | Optional attributes for this message.
pmAttributes :: Lens' PubsubMessage (Maybe PubsubMessageAttributes)

-- | ID of this message, assigned by the server when the message is
--   published. Guaranteed to be unique within the topic. This value may be
--   read by a subscriber that receives a `PubsubMessage` via a `Pull` call
--   or a push delivery. It must not be populated by the publisher in a
--   `Publish` call.
pmMessageId :: Lens' PubsubMessage (Maybe Text)

-- | Response for the `ListTopicSubscriptions` method.
--   
--   <i>See:</i> <a>listTopicSubscriptionsResponse</a> smart constructor.
data ListTopicSubscriptionsResponse

-- | Creates a value of <a>ListTopicSubscriptionsResponse</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>ltsrNextPageToken</a></li>
--   <li><a>ltsrSubscriptions</a></li>
--   </ul>
listTopicSubscriptionsResponse :: ListTopicSubscriptionsResponse

-- | If not empty, indicates that there may be more subscriptions that
--   match the request; this value should be passed in a new
--   `ListTopicSubscriptionsRequest` to get more subscriptions.
ltsrNextPageToken :: Lens' ListTopicSubscriptionsResponse (Maybe Text)

-- | The names of the subscriptions that match the request.
ltsrSubscriptions :: Lens' ListTopicSubscriptionsResponse [Text]

-- | Response for the `ListTopics` method.
--   
--   <i>See:</i> <a>listTopicsResponse</a> smart constructor.
data ListTopicsResponse

-- | Creates a value of <a>ListTopicsResponse</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>ltrNextPageToken</a></li>
--   <li><a>ltrTopics</a></li>
--   </ul>
listTopicsResponse :: ListTopicsResponse

-- | If not empty, indicates that there may be more topics that match the
--   request; this value should be passed in a new `ListTopicsRequest`.
ltrNextPageToken :: Lens' ListTopicsResponse (Maybe Text)

-- | The resulting topics.
ltrTopics :: Lens' ListTopicsResponse [Topic]

-- | Response for the `Pull` method.
--   
--   <i>See:</i> <a>pullResponse</a> smart constructor.
data PullResponse

-- | Creates a value of <a>PullResponse</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>prReceivedMessages</a></li>
--   </ul>
pullResponse :: PullResponse

-- | Received Pub/Sub messages. The Pub/Sub system will return zero
--   messages if there are no more available in the backlog. The Pub/Sub
--   system may return fewer than the `maxMessages` requested even if there
--   are more messages available in the backlog.
prReceivedMessages :: Lens' PullResponse [ReceivedMessage]

-- | 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)

-- | A topic resource.
--   
--   <i>See:</i> <a>topic</a> smart constructor.
data Topic

-- | Creates a value of <a>Topic</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>tName</a></li>
--   </ul>
topic :: Topic

-- | The name of the topic. It must have the format
--   `"projects/{project}/topics/{topic}"`. `{topic}` must start with a
--   letter, and contain only letters (`[A-Za-z]`), numbers (`[0-9]`),
--   dashes (`-`), underscores (`_`), periods (`.`), tildes (`~`), plus
--   (`+`) or percent signs (`%`). It must be between 3 and 255 characters
--   in length, and it must not start with `"goog"`.
tName :: Lens' Topic (Maybe Text)

-- | Request for the `Pull` method.
--   
--   <i>See:</i> <a>pullRequest</a> smart constructor.
data PullRequest

-- | Creates a value of <a>PullRequest</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>prMaxMessages</a></li>
--   <li><a>prReturnImmediately</a></li>
--   </ul>
pullRequest :: PullRequest

-- | The maximum number of messages returned for this request. The Pub/Sub
--   system may return fewer than the number specified.
prMaxMessages :: Lens' PullRequest (Maybe Int32)

-- | If this field set to true, the system will respond immediately even if
--   it there are no messages available to return in the `Pull` response.
--   Otherwise, the system may wait (for a bounded amount of time) until at
--   least one message is available, rather than returning no messages. The
--   client may cancel the request if it does not wish to wait any longer
--   for the response.
prReturnImmediately :: Lens' PullRequest (Maybe Bool)

-- | Optional attributes for this message.
--   
--   <i>See:</i> <a>pubsubMessageAttributes</a> smart constructor.
data PubsubMessageAttributes

-- | Creates a value of <a>PubsubMessageAttributes</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>pmaAddtional</a></li>
--   </ul>
pubsubMessageAttributes :: HashMap Text Text -> PubsubMessageAttributes
pmaAddtional :: Lens' PubsubMessageAttributes (HashMap Text Text)

-- | 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]

-- | Response for the `Publish` method.
--   
--   <i>See:</i> <a>publishResponse</a> smart constructor.
data PublishResponse

-- | Creates a value of <a>PublishResponse</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>prMessageIds</a></li>
--   </ul>
publishResponse :: PublishResponse

-- | The server-assigned ID of each published message, in the same order as
--   the messages in the request. IDs are guaranteed to be unique within
--   the topic.
prMessageIds :: Lens' PublishResponse [Text]

-- | Request for the Publish method.
--   
--   <i>See:</i> <a>publishRequest</a> smart constructor.
data PublishRequest

-- | Creates a value of <a>PublishRequest</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>prMessages</a></li>
--   </ul>
publishRequest :: PublishRequest

-- | The messages to publish.
prMessages :: Lens' PublishRequest [PubsubMessage]

-- | 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]

-- | Endpoint configuration attributes. Every endpoint has a set of API
--   supported attributes that can be used to control different aspects of
--   the message delivery. The currently supported attribute is
--   `x-goog-version`, which you can use to change the format of the push
--   message. This attribute indicates the version of the data expected by
--   the endpoint. This controls the shape of the envelope (i.e. its fields
--   and metadata). The endpoint version is based on the version of the
--   Pub/Sub API. If not present during the `CreateSubscription` call, it
--   will default to the version of the API used to make such call. If not
--   present during a `ModifyPushConfig` call, its value will not be
--   changed. `GetSubscription` calls will always return a valid version,
--   even if the subscription was created without this attribute. The
--   possible values for this attribute are: * `v1beta1`: uses the push
--   format defined in the v1beta1 Pub/Sub API. * `v1` or `v1beta2`: uses
--   the push format defined in the v1 Pub/Sub API.
--   
--   <i>See:</i> <a>pushConfigAttributes</a> smart constructor.
data PushConfigAttributes

-- | Creates a value of <a>PushConfigAttributes</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>pcaAddtional</a></li>
--   </ul>
pushConfigAttributes :: HashMap Text Text -> PushConfigAttributes
pcaAddtional :: Lens' PushConfigAttributes (HashMap Text Text)

-- | A subscription resource.
--   
--   <i>See:</i> <a>subscription</a> smart constructor.
data Subscription

-- | Creates a value of <a>Subscription</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>sPushConfig</a></li>
--   <li><a>sTopic</a></li>
--   <li><a>sName</a></li>
--   <li><a>sAckDeadlineSeconds</a></li>
--   </ul>
subscription :: Subscription

-- | If push delivery is used with this subscription, this field is used to
--   configure it. An empty `pushConfig` signifies that the subscriber will
--   pull and ack messages using API methods.
sPushConfig :: Lens' Subscription (Maybe PushConfig)

-- | The name of the topic from which this subscription is receiving
--   messages. Format is `projects/{project}/topics/{topic}`. The value of
--   this field will be `_deleted-topic_` if the topic has been deleted.
sTopic :: Lens' Subscription (Maybe Text)

-- | The name of the subscription. It must have the format
--   `"projects/{project}/subscriptions/{subscription}"`. `{subscription}`
--   must start with a letter, and contain only letters (`[A-Za-z]`),
--   numbers (`[0-9]`), dashes (`-`), underscores (`_`), periods (`.`),
--   tildes (`~`), plus (`+`) or percent signs (`%`). It must be between 3
--   and 255 characters in length, and it must not start with `"goog"`.
sName :: Lens' Subscription (Maybe Text)

-- | This value is the maximum time after a subscriber receives a message
--   before the subscriber should acknowledge the message. After message
--   delivery but before the ack deadline expires and before the message is
--   acknowledged, it is an outstanding message and will not be delivered
--   again during that time (on a best-effort basis). For pull
--   subscriptions, this value is used as the initial value for the ack
--   deadline. To override this value for a given message, call
--   `ModifyAckDeadline` with the corresponding `ack_id` if using pull. The
--   minimum custom deadline you can specify is 10 seconds. The maximum
--   custom deadline you can specify is 600 seconds (10 minutes). If this
--   parameter is 0, a default value of 10 seconds is used. For push
--   delivery, this value is also used to set the request timeout for the
--   call to the push endpoint. If the subscriber never acknowledges the
--   message, the Pub/Sub system will eventually redeliver the message.
sAckDeadlineSeconds :: Lens' Subscription (Maybe Int32)

-- | Response for the `ListSubscriptions` method.
--   
--   <i>See:</i> <a>listSubscriptionsResponse</a> smart constructor.
data ListSubscriptionsResponse

-- | Creates a value of <a>ListSubscriptionsResponse</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>lsrNextPageToken</a></li>
--   <li><a>lsrSubscriptions</a></li>
--   </ul>
listSubscriptionsResponse :: ListSubscriptionsResponse

-- | If not empty, indicates that there may be more subscriptions that
--   match the request; this value should be passed in a new
--   `ListSubscriptionsRequest` to get more subscriptions.
lsrNextPageToken :: Lens' ListSubscriptionsResponse (Maybe Text)

-- | The subscriptions that match the request.
lsrSubscriptions :: Lens' ListSubscriptionsResponse [Subscription]

-- | 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)

-- | Request for the Acknowledge method.
--   
--   <i>See:</i> <a>acknowledgeRequest</a> smart constructor.
data AcknowledgeRequest

-- | Creates a value of <a>AcknowledgeRequest</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>arAckIds</a></li>
--   </ul>
acknowledgeRequest :: AcknowledgeRequest

-- | The acknowledgment ID for the messages being acknowledged that was
--   returned by the Pub/Sub system in the `Pull` response. Must not be
--   empty.
arAckIds :: Lens' AcknowledgeRequest [Text]


-- | Gets the access control policy for a resource. Returns an empty policy
--   if the resource exists and does not have a policy set.
--   
--   <i>See:</i> <a>Google Cloud Pub/Sub API Reference</a> for
--   <tt>pubsub.projects.snapshots.getIamPolicy</tt>.
module Network.Google.Resource.PubSub.Projects.Snapshots.GetIAMPolicy

-- | A resource alias for <tt>pubsub.projects.snapshots.getIamPolicy</tt>
--   method which the <a>ProjectsSnapshotsGetIAMPolicy</a> request conforms
--   to.
type ProjectsSnapshotsGetIAMPolicyResource = "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 :> Get '[JSON] Policy)))))))))

-- | Creates a value of <a>ProjectsSnapshotsGetIAMPolicy</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>psgipXgafv</a></li>
--   <li><a>psgipUploadProtocol</a></li>
--   <li><a>psgipPp</a></li>
--   <li><a>psgipAccessToken</a></li>
--   <li><a>psgipUploadType</a></li>
--   <li><a>psgipBearerToken</a></li>
--   <li><a>psgipResource</a></li>
--   <li><a>psgipCallback</a></li>
--   </ul>
projectsSnapshotsGetIAMPolicy :: Text -> ProjectsSnapshotsGetIAMPolicy

-- | Gets the access control policy for a resource. Returns an empty policy
--   if the resource exists and does not have a policy set.
--   
--   <i>See:</i> <a>projectsSnapshotsGetIAMPolicy</a> smart constructor.
data ProjectsSnapshotsGetIAMPolicy

-- | V1 error format.
psgipXgafv :: Lens' ProjectsSnapshotsGetIAMPolicy (Maybe Xgafv)

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

-- | Pretty-print response.
psgipPp :: Lens' ProjectsSnapshotsGetIAMPolicy Bool

-- | OAuth access token.
psgipAccessToken :: Lens' ProjectsSnapshotsGetIAMPolicy (Maybe Text)

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

-- | OAuth bearer token.
psgipBearerToken :: Lens' ProjectsSnapshotsGetIAMPolicy (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}`.
psgipResource :: Lens' ProjectsSnapshotsGetIAMPolicy Text

-- | JSONP
psgipCallback :: Lens' ProjectsSnapshotsGetIAMPolicy (Maybe Text)
instance GHC.Generics.Generic Network.Google.Resource.PubSub.Projects.Snapshots.GetIAMPolicy.ProjectsSnapshotsGetIAMPolicy
instance Data.Data.Data Network.Google.Resource.PubSub.Projects.Snapshots.GetIAMPolicy.ProjectsSnapshotsGetIAMPolicy
instance GHC.Show.Show Network.Google.Resource.PubSub.Projects.Snapshots.GetIAMPolicy.ProjectsSnapshotsGetIAMPolicy
instance GHC.Classes.Eq Network.Google.Resource.PubSub.Projects.Snapshots.GetIAMPolicy.ProjectsSnapshotsGetIAMPolicy
instance Network.Google.Types.GoogleRequest Network.Google.Resource.PubSub.Projects.Snapshots.GetIAMPolicy.ProjectsSnapshotsGetIAMPolicy


-- | Sets the access control policy on the specified resource. Replaces any
--   existing policy.
--   
--   <i>See:</i> <a>Google Cloud Pub/Sub API Reference</a> for
--   <tt>pubsub.projects.snapshots.setIamPolicy</tt>.
module Network.Google.Resource.PubSub.Projects.Snapshots.SetIAMPolicy

-- | A resource alias for <tt>pubsub.projects.snapshots.setIamPolicy</tt>
--   method which the <a>ProjectsSnapshotsSetIAMPolicy</a> request conforms
--   to.
type ProjectsSnapshotsSetIAMPolicyResource = "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>ProjectsSnapshotsSetIAMPolicy</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>pssiampXgafv</a></li>
--   <li><a>pssiampUploadProtocol</a></li>
--   <li><a>pssiampPp</a></li>
--   <li><a>pssiampAccessToken</a></li>
--   <li><a>pssiampUploadType</a></li>
--   <li><a>pssiampPayload</a></li>
--   <li><a>pssiampBearerToken</a></li>
--   <li><a>pssiampResource</a></li>
--   <li><a>pssiampCallback</a></li>
--   </ul>
projectsSnapshotsSetIAMPolicy :: SetIAMPolicyRequest -> Text -> ProjectsSnapshotsSetIAMPolicy

-- | Sets the access control policy on the specified resource. Replaces any
--   existing policy.
--   
--   <i>See:</i> <a>projectsSnapshotsSetIAMPolicy</a> smart constructor.
data ProjectsSnapshotsSetIAMPolicy

-- | V1 error format.
pssiampXgafv :: Lens' ProjectsSnapshotsSetIAMPolicy (Maybe Xgafv)

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

-- | Pretty-print response.
pssiampPp :: Lens' ProjectsSnapshotsSetIAMPolicy Bool

-- | OAuth access token.
pssiampAccessToken :: Lens' ProjectsSnapshotsSetIAMPolicy (Maybe Text)

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

-- | Multipart request metadata.
pssiampPayload :: Lens' ProjectsSnapshotsSetIAMPolicy SetIAMPolicyRequest

-- | OAuth bearer token.
pssiampBearerToken :: Lens' ProjectsSnapshotsSetIAMPolicy (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}`.
pssiampResource :: Lens' ProjectsSnapshotsSetIAMPolicy Text

-- | JSONP
pssiampCallback :: Lens' ProjectsSnapshotsSetIAMPolicy (Maybe Text)
instance GHC.Generics.Generic Network.Google.Resource.PubSub.Projects.Snapshots.SetIAMPolicy.ProjectsSnapshotsSetIAMPolicy
instance Data.Data.Data Network.Google.Resource.PubSub.Projects.Snapshots.SetIAMPolicy.ProjectsSnapshotsSetIAMPolicy
instance GHC.Show.Show Network.Google.Resource.PubSub.Projects.Snapshots.SetIAMPolicy.ProjectsSnapshotsSetIAMPolicy
instance GHC.Classes.Eq Network.Google.Resource.PubSub.Projects.Snapshots.SetIAMPolicy.ProjectsSnapshotsSetIAMPolicy
instance Network.Google.Types.GoogleRequest Network.Google.Resource.PubSub.Projects.Snapshots.SetIAMPolicy.ProjectsSnapshotsSetIAMPolicy


-- | Returns permissions that a caller has on the specified resource. If
--   the resource does not exist, this will return an empty set of
--   permissions, not a NOT_FOUND error.
--   
--   <i>See:</i> <a>Google Cloud Pub/Sub API Reference</a> for
--   <tt>pubsub.projects.snapshots.testIamPermissions</tt>.
module Network.Google.Resource.PubSub.Projects.Snapshots.TestIAMPermissions

-- | A resource alias for
--   <tt>pubsub.projects.snapshots.testIamPermissions</tt> method which the
--   <a>ProjectsSnapshotsTestIAMPermissions</a> request conforms to.
type ProjectsSnapshotsTestIAMPermissionsResource = "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>ProjectsSnapshotsTestIAMPermissions</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>pstipXgafv</a></li>
--   <li><a>pstipUploadProtocol</a></li>
--   <li><a>pstipPp</a></li>
--   <li><a>pstipAccessToken</a></li>
--   <li><a>pstipUploadType</a></li>
--   <li><a>pstipPayload</a></li>
--   <li><a>pstipBearerToken</a></li>
--   <li><a>pstipResource</a></li>
--   <li><a>pstipCallback</a></li>
--   </ul>
projectsSnapshotsTestIAMPermissions :: TestIAMPermissionsRequest -> Text -> ProjectsSnapshotsTestIAMPermissions

-- | Returns permissions that a caller has on the specified resource. If
--   the resource does not exist, this will return an empty set of
--   permissions, not a NOT_FOUND error.
--   
--   <i>See:</i> <a>projectsSnapshotsTestIAMPermissions</a> smart
--   constructor.
data ProjectsSnapshotsTestIAMPermissions

-- | V1 error format.
pstipXgafv :: Lens' ProjectsSnapshotsTestIAMPermissions (Maybe Xgafv)

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

-- | Pretty-print response.
pstipPp :: Lens' ProjectsSnapshotsTestIAMPermissions Bool

-- | OAuth access token.
pstipAccessToken :: Lens' ProjectsSnapshotsTestIAMPermissions (Maybe Text)

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

-- | Multipart request metadata.
pstipPayload :: Lens' ProjectsSnapshotsTestIAMPermissions TestIAMPermissionsRequest

-- | OAuth bearer token.
pstipBearerToken :: Lens' ProjectsSnapshotsTestIAMPermissions (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}`.
pstipResource :: Lens' ProjectsSnapshotsTestIAMPermissions Text

-- | JSONP
pstipCallback :: Lens' ProjectsSnapshotsTestIAMPermissions (Maybe Text)
instance GHC.Generics.Generic Network.Google.Resource.PubSub.Projects.Snapshots.TestIAMPermissions.ProjectsSnapshotsTestIAMPermissions
instance Data.Data.Data Network.Google.Resource.PubSub.Projects.Snapshots.TestIAMPermissions.ProjectsSnapshotsTestIAMPermissions
instance GHC.Show.Show Network.Google.Resource.PubSub.Projects.Snapshots.TestIAMPermissions.ProjectsSnapshotsTestIAMPermissions
instance GHC.Classes.Eq Network.Google.Resource.PubSub.Projects.Snapshots.TestIAMPermissions.ProjectsSnapshotsTestIAMPermissions
instance Network.Google.Types.GoogleRequest Network.Google.Resource.PubSub.Projects.Snapshots.TestIAMPermissions.ProjectsSnapshotsTestIAMPermissions


-- | Acknowledges the messages associated with the `ack_ids` in the
--   `AcknowledgeRequest`. The Pub/Sub system can remove the relevant
--   messages from the subscription. Acknowledging a message whose ack
--   deadline has expired may succeed, but such a message may be
--   redelivered later. Acknowledging a message more than once will not
--   result in an error.
--   
--   <i>See:</i> <a>Google Cloud Pub/Sub API Reference</a> for
--   <tt>pubsub.projects.subscriptions.acknowledge</tt>.
module Network.Google.Resource.PubSub.Projects.Subscriptions.Acknowledge

-- | A resource alias for
--   <tt>pubsub.projects.subscriptions.acknowledge</tt> method which the
--   <a>ProjectsSubscriptionsAcknowledge</a> request conforms to.
type ProjectsSubscriptionsAcknowledgeResource = "v1" :> (CaptureMode "subscription" "acknowledge" 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] AcknowledgeRequest :> Post '[JSON] Empty))))))))))

-- | Creates a value of <a>ProjectsSubscriptionsAcknowledge</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>psaXgafv</a></li>
--   <li><a>psaUploadProtocol</a></li>
--   <li><a>psaPp</a></li>
--   <li><a>psaAccessToken</a></li>
--   <li><a>psaUploadType</a></li>
--   <li><a>psaPayload</a></li>
--   <li><a>psaBearerToken</a></li>
--   <li><a>psaSubscription</a></li>
--   <li><a>psaCallback</a></li>
--   </ul>
projectsSubscriptionsAcknowledge :: AcknowledgeRequest -> Text -> ProjectsSubscriptionsAcknowledge

-- | Acknowledges the messages associated with the `ack_ids` in the
--   `AcknowledgeRequest`. The Pub/Sub system can remove the relevant
--   messages from the subscription. Acknowledging a message whose ack
--   deadline has expired may succeed, but such a message may be
--   redelivered later. Acknowledging a message more than once will not
--   result in an error.
--   
--   <i>See:</i> <a>projectsSubscriptionsAcknowledge</a> smart constructor.
data ProjectsSubscriptionsAcknowledge

-- | V1 error format.
psaXgafv :: Lens' ProjectsSubscriptionsAcknowledge (Maybe Xgafv)

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

-- | Pretty-print response.
psaPp :: Lens' ProjectsSubscriptionsAcknowledge Bool

-- | OAuth access token.
psaAccessToken :: Lens' ProjectsSubscriptionsAcknowledge (Maybe Text)

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

-- | Multipart request metadata.
psaPayload :: Lens' ProjectsSubscriptionsAcknowledge AcknowledgeRequest

-- | OAuth bearer token.
psaBearerToken :: Lens' ProjectsSubscriptionsAcknowledge (Maybe Text)

-- | The subscription whose message is being acknowledged. Format is
--   `projects/{project}/subscriptions/{sub}`.
psaSubscription :: Lens' ProjectsSubscriptionsAcknowledge Text

-- | JSONP
psaCallback :: Lens' ProjectsSubscriptionsAcknowledge (Maybe Text)
instance GHC.Generics.Generic Network.Google.Resource.PubSub.Projects.Subscriptions.Acknowledge.ProjectsSubscriptionsAcknowledge
instance Data.Data.Data Network.Google.Resource.PubSub.Projects.Subscriptions.Acknowledge.ProjectsSubscriptionsAcknowledge
instance GHC.Show.Show Network.Google.Resource.PubSub.Projects.Subscriptions.Acknowledge.ProjectsSubscriptionsAcknowledge
instance GHC.Classes.Eq Network.Google.Resource.PubSub.Projects.Subscriptions.Acknowledge.ProjectsSubscriptionsAcknowledge
instance Network.Google.Types.GoogleRequest Network.Google.Resource.PubSub.Projects.Subscriptions.Acknowledge.ProjectsSubscriptionsAcknowledge


-- | Creates a subscription to a given topic. If the subscription already
--   exists, returns `ALREADY_EXISTS`. If the corresponding topic doesn't
--   exist, returns `NOT_FOUND`. If the name is not provided in the
--   request, the server will assign a random name for this subscription on
--   the same project as the topic, conforming to the <a>resource name
--   format</a>. The generated name is populated in the returned
--   Subscription object. Note that for REST API requests, you must specify
--   a name in the request.
--   
--   <i>See:</i> <a>Google Cloud Pub/Sub API Reference</a> for
--   <tt>pubsub.projects.subscriptions.create</tt>.
module Network.Google.Resource.PubSub.Projects.Subscriptions.Create

-- | A resource alias for <tt>pubsub.projects.subscriptions.create</tt>
--   method which the <a>ProjectsSubscriptionsCreate</a> request conforms
--   to.
type ProjectsSubscriptionsCreateResource = "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 :> (ReqBody '[JSON] Subscription :> Put '[JSON] Subscription))))))))))

-- | Creates a value of <a>ProjectsSubscriptionsCreate</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>pscXgafv</a></li>
--   <li><a>pscUploadProtocol</a></li>
--   <li><a>pscPp</a></li>
--   <li><a>pscAccessToken</a></li>
--   <li><a>pscUploadType</a></li>
--   <li><a>pscPayload</a></li>
--   <li><a>pscBearerToken</a></li>
--   <li><a>pscName</a></li>
--   <li><a>pscCallback</a></li>
--   </ul>
projectsSubscriptionsCreate :: Subscription -> Text -> ProjectsSubscriptionsCreate

-- | Creates a subscription to a given topic. If the subscription already
--   exists, returns `ALREADY_EXISTS`. If the corresponding topic doesn't
--   exist, returns `NOT_FOUND`. If the name is not provided in the
--   request, the server will assign a random name for this subscription on
--   the same project as the topic, conforming to the <a>resource name
--   format</a>. The generated name is populated in the returned
--   Subscription object. Note that for REST API requests, you must specify
--   a name in the request.
--   
--   <i>See:</i> <a>projectsSubscriptionsCreate</a> smart constructor.
data ProjectsSubscriptionsCreate

-- | V1 error format.
pscXgafv :: Lens' ProjectsSubscriptionsCreate (Maybe Xgafv)

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

-- | Pretty-print response.
pscPp :: Lens' ProjectsSubscriptionsCreate Bool

-- | OAuth access token.
pscAccessToken :: Lens' ProjectsSubscriptionsCreate (Maybe Text)

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

-- | Multipart request metadata.
pscPayload :: Lens' ProjectsSubscriptionsCreate Subscription

-- | OAuth bearer token.
pscBearerToken :: Lens' ProjectsSubscriptionsCreate (Maybe Text)

-- | The name of the subscription. It must have the format
--   `"projects/{project}/subscriptions/{subscription}"`. `{subscription}`
--   must start with a letter, and contain only letters (`[A-Za-z]`),
--   numbers (`[0-9]`), dashes (`-`), underscores (`_`), periods (`.`),
--   tildes (`~`), plus (`+`) or percent signs (`%`). It must be between 3
--   and 255 characters in length, and it must not start with `"goog"`.
pscName :: Lens' ProjectsSubscriptionsCreate Text

-- | JSONP
pscCallback :: Lens' ProjectsSubscriptionsCreate (Maybe Text)
instance GHC.Generics.Generic Network.Google.Resource.PubSub.Projects.Subscriptions.Create.ProjectsSubscriptionsCreate
instance Data.Data.Data Network.Google.Resource.PubSub.Projects.Subscriptions.Create.ProjectsSubscriptionsCreate
instance GHC.Show.Show Network.Google.Resource.PubSub.Projects.Subscriptions.Create.ProjectsSubscriptionsCreate
instance GHC.Classes.Eq Network.Google.Resource.PubSub.Projects.Subscriptions.Create.ProjectsSubscriptionsCreate
instance Network.Google.Types.GoogleRequest Network.Google.Resource.PubSub.Projects.Subscriptions.Create.ProjectsSubscriptionsCreate


-- | Deletes an existing subscription. All messages retained in the
--   subscription are immediately dropped. Calls to `Pull` after deletion
--   will return `NOT_FOUND`. After a subscription is deleted, a new one
--   may be created with the same name, but the new one has no association
--   with the old subscription or its topic unless the same topic is
--   specified.
--   
--   <i>See:</i> <a>Google Cloud Pub/Sub API Reference</a> for
--   <tt>pubsub.projects.subscriptions.delete</tt>.
module Network.Google.Resource.PubSub.Projects.Subscriptions.Delete

-- | A resource alias for <tt>pubsub.projects.subscriptions.delete</tt>
--   method which the <a>ProjectsSubscriptionsDelete</a> request conforms
--   to.
type ProjectsSubscriptionsDeleteResource = "v1" :> (Capture "subscription" 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>ProjectsSubscriptionsDelete</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>psdXgafv</a></li>
--   <li><a>psdUploadProtocol</a></li>
--   <li><a>psdPp</a></li>
--   <li><a>psdAccessToken</a></li>
--   <li><a>psdUploadType</a></li>
--   <li><a>psdBearerToken</a></li>
--   <li><a>psdSubscription</a></li>
--   <li><a>psdCallback</a></li>
--   </ul>
projectsSubscriptionsDelete :: Text -> ProjectsSubscriptionsDelete

-- | Deletes an existing subscription. All messages retained in the
--   subscription are immediately dropped. Calls to `Pull` after deletion
--   will return `NOT_FOUND`. After a subscription is deleted, a new one
--   may be created with the same name, but the new one has no association
--   with the old subscription or its topic unless the same topic is
--   specified.
--   
--   <i>See:</i> <a>projectsSubscriptionsDelete</a> smart constructor.
data ProjectsSubscriptionsDelete

-- | V1 error format.
psdXgafv :: Lens' ProjectsSubscriptionsDelete (Maybe Xgafv)

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

-- | Pretty-print response.
psdPp :: Lens' ProjectsSubscriptionsDelete Bool

-- | OAuth access token.
psdAccessToken :: Lens' ProjectsSubscriptionsDelete (Maybe Text)

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

-- | OAuth bearer token.
psdBearerToken :: Lens' ProjectsSubscriptionsDelete (Maybe Text)

-- | The subscription to delete. Format is
--   `projects/{project}/subscriptions/{sub}`.
psdSubscription :: Lens' ProjectsSubscriptionsDelete Text

-- | JSONP
psdCallback :: Lens' ProjectsSubscriptionsDelete (Maybe Text)
instance GHC.Generics.Generic Network.Google.Resource.PubSub.Projects.Subscriptions.Delete.ProjectsSubscriptionsDelete
instance Data.Data.Data Network.Google.Resource.PubSub.Projects.Subscriptions.Delete.ProjectsSubscriptionsDelete
instance GHC.Show.Show Network.Google.Resource.PubSub.Projects.Subscriptions.Delete.ProjectsSubscriptionsDelete
instance GHC.Classes.Eq Network.Google.Resource.PubSub.Projects.Subscriptions.Delete.ProjectsSubscriptionsDelete
instance Network.Google.Types.GoogleRequest Network.Google.Resource.PubSub.Projects.Subscriptions.Delete.ProjectsSubscriptionsDelete


-- | Gets the configuration details of a subscription.
--   
--   <i>See:</i> <a>Google Cloud Pub/Sub API Reference</a> for
--   <tt>pubsub.projects.subscriptions.get</tt>.
module Network.Google.Resource.PubSub.Projects.Subscriptions.Get

-- | A resource alias for <tt>pubsub.projects.subscriptions.get</tt> method
--   which the <a>ProjectsSubscriptionsGet</a> request conforms to.
type ProjectsSubscriptionsGetResource = "v1" :> (Capture "subscription" 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] Subscription)))))))))

-- | Creates a value of <a>ProjectsSubscriptionsGet</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>psgXgafv</a></li>
--   <li><a>psgUploadProtocol</a></li>
--   <li><a>psgPp</a></li>
--   <li><a>psgAccessToken</a></li>
--   <li><a>psgUploadType</a></li>
--   <li><a>psgBearerToken</a></li>
--   <li><a>psgSubscription</a></li>
--   <li><a>psgCallback</a></li>
--   </ul>
projectsSubscriptionsGet :: Text -> ProjectsSubscriptionsGet

-- | Gets the configuration details of a subscription.
--   
--   <i>See:</i> <a>projectsSubscriptionsGet</a> smart constructor.
data ProjectsSubscriptionsGet

-- | V1 error format.
psgXgafv :: Lens' ProjectsSubscriptionsGet (Maybe Xgafv)

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

-- | Pretty-print response.
psgPp :: Lens' ProjectsSubscriptionsGet Bool

-- | OAuth access token.
psgAccessToken :: Lens' ProjectsSubscriptionsGet (Maybe Text)

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

-- | OAuth bearer token.
psgBearerToken :: Lens' ProjectsSubscriptionsGet (Maybe Text)

-- | The name of the subscription to get. Format is
--   `projects/{project}/subscriptions/{sub}`.
psgSubscription :: Lens' ProjectsSubscriptionsGet Text

-- | JSONP
psgCallback :: Lens' ProjectsSubscriptionsGet (Maybe Text)
instance GHC.Generics.Generic Network.Google.Resource.PubSub.Projects.Subscriptions.Get.ProjectsSubscriptionsGet
instance Data.Data.Data Network.Google.Resource.PubSub.Projects.Subscriptions.Get.ProjectsSubscriptionsGet
instance GHC.Show.Show Network.Google.Resource.PubSub.Projects.Subscriptions.Get.ProjectsSubscriptionsGet
instance GHC.Classes.Eq Network.Google.Resource.PubSub.Projects.Subscriptions.Get.ProjectsSubscriptionsGet
instance Network.Google.Types.GoogleRequest Network.Google.Resource.PubSub.Projects.Subscriptions.Get.ProjectsSubscriptionsGet


-- | Gets the access control policy for a resource. Returns an empty policy
--   if the resource exists and does not have a policy set.
--   
--   <i>See:</i> <a>Google Cloud Pub/Sub API Reference</a> for
--   <tt>pubsub.projects.subscriptions.getIamPolicy</tt>.
module Network.Google.Resource.PubSub.Projects.Subscriptions.GetIAMPolicy

-- | A resource alias for
--   <tt>pubsub.projects.subscriptions.getIamPolicy</tt> method which the
--   <a>ProjectsSubscriptionsGetIAMPolicy</a> request conforms to.
type ProjectsSubscriptionsGetIAMPolicyResource = "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 :> Get '[JSON] Policy)))))))))

-- | Creates a value of <a>ProjectsSubscriptionsGetIAMPolicy</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>psgiampXgafv</a></li>
--   <li><a>psgiampUploadProtocol</a></li>
--   <li><a>psgiampPp</a></li>
--   <li><a>psgiampAccessToken</a></li>
--   <li><a>psgiampUploadType</a></li>
--   <li><a>psgiampBearerToken</a></li>
--   <li><a>psgiampResource</a></li>
--   <li><a>psgiampCallback</a></li>
--   </ul>
projectsSubscriptionsGetIAMPolicy :: Text -> ProjectsSubscriptionsGetIAMPolicy

-- | Gets the access control policy for a resource. Returns an empty policy
--   if the resource exists and does not have a policy set.
--   
--   <i>See:</i> <a>projectsSubscriptionsGetIAMPolicy</a> smart
--   constructor.
data ProjectsSubscriptionsGetIAMPolicy

-- | V1 error format.
psgiampXgafv :: Lens' ProjectsSubscriptionsGetIAMPolicy (Maybe Xgafv)

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

-- | Pretty-print response.
psgiampPp :: Lens' ProjectsSubscriptionsGetIAMPolicy Bool

-- | OAuth access token.
psgiampAccessToken :: Lens' ProjectsSubscriptionsGetIAMPolicy (Maybe Text)

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

-- | OAuth bearer token.
psgiampBearerToken :: Lens' ProjectsSubscriptionsGetIAMPolicy (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}`.
psgiampResource :: Lens' ProjectsSubscriptionsGetIAMPolicy Text

-- | JSONP
psgiampCallback :: Lens' ProjectsSubscriptionsGetIAMPolicy (Maybe Text)
instance GHC.Generics.Generic Network.Google.Resource.PubSub.Projects.Subscriptions.GetIAMPolicy.ProjectsSubscriptionsGetIAMPolicy
instance Data.Data.Data Network.Google.Resource.PubSub.Projects.Subscriptions.GetIAMPolicy.ProjectsSubscriptionsGetIAMPolicy
instance GHC.Show.Show Network.Google.Resource.PubSub.Projects.Subscriptions.GetIAMPolicy.ProjectsSubscriptionsGetIAMPolicy
instance GHC.Classes.Eq Network.Google.Resource.PubSub.Projects.Subscriptions.GetIAMPolicy.ProjectsSubscriptionsGetIAMPolicy
instance Network.Google.Types.GoogleRequest Network.Google.Resource.PubSub.Projects.Subscriptions.GetIAMPolicy.ProjectsSubscriptionsGetIAMPolicy


-- | Lists matching subscriptions.
--   
--   <i>See:</i> <a>Google Cloud Pub/Sub API Reference</a> for
--   <tt>pubsub.projects.subscriptions.list</tt>.
module Network.Google.Resource.PubSub.Projects.Subscriptions.List

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

-- | Creates a value of <a>ProjectsSubscriptionsList</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>pslXgafv</a></li>
--   <li><a>pslUploadProtocol</a></li>
--   <li><a>pslProject</a></li>
--   <li><a>pslPp</a></li>
--   <li><a>pslAccessToken</a></li>
--   <li><a>pslUploadType</a></li>
--   <li><a>pslBearerToken</a></li>
--   <li><a>pslPageToken</a></li>
--   <li><a>pslPageSize</a></li>
--   <li><a>pslCallback</a></li>
--   </ul>
projectsSubscriptionsList :: Text -> ProjectsSubscriptionsList

-- | Lists matching subscriptions.
--   
--   <i>See:</i> <a>projectsSubscriptionsList</a> smart constructor.
data ProjectsSubscriptionsList

-- | V1 error format.
pslXgafv :: Lens' ProjectsSubscriptionsList (Maybe Xgafv)

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

-- | The name of the cloud project that subscriptions belong to. Format is
--   `projects/{project}`.
pslProject :: Lens' ProjectsSubscriptionsList Text

-- | Pretty-print response.
pslPp :: Lens' ProjectsSubscriptionsList Bool

-- | OAuth access token.
pslAccessToken :: Lens' ProjectsSubscriptionsList (Maybe Text)

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

-- | OAuth bearer token.
pslBearerToken :: Lens' ProjectsSubscriptionsList (Maybe Text)

-- | The value returned by the last `ListSubscriptionsResponse`; indicates
--   that this is a continuation of a prior `ListSubscriptions` call, and
--   that the system should return the next page of data.
pslPageToken :: Lens' ProjectsSubscriptionsList (Maybe Text)

-- | Maximum number of subscriptions to return.
pslPageSize :: Lens' ProjectsSubscriptionsList (Maybe Int32)

-- | JSONP
pslCallback :: Lens' ProjectsSubscriptionsList (Maybe Text)
instance GHC.Generics.Generic Network.Google.Resource.PubSub.Projects.Subscriptions.List.ProjectsSubscriptionsList
instance Data.Data.Data Network.Google.Resource.PubSub.Projects.Subscriptions.List.ProjectsSubscriptionsList
instance GHC.Show.Show Network.Google.Resource.PubSub.Projects.Subscriptions.List.ProjectsSubscriptionsList
instance GHC.Classes.Eq Network.Google.Resource.PubSub.Projects.Subscriptions.List.ProjectsSubscriptionsList
instance Network.Google.Types.GoogleRequest Network.Google.Resource.PubSub.Projects.Subscriptions.List.ProjectsSubscriptionsList


-- | Modifies the ack deadline for a specific message. This method is
--   useful to indicate that more time is needed to process a message by
--   the subscriber, or to make the message available for redelivery if the
--   processing was interrupted. Note that this does not modify the
--   subscription-level `ackDeadlineSeconds` used for subsequent messages.
--   
--   <i>See:</i> <a>Google Cloud Pub/Sub API Reference</a> for
--   <tt>pubsub.projects.subscriptions.modifyAckDeadline</tt>.
module Network.Google.Resource.PubSub.Projects.Subscriptions.ModifyAckDeadline

-- | A resource alias for
--   <tt>pubsub.projects.subscriptions.modifyAckDeadline</tt> method which
--   the <a>ProjectsSubscriptionsModifyAckDeadline</a> request conforms to.
type ProjectsSubscriptionsModifyAckDeadlineResource = "v1" :> (CaptureMode "subscription" "modifyAckDeadline" 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] ModifyAckDeadlineRequest :> Post '[JSON] Empty))))))))))

-- | Creates a value of <a>ProjectsSubscriptionsModifyAckDeadline</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>psmadXgafv</a></li>
--   <li><a>psmadUploadProtocol</a></li>
--   <li><a>psmadPp</a></li>
--   <li><a>psmadAccessToken</a></li>
--   <li><a>psmadUploadType</a></li>
--   <li><a>psmadPayload</a></li>
--   <li><a>psmadBearerToken</a></li>
--   <li><a>psmadSubscription</a></li>
--   <li><a>psmadCallback</a></li>
--   </ul>
projectsSubscriptionsModifyAckDeadline :: ModifyAckDeadlineRequest -> Text -> ProjectsSubscriptionsModifyAckDeadline

-- | Modifies the ack deadline for a specific message. This method is
--   useful to indicate that more time is needed to process a message by
--   the subscriber, or to make the message available for redelivery if the
--   processing was interrupted. Note that this does not modify the
--   subscription-level `ackDeadlineSeconds` used for subsequent messages.
--   
--   <i>See:</i> <a>projectsSubscriptionsModifyAckDeadline</a> smart
--   constructor.
data ProjectsSubscriptionsModifyAckDeadline

-- | V1 error format.
psmadXgafv :: Lens' ProjectsSubscriptionsModifyAckDeadline (Maybe Xgafv)

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

-- | Pretty-print response.
psmadPp :: Lens' ProjectsSubscriptionsModifyAckDeadline Bool

-- | OAuth access token.
psmadAccessToken :: Lens' ProjectsSubscriptionsModifyAckDeadline (Maybe Text)

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

-- | Multipart request metadata.
psmadPayload :: Lens' ProjectsSubscriptionsModifyAckDeadline ModifyAckDeadlineRequest

-- | OAuth bearer token.
psmadBearerToken :: Lens' ProjectsSubscriptionsModifyAckDeadline (Maybe Text)

-- | The name of the subscription. Format is
--   `projects/{project}/subscriptions/{sub}`.
psmadSubscription :: Lens' ProjectsSubscriptionsModifyAckDeadline Text

-- | JSONP
psmadCallback :: Lens' ProjectsSubscriptionsModifyAckDeadline (Maybe Text)
instance GHC.Generics.Generic Network.Google.Resource.PubSub.Projects.Subscriptions.ModifyAckDeadline.ProjectsSubscriptionsModifyAckDeadline
instance Data.Data.Data Network.Google.Resource.PubSub.Projects.Subscriptions.ModifyAckDeadline.ProjectsSubscriptionsModifyAckDeadline
instance GHC.Show.Show Network.Google.Resource.PubSub.Projects.Subscriptions.ModifyAckDeadline.ProjectsSubscriptionsModifyAckDeadline
instance GHC.Classes.Eq Network.Google.Resource.PubSub.Projects.Subscriptions.ModifyAckDeadline.ProjectsSubscriptionsModifyAckDeadline
instance Network.Google.Types.GoogleRequest Network.Google.Resource.PubSub.Projects.Subscriptions.ModifyAckDeadline.ProjectsSubscriptionsModifyAckDeadline


-- | Modifies the `PushConfig` for a specified subscription. This may be
--   used to change a push subscription to a pull one (signified by an
--   empty `PushConfig`) or vice versa, or change the endpoint URL and
--   other attributes of a push subscription. Messages will accumulate for
--   delivery continuously through the call regardless of changes to the
--   `PushConfig`.
--   
--   <i>See:</i> <a>Google Cloud Pub/Sub API Reference</a> for
--   <tt>pubsub.projects.subscriptions.modifyPushConfig</tt>.
module Network.Google.Resource.PubSub.Projects.Subscriptions.ModifyPushConfig

-- | A resource alias for
--   <tt>pubsub.projects.subscriptions.modifyPushConfig</tt> method which
--   the <a>ProjectsSubscriptionsModifyPushConfig</a> request conforms to.
type ProjectsSubscriptionsModifyPushConfigResource = "v1" :> (CaptureMode "subscription" "modifyPushConfig" 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] ModifyPushConfigRequest :> Post '[JSON] Empty))))))))))

-- | Creates a value of <a>ProjectsSubscriptionsModifyPushConfig</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>psmpcXgafv</a></li>
--   <li><a>psmpcUploadProtocol</a></li>
--   <li><a>psmpcPp</a></li>
--   <li><a>psmpcAccessToken</a></li>
--   <li><a>psmpcUploadType</a></li>
--   <li><a>psmpcPayload</a></li>
--   <li><a>psmpcBearerToken</a></li>
--   <li><a>psmpcSubscription</a></li>
--   <li><a>psmpcCallback</a></li>
--   </ul>
projectsSubscriptionsModifyPushConfig :: ModifyPushConfigRequest -> Text -> ProjectsSubscriptionsModifyPushConfig

-- | Modifies the `PushConfig` for a specified subscription. This may be
--   used to change a push subscription to a pull one (signified by an
--   empty `PushConfig`) or vice versa, or change the endpoint URL and
--   other attributes of a push subscription. Messages will accumulate for
--   delivery continuously through the call regardless of changes to the
--   `PushConfig`.
--   
--   <i>See:</i> <a>projectsSubscriptionsModifyPushConfig</a> smart
--   constructor.
data ProjectsSubscriptionsModifyPushConfig

-- | V1 error format.
psmpcXgafv :: Lens' ProjectsSubscriptionsModifyPushConfig (Maybe Xgafv)

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

-- | Pretty-print response.
psmpcPp :: Lens' ProjectsSubscriptionsModifyPushConfig Bool

-- | OAuth access token.
psmpcAccessToken :: Lens' ProjectsSubscriptionsModifyPushConfig (Maybe Text)

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

-- | Multipart request metadata.
psmpcPayload :: Lens' ProjectsSubscriptionsModifyPushConfig ModifyPushConfigRequest

-- | OAuth bearer token.
psmpcBearerToken :: Lens' ProjectsSubscriptionsModifyPushConfig (Maybe Text)

-- | The name of the subscription. Format is
--   `projects/{project}/subscriptions/{sub}`.
psmpcSubscription :: Lens' ProjectsSubscriptionsModifyPushConfig Text

-- | JSONP
psmpcCallback :: Lens' ProjectsSubscriptionsModifyPushConfig (Maybe Text)
instance GHC.Generics.Generic Network.Google.Resource.PubSub.Projects.Subscriptions.ModifyPushConfig.ProjectsSubscriptionsModifyPushConfig
instance Data.Data.Data Network.Google.Resource.PubSub.Projects.Subscriptions.ModifyPushConfig.ProjectsSubscriptionsModifyPushConfig
instance GHC.Show.Show Network.Google.Resource.PubSub.Projects.Subscriptions.ModifyPushConfig.ProjectsSubscriptionsModifyPushConfig
instance GHC.Classes.Eq Network.Google.Resource.PubSub.Projects.Subscriptions.ModifyPushConfig.ProjectsSubscriptionsModifyPushConfig
instance Network.Google.Types.GoogleRequest Network.Google.Resource.PubSub.Projects.Subscriptions.ModifyPushConfig.ProjectsSubscriptionsModifyPushConfig


-- | Pulls messages from the server. Returns an empty list if there are no
--   messages available in the backlog. The server may return `UNAVAILABLE`
--   if there are too many concurrent pull requests pending for the given
--   subscription.
--   
--   <i>See:</i> <a>Google Cloud Pub/Sub API Reference</a> for
--   <tt>pubsub.projects.subscriptions.pull</tt>.
module Network.Google.Resource.PubSub.Projects.Subscriptions.Pull

-- | A resource alias for <tt>pubsub.projects.subscriptions.pull</tt>
--   method which the <a>ProjectsSubscriptionsPull</a> request conforms to.
type ProjectsSubscriptionsPullResource = "v1" :> (CaptureMode "subscription" "pull" 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] PullRequest :> Post '[JSON] PullResponse))))))))))

-- | Creates a value of <a>ProjectsSubscriptionsPull</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>pspXgafv</a></li>
--   <li><a>pspUploadProtocol</a></li>
--   <li><a>pspPp</a></li>
--   <li><a>pspAccessToken</a></li>
--   <li><a>pspUploadType</a></li>
--   <li><a>pspPayload</a></li>
--   <li><a>pspBearerToken</a></li>
--   <li><a>pspSubscription</a></li>
--   <li><a>pspCallback</a></li>
--   </ul>
projectsSubscriptionsPull :: PullRequest -> Text -> ProjectsSubscriptionsPull

-- | Pulls messages from the server. Returns an empty list if there are no
--   messages available in the backlog. The server may return `UNAVAILABLE`
--   if there are too many concurrent pull requests pending for the given
--   subscription.
--   
--   <i>See:</i> <a>projectsSubscriptionsPull</a> smart constructor.
data ProjectsSubscriptionsPull

-- | V1 error format.
pspXgafv :: Lens' ProjectsSubscriptionsPull (Maybe Xgafv)

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

-- | Pretty-print response.
pspPp :: Lens' ProjectsSubscriptionsPull Bool

-- | OAuth access token.
pspAccessToken :: Lens' ProjectsSubscriptionsPull (Maybe Text)

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

-- | Multipart request metadata.
pspPayload :: Lens' ProjectsSubscriptionsPull PullRequest

-- | OAuth bearer token.
pspBearerToken :: Lens' ProjectsSubscriptionsPull (Maybe Text)

-- | The subscription from which messages should be pulled. Format is
--   `projects/{project}/subscriptions/{sub}`.
pspSubscription :: Lens' ProjectsSubscriptionsPull Text

-- | JSONP
pspCallback :: Lens' ProjectsSubscriptionsPull (Maybe Text)
instance GHC.Generics.Generic Network.Google.Resource.PubSub.Projects.Subscriptions.Pull.ProjectsSubscriptionsPull
instance Data.Data.Data Network.Google.Resource.PubSub.Projects.Subscriptions.Pull.ProjectsSubscriptionsPull
instance GHC.Show.Show Network.Google.Resource.PubSub.Projects.Subscriptions.Pull.ProjectsSubscriptionsPull
instance GHC.Classes.Eq Network.Google.Resource.PubSub.Projects.Subscriptions.Pull.ProjectsSubscriptionsPull
instance Network.Google.Types.GoogleRequest Network.Google.Resource.PubSub.Projects.Subscriptions.Pull.ProjectsSubscriptionsPull


-- | Sets the access control policy on the specified resource. Replaces any
--   existing policy.
--   
--   <i>See:</i> <a>Google Cloud Pub/Sub API Reference</a> for
--   <tt>pubsub.projects.subscriptions.setIamPolicy</tt>.
module Network.Google.Resource.PubSub.Projects.Subscriptions.SetIAMPolicy

-- | A resource alias for
--   <tt>pubsub.projects.subscriptions.setIamPolicy</tt> method which the
--   <a>ProjectsSubscriptionsSetIAMPolicy</a> request conforms to.
type ProjectsSubscriptionsSetIAMPolicyResource = "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>ProjectsSubscriptionsSetIAMPolicy</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>pssipXgafv</a></li>
--   <li><a>pssipUploadProtocol</a></li>
--   <li><a>pssipPp</a></li>
--   <li><a>pssipAccessToken</a></li>
--   <li><a>pssipUploadType</a></li>
--   <li><a>pssipPayload</a></li>
--   <li><a>pssipBearerToken</a></li>
--   <li><a>pssipResource</a></li>
--   <li><a>pssipCallback</a></li>
--   </ul>
projectsSubscriptionsSetIAMPolicy :: SetIAMPolicyRequest -> Text -> ProjectsSubscriptionsSetIAMPolicy

-- | Sets the access control policy on the specified resource. Replaces any
--   existing policy.
--   
--   <i>See:</i> <a>projectsSubscriptionsSetIAMPolicy</a> smart
--   constructor.
data ProjectsSubscriptionsSetIAMPolicy

-- | V1 error format.
pssipXgafv :: Lens' ProjectsSubscriptionsSetIAMPolicy (Maybe Xgafv)

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

-- | Pretty-print response.
pssipPp :: Lens' ProjectsSubscriptionsSetIAMPolicy Bool

-- | OAuth access token.
pssipAccessToken :: Lens' ProjectsSubscriptionsSetIAMPolicy (Maybe Text)

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

-- | Multipart request metadata.
pssipPayload :: Lens' ProjectsSubscriptionsSetIAMPolicy SetIAMPolicyRequest

-- | OAuth bearer token.
pssipBearerToken :: Lens' ProjectsSubscriptionsSetIAMPolicy (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}`.
pssipResource :: Lens' ProjectsSubscriptionsSetIAMPolicy Text

-- | JSONP
pssipCallback :: Lens' ProjectsSubscriptionsSetIAMPolicy (Maybe Text)
instance GHC.Generics.Generic Network.Google.Resource.PubSub.Projects.Subscriptions.SetIAMPolicy.ProjectsSubscriptionsSetIAMPolicy
instance Data.Data.Data Network.Google.Resource.PubSub.Projects.Subscriptions.SetIAMPolicy.ProjectsSubscriptionsSetIAMPolicy
instance GHC.Show.Show Network.Google.Resource.PubSub.Projects.Subscriptions.SetIAMPolicy.ProjectsSubscriptionsSetIAMPolicy
instance GHC.Classes.Eq Network.Google.Resource.PubSub.Projects.Subscriptions.SetIAMPolicy.ProjectsSubscriptionsSetIAMPolicy
instance Network.Google.Types.GoogleRequest Network.Google.Resource.PubSub.Projects.Subscriptions.SetIAMPolicy.ProjectsSubscriptionsSetIAMPolicy


-- | Returns permissions that a caller has on the specified resource. If
--   the resource does not exist, this will return an empty set of
--   permissions, not a NOT_FOUND error.
--   
--   <i>See:</i> <a>Google Cloud Pub/Sub API Reference</a> for
--   <tt>pubsub.projects.subscriptions.testIamPermissions</tt>.
module Network.Google.Resource.PubSub.Projects.Subscriptions.TestIAMPermissions

-- | A resource alias for
--   <tt>pubsub.projects.subscriptions.testIamPermissions</tt> method which
--   the <a>ProjectsSubscriptionsTestIAMPermissions</a> request conforms
--   to.
type ProjectsSubscriptionsTestIAMPermissionsResource = "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>ProjectsSubscriptionsTestIAMPermissions</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>pstiampXgafv</a></li>
--   <li><a>pstiampUploadProtocol</a></li>
--   <li><a>pstiampPp</a></li>
--   <li><a>pstiampAccessToken</a></li>
--   <li><a>pstiampUploadType</a></li>
--   <li><a>pstiampPayload</a></li>
--   <li><a>pstiampBearerToken</a></li>
--   <li><a>pstiampResource</a></li>
--   <li><a>pstiampCallback</a></li>
--   </ul>
projectsSubscriptionsTestIAMPermissions :: TestIAMPermissionsRequest -> Text -> ProjectsSubscriptionsTestIAMPermissions

-- | Returns permissions that a caller has on the specified resource. If
--   the resource does not exist, this will return an empty set of
--   permissions, not a NOT_FOUND error.
--   
--   <i>See:</i> <a>projectsSubscriptionsTestIAMPermissions</a> smart
--   constructor.
data ProjectsSubscriptionsTestIAMPermissions

-- | V1 error format.
pstiampXgafv :: Lens' ProjectsSubscriptionsTestIAMPermissions (Maybe Xgafv)

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

-- | Pretty-print response.
pstiampPp :: Lens' ProjectsSubscriptionsTestIAMPermissions Bool

-- | OAuth access token.
pstiampAccessToken :: Lens' ProjectsSubscriptionsTestIAMPermissions (Maybe Text)

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

-- | Multipart request metadata.
pstiampPayload :: Lens' ProjectsSubscriptionsTestIAMPermissions TestIAMPermissionsRequest

-- | OAuth bearer token.
pstiampBearerToken :: Lens' ProjectsSubscriptionsTestIAMPermissions (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}`.
pstiampResource :: Lens' ProjectsSubscriptionsTestIAMPermissions Text

-- | JSONP
pstiampCallback :: Lens' ProjectsSubscriptionsTestIAMPermissions (Maybe Text)
instance GHC.Generics.Generic Network.Google.Resource.PubSub.Projects.Subscriptions.TestIAMPermissions.ProjectsSubscriptionsTestIAMPermissions
instance Data.Data.Data Network.Google.Resource.PubSub.Projects.Subscriptions.TestIAMPermissions.ProjectsSubscriptionsTestIAMPermissions
instance GHC.Show.Show Network.Google.Resource.PubSub.Projects.Subscriptions.TestIAMPermissions.ProjectsSubscriptionsTestIAMPermissions
instance GHC.Classes.Eq Network.Google.Resource.PubSub.Projects.Subscriptions.TestIAMPermissions.ProjectsSubscriptionsTestIAMPermissions
instance Network.Google.Types.GoogleRequest Network.Google.Resource.PubSub.Projects.Subscriptions.TestIAMPermissions.ProjectsSubscriptionsTestIAMPermissions


-- | Creates the given topic with the given name.
--   
--   <i>See:</i> <a>Google Cloud Pub/Sub API Reference</a> for
--   <tt>pubsub.projects.topics.create</tt>.
module Network.Google.Resource.PubSub.Projects.Topics.Create

-- | A resource alias for <tt>pubsub.projects.topics.create</tt> method
--   which the <a>ProjectsTopicsCreate</a> request conforms to.
type ProjectsTopicsCreateResource = "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 :> (ReqBody '[JSON] Topic :> Put '[JSON] Topic))))))))))

-- | Creates a value of <a>ProjectsTopicsCreate</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>ptcXgafv</a></li>
--   <li><a>ptcUploadProtocol</a></li>
--   <li><a>ptcPp</a></li>
--   <li><a>ptcAccessToken</a></li>
--   <li><a>ptcUploadType</a></li>
--   <li><a>ptcPayload</a></li>
--   <li><a>ptcBearerToken</a></li>
--   <li><a>ptcName</a></li>
--   <li><a>ptcCallback</a></li>
--   </ul>
projectsTopicsCreate :: Topic -> Text -> ProjectsTopicsCreate

-- | Creates the given topic with the given name.
--   
--   <i>See:</i> <a>projectsTopicsCreate</a> smart constructor.
data ProjectsTopicsCreate

-- | V1 error format.
ptcXgafv :: Lens' ProjectsTopicsCreate (Maybe Xgafv)

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

-- | Pretty-print response.
ptcPp :: Lens' ProjectsTopicsCreate Bool

-- | OAuth access token.
ptcAccessToken :: Lens' ProjectsTopicsCreate (Maybe Text)

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

-- | Multipart request metadata.
ptcPayload :: Lens' ProjectsTopicsCreate Topic

-- | OAuth bearer token.
ptcBearerToken :: Lens' ProjectsTopicsCreate (Maybe Text)

-- | The name of the topic. It must have the format
--   `"projects/{project}/topics/{topic}"`. `{topic}` must start with a
--   letter, and contain only letters (`[A-Za-z]`), numbers (`[0-9]`),
--   dashes (`-`), underscores (`_`), periods (`.`), tildes (`~`), plus
--   (`+`) or percent signs (`%`). It must be between 3 and 255 characters
--   in length, and it must not start with `"goog"`.
ptcName :: Lens' ProjectsTopicsCreate Text

-- | JSONP
ptcCallback :: Lens' ProjectsTopicsCreate (Maybe Text)
instance GHC.Generics.Generic Network.Google.Resource.PubSub.Projects.Topics.Create.ProjectsTopicsCreate
instance Data.Data.Data Network.Google.Resource.PubSub.Projects.Topics.Create.ProjectsTopicsCreate
instance GHC.Show.Show Network.Google.Resource.PubSub.Projects.Topics.Create.ProjectsTopicsCreate
instance GHC.Classes.Eq Network.Google.Resource.PubSub.Projects.Topics.Create.ProjectsTopicsCreate
instance Network.Google.Types.GoogleRequest Network.Google.Resource.PubSub.Projects.Topics.Create.ProjectsTopicsCreate


-- | Deletes the topic with the given name. Returns `NOT_FOUND` if the
--   topic does not exist. After a topic is deleted, a new topic may be
--   created with the same name; this is an entirely new topic with none of
--   the old configuration or subscriptions. Existing subscriptions to this
--   topic are not deleted, but their `topic` field is set to
--   `_deleted-topic_`.
--   
--   <i>See:</i> <a>Google Cloud Pub/Sub API Reference</a> for
--   <tt>pubsub.projects.topics.delete</tt>.
module Network.Google.Resource.PubSub.Projects.Topics.Delete

-- | A resource alias for <tt>pubsub.projects.topics.delete</tt> method
--   which the <a>ProjectsTopicsDelete</a> request conforms to.
type ProjectsTopicsDeleteResource = "v1" :> (Capture "topic" 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>ProjectsTopicsDelete</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>ptdXgafv</a></li>
--   <li><a>ptdUploadProtocol</a></li>
--   <li><a>ptdPp</a></li>
--   <li><a>ptdAccessToken</a></li>
--   <li><a>ptdUploadType</a></li>
--   <li><a>ptdTopic</a></li>
--   <li><a>ptdBearerToken</a></li>
--   <li><a>ptdCallback</a></li>
--   </ul>
projectsTopicsDelete :: Text -> ProjectsTopicsDelete

-- | Deletes the topic with the given name. Returns `NOT_FOUND` if the
--   topic does not exist. After a topic is deleted, a new topic may be
--   created with the same name; this is an entirely new topic with none of
--   the old configuration or subscriptions. Existing subscriptions to this
--   topic are not deleted, but their `topic` field is set to
--   `_deleted-topic_`.
--   
--   <i>See:</i> <a>projectsTopicsDelete</a> smart constructor.
data ProjectsTopicsDelete

-- | V1 error format.
ptdXgafv :: Lens' ProjectsTopicsDelete (Maybe Xgafv)

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

-- | Pretty-print response.
ptdPp :: Lens' ProjectsTopicsDelete Bool

-- | OAuth access token.
ptdAccessToken :: Lens' ProjectsTopicsDelete (Maybe Text)

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

-- | Name of the topic to delete. Format is
--   `projects/{project}/topics/{topic}`.
ptdTopic :: Lens' ProjectsTopicsDelete Text

-- | OAuth bearer token.
ptdBearerToken :: Lens' ProjectsTopicsDelete (Maybe Text)

-- | JSONP
ptdCallback :: Lens' ProjectsTopicsDelete (Maybe Text)
instance GHC.Generics.Generic Network.Google.Resource.PubSub.Projects.Topics.Delete.ProjectsTopicsDelete
instance Data.Data.Data Network.Google.Resource.PubSub.Projects.Topics.Delete.ProjectsTopicsDelete
instance GHC.Show.Show Network.Google.Resource.PubSub.Projects.Topics.Delete.ProjectsTopicsDelete
instance GHC.Classes.Eq Network.Google.Resource.PubSub.Projects.Topics.Delete.ProjectsTopicsDelete
instance Network.Google.Types.GoogleRequest Network.Google.Resource.PubSub.Projects.Topics.Delete.ProjectsTopicsDelete


-- | Gets the configuration of a topic.
--   
--   <i>See:</i> <a>Google Cloud Pub/Sub API Reference</a> for
--   <tt>pubsub.projects.topics.get</tt>.
module Network.Google.Resource.PubSub.Projects.Topics.Get

-- | A resource alias for <tt>pubsub.projects.topics.get</tt> method which
--   the <a>ProjectsTopicsGet</a> request conforms to.
type ProjectsTopicsGetResource = "v1" :> (Capture "topic" 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] Topic)))))))))

-- | Creates a value of <a>ProjectsTopicsGet</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>ptgXgafv</a></li>
--   <li><a>ptgUploadProtocol</a></li>
--   <li><a>ptgPp</a></li>
--   <li><a>ptgAccessToken</a></li>
--   <li><a>ptgUploadType</a></li>
--   <li><a>ptgTopic</a></li>
--   <li><a>ptgBearerToken</a></li>
--   <li><a>ptgCallback</a></li>
--   </ul>
projectsTopicsGet :: Text -> ProjectsTopicsGet

-- | Gets the configuration of a topic.
--   
--   <i>See:</i> <a>projectsTopicsGet</a> smart constructor.
data ProjectsTopicsGet

-- | V1 error format.
ptgXgafv :: Lens' ProjectsTopicsGet (Maybe Xgafv)

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

-- | Pretty-print response.
ptgPp :: Lens' ProjectsTopicsGet Bool

-- | OAuth access token.
ptgAccessToken :: Lens' ProjectsTopicsGet (Maybe Text)

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

-- | The name of the topic to get. Format is
--   `projects/{project}/topics/{topic}`.
ptgTopic :: Lens' ProjectsTopicsGet Text

-- | OAuth bearer token.
ptgBearerToken :: Lens' ProjectsTopicsGet (Maybe Text)

-- | JSONP
ptgCallback :: Lens' ProjectsTopicsGet (Maybe Text)
instance GHC.Generics.Generic Network.Google.Resource.PubSub.Projects.Topics.Get.ProjectsTopicsGet
instance Data.Data.Data Network.Google.Resource.PubSub.Projects.Topics.Get.ProjectsTopicsGet
instance GHC.Show.Show Network.Google.Resource.PubSub.Projects.Topics.Get.ProjectsTopicsGet
instance GHC.Classes.Eq Network.Google.Resource.PubSub.Projects.Topics.Get.ProjectsTopicsGet
instance Network.Google.Types.GoogleRequest Network.Google.Resource.PubSub.Projects.Topics.Get.ProjectsTopicsGet


-- | Gets the access control policy for a resource. Returns an empty policy
--   if the resource exists and does not have a policy set.
--   
--   <i>See:</i> <a>Google Cloud Pub/Sub API Reference</a> for
--   <tt>pubsub.projects.topics.getIamPolicy</tt>.
module Network.Google.Resource.PubSub.Projects.Topics.GetIAMPolicy

-- | A resource alias for <tt>pubsub.projects.topics.getIamPolicy</tt>
--   method which the <a>ProjectsTopicsGetIAMPolicy</a> request conforms
--   to.
type ProjectsTopicsGetIAMPolicyResource = "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 :> Get '[JSON] Policy)))))))))

-- | Creates a value of <a>ProjectsTopicsGetIAMPolicy</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>ptgipXgafv</a></li>
--   <li><a>ptgipUploadProtocol</a></li>
--   <li><a>ptgipPp</a></li>
--   <li><a>ptgipAccessToken</a></li>
--   <li><a>ptgipUploadType</a></li>
--   <li><a>ptgipBearerToken</a></li>
--   <li><a>ptgipResource</a></li>
--   <li><a>ptgipCallback</a></li>
--   </ul>
projectsTopicsGetIAMPolicy :: Text -> ProjectsTopicsGetIAMPolicy

-- | Gets the access control policy for a resource. Returns an empty policy
--   if the resource exists and does not have a policy set.
--   
--   <i>See:</i> <a>projectsTopicsGetIAMPolicy</a> smart constructor.
data ProjectsTopicsGetIAMPolicy

-- | V1 error format.
ptgipXgafv :: Lens' ProjectsTopicsGetIAMPolicy (Maybe Xgafv)

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

-- | Pretty-print response.
ptgipPp :: Lens' ProjectsTopicsGetIAMPolicy Bool

-- | OAuth access token.
ptgipAccessToken :: Lens' ProjectsTopicsGetIAMPolicy (Maybe Text)

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

-- | OAuth bearer token.
ptgipBearerToken :: Lens' ProjectsTopicsGetIAMPolicy (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}`.
ptgipResource :: Lens' ProjectsTopicsGetIAMPolicy Text

-- | JSONP
ptgipCallback :: Lens' ProjectsTopicsGetIAMPolicy (Maybe Text)
instance GHC.Generics.Generic Network.Google.Resource.PubSub.Projects.Topics.GetIAMPolicy.ProjectsTopicsGetIAMPolicy
instance Data.Data.Data Network.Google.Resource.PubSub.Projects.Topics.GetIAMPolicy.ProjectsTopicsGetIAMPolicy
instance GHC.Show.Show Network.Google.Resource.PubSub.Projects.Topics.GetIAMPolicy.ProjectsTopicsGetIAMPolicy
instance GHC.Classes.Eq Network.Google.Resource.PubSub.Projects.Topics.GetIAMPolicy.ProjectsTopicsGetIAMPolicy
instance Network.Google.Types.GoogleRequest Network.Google.Resource.PubSub.Projects.Topics.GetIAMPolicy.ProjectsTopicsGetIAMPolicy


-- | Lists matching topics.
--   
--   <i>See:</i> <a>Google Cloud Pub/Sub API Reference</a> for
--   <tt>pubsub.projects.topics.list</tt>.
module Network.Google.Resource.PubSub.Projects.Topics.List

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

-- | Creates a value of <a>ProjectsTopicsList</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>ptlXgafv</a></li>
--   <li><a>ptlUploadProtocol</a></li>
--   <li><a>ptlProject</a></li>
--   <li><a>ptlPp</a></li>
--   <li><a>ptlAccessToken</a></li>
--   <li><a>ptlUploadType</a></li>
--   <li><a>ptlBearerToken</a></li>
--   <li><a>ptlPageToken</a></li>
--   <li><a>ptlPageSize</a></li>
--   <li><a>ptlCallback</a></li>
--   </ul>
projectsTopicsList :: Text -> ProjectsTopicsList

-- | Lists matching topics.
--   
--   <i>See:</i> <a>projectsTopicsList</a> smart constructor.
data ProjectsTopicsList

-- | V1 error format.
ptlXgafv :: Lens' ProjectsTopicsList (Maybe Xgafv)

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

-- | The name of the cloud project that topics belong to. Format is
--   `projects/{project}`.
ptlProject :: Lens' ProjectsTopicsList Text

-- | Pretty-print response.
ptlPp :: Lens' ProjectsTopicsList Bool

-- | OAuth access token.
ptlAccessToken :: Lens' ProjectsTopicsList (Maybe Text)

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

-- | OAuth bearer token.
ptlBearerToken :: Lens' ProjectsTopicsList (Maybe Text)

-- | The value returned by the last `ListTopicsResponse`; indicates that
--   this is a continuation of a prior `ListTopics` call, and that the
--   system should return the next page of data.
ptlPageToken :: Lens' ProjectsTopicsList (Maybe Text)

-- | Maximum number of topics to return.
ptlPageSize :: Lens' ProjectsTopicsList (Maybe Int32)

-- | JSONP
ptlCallback :: Lens' ProjectsTopicsList (Maybe Text)
instance GHC.Generics.Generic Network.Google.Resource.PubSub.Projects.Topics.List.ProjectsTopicsList
instance Data.Data.Data Network.Google.Resource.PubSub.Projects.Topics.List.ProjectsTopicsList
instance GHC.Show.Show Network.Google.Resource.PubSub.Projects.Topics.List.ProjectsTopicsList
instance GHC.Classes.Eq Network.Google.Resource.PubSub.Projects.Topics.List.ProjectsTopicsList
instance Network.Google.Types.GoogleRequest Network.Google.Resource.PubSub.Projects.Topics.List.ProjectsTopicsList


-- | Adds one or more messages to the topic. Returns `NOT_FOUND` if the
--   topic does not exist. The message payload must not be empty; it must
--   contain either a non-empty data field, or at least one attribute.
--   
--   <i>See:</i> <a>Google Cloud Pub/Sub API Reference</a> for
--   <tt>pubsub.projects.topics.publish</tt>.
module Network.Google.Resource.PubSub.Projects.Topics.Publish

-- | A resource alias for <tt>pubsub.projects.topics.publish</tt> method
--   which the <a>ProjectsTopicsPublish</a> request conforms to.
type ProjectsTopicsPublishResource = "v1" :> (CaptureMode "topic" "publish" 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] PublishRequest :> Post '[JSON] PublishResponse))))))))))

-- | Creates a value of <a>ProjectsTopicsPublish</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>ptpXgafv</a></li>
--   <li><a>ptpUploadProtocol</a></li>
--   <li><a>ptpPp</a></li>
--   <li><a>ptpAccessToken</a></li>
--   <li><a>ptpUploadType</a></li>
--   <li><a>ptpPayload</a></li>
--   <li><a>ptpTopic</a></li>
--   <li><a>ptpBearerToken</a></li>
--   <li><a>ptpCallback</a></li>
--   </ul>
projectsTopicsPublish :: PublishRequest -> Text -> ProjectsTopicsPublish

-- | Adds one or more messages to the topic. Returns `NOT_FOUND` if the
--   topic does not exist. The message payload must not be empty; it must
--   contain either a non-empty data field, or at least one attribute.
--   
--   <i>See:</i> <a>projectsTopicsPublish</a> smart constructor.
data ProjectsTopicsPublish

-- | V1 error format.
ptpXgafv :: Lens' ProjectsTopicsPublish (Maybe Xgafv)

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

-- | Pretty-print response.
ptpPp :: Lens' ProjectsTopicsPublish Bool

-- | OAuth access token.
ptpAccessToken :: Lens' ProjectsTopicsPublish (Maybe Text)

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

-- | Multipart request metadata.
ptpPayload :: Lens' ProjectsTopicsPublish PublishRequest

-- | The messages in the request will be published on this topic. Format is
--   `projects/{project}/topics/{topic}`.
ptpTopic :: Lens' ProjectsTopicsPublish Text

-- | OAuth bearer token.
ptpBearerToken :: Lens' ProjectsTopicsPublish (Maybe Text)

-- | JSONP
ptpCallback :: Lens' ProjectsTopicsPublish (Maybe Text)
instance GHC.Generics.Generic Network.Google.Resource.PubSub.Projects.Topics.Publish.ProjectsTopicsPublish
instance Data.Data.Data Network.Google.Resource.PubSub.Projects.Topics.Publish.ProjectsTopicsPublish
instance GHC.Show.Show Network.Google.Resource.PubSub.Projects.Topics.Publish.ProjectsTopicsPublish
instance GHC.Classes.Eq Network.Google.Resource.PubSub.Projects.Topics.Publish.ProjectsTopicsPublish
instance Network.Google.Types.GoogleRequest Network.Google.Resource.PubSub.Projects.Topics.Publish.ProjectsTopicsPublish


-- | Sets the access control policy on the specified resource. Replaces any
--   existing policy.
--   
--   <i>See:</i> <a>Google Cloud Pub/Sub API Reference</a> for
--   <tt>pubsub.projects.topics.setIamPolicy</tt>.
module Network.Google.Resource.PubSub.Projects.Topics.SetIAMPolicy

-- | A resource alias for <tt>pubsub.projects.topics.setIamPolicy</tt>
--   method which the <a>ProjectsTopicsSetIAMPolicy</a> request conforms
--   to.
type ProjectsTopicsSetIAMPolicyResource = "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>ProjectsTopicsSetIAMPolicy</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>ptsipXgafv</a></li>
--   <li><a>ptsipUploadProtocol</a></li>
--   <li><a>ptsipPp</a></li>
--   <li><a>ptsipAccessToken</a></li>
--   <li><a>ptsipUploadType</a></li>
--   <li><a>ptsipPayload</a></li>
--   <li><a>ptsipBearerToken</a></li>
--   <li><a>ptsipResource</a></li>
--   <li><a>ptsipCallback</a></li>
--   </ul>
projectsTopicsSetIAMPolicy :: SetIAMPolicyRequest -> Text -> ProjectsTopicsSetIAMPolicy

-- | Sets the access control policy on the specified resource. Replaces any
--   existing policy.
--   
--   <i>See:</i> <a>projectsTopicsSetIAMPolicy</a> smart constructor.
data ProjectsTopicsSetIAMPolicy

-- | V1 error format.
ptsipXgafv :: Lens' ProjectsTopicsSetIAMPolicy (Maybe Xgafv)

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

-- | Pretty-print response.
ptsipPp :: Lens' ProjectsTopicsSetIAMPolicy Bool

-- | OAuth access token.
ptsipAccessToken :: Lens' ProjectsTopicsSetIAMPolicy (Maybe Text)

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

-- | Multipart request metadata.
ptsipPayload :: Lens' ProjectsTopicsSetIAMPolicy SetIAMPolicyRequest

-- | OAuth bearer token.
ptsipBearerToken :: Lens' ProjectsTopicsSetIAMPolicy (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}`.
ptsipResource :: Lens' ProjectsTopicsSetIAMPolicy Text

-- | JSONP
ptsipCallback :: Lens' ProjectsTopicsSetIAMPolicy (Maybe Text)
instance GHC.Generics.Generic Network.Google.Resource.PubSub.Projects.Topics.SetIAMPolicy.ProjectsTopicsSetIAMPolicy
instance Data.Data.Data Network.Google.Resource.PubSub.Projects.Topics.SetIAMPolicy.ProjectsTopicsSetIAMPolicy
instance GHC.Show.Show Network.Google.Resource.PubSub.Projects.Topics.SetIAMPolicy.ProjectsTopicsSetIAMPolicy
instance GHC.Classes.Eq Network.Google.Resource.PubSub.Projects.Topics.SetIAMPolicy.ProjectsTopicsSetIAMPolicy
instance Network.Google.Types.GoogleRequest Network.Google.Resource.PubSub.Projects.Topics.SetIAMPolicy.ProjectsTopicsSetIAMPolicy


-- | Lists the name of the subscriptions for this topic.
--   
--   <i>See:</i> <a>Google Cloud Pub/Sub API Reference</a> for
--   <tt>pubsub.projects.topics.subscriptions.list</tt>.
module Network.Google.Resource.PubSub.Projects.Topics.Subscriptions.List

-- | A resource alias for
--   <tt>pubsub.projects.topics.subscriptions.list</tt> method which the
--   <a>ProjectsTopicsSubscriptionsList</a> request conforms to.
type ProjectsTopicsSubscriptionsListResource = "v1" :> (Capture "topic" Text :> ("subscriptions" :> (QueryParam "$.xgafv" Xgafv :> (QueryParam "upload_protocol" Text :> (QueryParam "pp" Bool :> (QueryParam "access_token" Text :> (QueryParam "uploadType" Text :> (QueryParam "bearer_token" Text :> (QueryParam "pageToken" Text :> (QueryParam "pageSize" (Textual Int32) :> (QueryParam "callback" Text :> (QueryParam "alt" AltJSON :> Get '[JSON] ListTopicSubscriptionsResponse))))))))))))

-- | Creates a value of <a>ProjectsTopicsSubscriptionsList</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>ptslXgafv</a></li>
--   <li><a>ptslUploadProtocol</a></li>
--   <li><a>ptslPp</a></li>
--   <li><a>ptslAccessToken</a></li>
--   <li><a>ptslUploadType</a></li>
--   <li><a>ptslTopic</a></li>
--   <li><a>ptslBearerToken</a></li>
--   <li><a>ptslPageToken</a></li>
--   <li><a>ptslPageSize</a></li>
--   <li><a>ptslCallback</a></li>
--   </ul>
projectsTopicsSubscriptionsList :: Text -> ProjectsTopicsSubscriptionsList

-- | Lists the name of the subscriptions for this topic.
--   
--   <i>See:</i> <a>projectsTopicsSubscriptionsList</a> smart constructor.
data ProjectsTopicsSubscriptionsList

-- | V1 error format.
ptslXgafv :: Lens' ProjectsTopicsSubscriptionsList (Maybe Xgafv)

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

-- | Pretty-print response.
ptslPp :: Lens' ProjectsTopicsSubscriptionsList Bool

-- | OAuth access token.
ptslAccessToken :: Lens' ProjectsTopicsSubscriptionsList (Maybe Text)

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

-- | The name of the topic that subscriptions are attached to. Format is
--   `projects/{project}/topics/{topic}`.
ptslTopic :: Lens' ProjectsTopicsSubscriptionsList Text

-- | OAuth bearer token.
ptslBearerToken :: Lens' ProjectsTopicsSubscriptionsList (Maybe Text)

-- | The value returned by the last `ListTopicSubscriptionsResponse`;
--   indicates that this is a continuation of a prior
--   `ListTopicSubscriptions` call, and that the system should return the
--   next page of data.
ptslPageToken :: Lens' ProjectsTopicsSubscriptionsList (Maybe Text)

-- | Maximum number of subscription names to return.
ptslPageSize :: Lens' ProjectsTopicsSubscriptionsList (Maybe Int32)

-- | JSONP
ptslCallback :: Lens' ProjectsTopicsSubscriptionsList (Maybe Text)
instance GHC.Generics.Generic Network.Google.Resource.PubSub.Projects.Topics.Subscriptions.List.ProjectsTopicsSubscriptionsList
instance Data.Data.Data Network.Google.Resource.PubSub.Projects.Topics.Subscriptions.List.ProjectsTopicsSubscriptionsList
instance GHC.Show.Show Network.Google.Resource.PubSub.Projects.Topics.Subscriptions.List.ProjectsTopicsSubscriptionsList
instance GHC.Classes.Eq Network.Google.Resource.PubSub.Projects.Topics.Subscriptions.List.ProjectsTopicsSubscriptionsList
instance Network.Google.Types.GoogleRequest Network.Google.Resource.PubSub.Projects.Topics.Subscriptions.List.ProjectsTopicsSubscriptionsList


-- | Returns permissions that a caller has on the specified resource. If
--   the resource does not exist, this will return an empty set of
--   permissions, not a NOT_FOUND error.
--   
--   <i>See:</i> <a>Google Cloud Pub/Sub API Reference</a> for
--   <tt>pubsub.projects.topics.testIamPermissions</tt>.
module Network.Google.Resource.PubSub.Projects.Topics.TestIAMPermissions

-- | A resource alias for
--   <tt>pubsub.projects.topics.testIamPermissions</tt> method which the
--   <a>ProjectsTopicsTestIAMPermissions</a> request conforms to.
type ProjectsTopicsTestIAMPermissionsResource = "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>ProjectsTopicsTestIAMPermissions</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>pttipXgafv</a></li>
--   <li><a>pttipUploadProtocol</a></li>
--   <li><a>pttipPp</a></li>
--   <li><a>pttipAccessToken</a></li>
--   <li><a>pttipUploadType</a></li>
--   <li><a>pttipPayload</a></li>
--   <li><a>pttipBearerToken</a></li>
--   <li><a>pttipResource</a></li>
--   <li><a>pttipCallback</a></li>
--   </ul>
projectsTopicsTestIAMPermissions :: TestIAMPermissionsRequest -> Text -> ProjectsTopicsTestIAMPermissions

-- | Returns permissions that a caller has on the specified resource. If
--   the resource does not exist, this will return an empty set of
--   permissions, not a NOT_FOUND error.
--   
--   <i>See:</i> <a>projectsTopicsTestIAMPermissions</a> smart constructor.
data ProjectsTopicsTestIAMPermissions

-- | V1 error format.
pttipXgafv :: Lens' ProjectsTopicsTestIAMPermissions (Maybe Xgafv)

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

-- | Pretty-print response.
pttipPp :: Lens' ProjectsTopicsTestIAMPermissions Bool

-- | OAuth access token.
pttipAccessToken :: Lens' ProjectsTopicsTestIAMPermissions (Maybe Text)

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

-- | Multipart request metadata.
pttipPayload :: Lens' ProjectsTopicsTestIAMPermissions TestIAMPermissionsRequest

-- | OAuth bearer token.
pttipBearerToken :: Lens' ProjectsTopicsTestIAMPermissions (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}`.
pttipResource :: Lens' ProjectsTopicsTestIAMPermissions Text

-- | JSONP
pttipCallback :: Lens' ProjectsTopicsTestIAMPermissions (Maybe Text)
instance GHC.Generics.Generic Network.Google.Resource.PubSub.Projects.Topics.TestIAMPermissions.ProjectsTopicsTestIAMPermissions
instance Data.Data.Data Network.Google.Resource.PubSub.Projects.Topics.TestIAMPermissions.ProjectsTopicsTestIAMPermissions
instance GHC.Show.Show Network.Google.Resource.PubSub.Projects.Topics.TestIAMPermissions.ProjectsTopicsTestIAMPermissions
instance GHC.Classes.Eq Network.Google.Resource.PubSub.Projects.Topics.TestIAMPermissions.ProjectsTopicsTestIAMPermissions
instance Network.Google.Types.GoogleRequest Network.Google.Resource.PubSub.Projects.Topics.TestIAMPermissions.ProjectsTopicsTestIAMPermissions


-- | Provides reliable, many-to-many, asynchronous messaging between
--   applications.
--   
--   <i>See:</i> <a>Google Cloud Pub/Sub API Reference</a>
module Network.Google.PubSub

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

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

-- | View and manage Pub/Sub topics and subscriptions
pubSubScope :: Proxy '["https://www.googleapis.com/auth/pubsub"]

-- | Represents the entirety of the methods and resources available for the
--   Google Cloud Pub/Sub API service.
type PubSubAPI = ProjectsTopicsSubscriptionsListResource :<|> (ProjectsTopicsListResource :<|> (ProjectsTopicsGetIAMPolicyResource :<|> (ProjectsTopicsGetResource :<|> (ProjectsTopicsCreateResource :<|> (ProjectsTopicsSetIAMPolicyResource :<|> (ProjectsTopicsTestIAMPermissionsResource :<|> (ProjectsTopicsDeleteResource :<|> (ProjectsTopicsPublishResource :<|> (ProjectsSnapshotsGetIAMPolicyResource :<|> (ProjectsSnapshotsSetIAMPolicyResource :<|> (ProjectsSnapshotsTestIAMPermissionsResource :<|> (ProjectsSubscriptionsListResource :<|> (ProjectsSubscriptionsAcknowledgeResource :<|> (ProjectsSubscriptionsGetIAMPolicyResource :<|> (ProjectsSubscriptionsModifyAckDeadlineResource :<|> (ProjectsSubscriptionsGetResource :<|> (ProjectsSubscriptionsModifyPushConfigResource :<|> (ProjectsSubscriptionsCreateResource :<|> (ProjectsSubscriptionsSetIAMPolicyResource :<|> (ProjectsSubscriptionsPullResource :<|> (ProjectsSubscriptionsTestIAMPermissionsResource :<|> ProjectsSubscriptionsDeleteResource)))))))))))))))))))))

-- | Configuration for a push delivery endpoint.
--   
--   <i>See:</i> <a>pushConfig</a> smart constructor.
data PushConfig

-- | Creates a value of <a>PushConfig</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>pcAttributes</a></li>
--   <li><a>pcPushEndpoint</a></li>
--   </ul>
pushConfig :: PushConfig

-- | Endpoint configuration attributes. Every endpoint has a set of API
--   supported attributes that can be used to control different aspects of
--   the message delivery. The currently supported attribute is
--   `x-goog-version`, which you can use to change the format of the push
--   message. This attribute indicates the version of the data expected by
--   the endpoint. This controls the shape of the envelope (i.e. its fields
--   and metadata). The endpoint version is based on the version of the
--   Pub/Sub API. If not present during the `CreateSubscription` call, it
--   will default to the version of the API used to make such call. If not
--   present during a `ModifyPushConfig` call, its value will not be
--   changed. `GetSubscription` calls will always return a valid version,
--   even if the subscription was created without this attribute. The
--   possible values for this attribute are: * `v1beta1`: uses the push
--   format defined in the v1beta1 Pub/Sub API. * `v1` or `v1beta2`: uses
--   the push format defined in the v1 Pub/Sub API.
pcAttributes :: Lens' PushConfig (Maybe PushConfigAttributes)

-- | A URL locating the endpoint to which messages should be pushed. For
--   example, a Webhook endpoint might use "https://example.com/push".
pcPushEndpoint :: Lens' PushConfig (Maybe Text)

-- | A message and its corresponding acknowledgment ID.
--   
--   <i>See:</i> <a>receivedMessage</a> smart constructor.
data ReceivedMessage

-- | Creates a value of <a>ReceivedMessage</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>rmAckId</a></li>
--   <li><a>rmMessage</a></li>
--   </ul>
receivedMessage :: ReceivedMessage

-- | This ID can be used to acknowledge the received message.
rmAckId :: Lens' ReceivedMessage (Maybe Text)

-- | The message.
rmMessage :: Lens' ReceivedMessage (Maybe PubsubMessage)

-- | Request for the ModifyAckDeadline method.
--   
--   <i>See:</i> <a>modifyAckDeadlineRequest</a> smart constructor.
data ModifyAckDeadlineRequest

-- | Creates a value of <a>ModifyAckDeadlineRequest</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>madrAckIds</a></li>
--   <li><a>madrAckDeadlineSeconds</a></li>
--   </ul>
modifyAckDeadlineRequest :: ModifyAckDeadlineRequest

-- | List of acknowledgment IDs.
madrAckIds :: Lens' ModifyAckDeadlineRequest [Text]

-- | The new ack deadline with respect to the time this request was sent to
--   the Pub/Sub system. For example, if the value is 10, the new ack
--   deadline will expire 10 seconds after the `ModifyAckDeadline` call was
--   made. Specifying zero may immediately make the message available for
--   another pull request. The minimum deadline you can specify is 0
--   seconds. The maximum deadline you can specify is 600 seconds (10
--   minutes).
madrAckDeadlineSeconds :: Lens' ModifyAckDeadlineRequest (Maybe Int32)

-- | Request for the ModifyPushConfig method.
--   
--   <i>See:</i> <a>modifyPushConfigRequest</a> smart constructor.
data ModifyPushConfigRequest

-- | Creates a value of <a>ModifyPushConfigRequest</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>mpcrPushConfig</a></li>
--   </ul>
modifyPushConfigRequest :: ModifyPushConfigRequest

-- | The push configuration for future deliveries. An empty `pushConfig`
--   indicates that the Pub/Sub system should stop pushing messages from
--   the given subscription and allow messages to be pulled and
--   acknowledged - effectively pausing the subscription if `Pull` is not
--   called.
mpcrPushConfig :: Lens' ModifyPushConfigRequest (Maybe PushConfig)

-- | 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

-- | A message data and its attributes. The message payload must not be
--   empty; it must contain either a non-empty data field, or at least one
--   attribute.
--   
--   <i>See:</i> <a>pubsubMessage</a> smart constructor.
data PubsubMessage

-- | Creates a value of <a>PubsubMessage</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>pmData</a></li>
--   <li><a>pmPublishTime</a></li>
--   <li><a>pmAttributes</a></li>
--   <li><a>pmMessageId</a></li>
--   </ul>
pubsubMessage :: PubsubMessage

-- | The message payload.
pmData :: Lens' PubsubMessage (Maybe ByteString)

-- | The time at which the message was published, populated by the server
--   when it receives the `Publish` call. It must not be populated by the
--   publisher in a `Publish` call.
pmPublishTime :: Lens' PubsubMessage (Maybe UTCTime)

-- | Optional attributes for this message.
pmAttributes :: Lens' PubsubMessage (Maybe PubsubMessageAttributes)

-- | ID of this message, assigned by the server when the message is
--   published. Guaranteed to be unique within the topic. This value may be
--   read by a subscriber that receives a `PubsubMessage` via a `Pull` call
--   or a push delivery. It must not be populated by the publisher in a
--   `Publish` call.
pmMessageId :: Lens' PubsubMessage (Maybe Text)

-- | Response for the `ListTopicSubscriptions` method.
--   
--   <i>See:</i> <a>listTopicSubscriptionsResponse</a> smart constructor.
data ListTopicSubscriptionsResponse

-- | Creates a value of <a>ListTopicSubscriptionsResponse</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>ltsrNextPageToken</a></li>
--   <li><a>ltsrSubscriptions</a></li>
--   </ul>
listTopicSubscriptionsResponse :: ListTopicSubscriptionsResponse

-- | If not empty, indicates that there may be more subscriptions that
--   match the request; this value should be passed in a new
--   `ListTopicSubscriptionsRequest` to get more subscriptions.
ltsrNextPageToken :: Lens' ListTopicSubscriptionsResponse (Maybe Text)

-- | The names of the subscriptions that match the request.
ltsrSubscriptions :: Lens' ListTopicSubscriptionsResponse [Text]

-- | Response for the `ListTopics` method.
--   
--   <i>See:</i> <a>listTopicsResponse</a> smart constructor.
data ListTopicsResponse

-- | Creates a value of <a>ListTopicsResponse</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>ltrNextPageToken</a></li>
--   <li><a>ltrTopics</a></li>
--   </ul>
listTopicsResponse :: ListTopicsResponse

-- | If not empty, indicates that there may be more topics that match the
--   request; this value should be passed in a new `ListTopicsRequest`.
ltrNextPageToken :: Lens' ListTopicsResponse (Maybe Text)

-- | The resulting topics.
ltrTopics :: Lens' ListTopicsResponse [Topic]

-- | Response for the `Pull` method.
--   
--   <i>See:</i> <a>pullResponse</a> smart constructor.
data PullResponse

-- | Creates a value of <a>PullResponse</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>prReceivedMessages</a></li>
--   </ul>
pullResponse :: PullResponse

-- | Received Pub/Sub messages. The Pub/Sub system will return zero
--   messages if there are no more available in the backlog. The Pub/Sub
--   system may return fewer than the `maxMessages` requested even if there
--   are more messages available in the backlog.
prReceivedMessages :: Lens' PullResponse [ReceivedMessage]

-- | 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)

-- | A topic resource.
--   
--   <i>See:</i> <a>topic</a> smart constructor.
data Topic

-- | Creates a value of <a>Topic</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>tName</a></li>
--   </ul>
topic :: Topic

-- | The name of the topic. It must have the format
--   `"projects/{project}/topics/{topic}"`. `{topic}` must start with a
--   letter, and contain only letters (`[A-Za-z]`), numbers (`[0-9]`),
--   dashes (`-`), underscores (`_`), periods (`.`), tildes (`~`), plus
--   (`+`) or percent signs (`%`). It must be between 3 and 255 characters
--   in length, and it must not start with `"goog"`.
tName :: Lens' Topic (Maybe Text)

-- | Request for the `Pull` method.
--   
--   <i>See:</i> <a>pullRequest</a> smart constructor.
data PullRequest

-- | Creates a value of <a>PullRequest</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>prMaxMessages</a></li>
--   <li><a>prReturnImmediately</a></li>
--   </ul>
pullRequest :: PullRequest

-- | The maximum number of messages returned for this request. The Pub/Sub
--   system may return fewer than the number specified.
prMaxMessages :: Lens' PullRequest (Maybe Int32)

-- | If this field set to true, the system will respond immediately even if
--   it there are no messages available to return in the `Pull` response.
--   Otherwise, the system may wait (for a bounded amount of time) until at
--   least one message is available, rather than returning no messages. The
--   client may cancel the request if it does not wish to wait any longer
--   for the response.
prReturnImmediately :: Lens' PullRequest (Maybe Bool)

-- | Optional attributes for this message.
--   
--   <i>See:</i> <a>pubsubMessageAttributes</a> smart constructor.
data PubsubMessageAttributes

-- | Creates a value of <a>PubsubMessageAttributes</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>pmaAddtional</a></li>
--   </ul>
pubsubMessageAttributes :: HashMap Text Text -> PubsubMessageAttributes
pmaAddtional :: Lens' PubsubMessageAttributes (HashMap Text Text)

-- | 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]

-- | Response for the `Publish` method.
--   
--   <i>See:</i> <a>publishResponse</a> smart constructor.
data PublishResponse

-- | Creates a value of <a>PublishResponse</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>prMessageIds</a></li>
--   </ul>
publishResponse :: PublishResponse

-- | The server-assigned ID of each published message, in the same order as
--   the messages in the request. IDs are guaranteed to be unique within
--   the topic.
prMessageIds :: Lens' PublishResponse [Text]

-- | Request for the Publish method.
--   
--   <i>See:</i> <a>publishRequest</a> smart constructor.
data PublishRequest

-- | Creates a value of <a>PublishRequest</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>prMessages</a></li>
--   </ul>
publishRequest :: PublishRequest

-- | The messages to publish.
prMessages :: Lens' PublishRequest [PubsubMessage]

-- | 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]

-- | Endpoint configuration attributes. Every endpoint has a set of API
--   supported attributes that can be used to control different aspects of
--   the message delivery. The currently supported attribute is
--   `x-goog-version`, which you can use to change the format of the push
--   message. This attribute indicates the version of the data expected by
--   the endpoint. This controls the shape of the envelope (i.e. its fields
--   and metadata). The endpoint version is based on the version of the
--   Pub/Sub API. If not present during the `CreateSubscription` call, it
--   will default to the version of the API used to make such call. If not
--   present during a `ModifyPushConfig` call, its value will not be
--   changed. `GetSubscription` calls will always return a valid version,
--   even if the subscription was created without this attribute. The
--   possible values for this attribute are: * `v1beta1`: uses the push
--   format defined in the v1beta1 Pub/Sub API. * `v1` or `v1beta2`: uses
--   the push format defined in the v1 Pub/Sub API.
--   
--   <i>See:</i> <a>pushConfigAttributes</a> smart constructor.
data PushConfigAttributes

-- | Creates a value of <a>PushConfigAttributes</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>pcaAddtional</a></li>
--   </ul>
pushConfigAttributes :: HashMap Text Text -> PushConfigAttributes
pcaAddtional :: Lens' PushConfigAttributes (HashMap Text Text)

-- | A subscription resource.
--   
--   <i>See:</i> <a>subscription</a> smart constructor.
data Subscription

-- | Creates a value of <a>Subscription</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>sPushConfig</a></li>
--   <li><a>sTopic</a></li>
--   <li><a>sName</a></li>
--   <li><a>sAckDeadlineSeconds</a></li>
--   </ul>
subscription :: Subscription

-- | If push delivery is used with this subscription, this field is used to
--   configure it. An empty `pushConfig` signifies that the subscriber will
--   pull and ack messages using API methods.
sPushConfig :: Lens' Subscription (Maybe PushConfig)

-- | The name of the topic from which this subscription is receiving
--   messages. Format is `projects/{project}/topics/{topic}`. The value of
--   this field will be `_deleted-topic_` if the topic has been deleted.
sTopic :: Lens' Subscription (Maybe Text)

-- | The name of the subscription. It must have the format
--   `"projects/{project}/subscriptions/{subscription}"`. `{subscription}`
--   must start with a letter, and contain only letters (`[A-Za-z]`),
--   numbers (`[0-9]`), dashes (`-`), underscores (`_`), periods (`.`),
--   tildes (`~`), plus (`+`) or percent signs (`%`). It must be between 3
--   and 255 characters in length, and it must not start with `"goog"`.
sName :: Lens' Subscription (Maybe Text)

-- | This value is the maximum time after a subscriber receives a message
--   before the subscriber should acknowledge the message. After message
--   delivery but before the ack deadline expires and before the message is
--   acknowledged, it is an outstanding message and will not be delivered
--   again during that time (on a best-effort basis). For pull
--   subscriptions, this value is used as the initial value for the ack
--   deadline. To override this value for a given message, call
--   `ModifyAckDeadline` with the corresponding `ack_id` if using pull. The
--   minimum custom deadline you can specify is 10 seconds. The maximum
--   custom deadline you can specify is 600 seconds (10 minutes). If this
--   parameter is 0, a default value of 10 seconds is used. For push
--   delivery, this value is also used to set the request timeout for the
--   call to the push endpoint. If the subscriber never acknowledges the
--   message, the Pub/Sub system will eventually redeliver the message.
sAckDeadlineSeconds :: Lens' Subscription (Maybe Int32)

-- | Response for the `ListSubscriptions` method.
--   
--   <i>See:</i> <a>listSubscriptionsResponse</a> smart constructor.
data ListSubscriptionsResponse

-- | Creates a value of <a>ListSubscriptionsResponse</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>lsrNextPageToken</a></li>
--   <li><a>lsrSubscriptions</a></li>
--   </ul>
listSubscriptionsResponse :: ListSubscriptionsResponse

-- | If not empty, indicates that there may be more subscriptions that
--   match the request; this value should be passed in a new
--   `ListSubscriptionsRequest` to get more subscriptions.
lsrNextPageToken :: Lens' ListSubscriptionsResponse (Maybe Text)

-- | The subscriptions that match the request.
lsrSubscriptions :: Lens' ListSubscriptionsResponse [Subscription]

-- | 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)

-- | Request for the Acknowledge method.
--   
--   <i>See:</i> <a>acknowledgeRequest</a> smart constructor.
data AcknowledgeRequest

-- | Creates a value of <a>AcknowledgeRequest</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>arAckIds</a></li>
--   </ul>
acknowledgeRequest :: AcknowledgeRequest

-- | The acknowledgment ID for the messages being acknowledged that was
--   returned by the Pub/Sub system in the `Pull` response. Must not be
--   empty.
arAckIds :: Lens' AcknowledgeRequest [Text]
