@oxyhq/core 3.18.1 → 4.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (42) hide show
  1. package/dist/cjs/.tsbuildinfo +1 -1
  2. package/dist/cjs/OxyServices.js +3 -2
  3. package/dist/cjs/mixins/OxyServices.accounts.js +480 -0
  4. package/dist/cjs/mixins/OxyServices.connectedApps.js +73 -0
  5. package/dist/cjs/mixins/OxyServices.utility.js +3 -2
  6. package/dist/cjs/mixins/index.js +9 -6
  7. package/dist/esm/.tsbuildinfo +1 -1
  8. package/dist/esm/OxyServices.js +3 -2
  9. package/dist/esm/mixins/OxyServices.accounts.js +477 -0
  10. package/dist/esm/mixins/OxyServices.connectedApps.js +70 -0
  11. package/dist/esm/mixins/OxyServices.utility.js +3 -2
  12. package/dist/esm/mixins/index.js +9 -6
  13. package/dist/types/.tsbuildinfo +1 -1
  14. package/dist/types/OxyServices.d.ts +3 -2
  15. package/dist/types/index.d.ts +2 -3
  16. package/dist/types/mixins/OxyServices.accounts.d.ts +642 -0
  17. package/dist/types/mixins/OxyServices.auth.d.ts +1 -1
  18. package/dist/types/mixins/OxyServices.connectedApps.d.ts +168 -0
  19. package/dist/types/mixins/OxyServices.utility.d.ts +6 -3
  20. package/dist/types/mixins/index.d.ts +3 -4
  21. package/package.json +1 -1
  22. package/src/OxyServices.ts +3 -2
  23. package/src/index.ts +33 -34
  24. package/src/mixins/OxyServices.accounts.ts +1079 -0
  25. package/src/mixins/OxyServices.auth.ts +1 -1
  26. package/src/mixins/OxyServices.connectedApps.ts +165 -0
  27. package/src/mixins/OxyServices.utility.ts +7 -4
  28. package/src/mixins/__tests__/accounts.test.ts +667 -0
  29. package/src/mixins/__tests__/connectedApps.test.ts +1 -1
  30. package/src/mixins/index.ts +11 -9
  31. package/dist/cjs/mixins/OxyServices.applications.js +0 -350
  32. package/dist/cjs/mixins/OxyServices.managedAccounts.js +0 -143
  33. package/dist/cjs/mixins/OxyServices.workspaces.js +0 -181
  34. package/dist/esm/mixins/OxyServices.applications.js +0 -347
  35. package/dist/esm/mixins/OxyServices.managedAccounts.js +0 -140
  36. package/dist/esm/mixins/OxyServices.workspaces.js +0 -178
  37. package/dist/types/mixins/OxyServices.applications.d.ts +0 -496
  38. package/dist/types/mixins/OxyServices.managedAccounts.d.ts +0 -145
  39. package/dist/types/mixins/OxyServices.workspaces.d.ts +0 -219
  40. package/src/mixins/OxyServices.applications.ts +0 -773
  41. package/src/mixins/OxyServices.managedAccounts.ts +0 -173
  42. package/src/mixins/OxyServices.workspaces.ts +0 -351
@@ -6,7 +6,7 @@
6
6
  import type { User, RefreshAllResponse, RefreshCookieResponse } from '../models/interfaces';
7
7
  import type { SessionLoginResponse } from '../models/session';
8
8
  import type { OxyServicesBase } from '../OxyServices.base';
