Skip to content

SDK Release Preparation for v0.12 - Enum Fix, Consistent Request Body Naming, and Migration Guide Updates#631

Merged
leggetter merged 4 commits into
mainfrom
feat/sdk-generation-update
Jan 16, 2026
Merged

SDK Release Preparation for v0.12 - Enum Fix, Consistent Request Body Naming, and Migration Guide Updates#631
leggetter merged 4 commits into
mainfrom
feat/sdk-generation-update

Conversation

@leggetter

Copy link
Copy Markdown
Collaborator

Summary

This PR prepares the SDKs for v0.12 release by:

  • Fixing enum duplication issues in the OpenAPI spec
  • Standardizing request body field naming to params across all SDKs
  • Updating the migration guide with version distinctions and breaking changes
  • Updating examples, tests, and documentation to reflect SDK changes

Changes

OpenAPI Specification

  • ✅ Added reusable DestinationType enum schema in components/schemas
  • ✅ Refactored /tenants/{tenant_id}/destinations type parameter to reference the enum
  • ✅ Fixes enum duplication that generated ListTenantDestinationsTypeEnum1 and ListTenantDestinationsTypeEnum2 (now uses single components.DestinationType)

SDK Configuration (requestBodyFieldName)

  • TypeScript (sdks/outpost-typescript/.speakeasy/gen.yaml): Set requestBodyFieldName: params
  • Python (sdks/outpost-python/.speakeasy/gen.yaml): Set requestBodyFieldName: params
  • Go (sdks/outpost-go/.speakeasy/gen.yaml): Set requestBodyFieldName: params

All SDKs now use params instead of operation-specific names like destinationCreate.

Migration Guide Updates (docs/pages/guides/upgrade-v0.12.mdx)

  • ✅ Added "Version Information" section distinguishing Outpost platform (v0.12) from SDK versions (TypeScript v0.6.0, Python v0.5.0, Go v0.5.0)
  • ✅ Made SDK sections generic (not TypeScript-specific) with TypeScript examples
  • ✅ Documented breaking changes:
    • SDK request body field names: destinationCreateparams
    • SDK response structure: response.result.dataresponse.data
  • ✅ Updated upgrade checklist

SDK Client & Test Updates

  • ✅ Updated spec-sdk-tests/utils/sdk-client.ts:
    • Use params instead of destinationCreate
    • Removed as any cast from listDestinations, using proper DestinationType enum
    • Fixed baseURL to include /api/v1 prefix
  • ✅ Updated spec-sdk-tests/tests/events.test.ts:
    • Changed response.result.dataresponse.data
    • Increased event test timeouts from 30s to 60s

Example Updates

  • ✅ Updated TypeScript examples to use params:
    • examples/sdk-typescript/auth.ts
    • examples/sdk-typescript/create-destination.ts
    • examples/sdk-typescript/index.ts
  • ✅ Updated examples/sdk-typescript/package.json to use local SDK path for development

Documentation

  • ✅ Updated docs/pages/sdks.mdx to use params in code examples

Overlay Configuration

  • ✅ Maintained global tenant_id parameter in sdks/schemas/speakeasy-modifications-overlay.yaml to support optional tenant_id for JWT authentication

Breaking Changes

  1. SDK request body field names:

    • Before: destinationCreate, destinationUpdate, etc.
    • After: params (consistent across all SDKs)
    • Affects: TypeScript v0.6.0, Python v0.5.0, Go v0.5.0
  2. SDK response structure:

    • Before: response.result.data
    • After: response.data
    • Affects: Paginated list endpoints (events, etc.)
  3. Enum types:

    • Before: ListTenantDestinationsTypeEnum1 | ListTenantDestinationsTypeEnum2[]
    • After: Single DestinationType enum
    • Note: Not breaking for users (strings still accepted, type safety improved)

Testing

  • ✅ All SDKs regenerate successfully with new configuration
  • ✅ TypeScript SDK rebuilt and verified
  • ✅ All spec-sdk-tests passing: 132 passing, 14 pending (expected - Hookdeck destination tests)
  • ✅ Verified params field appears correctly in:
    • Go SDK: CreateTenantDestinationRequest.Params
    • Python SDK: destinations.create(..., params=...)
    • TypeScript SDK: destinations.create({ ..., params: ... })

