// THIS FILE IS AUTOMATICALLY GENERATED: DO NOT EDIT
= image:kamelets/google-mail-source.svg[] Google Mail Source

*Provided by: "Apache Software Foundation"*

Receive data from Google Mail.

== Configuration Options

The following table summarizes the configuration options available for the `google-mail-source` Kamelet:
[width="100%",cols="2,^2,3,^2,^2,^3",options="header"]
|===
| Property| Name| Description| Type| Default| Example
| *accessToken {empty}* *| Access Token| OAuth 2 access token for google mail application. This typically expires after an hour so refreshToken is recommended for long term usage.| string| | 
| *applicationName {empty}* *| Application name| Google Mail application name| string| | 
| *clientId {empty}* *| Client Id| Client ID of the gmail application| string| | 
| *clientSecret {empty}* *| Client Secret| Client Secret of the gmail application| string| | 
| *index {empty}* *| Index| An index for the google mail endpoint| string| | 
| *refreshToken {empty}* *| Refresh Token| OAuth 2 refresh token for google mail application. Using this, the Google Calendar component can obtain a new accessToken whenever the current one expires - a necessity if the application is long-lived.| string| | 
| delay| Delay| Milliseconds before the next poll| integer| `500`| 
| labels| Gmail labels| Comma separated list of labels to take into account| string| | `"inbox"`
| markAsRead| Mark as read| Mark the message as read once it has been consumed| boolean| `true`| 
| query| Gmail query| The query to execute on gmail box| string| `"is:unread"`| `"is:unread -category:(promotions OR social)"`
|===

NOTE: Fields marked with ({empty}*) are mandatory.

== Usage

This section summarizes how the `google-mail-source` can be used in various contexts.

=== Knative Source

The `google-mail-source` Kamelet can be used as Knative source by binding it to a Knative object.

.google-mail-source-binding.yaml
[source,yaml]
----
apiVersion: camel.apache.org/v1alpha1
kind: KameletBinding
metadata:
  name: google-mail-source-binding
spec:
  source:
    ref:
      kind: Kamelet
      apiVersion: camel.apache.org/v1alpha1
      name: google-mail-source
    properties:
      accessToken: "The Access Token"
      applicationName: "The Application name"
      clientId: "The Client Id"
      clientSecret: "The Client Secret"
      index: "The Index"
      refreshToken: "The Refresh Token"
  sink:
    ref:
      kind: InMemoryChannel
      apiVersion: messaging.knative.dev/v1
      name: mychannel

----

Make sure you have xref:latest@camel-k::installation/installation.adoc[Camel K installed] into the Kubernetes cluster you're connected to.

Save the `google-mail-source-binding.yaml` file into your hard drive, then configure it according to your needs.

You can run the source using the following command:

[source,shell]
----
kubectl apply -f google-mail-source-binding.yaml
----
// THIS FILE IS AUTOMATICALLY GENERATED: DO NOT EDIT
