From 570bcc5e6f610e68c25d255fb84def543c7b84f1 Mon Sep 17 00:00:00 2001 From: Jacek Date: Thu, 7 May 2026 14:40:27 -0500 Subject: [PATCH] feat(backend): add RoleSet JSON types and missing OrganizationJSON fields --- .changeset/role-set-json-types.md | 5 +++ packages/backend/src/api/resources/JSON.ts | 50 ++++++++++++++++++++++ packages/backend/src/index.ts | 3 ++ 3 files changed, 58 insertions(+) create mode 100644 .changeset/role-set-json-types.md diff --git a/.changeset/role-set-json-types.md b/.changeset/role-set-json-types.md new file mode 100644 index 00000000000..549164ed2c3 --- /dev/null +++ b/.changeset/role-set-json-types.md @@ -0,0 +1,5 @@ +--- +"@clerk/backend": patch +--- + +Add `RoleSetJSON`, `RoleSetItemJSON`, and `RoleSetMigrationJSON` types matching the BAPI OpenAPI schema. Add `role_set_key`, `last_active_at`, and `missing_member_with_elevated_permissions` to `OrganizationJSON`. diff --git a/packages/backend/src/api/resources/JSON.ts b/packages/backend/src/api/resources/JSON.ts index abb67e67019..1c44551bd09 100644 --- a/packages/backend/src/api/resources/JSON.ts +++ b/packages/backend/src/api/resources/JSON.ts @@ -66,6 +66,9 @@ export const ObjectType = { TotalCount: 'total_count', TestingToken: 'testing_token', Role: 'role', + RoleSet: 'role_set', + RoleSetItem: 'role_set_item', + RoleSetMigration: 'role_set_migration', Permission: 'permission', BillingPayer: 'commerce_payer', BillingPaymentAttempt: 'commerce_payment_attempt', @@ -377,6 +380,53 @@ export interface OrganizationJSON extends ClerkResourceJSON { created_by?: string; created_at: number; updated_at: number; + last_active_at?: number; + missing_member_with_elevated_permissions?: boolean; + role_set_key?: string | null; +} + +export interface RoleSetItemJSON { + object: typeof ObjectType.RoleSetItem; + id: string; + name: string; + key: string; + description: string | null; + members_count?: number | null; + has_members?: boolean | null; + created_at: number; + updated_at: number; +} + +export interface RoleSetMigrationJSON { + object: typeof ObjectType.RoleSetMigration; + id: string; + organization_id: string | null; + instance_id: string; + source_role_set_id: string; + dest_role_set_id: string | null; + trigger_type: string; + status: string; + migrated_members: number; + mappings: Record | null; + started_at?: number; + completed_at?: number; + created_at: number; + updated_at: number; +} + +export interface RoleSetJSON { + object: typeof ObjectType.RoleSet; + id: string; + name: string; + key: string; + description: string | null; + roles: RoleSetItemJSON[]; + default_role: RoleSetItemJSON | null; + creator_role: RoleSetItemJSON | null; + type: 'initial' | 'custom'; + role_set_migration: RoleSetMigrationJSON | null; + created_at: number; + updated_at: number; } export interface OrganizationDomainJSON extends ClerkResourceJSON { diff --git a/packages/backend/src/index.ts b/packages/backend/src/index.ts index a91007ddca1..7c75cc3ade5 100644 --- a/packages/backend/src/index.ts +++ b/packages/backend/src/index.ts @@ -86,6 +86,9 @@ export type { PublicOrganizationDataJSON, OrganizationMembershipJSON, OrganizationMembershipPublicUserDataJSON, + RoleSetJSON, + RoleSetItemJSON, + RoleSetMigrationJSON, PhoneNumberJSON, ProxyCheckJSON, RedirectUrlJSON,