Skip to content

Add x-glean-deprecated to Speakeasy deprecation format transformation#75

Merged
travis-hoover-glean merged 3 commits intomainfrom
travishoover/x-glean-deprecated
Dec 8, 2025
Merged

Add x-glean-deprecated to Speakeasy deprecation format transformation#75
travis-hoover-glean merged 3 commits intomainfrom
travishoover/x-glean-deprecated

Conversation

@travis-hoover-glean
Copy link
Contributor

@travis-hoover-glean travis-hoover-glean commented Dec 8, 2025

Summary

  • Add transformGleanDeprecated function to convert x-glean-deprecated annotations to Speakeasy-compatible deprecation format
  • Integrate the transformation into the main spec processing pipeline
  • Add comprehensive tests for the new transformation

Details

This PR enables Speakeasy SDK generation to properly handle deprecated API elements by transforming Glean's internal deprecation annotations to the format Speakeasy expects.

Transformation Logic

For each element with x-glean-deprecated, the transformer:

  1. Adds deprecated: true (standard OpenAPI field)
  2. Generates x-speakeasy-deprecation-message with the format:
    "Deprecated on {introduced}, removal scheduled for {removal}: {message}"
  3. Preserves the original x-glean-deprecated annotation for internal tooling

Example

Input:

paths:
  /test:
    get:
      x-glean-deprecated:
        id: "uuid-123"
        message: "Use /v2/test instead"
        introduced: "2024-01-15"
        removal: "2024-07-15"

Output:

paths:
  /test:
    get:
      deprecated: true
      x-speakeasy-deprecation-message: "Deprecated on 2024-01-15, removal scheduled for 2024-07-15: Use /v2/test instead"
      x-glean-deprecated:
        id: "uuid-123"
        message: "Use /v2/test instead"
        introduced: "2024-01-15"
        removal: "2024-07-15"

Supported Deprecation Targets

The transformation handles x-glean-deprecated on:

  • Operations (path methods)
  • Parameters
  • Schema properties
  • Nested structures (e.g., request body schemas)

Test plan

  • Added unit tests for operation-level deprecations
  • Added unit tests for parameter-level deprecations
  • Added unit tests for schema property deprecations
  • Added unit tests for nested deprecations
  • Added unit tests for specs without deprecations (no-op case)
  • All 44 tests pass

Transform x-glean-deprecated annotations in OpenAPI specs to Speakeasy-
compatible deprecation format. This enables Speakeasy SDK generation to
properly handle deprecated operations, parameters, and schema properties.

The transformation:
- Adds `deprecated: true` to elements with x-glean-deprecated
- Generates `x-speakeasy-deprecation-message` with format:
  "Deprecated on {introduced}, removal scheduled for {removal}: {message}"
- Preserves the original x-glean-deprecated annotation for internal tooling
@travis-hoover-glean travis-hoover-glean requested a review from a team as a code owner December 8, 2025 21:15
@travis-hoover-glean travis-hoover-glean merged commit 080a0da into main Dec 8, 2025
3 checks passed
@travis-hoover-glean travis-hoover-glean deleted the travishoover/x-glean-deprecated branch December 8, 2025 21:54
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