{"repo":"frain-dev/convoy","free":true,"listed":false,"github":"https://github.com/frain-dev/convoy","clone":"git clone https://github.com/frain-dev/convoy.git","description":"The Cloud Native Webhooks Gateway","language":"Go","stars":2854,"topics":["angular","api-gateway","automation","cli","cloud","convoy","developer-tools","devtools","gateway","gateways","golang","incoming-webhooks","infrastructure","outgoing-webhooks","webhook-gateway","webhook-service","webhooks","webhooks-server"],"license":null,"category":"webhook_gateway","readme_excerpt":"# ![convoy image](./convoy_logo.png)\n\n[![golangci-lint](https://github.com/frain-dev/convoy/actions/workflows/linter.yml/badge.svg)](https://github.com/frain-dev/convoy/actions/workflows/linter.yml)\n[![Build and run all tests](https://github.com/frain-dev/convoy/actions/workflows/integration-tests.yml/badge.svg)](https://github.com/frain-dev/convoy/actions/workflows/integration-tests.yml)\n\n- Website: https://getconvoy.io\n- Forum: [Convoy Community](https://community.getconvoy.io)\n- Documentation: [docs.getconvoy.io](https://docs.getconvoy.io)\n- Deploy:\n  [Install Convoy](https://docs.getconvoy.io/deployment/install-convoy/docker)\n- Slack:\n  [Join the Community](https://join.slack.com/t/convoy-community/shared_invite/zt-xiuuoj0m-yPp~ylfYMCV9s038QL0IUQ)\n\n[Convoy](https://getconvoy.io) is an open source high-performance webhooks\ngateway used to securely ingest, persist, debug, deliver and manage millions of\nevents reliably with rich features such as retries, rate limiting, static ips,\ncircuit breaking, rolling secrets and more.\n\nConvoy provides several key features:\n\n- **Webhooks Gateway:** As a webhooks gateway, Convoy lives at the edge of your\n  network to stream webhooks from your microservices, and send them out to your\n  users as well as receive webhooks from your providers and route them to the\n  required services. With this your internal systems are never exposed to the\n  public internet.\n\n- **Scalability:** Convoy acts as a dedicated message queue for webhooks, and\n  was designed to be horizontally scalable. It includes several components like\n  the `api server`, `workers`, `scheduler`, and `socket server` which can be\n  scaled independently to fit the need.\n\n- **Security:** Convoy ships with several security features for webhooks, such\n  as payload signing to ensure message integrity, bearer token authentication\n  for authenticated webhook endpoints, and static ips for network environments\n  with strict firewall rules.\n\n- **Fan Out:** Convoy is able to route an event to multiple endpoints based on\n  the event type or payload structure.\n\n- **Rate Limiting:** While Convoy is able to ingest events at a massive rate, it\n  throttles the delivery of these events to the endpoints at a configurable rate\n  per endpoint.\n\n- **Retries & Batch Retries:** Convoy supports two retry algorithms; constant\n  time and exponential backoff with jitter. Where automatic retries are not\n  sufficient, convoy provides batch retries for endpoints are consecutively\n  failed to process retried events.\n\n- **Customer-Facing Dashboards:** Convoy allows you to generate customer facing\n  webhooks dashboard to embed into your applications using an iframe. On this\n  dashboard, users can debug webhooks, retry events, add endpoints, and\n  configure each endpoint's subscription.\n\n- **Endpoint Failure Notifications:** When endpoints consecutively fails to\n  process events, convoy disables the endpoint and sends out a notification. Two\n  types of notifications are supported: Email and Slack Notifications.\n\n## Installation\n\n- [Docker](https://docs.getconvoy.io/deployment/install-convoy/docker)\n- [Kubernetes with Helm](https://docs.getconvoy.io/deployment/install-convoy/kubernetes)\n\n## Contributing\n\nThank you for your interest in contributing! Please refer to\n[CONTRIBUTING.md](https://github.com/frain-dev/convoy/blob/main/CONTRIBUTING.md)\nfor guidance. For contributions to the Convoy dashboard, please refer to the\n[web/ui](https://github.com/frain-dev/convoy/tree/main/web/ui) directory.\n\n## License\n\n[Elastic License v2.0](https://github.com/frain-dev/convoy/blob/main/LICENSE)\n","default_branch":"main","files":2079,"tree":[".claude/commands/validate.md",".dockerignore",".editorconfig",".env.example",".git-cliff.toml",".githooks/pre-commit",".github/ISSUE_TEMPLATE/bug_report.md",".github/ISSUE_TEMPLATE/feature_request.md",".github/ISSUE_TEMPLATE/release-template.md",".github/dependabot.yml",".github/release-manifest.json",".github/scripts/osv-nightly-report.sh",".github/workflows/bootstrap-sdk-repos.yml",".github/workflows/build-dev-image.yml",".github/workflows/build-image.yml",".github/workflows/bump-convoy-cloud-staging.yml",".github/workflows/codeql.yml",".github/workflows/conventional-pr-title.yml",".github/workflows/dashboard-build.yml",".github/workflows/docker-smoke-test.yml",".github/workflows/docs-generated-sync.yml",".github/workflows/docs.yml",".github/workflows/google-pubsub-tests.yml",".github/workflows/integration-tests.yml",".github/workflows/kafka-pubsub-tests.yml",".github/workflows/lint-migrations.yml",".github/workflows/linter.yml",".github/workflows/load-test.yml",".github/workflows/monthly-release-pr.yml",".github/workflows/openapi-docs-check.yml",".github/workflows/osv-nightly.yml",".github/workflows/promote-patch-release.yml",".github/workflows/rabbitmq-pubsub-tests.yml",".github/workflows/redis-sentinel-e2e-tests.yml",".github/workflows/release.yml",".github/workflows/speakeasy-sdk.yml",".github/workflows/sqs-pubsub-tests.yml",".github/workflows/tag-stable-release.yml",".github/workflows/trivy-defectdojo.yml",".github/workflows/vanilla-e2e-tests.yml",".gitignore",".golangci.yml",".mise-tasks/build/_default",".mise-tasks/clean/_default",".mise-tasks/dashboard/build.sh",".mise-tasks/dashboard/install.sh",".mise-tasks/dashboard/start.sh",".mise-tasks/format/_default",".mise-tasks/gen/docs.sh",".mise-tasks/gen/mocks.sh",".mise-tasks/gen/sqlc.sh",".mise-tasks/lint/_default",".mise-tasks/lint/server.sh",".mise-tasks/lint/sql.sh",".mise-tasks/lint/validate-migrations.sh",".mise-tasks/start/agent",".mise-tasks/start/dashboard",".mise-tasks/start/server",".mise-tasks/test/_default",".mise-tasks/test/e2e.sh",".publisher.yml",".speakeasy/workflow.yaml",".squawk.toml","CHANGELOG.md","CLA.md","CONTRIBUTING.md","Dockerfile.dev","ENT-CHANGELOG.md","LICENSE","Makefile","README.md","RELEASE.md","VERSION","api/api.go","api/api_options_repositories.go","api/api_options_repositories_test.go","api/billing_integration_test.go","api/dashboard_integration_test.go","api/events_integration_test.go","api/filter_integration_test.go","api/handlers/auth.go","api/handlers/auth_test.go","api/handlers/backup.go","api/handlers/billing.go","api/handlers/billing_auth.go","api/handlers/billing_checkout.go","api/handlers/billing_checkout_license.go","api/handlers/billing_cloud.go","api/handlers/billing_helpers.go","api/handlers/billing_helpers_test.go","api/handlers/billing_plans.go","api/handlers/billing_selfhosted.go","api/handlers/billing_start_trial_verify_test.go","api/handlers/billing_test.go","api/handlers/configuration.go","api/handlers/configuration_test.go","api/handlers/dashboard.go","api/handlers/delivery_attempt.go","api/handlers/endpoint.go","api/handlers/endpoint_test.go","api/handlers/event.go","api/handlers/event_delivery.go","api/handlers/event_types.go","api/handlers/event_types_portal_test.go","api/handlers/filter.go","api/handlers/handlers.go","api/handlers/handlers_test.go","api/handlers/license.go","api/handlers/license_test.go","api/handlers/main.go","api/handlers/meta_event.go","api/handlers/middleware.go","api/handlers/middleware_trial_test.go","api/handlers/onboard.go","api/handlers/organisation.go","api/handlers/organisation_invite.go","api/handlers/organisation_member.go","api/handlers/partition.go","api/handlers/portal_link.go","api/handlers/portal_link_filter_test.go","api/handlers/project.go","api/handlers/project_test.go","api/handlers/queue_monitoring.go","api/handlers/queue_monitoring_test.go","api/handlers/repositories_test.go","api/handlers/security.go","api/handlers/source.go","api/handlers/sso_redirect.go","api/handlers/sso_redirect_test.go","api/handlers/subscription.go","api/handlers/user.go","api/ingest.go","api/ingest_integration_test.go","api/ingest_test.go","api/migrations.go","api/migrations/constants.go","api/migrations/v20240101/create_endpoint_migration.go","api/migrations/v20240101/create_endpoint_migration_test.go","api/migrations/v20240401/create_endpoint_migration.go","api/migrations/v20240401/create_endpoint_migration_test.go","api/migrations/v20251124/create_portal_link_migration.go","api/migrations/v20251124/portal_link_migration_test.go","api/migrations/v20251124/update_portal_link_migration.go","api/models/configuration.go","api/models/delivery_attempt.go","api/models/delivery_attempt_test.go","api/models/endpoint.go","api/models/endpoint_test.go","api/models/event.go","api/models/event_delivery.go","api/models/event_test.go","api/models/event_types.go","api/models/filter.go","api/models/filter_test.go","api/models/meta_event.go","api/models/models.go","api/models/onboard.go","api/models/portal_link.go","api/models/project.go","api/models/project_test.go","api/models/source.go","api/models/source_test.go","api/models/sso.go","api/models/subscription.go","api/models/subscription_test.go","api/models/user.go","api/oauth2_integration_test.go","api/oss_login_integration_test.go","api/policies/billing_policy.go","api/policies/organisation_policy.go","api/policies/organisation_policy_test.go","api/policies/policy.go","api/policies/policy_test.go","api/policies/project_policy.go","api/policies/project_policy_test.go","api/portal_api_integration_test.go","api/public_integration_test.go","api/rate_limit_routes_test.go","api/rootpath_test.go","api/server_suite_test.go","api/testdata/Auth_Config/basic-convoy.json","api/testdata/Auth_Config/full-convoy-with-all-realms.json","api/testdata/Auth_Config/full-convoy-with-jwt-realm-billing.json","api/testdata/Auth_Config/full-convoy-with-jwt-realm.json","api/testdata/Auth_Config/full-convoy-with-native-auth-realm.json","api/testdata/Auth_Config/full-convoy.json","api/testdata/Auth_Config/jwt-convoy-signup-disabled.json","api/testdata/Auth_Config/jwt-convoy-signup-enabled.json","api/testdata/Auth_Config/jwt-convoy.json","api/testdata/Auth_Config/no-auth-convoy.json","api/testdata/Auth_Config/none-convoy.json","api/testdata/TestApplicationHandler_BatchRetryEventDelivery/should_batch_retry_all_successfully.golden","api/testdata/TestApplicationHandler_BatchRetryEventDelivery/should_batch_retry_one_successfully.golden","api/testdata/TestApplicationHandler_BatchRetryEventDelivery/should_fail_to_find_app_endpoint.golden","api/testdata/TestApplicationHandler_BatchRetryEventDelivery/should_fail_to_load_event_deliveries.golden","api/testdata/TestApplicationHandler_BatchRetryEventDelivery/should_fail_to_update_app_endpoints_status.golden","api/testdata/TestApplicationHandler_BatchRetryEventDelivery/should_fail_to_update_status_of_event_delivery.golden","api/testdata/TestApplicationHandler_BatchRetryEventDelivery/should_fail_to_write_to_queue.golden","api/testdata/TestApplicationHandler_CountAffectedEventDeliveries/should_count_affected_event_deliveries_successfully.golden","api/testdata/TestApplicationHandler_CountAffectedEventDeliveries/should_fail_to_count_affected_event_deliveries.golden","api/testdata/TestApplicationHandler_CreateAPIKey/create_api_key.golden","api/testdata/TestApplicationHandler_CreateAPIKey/create_api_key_without_expires_at_field.golden","api/testdata/TestApplicationHandler_CreateAPIKey/invalid_expiry_date.golden","api/testdata/TestApplicationHandler_CreateAPIKey/invalid_role.golden","api/testdata/TestApplicationHandler_CreateApp/invalid_request.golden","api/testdata/TestApplicationHandler_CreateApp/invalid_request_-_no_app_name.golden","api/testdata/TestApplicationHandler_CreateApp/should_fail_for_application_name_not_unique.golden","api/testdata/TestApplicationHandler_CreateApp/should_fail_to_check_if_application_name_is_unique.golden","api/testdata/TestApplicationHandler_CreateApp/valid_application.golden","api/testdata/TestApplicationHandler_CreateAppEndpoint/should_error_for_invalid_rate_limit_duration.golden","api/testdata/TestApplicationHandler_CreateAppEndpoint/valid_endpoint.golden","api/testdata/TestApplicationHandler_CreateAppPortalAPIKey/app_id_does_not_belong_to_group.golden","api/testdata/TestApplicationHandler_CreateAppPortalAPIKey/create_api_key.golden","api/testdata/TestApplicationHandler_CreateGroup/invalid_request_-_no_group_hash_field.golden","api/testdata/TestApplicationHandler_CreateGroup/invalid_request_-_no_group_header_field.golden","api/testdata/TestApplicationHandler_CreateGroup/invalid_request_-_no_group_interval_seconds_field.golden","api/testdata/TestApplicationHandler_CreateGroup/invalid_request_-_no_group_name.golden","api/testdata/TestApplicationHandler_CreateGroup/invalid_request_-_no_group_retry_limit_field.golden","api/testdata/TestApplicationHandler_CreateGroup/invalid_request_-_no_group_strategy_type_field.golden","api/testdata/TestApplicationHandler_CreateGroup/invalid_request_-_unsupported_group_hash_field.golden","api/testdata/TestApplicationHandler_CreateGroup/invalid_request_-_unsupported_group_strategy_type.golden","api/testdata/TestApplicationHandler_CreateGroup/should_fail_to_create_group.golden","api/testdata/TestApplicationHandler_CreateGroup/valid_group.golden","api/testdata/TestApplicationHandler_DeleteGroup/failed_group_apps_delete.golden","api/testdata/TestApplicationHandler_DeleteGroup/failed_group_delete.golden","api/testdata/TestApplicationHandler_DeleteGroup/failed_group_events_delete.golden","api/testdata/TestApplicationHandler_DeleteGroup/valid_group_delete.golden","api/testdata/TestApplicationHandler_ForceResendEventDelivery/should_error_for_discarded_event_status.golden","api/testdata/TestApplicationHandler_ForceResendEventDelivery/should_error_for_endpoint_not_found.golden","api/testdata/TestApplicationHandler_ForceResendEventDelivery/should_error_for_failed_to_fetch_deliveries.golden","api/testdata/TestApplicationHandler_ForceResendEventDelivery/should_error_for_failed_to_update_event_delivery_status.golden","api/testdata/TestApplicationHandler_ForceResendEventDelivery/should_error_for_inactive_endpoint.golden","api/testdata/TestApplicationHandler_ForceResendEventDelivery/should_error_for_malformed_body.golden","api/testdata/TestApplicationHandler_ForceResendEventDelivery/should_force_resend_all_successfully.golden","api/testdata/TestApplicationHandler_GetAPIKeyByID/should_fail_to_find_api_key.golden","api/testdata/TestApplicationHandler_GetAPIKeyByID/should_find_api_key.golden","api/testdata/TestApplicationHandler_GetAPIKeys/should_fail_to_load_api_keys.golden","api/testdata/TestApplicationHandler_GetAPIKeys/should_load_api_keys.golden","api/testdata/TestApplicationHandler_GetApp/app_not_found.golden","api/testdata/TestApplicationHandler_GetApp/valid_application.golden","api/testdata/TestApplicationHandler_GetAppEndpoint/should_get_application_endpoint.golden","api/testdata/TestApplicationHandler_GetAppEndpoints/should_get_application_endpoints.golden","api/testdata/TestApplicationHandler_GetApps/should_fail_to_fetch_applications.golden","api/testdata/TestApplicationHandler_GetApps/valid_applications.golden","api/testdata/TestApplicationHandler_GetGroup/group_not_found.golden","api/testdata/TestApplicationHandler_GetGroup/should_fail_to_count_group_apps.golden","api/testdata/TestApplicationHandler_GetGroup/should_fail_to_count_group_messages.golden","api/testdata/TestApplicationHandler_GetGroup/valid_group.golden","api/testdata/TestApplicationHandler_GetGroups/should_error_for_invalid_group_access.golden","api/testdata/TestApplicationHandler_GetGroups/should_fail_to_fetch_groups.golden","api/testdata/TestApplicationHandler_GetGroups/should_fetch_user_groups.golden","api/testdata/TestApplicationHandler_GetGroups/valid_groups.golden","api/testdata/TestApplicationHandler_RevokeAPIKey/revoke_api_key.golden","api/testdata/TestApplicationHandler_RevokeAPIKey/should_error_for_revoke_api_key.golden","api/testdata/TestApplicationHandler_UpdateAPIKey/invalid_role.golden","api/testdata/TestApplicationHandler_UpdateAPIKey/update_api_key.golden","api/testdata/TestApplicationHandler_UpdateApp/invalid_request.golden","api/testdata/TestApplicationHandler_UpdateApp/invalid_request_-_no_app_name.golden","api/testdata/TestApplicationHandler_UpdateApp/should_error_for_duplicate_app_name.golden","api/testdata/TestApplicationHandler_UpdateApp/valid_application_update.golden","api/testdata/TestApplicationHandler_UpdateApp/valid_request_-_disable_application.golden","api/testdata/TestApplicationHandler_UpdateApp/valid_request_-_enable_disabled_application.golden","api/testdata/TestApplicationHandler_UpdateApp/valid_request_-_update_secret.golden","api/testdata/TestApplicationHandler_UpdateApp/valid_request_-_update_support_email.golden","api/testdata/TestApplicationHandler_UpdateAppEndpoint/invalid_request.golden","api/testdata/TestApplicationHandler_UpdateAppEndpoint/should_error_for_endpoint_not_found.golden","api/testdata/TestApplicationHandler_UpdateAppEndpoint/should_error_for_invalid_rate_limit_duration.golden","api/testdata/TestApplicationHandler_UpdateAppEndpoint/valid_application.golden","api/testdata/TestApplicationHandler_UpdateAppEndpoint_InvalidRequest/invalid_request.golden","api/testdata/TestApplicationHandler_UpdateAppEndpoint_InvalidRequest/valid_application.golden","api/testdata/TestApplicationHandler_UpdateGroup/invalid_request.golden","api/testdata/TestApplicationHandler_UpdateGroup/invalid_request_-_no_group_name.golden","api/testdata/TestApplicationHandler_UpdateGroup/should_fail_to_update_group.golden","api/testdata/TestApplicationHandler_UpdateGroup/valid_group_update.golden","api/testdata/TestDashboardIntegrationTestSuiteTest/TestGetDashboardSummary/should_error_for_empty_startDate.golden","api/testdata/TestDashboardIntegrationTestSuiteTest/TestGetDashboardSummary/should_error_for_invalid_startDate.golden","api/testdata/TestDashboardIntegrationTestSuiteTest/TestGetDashboardSummary/should_error_for_invalid_type.golden","api/testdata/TestDashboardIntegrationTestSuiteTest/TestGetDashboardSummary/should_error_for_startDate_greater_than_endDate.golden","api/testdata/TestDashboardIntegrationTestSuiteTest/TestGetDashboardSummary/should_fetch_daily_dashboard_summary.golden","api/testdata/TestDashboardIntegrationTestSuiteTest/TestGetDashboardSummary/should_fetch_monthly_dashboard_summary.golden","api/testdata/TestDashboardIntegrationTestSuiteTest/TestGetDashboardSummary/should_fetch_weekly_dashboard_summary.golden","api/testdata/TestDashboardIntegrationTestSuiteTest/TestGetDashboardSummary/should_fetch_yearly_dashboard_summary.golden","api/testdata/TestRequirePermission_Basic/authorization_failed.golden","api/testdata/TestRequirePermission_Basic/credentials_not_provided.golden","api/testdata/TestRequirePermission_Basic/invalid_basic_credentials.golden","api/testdata/TestRequirePermission_Basic/invalid_credentials.golden","api/testdata/TestRequirePermission_Basic/valid_credentials.golden","api/testdata/TestRequirePermission_Noop/authorization_failed.golden","api/testdata/TestRequirePermission_Noop/credentials_not_provided.golden","api/testdata/TestRequirePermission_Noop/invalid_credentials.golden","api/testdata/TestRequirePermission_Noop/valid_credentials.golden","api/testdata/Test_applicationHandler_DeleteApp/should_delete_app.golden","api/testdata/Test_applicationHandler_DeleteApp/should_fail_to_delete_app.golden","api/testdata/Test_applicationHandler_DeleteAppEndpoint/should_delete_app_endpoint.golden","api/testdata/Test_applicationHandler_DeleteAppEndpoint/should_error_for_endpoint_not_found.golden","api/testdata/Test_applicationHandler_DeleteAppEndpoint/should_fail_to_delete_app_endpoint.golden","api/testdata/Test_applicationHandler_GetPaginatedApps/valid_groups.golden","api/testdata/Test_fetchAuthConfig/successful_auth_fetch.golden","api/testdata/Test_resendEventDelivery/invalid__resend_-_pending_endpoint.golden","api/testdata/Test_resendEventDelivery/invalid_resend_-_event_not_failed.golden","api/testdata/Test_resendEventDelivery/invalid_resend_-_event_successful.golden","api/testdata/Test_resendEventDelivery/valid_resend_-_previously_failed_-_active_endpoint.golden","api/testdata/Test_resendEventDelivery/valid_resend_-_previously_failed_and_inactive_endpoint.golden","api/testdata/Test_resendMessage/invalid__resend_-_pending_endpoint.golden","api/testdata/Test_resendMessage/invalid_resend_-_event_not_failed.golden","api/testdata/Test_resendMessage/invalid_resend_-_event_successful.golden","api/testdata/Test_resendMessage/valid_resend_-_previously_failed_-_active_endpoint.golden","api/testdata/Test_resendMessage/valid_resend_-_previously_failed_and_inactive_endpoint.golden","api/testdb/filter.go","api/testdb/seed.go","api/types/types.go","api/ui/build/go_test_stub.txt","api/ui/build/index.html","auth/credential.go","auth/realm.go","auth/realm/file/file_realm.go","auth/realm/file/file_realm_test.go","auth/realm/jwt/jwt.go","auth/realm/jwt/jwt_realm.go","auth/realm/jwt/jwt_realm_test.go","auth/realm/jwt/jwt_test.go","auth/realm/native/native_realm.go","auth/realm/native/native_realm_test.go","auth/realm/noop/noop_realm.go","auth/realm/portal/portal_realm.go","auth/realm/portal/portal_realm_test.go","auth/realm_chain/realm_chain.go","auth/realm_chain/realm_chain_test.go","auth/role.go","cache/cache.go","cache/memory/client.go","cache/memory/client_test.go","cache/noop/noop.go","cache/redis/client.go","cache/redis/client_test.go","cmd/agent/agent.go","cmd/backup/backup.go","cmd/bootstrap/bootstrap.go","cmd/bootstrap/bootstrap_test.go","cmd/config/config.go","cmd/ff/feature_flags.go","cmd/hooks/hooks.go","cmd/hooks/hooks_test.go","cmd/main.go","cmd/migrate/migrate.go","cmd/openapi/openapi.go","cmd/retry/retry.go","cmd/server/server.go","cmd/utils/circuit_breakers.go","cmd/utils/circuit_breakers_test.go","cmd/utils/init_encryption.go","cmd/utils/org_feature_flags.go","cmd/utils/partition.go","cmd/utils/promote_instance_admin.go","cmd/utils/promote_instance_admin_test.go","cmd/utils/revert_encryption.go","cmd/utils/rotate_key.go","cmd/utils/setup_test.go","cmd/utils/utils.go","cmd/validate-migrations/main.go","cmd/version/version.go","config/algo/algo.go","config/ca_cert.go","config/ca_cert_test.go","config/cert_cache.go","config/cert_cache_test.go","config/config.go","config/config_test.go","config/license.go","config/realm.go","config/testdata/Config/empty-api-key-auth-group-name.json","config/testdata/Config/empty-api-key.json","config/testdata/Config/empty-redis-dsn.json","config/testdata/Config/empty-ssl-cert-file.json","config/testdata/Config/empty-ssl-key-file.json","config/testdata/Config/no-port-convoy.json","config/testdata/Config/too-large-max-response-size-convoy.json","config/testdata/Config/unknown-strategy-type.json","config/testdata/Config/valid-convoy-redis-cluster.json","config/testdata/Config/valid-convoy.json","config/testdata/Config/zero-max-response-size-convoy.json","config/testdata/Test_ConfigurationFromEnvironment/convoy.json","configs/caddyfile","configs/convoy.templ.json","configs/docker-compose.templ.yml","configs/google-oauth-example.json","configs/local/Caddyfile","configs/local/conf/.env","configs/local/conf/redis/ca-cert.pem","configs/local/conf/redis/ca-key.pem","configs/local/conf/redis/redis-server-cert.pem","configs/local/conf/redis/redis-server-key.pem","configs/local/conf/redis/redis.conf","configs/local/conf/userlists.txt","configs/local/convoy.json","configs/local/docker-compose.yml","configs/local/smoke-test.sh","const.go","convoy-logo.svg","convoy.env.example"],"storefront":"/r/frain-dev","claimed":false,"request_supported":{"post":"https://gitbuyer.com/r/frain-dev/convoy/request-supported","requests":0},"note":"indexed from public GitHub; nothing is for sale on this page. Clone it from GitHub. Paid listings live at /search."}