SDK Versions

This PR prepares for:

  • TypeScript SDK: v0.6.0
  • Python SDK: v0.5.0
  • Go SDK: v0.5.0

Next Steps

  1. Merge this PR
  2. Run GitHub Actions workflows to generate SDKs with versions:
    • Generate OUTPOST-TS with set_version: "0.6.0"
    • Generate OUTPOST-PYTHON with set_version: "0.5.0"
    • Generate OUTPOST-GO with set_version: "0.5.0"
  3. Verify generated SDKs use params correctly
  4. Publish SDKs to respective registries

Files Changed

Core Configuration:

  • docs/apis/openapi.yaml - Enum refactoring
  • sdks/outpost-typescript/.speakeasy/gen.yaml - requestBodyFieldName: params
  • sdks/outpost-python/.speakeasy/gen.yaml - requestBodyFieldName: params
  • sdks/outpost-go/.speakeasy/gen.yaml - requestBodyFieldName: params
  • sdks/schemas/speakeasy-modifications-overlay.yaml - Global tenant_id parameter

Documentation:

  • docs/pages/guides/upgrade-v0.12.mdx - Migration guide updates
  • docs/pages/sdks.mdx - Code examples updated

Tests & Examples:

  • spec-sdk-tests/utils/sdk-client.ts - SDK client wrapper updates
  • spec-sdk-tests/tests/events.test.ts - Response structure and timeout updates
  • examples/sdk-typescript/*.ts - Example code updates
  • examples/sdk-typescript/package.json - Local SDK dependency

…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.
Copilot AI review requested due to automatic review settings January 15, 2026 20:31
@vercel

vercel Bot commented Jan 15, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Review Updated (UTC)
outpost-docs Ready Ready Preview, Comment Jan 15, 2026 8:47pm
outpost-website Ready Ready Preview, Comment Jan 15, 2026 8:47pm

Review with Vercel Agent

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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 params across TypeScript, Python, and Go SDKs
  • Fixed OpenAPI enum duplication by creating a reusable DestinationType schema component
  • Updated migration guide with clear version distinctions and breaking change documentation
  • Updated SDK client utilities, tests, examples, and documentation to use the new params field 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

Copilot AI Jan 15, 2026

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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).

Suggested change
version: 0.11.1
version: 0.6.0

Copilot uses AI. Check for mistakes.
skipResponseBodyAssertions: false
python:
version: 0.4.0
version: 0.6.0

Copilot AI Jan 15, 2026

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

Suggested change
version: 0.6.0
version: 0.5.0

Copilot uses AI. Check for mistakes.
skipResponseBodyAssertions: false
go:
version: 0.4.0
version: 0.6.0

Copilot AI Jan 15, 2026

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

Suggested change
version: 0.6.0
version: 0.5.0

Copilot uses AI. Check for mistakes.
Comment on lines 47 to 49
security: {
adminApiKey: config.apiKey || process.env.API_KEY || '',
},

Copilot AI Jan 15, 2026

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

Copilot uses AI. Check for mistakes.
Comment thread docs/pages/guides/upgrade-v0.12.mdx Outdated
Examples shown in TypeScript, but changes apply to all SDKs (TypeScript, Python, Go).
:::

### Before (v0.10.0)

Copilot AI Jan 15, 2026

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

Suggested change
### Before (v0.10.0)
### Before (v0.5.x or earlier)

Copilot uses AI. Check for mistakes.
Comment thread docs/pages/guides/upgrade-v0.12.mdx Outdated
Examples shown in TypeScript, but changes apply to all SDKs (TypeScript, Python, Go).
:::

### Before (v0.10.0)

Copilot AI Jan 15, 2026

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

Suggested change
### Before (v0.10.0)
### Before (v0.11.0)

Copilot uses AI. Check for mistakes.
@vercel vercel Bot temporarily deployed to Preview – outpost-docs January 15, 2026 20:47 Inactive
@vercel vercel Bot temporarily deployed to Preview – outpost-website January 15, 2026 20:47 Inactive
@leggetter leggetter merged commit fa2caba into main Jan 16, 2026
4 checks passed
@leggetter leggetter deleted the feat/sdk-generation-update branch January 16, 2026 09:41
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants