feat(oagen[2/2]): Update existing SDK modules with generated types, docs, and serializers#1536
feat(oagen[2/2]): Update existing SDK modules with generated types, docs, and serializers#1536gjtorikian wants to merge 1 commit intooagen/1/new-apisfrom
Conversation
c9684b5 to
1cbfe41
Compare
…ocs, and serializers Generated by running: npm run sdk:generate:node --target ../backend/workos-node - JSDoc on all existing service methods (pulled from OpenAPI spec) - Serialize functions and Response interfaces alongside existing deserialize functions - Six new user-management sub-services (session tokens, CORS origins, JWT templates, redirect URIs, authorized applications, data providers) wired into workos.ts - New dependency interfaces, serializers, and enum types required by the above Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
1cbfe41 to
25b79ea
Compare
dandorman
left a comment
There was a problem hiding this comment.
Here's what Claude found, and I double checked.
-
JSDoc placed on wrong methods (oagen bug — HIGH)
The generator appears to match JSDoc to methods by position rather than by name/operationId. This causes off-by-one mismatches in files where the existing method order doesn't match the OpenAPI spec order:
src/authorization/authorization.ts— "List environment roles" JSDoc is oncreateEnvironmentRole(), "Create an environment role" is onlistEnvironmentRoles(), etc.src/organizations/organizations.ts— "Create an Organization Domain" JSDoc is oncreateOrganization()src/user-management/user-management.ts— "List authentication factors" JSDoc appears onenrollAuthFactor()
This will mislead anyone using IDE hover docs.
-
Lost
@deprecatednotice (SEMANTIC)
src/authorization/authorization.ts— the hand-written@deprecated Use workos.permissions.delete() insteadondeletePermission()was silently replaced by the generator's JSDoc ("Remove a permission from an organization role"). The deprecation signal is gone. -
Lost SDK-specific documentation (SEMANTIC)
src/sso/sso.ts— the detailed hand-written JSDoc ongetProfileAndToken()(documenting PKCE flow, public vs confidential client auto-detection, OAuth 2.1 behavior,@throws) was replaced with a generic API description from the OpenAPI spec. -
Duplicate ConnectionType enum (COMPILE RISK)
src/sso/interfaces/now has bothconnection-type.interface.tsand a pre-existingconnection-type.enum.ts, both exporting export enum ConnectionType. The new one adds ~15 new members. If both are re-exported from the barrel, this is a duplicate identifier error. -
Redundant union type (oagen bug — MINOR)
src/mfa/interfaces/authentication-factor.interface.tshastotp?: AuthenticationFactorTotp | AuthenticationFactorTotp;. Same type unioned with itself — likely from an OpenAPIoneOfwith duplicate refs. -
Missing barrel exports (oagen bug — MINOR)
src/authorization/interfaces/index.tsdoesn't exportrole-list.interface.tsorrole-assignment-resource.interface.ts.Similarly,src/audit-logs/interfaces/index.tsdoesn't exportaudit-log-schema.interface.ts. -
"auto-generated" header on mixed files (MISLEADING)
Files likesso.tsanduser-management.tsnow have// This file is auto-generated by oagen. Do not edit.at the top, but they still contain substantial hand-written code. The header implies the entire file is generated.
Description
This PR is the output of running
npm run sdk:generate:node --target ../backend/workos-nodeagainst the existing SDK. Everything in this diff was produced by the generator in a single run — no manual edits.The changes fall into a few categories:
JSDoc on every public method
The generator pulls descriptions, parameter docs, return types, and error codes directly from the OpenAPI spec and attaches them as JSDoc comments. This affects every service class:
api-keys,audit-logs,authorization,directory-sync,events,feature-flags,mfa,organizations,pipes,sso,user-management, andwidgets. No method signatures or behavior changed—just documentation.Serialize functions and Response interfaces
Previously, most modules only had
deserialize*functions (wire → SDK model). The generator now produces the inverseserialize*functions (SDK model → wire) and corresponding*Responseinterfaces. These are needed for features like request body serialization and round-trip type safety, and will be consumed by service methods as additional endpoints are wired up.Six new user-management sub-services
The generator identified groups of user-management endpoints that the API spec treats as distinct resources:
UserManagementSessionTokensUserManagementCorsOriginsUserManagementJWTTemplateUserManagementRedirectUrisUserManagementUsersAuthorizedApplicationsUserManagementDataProvidersThese are wired into
workos.tsas new readonly properties. Like the naming decisions in PR #1535 (AdminPortal, Permissions), these names come from the generator and match the API docs grouping.New dependency files (244 new, 39 modified)
Each modified file may import new types that didn't exist before. The generator only integrates files that are transitively reachable from resource/client entry points via the import graph — two layers of tree-shaking (model-level in
generate-files.tsand file-level inintegrate.ts) prevent orphan serializers, fixtures, and interfaces from being written to the target.Note: this is the second of two PRs. PR #1535 introduced the new services; this one updates existing services.