From 4b92c93a3c9abc0338bbd9b25ea42c9934970c84 Mon Sep 17 00:00:00 2001 From: Wahhaj Zahedi Date: Thu, 5 Mar 2026 11:13:41 -0500 Subject: [PATCH 1/2] feat(user-management): add directoryManaged to OrganizationMembership Co-Authored-By: Claude Opus 4.6 --- package-lock.json | 11 ----------- src/actions/actions.spec.ts | 1 + .../fixtures/authentication-action-context.json | 1 + .../list-organization-memberships-for-resource.json | 1 + .../fixtures/deactivate-organization-membership.json | 1 + .../fixtures/list-organization-memberships.json | 1 + .../fixtures/organization-membership.json | 1 + .../interfaces/organization-membership.interface.ts | 2 ++ .../serializers/organization-membership.serializer.ts | 2 ++ 9 files changed, 10 insertions(+), 11 deletions(-) diff --git a/package-lock.json b/package-lock.json index 838bd8232..963cae754 100644 --- a/package-lock.json +++ b/package-lock.json @@ -132,7 +132,6 @@ "integrity": "sha512-e7jT4DxYvIDLk1ZHmU/m/mB19rex9sv0c2ftBtjSBv+kVM/902eh0fINUzD7UwLLNR+jU585GxUJ8/EBfAM5fw==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@babel/code-frame": "^7.27.1", "@babel/generator": "^7.28.5", @@ -4507,7 +4506,6 @@ "integrity": "sha512-okqtOgqu2qmZJ5iN4TWlgfF171dZmx2FzdOv2K/ixL2LZWDStL8+JgQerI2sa8eAEfoydG9+0V96m7V+P8yE1Q==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@eslint-community/regexpp": "^4.12.2", "@typescript-eslint/scope-manager": "8.52.0", @@ -4547,7 +4545,6 @@ "integrity": "sha512-iIACsx8pxRnguSYhHiMn2PvhvfpopO9FXHyn1mG5txZIsAaB6F0KwbFnUQN3KCiG3Jcuad/Cao2FAs1Wp7vAyg==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@typescript-eslint/scope-manager": "8.52.0", "@typescript-eslint/types": "8.52.0", @@ -5028,7 +5025,6 @@ "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", "dev": true, "license": "MIT", - "peer": true, "bin": { "acorn": "bin/acorn" }, @@ -5397,7 +5393,6 @@ } ], "license": "MIT", - "peer": true, "dependencies": { "baseline-browser-mapping": "^2.9.0", "caniuse-lite": "^1.0.30001759", @@ -6138,7 +6133,6 @@ "integrity": "sha512-LEyamqS7W5HB3ujJyvi0HQK/dtVINZvd5mAAp9eT5S/ujByGjiZLCzPcHVzuXbpJDJF/cxwHlfceVUDZ2lnSTw==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@eslint-community/eslint-utils": "^4.8.0", "@eslint-community/regexpp": "^4.12.1", @@ -7193,7 +7187,6 @@ "integrity": "sha512-F26gjC0yWN8uAA5m5Ss8ZQf5nDHWGlN/xWZIh8S5SRbsEKBovwZhxGd6LJlbZYxBgCYOtreSUyb8hpXyGC5O4A==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@jest/core": "30.2.0", "@jest/types": "30.2.0", @@ -8038,7 +8031,6 @@ "integrity": "sha512-jcByLnIFkd5gSXZmjNvS1TlmRhCXZjIzHYlaGkPlLIekG55JDR2Z4va9tZwCiP+/RDERiNhMOFu01xd6O5ct1Q==", "dev": true, "license": "MIT", - "peer": true, "bin": { "marked": "bin/marked.js" }, @@ -9034,7 +9026,6 @@ "integrity": "sha512-Qd9c2p0XKZdgT5AYd+KgAMggJ8ZmCs3JnS9PTMWkyUfteKlfmKtxJbWTHkVakxwXs1Ub7jrRYVeFeF7N0sQxyw==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@oxc-project/types": "=0.101.0", "@rolldown/pluginutils": "1.0.0-beta.53" @@ -9708,7 +9699,6 @@ "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=12" }, @@ -9932,7 +9922,6 @@ "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", "dev": true, "license": "Apache-2.0", - "peer": true, "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" diff --git a/src/actions/actions.spec.ts b/src/actions/actions.spec.ts index 2d2040e17..094b54e92 100644 --- a/src/actions/actions.spec.ts +++ b/src/actions/actions.spec.ts @@ -155,6 +155,7 @@ describe('Actions', () => { slug: 'member', }, status: 'active', + directoryManaged: false, customAttributes: {}, createdAt: '2024-10-22T17:12:50.746Z', updatedAt: '2024-10-22T17:12:50.746Z', diff --git a/src/actions/fixtures/authentication-action-context.json b/src/actions/fixtures/authentication-action-context.json index 83c73511d..1154605bb 100644 --- a/src/actions/fixtures/authentication-action-context.json +++ b/src/actions/fixtures/authentication-action-context.json @@ -35,6 +35,7 @@ "slug": "member" }, "status": "active", + "directory_managed": false, "custom_attributes": {}, "created_at": "2024-10-22T17:12:50.746Z", "updated_at": "2024-10-22T17:12:50.746Z" diff --git a/src/authorization/fixtures/list-organization-memberships-for-resource.json b/src/authorization/fixtures/list-organization-memberships-for-resource.json index 04b19ce29..5efc26419 100644 --- a/src/authorization/fixtures/list-organization-memberships-for-resource.json +++ b/src/authorization/fixtures/list-organization-memberships-for-resource.json @@ -8,6 +8,7 @@ "organization_id": "org_01HXYZ123ABC456DEF789ABC", "organization_name": "Acme Corp", "status": "active", + "directory_managed": false, "created_at": "2024-01-15T09:30:00.000Z", "updated_at": "2024-01-15T09:30:00.000Z", "custom_attributes": { diff --git a/src/user-management/fixtures/deactivate-organization-membership.json b/src/user-management/fixtures/deactivate-organization-membership.json index 84a29f593..b645d4f0b 100644 --- a/src/user-management/fixtures/deactivate-organization-membership.json +++ b/src/user-management/fixtures/deactivate-organization-membership.json @@ -7,6 +7,7 @@ "role": { "slug": "member" }, + "directory_managed": false, "custom_attributes": {}, "created_at": "2023-07-18T02:07:19.911Z", "updated_at": "2023-07-18T02:07:19.911Z" diff --git a/src/user-management/fixtures/list-organization-memberships.json b/src/user-management/fixtures/list-organization-memberships.json index a468249a5..9a00ff61d 100644 --- a/src/user-management/fixtures/list-organization-memberships.json +++ b/src/user-management/fixtures/list-organization-memberships.json @@ -11,6 +11,7 @@ "role": { "slug": "member" }, + "directory_managed": false, "custom_attributes": {}, "created_at": "2023-07-18T02:07:19.911Z", "updated_at": "2023-07-18T02:07:19.911Z" diff --git a/src/user-management/fixtures/organization-membership.json b/src/user-management/fixtures/organization-membership.json index 08148ee97..eb6b1bfd9 100644 --- a/src/user-management/fixtures/organization-membership.json +++ b/src/user-management/fixtures/organization-membership.json @@ -7,6 +7,7 @@ "role": { "slug": "member" }, + "directory_managed": false, "custom_attributes": {}, "created_at": "2023-07-18T02:07:19.911Z", "updated_at": "2023-07-18T02:07:19.911Z" diff --git a/src/user-management/interfaces/organization-membership.interface.ts b/src/user-management/interfaces/organization-membership.interface.ts index b726d0c39..1b25cb6ea 100644 --- a/src/user-management/interfaces/organization-membership.interface.ts +++ b/src/user-management/interfaces/organization-membership.interface.ts @@ -8,6 +8,7 @@ export interface BaseOrganizationMembership { organizationId: string; status: OrganizationMembershipStatus; userId: string; + directoryManaged: boolean; createdAt: string; updatedAt: string; customAttributes: Record; @@ -28,6 +29,7 @@ export interface BaseOrganizationMembershipResponse { organization_name: string; status: OrganizationMembershipStatus; user_id: string; + directory_managed: boolean; created_at: string; updated_at: string; custom_attributes?: Record; diff --git a/src/user-management/serializers/organization-membership.serializer.ts b/src/user-management/serializers/organization-membership.serializer.ts index 67b831671..ffb23f475 100644 --- a/src/user-management/serializers/organization-membership.serializer.ts +++ b/src/user-management/serializers/organization-membership.serializer.ts @@ -14,6 +14,7 @@ export const deserializeOrganizationMembership = ( organizationId: organizationMembership.organization_id, organizationName: organizationMembership.organization_name, status: organizationMembership.status, + directoryManaged: organizationMembership.directory_managed, createdAt: organizationMembership.created_at, updatedAt: organizationMembership.updated_at, role: organizationMembership.role, @@ -29,6 +30,7 @@ export const deserializeAuthorizationOrganizationMembership = ( userId: organizationMembership.user_id, organizationId: organizationMembership.organization_id, status: organizationMembership.status, + directoryManaged: organizationMembership.directory_managed, createdAt: organizationMembership.created_at, updatedAt: organizationMembership.updated_at, customAttributes: organizationMembership.custom_attributes ?? {}, From 24688ee945f8ffff8f9ee3a95da04456390b8a2c Mon Sep 17 00:00:00 2001 From: Wahhaj Zahedi Date: Thu, 5 Mar 2026 14:49:47 -0500 Subject: [PATCH 2/2] fix: make directory_managed optional with fallback, revert package-lock - Make directory_managed optional in response interface for backward compatibility with older API responses - Add ?? false fallback in both deserializers - Revert unintentional package-lock.json changes Co-Authored-By: Claude Opus 4.6 --- package-lock.json | 11 +++++++++++ .../interfaces/organization-membership.interface.ts | 2 +- .../serializers/organization-membership.serializer.ts | 4 ++-- 3 files changed, 14 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 963cae754..838bd8232 100644 --- a/package-lock.json +++ b/package-lock.json @@ -132,6 +132,7 @@ "integrity": "sha512-e7jT4DxYvIDLk1ZHmU/m/mB19rex9sv0c2ftBtjSBv+kVM/902eh0fINUzD7UwLLNR+jU585GxUJ8/EBfAM5fw==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@babel/code-frame": "^7.27.1", "@babel/generator": "^7.28.5", @@ -4506,6 +4507,7 @@ "integrity": "sha512-okqtOgqu2qmZJ5iN4TWlgfF171dZmx2FzdOv2K/ixL2LZWDStL8+JgQerI2sa8eAEfoydG9+0V96m7V+P8yE1Q==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@eslint-community/regexpp": "^4.12.2", "@typescript-eslint/scope-manager": "8.52.0", @@ -4545,6 +4547,7 @@ "integrity": "sha512-iIACsx8pxRnguSYhHiMn2PvhvfpopO9FXHyn1mG5txZIsAaB6F0KwbFnUQN3KCiG3Jcuad/Cao2FAs1Wp7vAyg==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@typescript-eslint/scope-manager": "8.52.0", "@typescript-eslint/types": "8.52.0", @@ -5025,6 +5028,7 @@ "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", "dev": true, "license": "MIT", + "peer": true, "bin": { "acorn": "bin/acorn" }, @@ -5393,6 +5397,7 @@ } ], "license": "MIT", + "peer": true, "dependencies": { "baseline-browser-mapping": "^2.9.0", "caniuse-lite": "^1.0.30001759", @@ -6133,6 +6138,7 @@ "integrity": "sha512-LEyamqS7W5HB3ujJyvi0HQK/dtVINZvd5mAAp9eT5S/ujByGjiZLCzPcHVzuXbpJDJF/cxwHlfceVUDZ2lnSTw==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@eslint-community/eslint-utils": "^4.8.0", "@eslint-community/regexpp": "^4.12.1", @@ -7187,6 +7193,7 @@ "integrity": "sha512-F26gjC0yWN8uAA5m5Ss8ZQf5nDHWGlN/xWZIh8S5SRbsEKBovwZhxGd6LJlbZYxBgCYOtreSUyb8hpXyGC5O4A==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@jest/core": "30.2.0", "@jest/types": "30.2.0", @@ -8031,6 +8038,7 @@ "integrity": "sha512-jcByLnIFkd5gSXZmjNvS1TlmRhCXZjIzHYlaGkPlLIekG55JDR2Z4va9tZwCiP+/RDERiNhMOFu01xd6O5ct1Q==", "dev": true, "license": "MIT", + "peer": true, "bin": { "marked": "bin/marked.js" }, @@ -9026,6 +9034,7 @@ "integrity": "sha512-Qd9c2p0XKZdgT5AYd+KgAMggJ8ZmCs3JnS9PTMWkyUfteKlfmKtxJbWTHkVakxwXs1Ub7jrRYVeFeF7N0sQxyw==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@oxc-project/types": "=0.101.0", "@rolldown/pluginutils": "1.0.0-beta.53" @@ -9699,6 +9708,7 @@ "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", "dev": true, "license": "MIT", + "peer": true, "engines": { "node": ">=12" }, @@ -9922,6 +9932,7 @@ "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", "dev": true, "license": "Apache-2.0", + "peer": true, "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" diff --git a/src/user-management/interfaces/organization-membership.interface.ts b/src/user-management/interfaces/organization-membership.interface.ts index 1b25cb6ea..287b3d5ca 100644 --- a/src/user-management/interfaces/organization-membership.interface.ts +++ b/src/user-management/interfaces/organization-membership.interface.ts @@ -29,7 +29,7 @@ export interface BaseOrganizationMembershipResponse { organization_name: string; status: OrganizationMembershipStatus; user_id: string; - directory_managed: boolean; + directory_managed?: boolean; created_at: string; updated_at: string; custom_attributes?: Record; diff --git a/src/user-management/serializers/organization-membership.serializer.ts b/src/user-management/serializers/organization-membership.serializer.ts index ffb23f475..cdc594647 100644 --- a/src/user-management/serializers/organization-membership.serializer.ts +++ b/src/user-management/serializers/organization-membership.serializer.ts @@ -14,7 +14,7 @@ export const deserializeOrganizationMembership = ( organizationId: organizationMembership.organization_id, organizationName: organizationMembership.organization_name, status: organizationMembership.status, - directoryManaged: organizationMembership.directory_managed, + directoryManaged: organizationMembership.directory_managed ?? false, createdAt: organizationMembership.created_at, updatedAt: organizationMembership.updated_at, role: organizationMembership.role, @@ -30,7 +30,7 @@ export const deserializeAuthorizationOrganizationMembership = ( userId: organizationMembership.user_id, organizationId: organizationMembership.organization_id, status: organizationMembership.status, - directoryManaged: organizationMembership.directory_managed, + directoryManaged: organizationMembership.directory_managed ?? false, createdAt: organizationMembership.created_at, updatedAt: organizationMembership.updated_at, customAttributes: organizationMembership.custom_attributes ?? {},