feat: Speakeasy API client bootstrap (PDE-755)#37
Merged
Conversation
Wire Speakeasy generation from convoy docs/v3/openapi3.yaml. Keep webhook signature verify hand-written and covered by shared signature-vectors.json. First Speakeasy generation ships as a new major so hand-written API shapes are not silently broken.
motunrayokoyejo
approved these changes
Jul 17, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
frain-dev/convoydocs/v3/openapi3.yamlsignature-vectors.json)Secrets required
SPEAKEASY_API_KEYon this repository (Actions)SDK_BOT_PATon this repository so generation PRs trigger verify CI (PRs opened withGITHUB_TOKENdo not firepull_requestworkflows)Follow-up
After merge, run SDK Generation (
sdk_generation.yaml) withforce=trueto open the first generated API-client PR.Related: PDE-755 / frain-dev/convoy Speakeasy workflow.
Note
Medium Risk
Sets up automated SDK regeneration and a planned major API break; webhook crypto stays excluded from generation, but generation PRs and secret/PAT setup affect release workflow.
Overview
Bootstraps Speakeasy to generate the HTTP API client from Convoy’s v3 OpenAPI spec, while locking down hand-written webhook verification via
.genignore(src/webhook.ts, shared vector tests, and related docs).Adds pinned
.speakeasy/workflow/config (remote OpenAPI source, TypeScript 2.x target,test:verifyscript, no generated tests) and a newsdk_generation.yamlworkflow (weekly + manual PR mode, serialized concurrency, PAT for generation PRs so verify CI runs). Documents the intentional 2.x API-shape break inMIGRATION.mdand bumps the package to2.0.0-alpha.0.CI moves to Node 20, pins checkout/setup-node, asserts verify artifacts exist, runs webhook/shared-vector tests as a hard gate, and treats the full Jest suite as optional (
continue-on-error).src/convoy.tsgets a migration comment only—the hand-written client remains until the first generation PR lands.Reviewed by Cursor Bugbot for commit bd8ea40. Bugbot is set up for automated code reviews on this repo. Configure here.