Cloud Elements supports events via polling or webhooks depending on the API provider. If you would like to see more information on our Events framework, please see the Event Management Guide.
Cloud Elements supports polling events for Google Drive. Whenever a file or folder is created, updated, or deleted, Cloud Elements receives an event from Google Drive. After receiving an event, Cloud Elements standardizes the payload and sends an event to the configured callback URL of your authenticated element instance. You can set up polling for the documents
resource.
You can configure polling through the UI or in the JSON body of the /instances
API request .
For more information about each field described here, see Parameters.
To authenticate an element instance with polling:
Provide your Google Drive credentials, and then allow the connection.
After you authenticate with the API Provider, the authentication flow returns you to Cloud Elements.
Note the Token and ID and save them for all future requests using the element instance.
Use the /instances
endpoint to authenticate with Google Drive and create an element instance with polling enabled.
To authenticate an element instance with polling:
Construct a JSON body as shown below (see Parameters):
{
"element":{
"key":"googledrive"
},
"providerData":{
"code": "<AUTHORIZATION_GRANT_CODE>"
},
"configuration":{
"oauth.callback.url": "<CALLBACK_URL>",
"oauth.api.key": "<CONSUMER_KEY>",
"oauth.api.secret": "<CONSUMER_SECRET>",
"document.root.folder.name": "<DIRECTORY_NAME>",
"event.notification.enabled": true,
"event.vendor.type": "polling",
"event.notification.callback.url": "http://mycoolapp.com",
"event.poller.refresh_interval": "<minutes>"
},
"tags":[
"<Add_Your_Tag>"
],
"name":"<INSTANCE_NAME>"
}
Call the following, including the JSON body you constructed in the previous step:
POST /instances
Locate the token
and id
in the response and save them for all future requests using the element instance.
curl -X POST \
https://api.cloud-elements.com/elements/api-v2/instances \
-H 'authorization: User <USER_SECRET>, Organization <ORGANIZATION_SECRET>' \
-H 'content-type: application/json' \
-d '{
"element": {
"key": "googledrive"
},
"providerData":{
"code": "<AUTHORIZATION_GRANT_CODE>"
},
"configuration": {
"oauth.callback.url": "http://mycoolapp.com",
"oauth.api.key": "xxxxxxxxxxxxxxxxxx",
"oauth.api.secret": "xxxxxxxxxxxxxxxxxxxxxxxx",
"document.root.folder.name": "My Drive",
"event.notification.enabled": true,
"event.vendor.type": "polling",
"event.notification.callback.url": "https://my.cloudelements.io/api-v2/events/googledrive/",
"event.poller.refresh_interval": "15"
},
"tags": [
"Docs"
],
"name": "API Instance with Polling"
}'
API parameters not shown in Cloud Elements are in code formatting
.
Parameter | Description | Data Type |
---|---|---|
'key' | The element key. googledrive |
string |
Namename |
The name for the element instance created during authentication. | Body |
oauth.callback.url |
The Callback URL that was registered when creating credentials in your Google Drive project. This is the Callback URL that you noted at the end of the Endpoint Setup section. | |
oauth.api.key |
The OAuth Client ID from Google Drive. This is the Client ID that you noted at the end of the Endpoint Setup section | string |
oauth.api.secret |
The OAuth Client Secret from Google Drive. This is the Client Secret that you noted at the end of the Endpoint Setup section | string |
Document Root Folderdocument.root.folder.name |
The directory on Google Drive that contains the documents that you want to connect. | string |
Events Enabled event.notification.enabled |
Optional. Identifies that events are enabled for the element instance.Default: false . |
boolean |
Event Typeevent.vendor.type |
Optional. The event type used to monitor events. Polling is the default and only supported event type for Google Drive. | string |
Event Notification Callback URLevent.notification.callback.url |
The URL where you want Cloud Elements to send the events. | string |
Event poller refresh interval (mins)event.poller.refresh_interval |
A number in minutes to identify how often the poller should check for changes. | number |
Callback Notification Signature Key event.notification.signature.key |
Optional. A user-defined key for added security to show that events have not been tampered with. | string |
tags | Optional. User-defined tags to further identify the instance. | string |