feat: Speakeasy API client bootstrap (PDE-755)#19
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.
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
Changes affect webhook verification error paths and CI packaging gates; behavior is stricter (fail-closed) but aligned with existing verify vectors.
Overview
CI no longer tolerates a failed
pip install -e .oncepyproject.tomlis present. A new step importsWebhookwithoutPYTHONPATH, and pytest runs against the installed distribution in that case so packaging gaps (e.g. missingconvoy.utils.webhook) fail the build instead of being masked bysrc/.Packaging drops the legacy
setup.pyin favor of Speakeasy-providedpyproject.tomlon first generation; pre-generation runs still usePYTHONPATH=srcfor verify tests.Webhook verify tightens typing on exception constructors, chains
InvalidSignature/InvalidTimestampErrorfrom underlying decode/parse errors, and makescreate_signature/create_advanced_signatureraiseInvalidSignaturefor unsupported encodings instead of returningNone.Reviewed by Cursor Bugbot for commit 23481f3. Bugbot is set up for automated code reviews on this repo. Configure here.