{"id":37193038,"url":"https://github.com/frain-dev/convoy-ingester","last_synced_at":"2026-01-14T22:24:15.094Z","repository":{"id":40478612,"uuid":"478984737","full_name":"frain-dev/convoy-ingester","owner":"frain-dev","description":"Serverless function for incoming webhooks.","archived":true,"fork":false,"pushed_at":"2022-05-06T11:43:53.000Z","size":74,"stargazers_count":2,"open_issues_count":2,"forks_count":1,"subscribers_count":3,"default_branch":"main","last_synced_at":"2024-06-19T19:40:58.663Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/frain-dev.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2022-04-07T12:54:40.000Z","updated_at":"2023-01-28T00:25:08.000Z","dependencies_parsed_at":"2022-08-09T21:40:37.159Z","dependency_job_id":null,"html_url":"https://github.com/frain-dev/convoy-ingester","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/frain-dev/convoy-ingester","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/frain-dev%2Fconvoy-ingester","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/frain-dev%2Fconvoy-ingester/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/frain-dev%2Fconvoy-ingester/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/frain-dev%2Fconvoy-ingester/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/frain-dev","download_url":"https://codeload.github.com/frain-dev/convoy-ingester/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/frain-dev%2Fconvoy-ingester/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28436307,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-14T21:32:52.117Z","status":"ssl_error","status_checked_at":"2026-01-14T21:32:33.442Z","response_time":107,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-01-14T22:24:14.472Z","updated_at":"2026-01-14T22:24:15.069Z","avatar_url":"https://github.com/frain-dev.png","language":"Go","readme":"Convoy Ingester\n=========\n\nConvoy Ingester is a serverless function that acts as a middleware between API providers and Convoy. This enables consumers benefit from Convoy without providers taking advantage of Convoy yet. \n\nThe plan is to make this first class support in Convoy, this repo is a prototype for that future.\n\n### Functions \n\n#### WebhookEndpoint\nThis function receives webhook events from the provider E.g. Paystack. acks the event and publishes the event to a pub/sub topic. To configure this function \nset the environment variable - `WEBHOOK_ENDPOINT_ENV_VARS` in GitHub actions with:\n\n```bash\nWEBHOOK_TOPIC=\u003cinsert-topic\u003e,GOOGLE_CLOUD_PROJECT=\u003cinsert-project-id\u003e,PAYSTACK_SECRET=\u003cinsert-paystack-secret\u003e\n```\n\n#### PushToConvoy\nThis function is triggered from the pub/sub topic earlier and pushes to Convoy. To configure this function set environment variable - `PUSH_TO_CONVOY_ENV_VARS` in GitHub actions with:\n\n```bash\nWEBHOOK_TOPIC=\u003cinsert-topic\u003e,GOOGLE_CLOUD_PROJECT=\u003cinsert-project-id\u003e,CONVOY_GROUP_ID=\u003cinsert-group-id\u003e,CONVOY_API_KEY=\u003cinsert-api-key\u003e,CONVOY_PAYSTACK_APP_ID=\u003cinsert-app-id\u003e\n```\n\n### How To\nTo run this function, you need to fork the repository. Follow this [article](https://www.honeybadger.io/blog/building-testing-and-deploying-google-cloud-functions-with-ruby/) to deploy these functions to Google Cloud Functions\n\n### Topic Configuration\n- Create a topic on the GCP console. Retrieve the topic's full name. E.g. `projects/{project-name}/topics/{topic-name}`\n- Add the topic to the Github actions secret with key - `TRIGGER_RESOURCE`\n\n### Push Request\n```bash\ncurl --request POST \\\n--url \"http://localhost:8080\" \\\n--header \"Content-Type: application/json\" \\\n--header \"X-Paystack-Signature: \u003csignature\u003e\" \\\n--header \"X-Forwarded-For: \u003cinsert-ip-address\u003e \\\n--data '{\"event\": \"charge.created\"}'\n```\nYou can generate dummy hash [here](https://go.dev/play/p/NfFgzhtj-N)\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffrain-dev%2Fconvoy-ingester","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffrain-dev%2Fconvoy-ingester","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffrain-dev%2Fconvoy-ingester/lists"}