9
- import type { PublicApplication } from './OxyServices.applications';
9
+ import type { PublicApplication } from './OxyServices.connectedApps';
10
10
  export interface ChallengeResponse {
11
11
  challenge: string;
12
12
  expiresAt: string;
@@ -0,0 +1,168 @@
1
+ /**
2
+ * Connected Apps (OAuth consent) Methods Mixin
3
+ *
4
+ * The user-facing OAuth-consent surface: resolving the PUBLIC identity of a
5
+ * requesting application (for consent/authorize/device-flow screens), and
6
+ * viewing/revoking the THIRD-PARTY applications the current user has authorized.
7
+ *
8
+ * This is deliberately separate from account ownership (`OxyServices.accounts.ts`):
9
+ * an account owns and manages its own applications, whereas this mixin is about a
10
+ * user granting/revoking another party's app access to their own data. None of
11
+ * these methods touch the account graph.
12
+ *
13
+ * Reference connected apps by their application `_id` (`applicationId`), NOT a
14
+ * credential/client id, so a grant — and its revocation — survive credential
15
+ * rotation.
16
+ */
17
+ import type { OxyServicesBase } from '../OxyServices.base';
18
+ import type { ApplicationType } from './OxyServices.accounts';
19
+ /**
20
+ * Sanitized, PUBLIC application identity returned by the API when resolving a
21
+ * cross-app/OAuth client to a registered application.
22
+ *
23
+ * This shape carries NO sensitive or membership fields — it is safe to display
24
+ * unauthenticated in consent/authorize screens and device-flow approval UIs. The
25
+ * API resolves a `client_id` (OAuth credential public key) to the owning
26
+ * application and projects only the fields below. `id` is the application's
27
+ * `_id` as a string.
28
+ */
29
+ export interface PublicApplication {
30
+ /** The application's Mongo `_id` as a string. */
31
+ id: string;
32
+ /** Human-readable application name shown to the user. */
33
+ name: string;
34
+ /** Optional short description of what the application does. */
35
+ description?: string;
36
+ /** Optional icon URL for the application. */
37
+ icon?: string;
38
+ /** Optional public website/homepage URL for the application. */
39
+ websiteUrl?: string;
40
+ /** Application classification (set by Oxy platform staff). */
41
+ type: ApplicationType;
42
+ /** Whether the application is an officially endorsed Oxy application. */
43
+ isOfficial: boolean;
44
+ /** Whether the application is an internal Oxy ecosystem application. */
45
+ isInternal: boolean;
46
+ /** OAuth scopes the application is configured to request. */
47
+ scopes: string[];
48
+ /** Optional display name of the developer/owner organisation. */
49
+ developerName?: string;
50
+ }
51
+ /**
52
+ * A connected (OAuth-authorized) application from the current user's point of
53
+ * view: an application the user has granted access to via the consent flow.
54
+ *
55
+ * Returned by `GET /auth/grants` and rendered in the user-facing "Connected
56
+ * apps" management surface. Keyed by `applicationId` (the application's Mongo
57
+ * `_id`) rather than a credential/client id, so the grant — and a subsequent
58
+ * {@link OxyServicesConnectedAppsMixin.revokeAppGrant} — survive credential
59
+ * rotation. This is a display shape: it carries the application's name/logo and
60
+ * the granted scopes, never any membership or credential material.
61
+ */
62
+ export interface ConnectedApp {
63
+ /** The connected application's Mongo `_id`. Use this to revoke the grant. */
64
+ applicationId: string;
65
+ /** Human-readable application name shown to the user. */
66
+ name: string;
67
+ /** Optional logo URL for the application. */
68
+ logoUrl?: string;
69
+ /** OAuth scopes the user has granted to the application. */
70
+ scopes: string[];
71
+ /** ISO timestamp of when the user first authorized the application. */
72
+ firstGrantedAt: string;
73
+ /** ISO timestamp of when the grant was last exercised. */
74
+ lastUsedAt: string;
75
+ }
76
+ export declare function OxyServicesConnectedAppsMixin<T extends typeof OxyServicesBase>(Base: T): {
77
+ new (...args: any[]): {
78
+ /**
79
+ * Resolve an OAuth client identifier to the owning application's PUBLIC
80
+ * identity. No authentication required — the API returns only sanitized,
81
+ * display-safe metadata ({@link PublicApplication}). Use this to render the
82
+ * requesting application's name/icon in consent, authorize, and device-flow
83
+ * approval UIs before any session exists.
84
+ *
85
+ * @param clientId - The OAuth `client_id` (an active credential's public
86
+ * key). URL-encoded before being placed in the path.
87
+ */
88
+ getPublicApplication(clientId: string): Promise<PublicApplication>;
89
+ /**
90
+ * List the OAuth-authorized applications the current user has connected —
91
+ * the third-party apps the user granted access to via the consent flow.
92
+ * Each entry is a {@link ConnectedApp} carrying the application's display
93
+ * identity, the granted scopes, and when the grant was first made and last
94
+ * exercised. Requires an authenticated session.
95
+ *
96
+ * Backed by `GET /auth/grants`. The response is briefly cached
97
+ * (identity-scoped); {@link revokeAppGrant} busts that cache so a revoke is
98
+ * reflected on the next read.
99
+ */
100
+ listConnectedApps(): Promise<ConnectedApp[]>;
101
+ /**
102
+ * Revoke the current user's grant for a connected application, identified by
103
+ * its application `_id` (a {@link ConnectedApp.applicationId}, NOT a
104
+ * credential/client id — keyed by application so the revocation survives
105
+ * credential rotation). After this the application can no longer act on the
106
+ * user's behalf until it is re-authorized.
107
+ *
108
+ * Backed by `DELETE /auth/grants/:applicationId`. On success the cached
109
+ * connected-apps list (`GET:/auth/grants`) is invalidated so the next
110
+ * {@link listConnectedApps} read reflects the removal.
111
+ *
112
+ * @param applicationId - The connected application's Mongo `_id`.
113
+ */
114
+ revokeAppGrant(applicationId: string): Promise<void>;
115
+ httpService: import("../HttpService").HttpService;
116
+ cloudURL: string;
117
+ config: import("../OxyServices.base").OxyConfig;
118
+ __resetTokensForTests(): void;
119
+ makeRequest<T_1>(method: "GET" | "POST" | "PUT" | "PATCH" | "DELETE", url: string, data?: any, options?: import("../HttpService").RequestOptions): Promise<T_1>;
120
+ getBaseURL(): string;
121
+ getSessionBaseUrl(): string;
122
+ getClient(): import("../HttpService").HttpService;
123
+ createLinkedClient(config: import("../OxyServices.base").OxyConfig): import("..").LinkedHttpClient;
124
+ getMetrics(): {
125
+ totalRequests: number;
126
+ successfulRequests: number;
127
+ failedRequests: number;
128
+ cacheHits: number;
129
+ cacheMisses: number;
130
+ averageResponseTime: number;
131
+ };
132
+ clearCache(): void;
133
+ clearCacheEntry(key: string): void;
134
+ clearCacheByPrefix(prefix: string): number;
135
+ getCacheStats(): {
136
+ size: number;
137
+ hits: number;
138
+ misses: number;
139
+ hitRate: number;
140
+ };
141
+ getCloudURL(): string;
142
+ setTokens(accessToken: string): void;
143
+ clearTokens(): void;
144
+ onTokensChanged(listener: (accessToken: string | null) => void): () => void;
145
+ _cachedUserId: string | null | undefined;
146
+ _cachedAccessToken: string | null;
147
+ getCurrentUserId(): string | null;
148
+ hasValidToken(): boolean;
149
+ getAccessToken(): string | null;
150
+ getAccessTokenExpiry(): number | null;
151
+ setActingAs(userId: string | null): void;
152
+ getActingAs(): string | null;
153
+ waitForAuth(timeoutMs?: number): Promise<boolean>;
154
+ withAuthRetry<T_1>(operation: () => Promise<T_1>, operationName: string, options?: {
155
+ maxRetries?: number;
156
+ retryDelay?: number;
157
+ authTimeoutMs?: number;
158
+ }): Promise<T_1>;
159
+ validate(): Promise<boolean>;
160
+ handleError(error: unknown): Error;
161
+ healthCheck(): Promise<{
162
+ status: string;
163
+ users?: number;
164
+ timestamp?: string;
165
+ [key: string]: any;
166
+ }>;
167
+ };
168
+ } & T;
@@ -1,8 +1,10 @@
1
1
  import type { ApiError, User } from '../models/interfaces';
2
2
  import type { OxyServicesBase } from '../OxyServices.base';
3
3
  /**
4
- * Result from the managed-accounts verification endpoint.
5
- * Indicates whether a user is authorized to act as a given managed account.
4
+ * Result from the account acting-as verification endpoint
5
+ * (`GET /accounts/verify-acting-as`). Indicates whether a user is authorized to
6
+ * act as a given account. The `account:act_as` capability is granted only to the
7
+ * `owner`, `admin`, and `editor` account roles.
6
8
  */
7
9
  interface ActingAsVerification {
8
10
  authorized: boolean;
@@ -91,7 +93,8 @@ export declare function OxyServicesUtilityMixin<T extends typeof OxyServicesBase
91
93
  expiresAt: number;
92
94
  }>;
93
95
  /**
94
- * Verify that a user is authorized to act as a managed account.
96
+ * Verify that a user is authorized to act as an account (direct membership
97
+ * or inherited via an ancestor). Backed by `GET /accounts/verify-acting-as`.
95
98
  * Results are cached in-memory for 5 minutes to avoid repeated API calls.
96
99
  *
97
100
  * @internal Used by the auth() middleware — not part of the public API
@@ -17,8 +17,8 @@ import { OxyServicesLanguageMixin } from './OxyServices.language';
17
17
  import { OxyServicesPaymentMixin } from './OxyServices.payment';
18
18
  import { OxyServicesReputationMixin } from './OxyServices.reputation';
19
19
  import { OxyServicesAssetsMixin } from './OxyServices.assets';
20
- import { OxyServicesApplicationsMixin } from './OxyServices.applications';
21
- import { OxyServicesWorkspacesMixin } from './OxyServices.workspaces';
20
+ import { OxyServicesAccountsMixin } from './OxyServices.accounts';
21
+ import { OxyServicesConnectedAppsMixin } from './OxyServices.connectedApps';
22
22
  import { OxyServicesLocationMixin } from './OxyServices.location';
23
23
  import { OxyServicesAnalyticsMixin } from './OxyServices.analytics';
24
24
  import { OxyServicesDevicesMixin } from './OxyServices.devices';
@@ -26,7 +26,6 @@ import { OxyServicesSecurityMixin } from './OxyServices.security';
26
26
  import { OxyServicesUtilityMixin } from './OxyServices.utility';
27
27
  import { OxyServicesFeaturesMixin } from './OxyServices.features';
28
28
  import { OxyServicesTopicsMixin } from './OxyServices.topics';
29
- import { OxyServicesManagedAccountsMixin } from './OxyServices.managedAccounts';
30
29
  import { OxyServicesContactsMixin } from './OxyServices.contacts';
31
30
  import { OxyServicesAppDataMixin } from './OxyServices.appData';
32
31
  import { OxyServicesCivicMixin } from './OxyServices.civic';
@@ -41,7 +40,7 @@ import { OxyServicesLinksMixin } from './OxyServices.links';
41
40
  * If you add a new mixin to `MIXIN_PIPELINE`, add it here too so its methods
42
41
  * are visible without a cast.
43
42
  */
44
- type AllMixinInstances = InstanceType<ReturnType<typeof OxyServicesAuthMixin<typeof OxyServicesBase>>> & InstanceType<ReturnType<typeof OxyServicesFedCMMixin<typeof OxyServicesBase>>> & InstanceType<ReturnType<typeof OxyServicesSilentAuthMixin<typeof OxyServicesBase>>> & InstanceType<ReturnType<typeof OxyServicesRedirectAuthMixin<typeof OxyServicesBase>>> & InstanceType<ReturnType<typeof OxyServicesSsoMixin<typeof OxyServicesBase>>> & InstanceType<ReturnType<typeof OxyServicesUserMixin<typeof OxyServicesBase>>> & InstanceType<ReturnType<typeof OxyServicesIdentityMixin<typeof OxyServicesBase>>> & InstanceType<ReturnType<typeof OxyServicesPrivacyMixin<typeof OxyServicesBase>>> & InstanceType<ReturnType<typeof OxyServicesLanguageMixin<typeof OxyServicesBase>>> & InstanceType<ReturnType<typeof OxyServicesPaymentMixin<typeof OxyServicesBase>>> & InstanceType<ReturnType<typeof OxyServicesReputationMixin<typeof OxyServicesBase>>> & InstanceType<ReturnType<typeof OxyServicesAssetsMixin<typeof OxyServicesBase>>> & InstanceType<ReturnType<typeof OxyServicesApplicationsMixin<typeof OxyServicesBase>>> & InstanceType<ReturnType<typeof OxyServicesWorkspacesMixin<typeof OxyServicesBase>>> & InstanceType<ReturnType<typeof OxyServicesLocationMixin<typeof OxyServicesBase>>> & InstanceType<ReturnType<typeof OxyServicesAnalyticsMixin<typeof OxyServicesBase>>> & InstanceType<ReturnType<typeof OxyServicesDevicesMixin<typeof OxyServicesBase>>> & InstanceType<ReturnType<typeof OxyServicesSecurityMixin<typeof OxyServicesBase>>> & InstanceType<ReturnType<typeof OxyServicesFeaturesMixin<typeof OxyServicesBase>>> & InstanceType<ReturnType<typeof OxyServicesTopicsMixin<typeof OxyServicesBase>>> & InstanceType<ReturnType<typeof OxyServicesManagedAccountsMixin<typeof OxyServicesBase>>> & InstanceType<ReturnType<typeof OxyServicesContactsMixin<typeof OxyServicesBase>>> & InstanceType<ReturnType<typeof OxyServicesAppDataMixin<typeof OxyServicesBase>>> & InstanceType<ReturnType<typeof OxyServicesCivicMixin<typeof OxyServicesBase>>> & InstanceType<ReturnType<typeof OxyServicesNodesMixin<typeof OxyServicesBase>>> & InstanceType<ReturnType<typeof OxyServicesLinksMixin<typeof OxyServicesBase>>> & InstanceType<ReturnType<typeof OxyServicesUtilityMixin<typeof OxyServicesBase>>>;
43
+ type AllMixinInstances = InstanceType<ReturnType<typeof OxyServicesAuthMixin<typeof OxyServicesBase>>> & InstanceType<ReturnType<typeof OxyServicesFedCMMixin<typeof OxyServicesBase>>> & InstanceType<ReturnType<typeof OxyServicesSilentAuthMixin<typeof OxyServicesBase>>> & InstanceType<ReturnType<typeof OxyServicesRedirectAuthMixin<typeof OxyServicesBase>>> & InstanceType<ReturnType<typeof OxyServicesSsoMixin<typeof OxyServicesBase>>> & InstanceType<ReturnType<typeof OxyServicesUserMixin<typeof OxyServicesBase>>> & InstanceType<ReturnType<typeof OxyServicesIdentityMixin<typeof OxyServicesBase>>> & InstanceType<ReturnType<typeof OxyServicesPrivacyMixin<typeof OxyServicesBase>>> & InstanceType<ReturnType<typeof OxyServicesLanguageMixin<typeof OxyServicesBase>>> & InstanceType<ReturnType<typeof OxyServicesPaymentMixin<typeof OxyServicesBase>>> & InstanceType<ReturnType<typeof OxyServicesReputationMixin<typeof OxyServicesBase>>> & InstanceType<ReturnType<typeof OxyServicesAssetsMixin<typeof OxyServicesBase>>> & InstanceType<ReturnType<typeof OxyServicesAccountsMixin<typeof OxyServicesBase>>> & InstanceType<ReturnType<typeof OxyServicesConnectedAppsMixin<typeof OxyServicesBase>>> & InstanceType<ReturnType<typeof OxyServicesLocationMixin<typeof OxyServicesBase>>> & InstanceType<ReturnType<typeof OxyServicesAnalyticsMixin<typeof OxyServicesBase>>> & InstanceType<ReturnType<typeof OxyServicesDevicesMixin<typeof OxyServicesBase>>> & InstanceType<ReturnType<typeof OxyServicesSecurityMixin<typeof OxyServicesBase>>> & InstanceType<ReturnType<typeof OxyServicesFeaturesMixin<typeof OxyServicesBase>>> & InstanceType<ReturnType<typeof OxyServicesTopicsMixin<typeof OxyServicesBase>>> & InstanceType<ReturnType<typeof OxyServicesContactsMixin<typeof OxyServicesBase>>> & InstanceType<ReturnType<typeof OxyServicesAppDataMixin<typeof OxyServicesBase>>> & InstanceType<ReturnType<typeof OxyServicesCivicMixin<typeof OxyServicesBase>>> & InstanceType<ReturnType<typeof OxyServicesNodesMixin<typeof OxyServicesBase>>> & InstanceType<ReturnType<typeof OxyServicesLinksMixin<typeof OxyServicesBase>>> & InstanceType<ReturnType<typeof OxyServicesUtilityMixin<typeof OxyServicesBase>>>;
45
44
  /**
46
45
  * Constructor type for the fully composed mixin pipeline. Each mixin returns
47
46
  * a new constructor that augments its input; reducing across the pipeline
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@oxyhq/core",
3
- "version": "3.18.1",
3
+ "version": "4.0.0",
4
4
  "description": "OxyHQ SDK Foundation — API client, authentication, cryptographic identity, and shared utilities",
5
5
  "main": "dist/cjs/index.js",
6
6
  "module": "dist/esm/index.js",
@@ -85,8 +85,9 @@ import { composeOxyServices } from './mixins';
85
85
  * - **Payment**: Payment processing
86
86
  * - **Reputation**: Reputation system (Oxy Trust)
87
87
  * - **Assets**: File upload and asset management
88
- * - **Applications**: Application, membership, and credential management
89
- * - **Workspaces**: Workspace and membership management
88
+ * - **Accounts**: Unified account graph (tree, members, roles, bot credentials)
89
+ * and the applications owned within it (Application = OAuth client)
90
+ * - **Connected apps**: OAuth-consent surface (public app identity, grants)
90
91
  * - **Location**: Location-based features
91
92
  * - **Analytics**: Analytics tracking
92
93
  * - **Devices**: Device management
package/src/index.ts CHANGED
@@ -63,11 +63,6 @@ export type {
63
63
  CommonsSignInActionResult,
64
64
  } from './mixins/OxyServices.auth';
65
65
  export type { ServiceApp, ServiceActingAsVerification } from './mixins/OxyServices.utility';
66
- export type {
67
- CreateManagedAccountInput,
68
- ManagedAccountManager,
69
- ManagedAccount,
70
- } from './mixins/OxyServices.managedAccounts';
71
66
  export type {
72
67
  ContactDiscoveryMatch,
73
68
  ContactDiscoveryResponse,
@@ -97,26 +92,49 @@ export { normalizeProfileLinks } from './utils/profileLinks';
97
92
  export type { ProfileLink, ProfileLinkMetadata } from './utils/profileLinks';
98
93
 
99
94
  // ---------------------------------------------------------------------------
100
- // Applications (multi-user apps: membership, roles, credentials)
95
+ // Connected apps (OAuth consent: public app identity + authorized-app grants)
101
96
  // ---------------------------------------------------------------------------
102
97
  export type {
103
- Application,
104
98
  PublicApplication,
105
99
  ConnectedApp,
106
- ApplicationMember,
107
- ApplicationCredential,
108
- ApplicationRole,
100
+ } from './mixins/OxyServices.connectedApps';
101
+
102
+ // ---------------------------------------------------------------------------
103
+ // Accounts (unified account graph: tree, membership, roles, bot credentials)
104
+ // plus the applications owned within it (Application = OAuth client).
105
+ // ---------------------------------------------------------------------------
106
+ export type {
107
+ AccountKind,
108
+ AccountRelationship,
109
+ AccountRole,
110
+ AccountMemberStatus,
111
+ AccountMemberSource,
112
+ AccountMember,
113
+ AccountNode,
114
+ AccountCredentialType,
115
+ AccountCredentialEnvironment,
116
+ AccountCredentialStatus,
117
+ AccountCredential,
118
+ AccountCredentialWithSecret,
119
+ RotateAccountCredentialResult,
120
+ ListAccountsOptions,
121
+ CreateAccountInput,
122
+ UpdateAccountInput,
123
+ InviteAccountMemberInput,
124
+ UpdateAccountMemberInput,
125
+ TransferAccountOwnershipInput,
126
+ CreateAccountCredentialInput,
127
+ AccountSuccessResult,
128
+ // Applications owned within the account graph (Application = OAuth client).
129
+ Application,
109
130
  ApplicationType,
110
131
  ApplicationStatus,
111
- ApplicationMemberStatus,
132
+ ApplicationCredential,
112
133
  ApplicationCredentialType,
113
134
  ApplicationCredentialStatus,
114
135
  ApplicationEnvironment,
115
136
  CreateApplicationInput,
116
137
  UpdateApplicationInput,
117
- InviteApplicationMemberInput,
118
- UpdateApplicationMemberInput,
119
- TransferApplicationOwnershipInput,
120
138
  CreateApplicationCredentialInput,
121
139
  ApplicationCredentialWithSecret,
122
140
  RotateApplicationCredentialResult,
@@ -125,26 +143,7 @@ export type {
125
143
  ApplicationUsageByDay,
126
144
  ApplicationUsageByEndpoint,
127
145
  ApplicationUsageStats,
128
- ApplicationSuccessResult,
129
- } from './mixins/OxyServices.applications';
130
-
131
- // ---------------------------------------------------------------------------
132
- // Workspaces (multi-user containers: membership, roles)
133
- // ---------------------------------------------------------------------------
134
- export type {
135
- Workspace,
136
- WorkspaceMember,
137
- WorkspaceRole,
138
- WorkspaceType,
139
- WorkspaceStatus,
140
- WorkspaceMemberStatus,
141
- CreateWorkspaceInput,
142
- UpdateWorkspaceInput,
143
- InviteWorkspaceMemberInput,
144
- UpdateWorkspaceMemberInput,
145
- TransferWorkspaceOwnershipInput,
146
- WorkspaceSuccessResult,
147
- } from './mixins/OxyServices.workspaces';
146
+ } from './mixins/OxyServices.accounts';
148
147
 
149
148
  // ---------------------------------------------------------------------------
150
149
  // Reputation (Oxy Trust: ledger, balances, disputes, rules, influence)