-
Notifications
You must be signed in to change notification settings - Fork 16
Description
Overview
HTTP endpoints allow you to subscribe to changes from an API. You can use defineHttpEndpoint
to receive webhooks, verify them, and create an HTTP Trigger.
Details:
The task is to create a job example which is triggered by an HTTP Trigger when a change is received from Google Drive.
Reference material:
- Read our HTTP endpoints docs
- Read our SDK reference docs
- Check out our simple Cal.com example. This is a simple implementation.
- Check out our WhatsApp example. This is a more advanced implementation (using
respondWith
) because WhatsApp sends a verification GET request to confirm before the webhooks can be created. Most APIs don't required this.
Requirements:
- Use the structure of our Cal.com example.
- The example must connect to Google Drive, receive a payload which triggers an HTTP Trigger, and then perform a simple job.
Guidelines:
- The code must use TypeScript
- The job must use an HTTP Trigger
- Create a TypeScript type for the webhook, ideally use types from the official SDK from the API.
- Cast the json to that type using
const body = await request.json() as WebhookPayload
- Use native fetch where no official SDK or incompatible auth
- Avoid external packages apart from official SDKs
- Prefer REST over GraphQL - avoid raw queries
- Use a minimal
io.runTask()
callback - initialise clients and auth in global scope if possible - Leave clear comments with links to relevant developer docs, API key pages etc.
Required structure:
-
Follow this guide to get the project setup.
-
Create a new file in the src folder, named to match the API, with '-http-endpoint' at the end (e.g. GitHub would be called
github-http-endpoint.ts
). -
The Trigger.dev client must be defined at the top of the job, with the 'api-reference' id:
const client = new TriggerClient({ id: "api-reference" });
4. You must add the Express specific lines to the bottom of the Job file:
// These lines can be removed if you don't want to use express
import { createExpressServer } from "@trigger.dev/express";
createExpressServer(client);
5. You must add the new script to the package.json file, in this format:
"scripts": {
//..other scripts
"<api-name>": "nodemon --watch src/<api name>.ts -r tsconfig-paths/register -r dotenv/config src/<api name>.ts"
}
Important
You must test this Job works before submitting your PR, including a video or screenshot of a successful run. This may involve you having to setup accounts with services.