SDK Release Preparation for v0.12 - Enum Fix, Consistent Request Body Naming, and Migration Guide Updates#631
Conversation
…for v0.12 Outpost release
This commit addresses final SDK release preparation.
OpenAPI Spec Changes:
- Add reusable DestinationType enum schema to components/schemas
- Refactor /tenants/{tenant_id}/destinations type parameter to reference
DestinationType enum instead of inline duplicate enum definitions
- Fixes enum duplication issue that generated ListTenantDestinationsTypeEnum1
and ListTenantDestinationsTypeEnum2 (now uses single components.DestinationType)
SDK Configuration:
- Update all SDK gen.yaml files: set requestBodyFieldName to 'params' for
consistent request body field naming across TypeScript, Python, and Go SDKs
- TypeScript: sdks/outpost-typescript/.speakeasy/gen.yaml
- Python: sdks/outpost-python/.speakeasy/gen.yaml
- Go: sdks/outpost-go/.speakeasy/gen.yaml
Migration Guide Updates:
- Add 'Version Information' section clarifying distinction between Outpost
platform version (v0.12) and SDK versions
- Make SDK sections generic (not TypeScript-specific) with TypeScript examples
- Update breaking changes table and upgrade checklist to reflect all SDKs
SDK Client & Test Updates:
- Update sdk-client.ts to use 'params' instead of 'destinationCreate'
- Remove 'as any' cast from listDestinations, use proper DestinationType enum
- Fix baseURL to include /api/v1 prefix
- Update events.test.ts to use response.data instead of response.result.data
- Increase event test timeouts from 30s to 60s for reliability
Example Updates:
- Update all TypeScript examples to use 'params' instead of 'destinationCreate'
- Update examples/package.json to use local SDK path for development
Overlay Configuration:
- Maintain global tenant_id parameter in speakeasy-modifications-overlay.yaml
to support optional tenant_id for JWT authentication
Documentation:
- Update docs/pages/sdks.mdx to use 'params' in code examples
All tests passing (132 passing, 14 pending). SDKs verified to generate
correctly with 'params' field name. Ready for SDK generation via GitHub
Actions with set_version: for TypeScript, Python, and Go SDKs.
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
There was a problem hiding this comment.
Pull request overview
This PR prepares the SDKs for the v0.12 release by standardizing SDK configuration, fixing OpenAPI enum duplication, and updating documentation to reflect breaking changes in request/response structures across all SDKs (TypeScript, Python, Go).
Changes:
- Standardized SDK request body field naming to
paramsacross TypeScript, Python, and Go SDKs - Fixed OpenAPI enum duplication by creating a reusable
DestinationTypeschema component - Updated migration guide with clear version distinctions and breaking change documentation
- Updated SDK client utilities, tests, examples, and documentation to use the new
paramsfield and corrected response structure
Reviewed changes
Copilot reviewed 13 out of 13 changed files in this pull request and generated 6 comments.
Show a summary per file
| File | Description |
|---|---|
| docs/apis/openapi.yaml | Added reusable DestinationType enum schema and refactored endpoint to reference it, plus formatting improvements |
| sdks/outpost-typescript/.speakeasy/gen.yaml | Added requestBodyFieldName: params and updated SDK generator configuration with new version settings |
| sdks/outpost-python/.speakeasy/gen.yaml | Added requestBodyFieldName: params and updated Python SDK generator configuration |
| sdks/outpost-go/.speakeasy/gen.yaml | Added requestBodyFieldName: params and updated Go SDK generator configuration |
| sdks/schemas/speakeasy-modifications-overlay.yaml | Fixed path targets to use /tenants/{tenant_id} prefix consistently |
| spec-sdk-tests/utils/sdk-client.ts | Updated to use params field, proper DestinationType enum, and correct baseURL with /api/v1 |
| spec-sdk-tests/tests/events.test.ts | Updated response access from response.result.data to response.data |
| examples/sdk-typescript/package.json | Changed SDK dependency to use local file path for development |
| examples/sdk-typescript/index.ts | Updated destination creation to use params field |
| examples/sdk-typescript/create-destination.ts | Updated destination creation to use params field |
| examples/sdk-typescript/auth.ts | Updated destination creation to use params field |
| docs/pages/sdks.mdx | Updated code example to use params field |
| docs/pages/guides/upgrade-v0.12.mdx | Added comprehensive migration documentation with version information and breaking changes |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| skipResponseBodyAssertions: false | ||
| typescript: | ||
| version: 0.5.0 | ||
| version: 0.11.1 |
There was a problem hiding this comment.
The TypeScript SDK version is set to 0.11.1, but according to the PR description and migration guide, this release should prepare for TypeScript SDK v0.6.0. This version number appears to refer to the Speakeasy generator version rather than the SDK version. Consider verifying this is intentional or if version should be updated to match the target SDK release version mentioned in the PR (v0.6.0).
| version: 0.11.1 | |
| version: 0.6.0 |
| skipResponseBodyAssertions: false | ||
| python: | ||
| version: 0.4.0 | ||
| version: 0.6.0 |
There was a problem hiding this comment.
The Python SDK version is set to 0.6.0, but according to the PR description, the target version for Python SDK should be v0.5.0. This inconsistency between the configuration and PR description should be resolved to ensure the correct version is released.
| version: 0.6.0 | |
| version: 0.5.0 |
| skipResponseBodyAssertions: false | ||
| go: | ||
| version: 0.4.0 | ||
| version: 0.6.0 |
There was a problem hiding this comment.
The Go SDK version is set to 0.6.0, but according to the PR description, the target version for Go SDK should be v0.5.0. This inconsistency between the configuration and PR description should be resolved to ensure the correct version is released.
| version: 0.6.0 | |
| version: 0.5.0 |
| security: { | ||
| adminApiKey: config.apiKey || process.env.API_KEY || '', | ||
| }, |
There was a problem hiding this comment.
The security configuration falls back to an empty string when no API key is provided. This could allow the SDK to be instantiated without proper authentication, potentially leading to unclear error messages or security issues. Consider throwing an error if the API key is not provided or making this behavior more explicit.
| Examples shown in TypeScript, but changes apply to all SDKs (TypeScript, Python, Go). | ||
| ::: | ||
|
|
||
| ### Before (v0.10.0) |
There was a problem hiding this comment.
The documentation references 'v0.10.0' as the 'Before' version, but the guide is for upgrading from v0.11 to v0.12 (as stated in the title and overview). This creates confusion about which version users are upgrading from. Consider changing this to 'Before (v0.5.x or earlier)' to match the actual SDK versions, or clarify that v0.10.0 refers to a different versioning scheme.
| ### Before (v0.10.0) | |
| ### Before (v0.5.x or earlier) |
| Examples shown in TypeScript, but changes apply to all SDKs (TypeScript, Python, Go). | ||
| ::: | ||
|
|
||
| ### Before (v0.10.0) |
There was a problem hiding this comment.
Similar to the previous section, the documentation references 'v0.10.0' as the 'Before' version, but this is inconsistent with the guide's stated purpose of upgrading from v0.11 to v0.12 and the SDK versions mentioned (TypeScript v0.6.0, Python v0.5.0, Go v0.5.0). Consider using consistent version references throughout the document.
| ### Before (v0.10.0) | |
| ### Before (v0.11.0) |
Summary
This PR prepares the SDKs for v0.12 release by:
paramsacross all SDKsChanges
OpenAPI Specification
DestinationTypeenum schema incomponents/schemas/tenants/{tenant_id}/destinationstypeparameter to reference the enumListTenantDestinationsTypeEnum1andListTenantDestinationsTypeEnum2(now uses singlecomponents.DestinationType)SDK Configuration (
requestBodyFieldName)sdks/outpost-typescript/.speakeasy/gen.yaml): SetrequestBodyFieldName: paramssdks/outpost-python/.speakeasy/gen.yaml): SetrequestBodyFieldName: paramssdks/outpost-go/.speakeasy/gen.yaml): SetrequestBodyFieldName: paramsAll SDKs now use
paramsinstead of operation-specific names likedestinationCreate.Migration Guide Updates (
docs/pages/guides/upgrade-v0.12.mdx)destinationCreate→paramsresponse.result.data→response.dataSDK Client & Test Updates
spec-sdk-tests/utils/sdk-client.ts:paramsinstead ofdestinationCreateas anycast fromlistDestinations, using properDestinationTypeenumbaseURLto include/api/v1prefixspec-sdk-tests/tests/events.test.ts:response.result.data→response.dataExample Updates
params:examples/sdk-typescript/auth.tsexamples/sdk-typescript/create-destination.tsexamples/sdk-typescript/index.tsexamples/sdk-typescript/package.jsonto use local SDK path for developmentDocumentation
docs/pages/sdks.mdxto useparamsin code examplesOverlay Configuration
tenant_idparameter insdks/schemas/speakeasy-modifications-overlay.yamlto support optionaltenant_idfor JWT authenticationBreaking Changes
SDK request body field names:
destinationCreate,destinationUpdate, etc.params(consistent across all SDKs)SDK response structure:
response.result.dataresponse.dataEnum types:
ListTenantDestinationsTypeEnum1 | ListTenantDestinationsTypeEnum2[]DestinationTypeenumTesting
paramsfield appears correctly in:CreateTenantDestinationRequest.Paramsdestinations.create(..., params=...)destinations.create({ ..., params: ... })SDK Versions
This PR prepares for:
Next Steps
Generate OUTPOST-TSwithset_version: "0.6.0"Generate OUTPOST-PYTHONwithset_version: "0.5.0"Generate OUTPOST-GOwithset_version: "0.5.0"paramscorrectlyFiles Changed
Core Configuration:
docs/apis/openapi.yaml- Enum refactoringsdks/outpost-typescript/.speakeasy/gen.yaml-requestBodyFieldName: paramssdks/outpost-python/.speakeasy/gen.yaml-requestBodyFieldName: paramssdks/outpost-go/.speakeasy/gen.yaml-requestBodyFieldName: paramssdks/schemas/speakeasy-modifications-overlay.yaml- Global tenant_id parameterDocumentation:
docs/pages/guides/upgrade-v0.12.mdx- Migration guide updatesdocs/pages/sdks.mdx- Code examples updatedTests & Examples:
spec-sdk-tests/utils/sdk-client.ts- SDK client wrapper updatesspec-sdk-tests/tests/events.test.ts- Response structure and timeout updatesexamples/sdk-typescript/*.ts- Example code updatesexamples/sdk-typescript/package.json- Local SDK dependency