gdc-sdk-front-ts 0.9.1 → 2.0.2

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.
package/README.md CHANGED
@@ -1,5 +1,15 @@
1
1
  # gdc-sdk-front-ts
2
2
 
3
+ See [ARCHITECTURE.md](./ARCHITECTURE.md) and
4
+ [CONTRIBUTING.md](./CONTRIBUTING.md) before adding frontend facades,
5
+ profile/session runtime logic, or orchestration tests.
6
+
7
+ Short rule:
8
+
9
+ - `101` tests must stay didactic and step by step
10
+ - reusable fixtures/types must come from `gdc-common-utils-ts` instead of
11
+ being repeated as frontend-local literals
12
+
3
13
  Frontend runtime package for consuming the shared GDC SDK contracts in web or
4
14
  mobile apps.
5
15
 
@@ -28,6 +38,13 @@ If you are integrating this package for the first time, open these in order:
28
38
  1. [gdc-sdk-core-ts/docs/101-SDK_PACKAGE_BOUNDARIES.md](https://github.com/Global-DataCare/gdc-sdk-core-ts/blob/main/docs/101-SDK_PACKAGE_BOUNDARIES.md)
29
39
  Why `core`, `node`, and `front` are separate packages, what each one owns,
30
40
  and why frontend facades should mirror backend actor boundaries.
41
+ 1. [tests/101-frontend-profile-runtime.test.mjs](./tests/101-frontend-profile-runtime.test.mjs)
42
+ Minimal frontend-generic walkthrough for loading one actor profile,
43
+ registering one trusted device/runtime context, connecting to one subject
44
+ index, and reading one subject index composition.
45
+ 1. [tests/101-individual-controller-frontend-runtime.test.mjs](./tests/101-individual-controller-frontend-runtime.test.mjs)
46
+ First pragmatic frontend wrapper over the generic profile runtime for the
47
+ current individual-controller baseline.
31
48
  1. [docs/101-SDK_INTEGRATION.md](./docs/101-SDK_INTEGRATION.md)
32
49
  Real frontend/native setup, imports, `new ClientSDK(...)`,
33
50
  `initializeCommunicationIdentity(...)`, provider discovery, and
@@ -40,9 +57,12 @@ If you are integrating this package for the first time, open these in order:
40
57
  4. [gdc-sdk-node-ts/docs/101-LIVE_GW_LOCAL.md](https://github.com/Global-DataCare/gdc-sdk-node-ts/blob/main/docs/101-LIVE_GW_LOCAL.md)
41
58
  Canonical local/TTY/Docker GW reference when the frontend team also needs a
42
59
  real local GW running for end-to-end checks.
43
- 5. [gdc-common-utils-ts/src/examples/frontend-session.ts](https://github.com/Global-DataCare/gdc-common-utils-ts/blob/main/src/examples/frontend-session.ts)
60
+ 5. [gwtemplate-node-ts/docs/PORTAL_API_TO_GW_CORE.md](https://github.com/Global-DataCare/gwtemplate-node-ts/blob/main/docs/PORTAL_API_TO_GW_CORE.md)
61
+ Canonical portal/BFF functional map over GW CORE, including the separation
62
+ between `related persons`, invited `members`, and effective `consents`.
63
+ 6. [gdc-common-utils-ts/src/examples/frontend-session.ts](https://github.com/Global-DataCare/gdc-common-utils-ts/blob/main/src/examples/frontend-session.ts)
44
64
  Shared profile/session payload source of truth.
45
- 6. [gdc-common-utils-ts/docs/101-LIFECYCLE.md](https://github.com/Global-DataCare/gdc-common-utils-ts/blob/main/docs/101-LIFECYCLE.md)
65
+ 7. [gdc-common-utils-ts/docs/101-LIFECYCLE.md](https://github.com/Global-DataCare/gdc-common-utils-ts/blob/main/docs/101-LIFECYCLE.md)
46
66
  Canonical lifecycle semantics and reusable placeholders for UI and portal flows.
47
67
 
48
68
  If you need the shortest path:
@@ -1,4 +1,5 @@
1
1
  import type { DeviceAppType, DeviceUserClass } from 'gdc-common-utils-ts/constants';
2
+ import type { SubmitAndPollResult } from 'gdc-sdk-core-ts';
2
3
  import type { Profile } from './types.js';
3
4
  import type { CommonServices, FamilyAdminServices, IndividualServices, OrgAdminServices, ProfessionalServices } from './roleRegistry.js';
4
5
  import { HostOnboardingSdk } from './orchestration/host-onboarding-sdk.js';
@@ -8,6 +9,7 @@ import { OrganizationControllerSdk } from './orchestration/organization-controll
8
9
  import { OrganizationEmployeeSdk } from './orchestration/organization-employee-sdk.js';
9
10
  import { PersonalSdk } from './orchestration/personal-sdk.js';
10
11
  import { ProfessionalSdk } from './orchestration/professional-sdk.js';
12
+ import { type FrontLicenseListSearchInput, type FrontLicenseOfferSearchInput, type FrontLicenseOrderSearchInput, type FrontOrganizationEmployeeSearchInput } from './orchestration/client-port.js';
11
13
  /**
12
14
  * Role-scoped session object returned by `ClientSDK.initializeSession(...)`.
13
15
  *
@@ -48,6 +50,69 @@ export declare class ProfileManager {
48
50
  }): Promise<{
49
51
  thid: string;
50
52
  }>;
53
+ /**
54
+ * Organization-admin helper to search employee bundles through the frontend runtime.
55
+ */
56
+ searchOrganizationEmployees(params: {
57
+ providerDid: string;
58
+ idToken: string;
59
+ employeeClaims?: FrontOrganizationEmployeeSearchInput['employeeClaims'];
60
+ requestThid?: string;
61
+ }): Promise<SubmitAndPollResult>;
62
+ /**
63
+ * Organization-admin helper to search/list tenant-owned license seats.
64
+ */
65
+ searchOrganizationLicenses(params: {
66
+ providerDid: string;
67
+ idToken: string;
68
+ licenseQuery?: FrontLicenseListSearchInput['licenseQuery'];
69
+ requestThid?: string;
70
+ }): Promise<SubmitAndPollResult>;
71
+ /**
72
+ * Organization-admin helper to search/list hosted commercial offer records.
73
+ */
74
+ searchOrganizationLicenseOffers(params: {
75
+ providerDid: string;
76
+ idToken: string;
77
+ offerQuery?: FrontLicenseOfferSearchInput['offerQuery'];
78
+ requestThid?: string;
79
+ }): Promise<SubmitAndPollResult>;
80
+ /**
81
+ * Family-admin helper to search/list subject-side commercial offer records.
82
+ */
83
+ searchIndividualLicenseOffers(params: {
84
+ providerDid: string;
85
+ idToken: string;
86
+ offerQuery?: FrontLicenseOfferSearchInput['offerQuery'];
87
+ requestThid?: string;
88
+ }): Promise<SubmitAndPollResult>;
89
+ /**
90
+ * Organization-admin helper to search/list hosted commercial order/payment records.
91
+ */
92
+ searchOrganizationLicenseOrders(params: {
93
+ providerDid: string;
94
+ idToken: string;
95
+ orderQuery?: FrontLicenseOrderSearchInput['orderQuery'];
96
+ requestThid?: string;
97
+ }): Promise<SubmitAndPollResult>;
98
+ /**
99
+ * Family-admin helper to search/list subject-side commercial order/payment records.
100
+ */
101
+ searchIndividualLicenseOrders(params: {
102
+ providerDid: string;
103
+ idToken: string;
104
+ orderQuery?: FrontLicenseOrderSearchInput['orderQuery'];
105
+ requestThid?: string;
106
+ }): Promise<SubmitAndPollResult>;
107
+ /**
108
+ * Family/individual-admin helper to search/list subject-side license seats.
109
+ */
110
+ searchIndividualLicenses(params: {
111
+ providerDid: string;
112
+ idToken: string;
113
+ licenseQuery?: FrontLicenseListSearchInput['licenseQuery'];
114
+ requestThid?: string;
115
+ }): Promise<SubmitAndPollResult>;
51
116
  /**
52
117
  * Family/individual-admin helper for subject organization/index bootstrap.
53
118
  */
@@ -37,15 +37,25 @@ export class ProfileManager {
37
37
  this.individual = mapped.individual;
38
38
  this.professional = mapped.professional;
39
39
  this.runtimeClient = {
40
- activateOrganizationInGatewayFromIcaProof: (input) => {
40
+ activateOrganizationInGatewayFromIcaProof: (hostCtx, input) => {
41
41
  if (!this.orgAdmin?.admin)
42
42
  throw new Error('orgAdmin.admin service is not available for this profile.');
43
- return this.orgAdmin.admin.activateOrganizationInGatewayFromIcaProof(input);
43
+ return this.orgAdmin.admin.activateOrganizationInGatewayFromIcaProof(hostCtx, input);
44
44
  },
45
- confirmLegalOrganizationOrder: (input) => {
45
+ confirmLegalOrganizationOrder: (hostCtx, input) => {
46
46
  if (!this.orgAdmin?.admin)
47
47
  throw new Error('orgAdmin.admin service is not available for this profile.');
48
- return this.orgAdmin.admin.confirmLegalOrganizationOrder(input);
48
+ return this.orgAdmin.admin.confirmLegalOrganizationOrder(hostCtx, input);
49
+ },
50
+ disableHost: (hostCtx, input) => {
51
+ if (!this.orgAdmin?.admin)
52
+ throw new Error('orgAdmin.admin service is not available for this profile.');
53
+ return this.orgAdmin.admin.disableHost(hostCtx, input);
54
+ },
55
+ purgeHost: (hostCtx, input) => {
56
+ if (!this.orgAdmin?.admin)
57
+ throw new Error('orgAdmin.admin service is not available for this profile.');
58
+ return this.orgAdmin.admin.purgeHost(hostCtx, input);
49
59
  },
50
60
  createOrganizationEmployee: (ctx, input) => {
51
61
  if (!this.orgAdmin?.admin)
@@ -53,6 +63,41 @@ export class ProfileManager {
53
63
  return this.orgAdmin.admin.createOrganizationEmployee(ctx.providerDid, ctx.idToken, input)
54
64
  .then((result) => createSyntheticSubmitAndPollResult(result.thid));
55
65
  },
66
+ searchOrganizationEmployees: (ctx, input) => {
67
+ if (!this.orgAdmin?.admin)
68
+ throw new Error('orgAdmin.admin service is not available for this profile.');
69
+ return this.orgAdmin.admin.searchOrganizationEmployees(ctx.providerDid, ctx.idToken, input);
70
+ },
71
+ searchOrganizationLicenses: (ctx, input) => {
72
+ if (!this.orgAdmin?.admin)
73
+ throw new Error('orgAdmin.admin service is not available for this profile.');
74
+ return this.orgAdmin.admin.searchOrganizationLicenses(ctx.providerDid, ctx.idToken, input);
75
+ },
76
+ listOrganizationLicenses: (ctx, input = {}) => {
77
+ if (!this.orgAdmin?.admin)
78
+ throw new Error('orgAdmin.admin service is not available for this profile.');
79
+ return this.orgAdmin.admin.listOrganizationLicenses(ctx.providerDid, ctx.idToken, input);
80
+ },
81
+ searchOrganizationLicenseOffers: (ctx, input) => {
82
+ if (!this.orgAdmin?.admin)
83
+ throw new Error('orgAdmin.admin service is not available for this profile.');
84
+ return this.orgAdmin.admin.searchOrganizationLicenseOffers(ctx.providerDid, ctx.idToken, input);
85
+ },
86
+ listOrganizationLicenseOffers: (ctx, input = {}) => {
87
+ if (!this.orgAdmin?.admin)
88
+ throw new Error('orgAdmin.admin service is not available for this profile.');
89
+ return this.orgAdmin.admin.listOrganizationLicenseOffers(ctx.providerDid, ctx.idToken, input);
90
+ },
91
+ searchOrganizationLicenseOrders: (ctx, input) => {
92
+ if (!this.orgAdmin?.admin)
93
+ throw new Error('orgAdmin.admin service is not available for this profile.');
94
+ return this.orgAdmin.admin.searchOrganizationLicenseOrders(ctx.providerDid, ctx.idToken, input);
95
+ },
96
+ listOrganizationLicenseOrders: (ctx, input = {}) => {
97
+ if (!this.orgAdmin?.admin)
98
+ throw new Error('orgAdmin.admin service is not available for this profile.');
99
+ return this.orgAdmin.admin.listOrganizationLicenseOrders(ctx.providerDid, ctx.idToken, input);
100
+ },
56
101
  disableEmployee: (ctx, input) => {
57
102
  if (!this.orgAdmin?.admin)
58
103
  throw new Error('orgAdmin.admin service is not available for this profile.');
@@ -63,6 +108,16 @@ export class ProfileManager {
63
108
  throw new Error('orgAdmin.admin service is not available for this profile.');
64
109
  return this.orgAdmin.admin.purgeEmployee(ctx.providerDid, ctx.idToken, input);
65
110
  },
111
+ disableTenant: (hostCtx, input) => {
112
+ if (!this.orgAdmin?.admin)
113
+ throw new Error('orgAdmin.admin service is not available for this profile.');
114
+ return this.orgAdmin.admin.disableTenant(hostCtx, input);
115
+ },
116
+ purgeTenant: (hostCtx, input) => {
117
+ if (!this.orgAdmin?.admin)
118
+ throw new Error('orgAdmin.admin service is not available for this profile.');
119
+ return this.orgAdmin.admin.purgeTenant(hostCtx, input);
120
+ },
66
121
  activateEmployeeDeviceWithActivationRequest: (ctx, input) => this.common.auth.activateEmployeeDeviceWithActivationRequest(input.activationCode, ctx.providerDid, ctx.idToken, input.dcrPayload),
67
122
  requestSmartToken: (input) => this.common.auth.requestSmartToken(input),
68
123
  startIndividualOrganization: (ctx, input) => {
@@ -95,6 +150,36 @@ export class ProfileManager {
95
150
  throw new Error('familyAdmin.admin service is not available for this profile.');
96
151
  return this.familyAdmin.admin.purgeIndividualMember(ctx.providerDid, ctx.idToken, input);
97
152
  },
153
+ searchIndividualLicenses: (ctx, input) => {
154
+ if (!this.familyAdmin?.admin)
155
+ throw new Error('familyAdmin.admin service is not available for this profile.');
156
+ return this.familyAdmin.admin.searchIndividualLicenses(ctx.providerDid, ctx.idToken, input);
157
+ },
158
+ listIndividualLicenses: (ctx, input = {}) => {
159
+ if (!this.familyAdmin?.admin)
160
+ throw new Error('familyAdmin.admin service is not available for this profile.');
161
+ return this.familyAdmin.admin.listIndividualLicenses(ctx.providerDid, ctx.idToken, input);
162
+ },
163
+ searchIndividualLicenseOffers: (ctx, input) => {
164
+ if (!this.familyAdmin?.admin)
165
+ throw new Error('familyAdmin.admin service is not available for this profile.');
166
+ return this.familyAdmin.admin.searchIndividualLicenseOffers(ctx.providerDid, ctx.idToken, input);
167
+ },
168
+ listIndividualLicenseOffers: (ctx, input = {}) => {
169
+ if (!this.familyAdmin?.admin)
170
+ throw new Error('familyAdmin.admin service is not available for this profile.');
171
+ return this.familyAdmin.admin.listIndividualLicenseOffers(ctx.providerDid, ctx.idToken, input);
172
+ },
173
+ searchIndividualLicenseOrders: (ctx, input) => {
174
+ if (!this.familyAdmin?.admin)
175
+ throw new Error('familyAdmin.admin service is not available for this profile.');
176
+ return this.familyAdmin.admin.searchIndividualLicenseOrders(ctx.providerDid, ctx.idToken, input);
177
+ },
178
+ listIndividualLicenseOrders: (ctx, input = {}) => {
179
+ if (!this.familyAdmin?.admin)
180
+ throw new Error('familyAdmin.admin service is not available for this profile.');
181
+ return this.familyAdmin.admin.listIndividualLicenseOrders(ctx.providerDid, ctx.idToken, input);
182
+ },
98
183
  grantProfessionalAccess: (ctx, input) => {
99
184
  if (this.professional?.physician) {
100
185
  return this.professional.physician.grantProfessionalAccess({ ...input, providerDid: ctx.providerDid, requiredScope: ctx.requiredScope, idToken: ctx.idToken });
@@ -151,6 +236,90 @@ export class ProfileManager {
151
236
  }
152
237
  return this.orgAdmin.admin.createOrganizationEmployee(providerDid, idToken, params);
153
238
  }
239
+ /**
240
+ * Organization-admin helper to search employee bundles through the frontend runtime.
241
+ */
242
+ async searchOrganizationEmployees(params) {
243
+ if (!this.orgAdmin?.admin) {
244
+ throw new Error('orgAdmin.admin service is not available for this profile.');
245
+ }
246
+ return this.orgAdmin.admin.searchOrganizationEmployees(params.providerDid, params.idToken, {
247
+ employeeClaims: params.employeeClaims,
248
+ requestThid: params.requestThid,
249
+ });
250
+ }
251
+ /**
252
+ * Organization-admin helper to search/list tenant-owned license seats.
253
+ */
254
+ async searchOrganizationLicenses(params) {
255
+ if (!this.orgAdmin?.admin) {
256
+ throw new Error('orgAdmin.admin service is not available for this profile.');
257
+ }
258
+ return this.orgAdmin.admin.searchOrganizationLicenses(params.providerDid, params.idToken, {
259
+ licenseQuery: params.licenseQuery,
260
+ requestThid: params.requestThid,
261
+ });
262
+ }
263
+ /**
264
+ * Organization-admin helper to search/list hosted commercial offer records.
265
+ */
266
+ async searchOrganizationLicenseOffers(params) {
267
+ if (!this.orgAdmin?.admin) {
268
+ throw new Error('orgAdmin.admin service is not available for this profile.');
269
+ }
270
+ return this.orgAdmin.admin.searchOrganizationLicenseOffers(params.providerDid, params.idToken, {
271
+ offerQuery: params.offerQuery,
272
+ requestThid: params.requestThid,
273
+ });
274
+ }
275
+ /**
276
+ * Family-admin helper to search/list subject-side commercial offer records.
277
+ */
278
+ async searchIndividualLicenseOffers(params) {
279
+ if (!this.familyAdmin?.admin) {
280
+ throw new Error('familyAdmin.admin service is not available for this profile.');
281
+ }
282
+ return this.familyAdmin.admin.searchIndividualLicenseOffers(params.providerDid, params.idToken, {
283
+ offerQuery: params.offerQuery,
284
+ requestThid: params.requestThid,
285
+ });
286
+ }
287
+ /**
288
+ * Organization-admin helper to search/list hosted commercial order/payment records.
289
+ */
290
+ async searchOrganizationLicenseOrders(params) {
291
+ if (!this.orgAdmin?.admin) {
292
+ throw new Error('orgAdmin.admin service is not available for this profile.');
293
+ }
294
+ return this.orgAdmin.admin.searchOrganizationLicenseOrders(params.providerDid, params.idToken, {
295
+ orderQuery: params.orderQuery,
296
+ requestThid: params.requestThid,
297
+ });
298
+ }
299
+ /**
300
+ * Family-admin helper to search/list subject-side commercial order/payment records.
301
+ */
302
+ async searchIndividualLicenseOrders(params) {
303
+ if (!this.familyAdmin?.admin) {
304
+ throw new Error('familyAdmin.admin service is not available for this profile.');
305
+ }
306
+ return this.familyAdmin.admin.searchIndividualLicenseOrders(params.providerDid, params.idToken, {
307
+ orderQuery: params.orderQuery,
308
+ requestThid: params.requestThid,
309
+ });
310
+ }
311
+ /**
312
+ * Family/individual-admin helper to search/list subject-side license seats.
313
+ */
314
+ async searchIndividualLicenses(params) {
315
+ if (!this.familyAdmin?.admin) {
316
+ throw new Error('familyAdmin.admin service is not available for this profile.');
317
+ }
318
+ return this.familyAdmin.admin.searchIndividualLicenses(params.providerDid, params.idToken, {
319
+ licenseQuery: params.licenseQuery,
320
+ requestThid: params.requestThid,
321
+ });
322
+ }
154
323
  /**
155
324
  * Family/individual-admin helper for subject organization/index bootstrap.
156
325
  */
@@ -0,0 +1,63 @@
1
+ import type { LoadedActorProfile, ProfileLoadRequest, SubjectIndexCompositionRequest, SubjectIndexConnectionRequest, TrustedDeviceRegistrationRequest } from 'gdc-sdk-core-ts';
2
+ /**
3
+ * Result of registering one trusted frontend device/runtime context.
4
+ */
5
+ export type FrontendTrustedDeviceRegistrationResult = {
6
+ trustedDeviceId: string;
7
+ status: 'registered' | 'already-trusted';
8
+ };
9
+ /**
10
+ * Result of connecting one loaded actor profile to one subject index from a
11
+ * frontend runtime.
12
+ */
13
+ export type FrontendSubjectIndexConnectionResult = {
14
+ subjectId: string;
15
+ userId: string;
16
+ userRoleCode: string;
17
+ status: 'connected' | 'already-connected';
18
+ };
19
+ /**
20
+ * Result of reading one subject index composition from a frontend runtime.
21
+ */
22
+ export type FrontendSubjectIndexCompositionResult = {
23
+ subjectId: string;
24
+ userId: string;
25
+ userRoleCode: string;
26
+ composition: unknown;
27
+ };
28
+ /**
29
+ * Canonical frontend runtime contract for:
30
+ * - loading one actor profile,
31
+ * - registering one trusted device/runtime context,
32
+ * - connecting one actor to one subject index, and
33
+ * - reading the resulting subject index composition.
34
+ */
35
+ export type FrontendProfileRuntimeClient = {
36
+ loadProfile?: (input: ProfileLoadRequest) => Promise<LoadedActorProfile>;
37
+ registerTrustedDevice?: (input: TrustedDeviceRegistrationRequest) => Promise<FrontendTrustedDeviceRegistrationResult>;
38
+ connectToSubjectIndex?: (input: SubjectIndexConnectionRequest) => Promise<FrontendSubjectIndexConnectionResult>;
39
+ getSubjectIndexComposition?: (input: SubjectIndexCompositionRequest) => Promise<FrontendSubjectIndexCompositionResult>;
40
+ };
41
+ export type FrontendProfileRuntimeAdapters = {
42
+ loadProfile(input: ProfileLoadRequest): Promise<LoadedActorProfile>;
43
+ registerTrustedDevice(input: TrustedDeviceRegistrationRequest): Promise<FrontendTrustedDeviceRegistrationResult>;
44
+ connectToSubjectIndex(input: SubjectIndexConnectionRequest): Promise<FrontendSubjectIndexConnectionResult>;
45
+ getSubjectIndexComposition(input: SubjectIndexCompositionRequest): Promise<FrontendSubjectIndexCompositionResult>;
46
+ };
47
+ /**
48
+ * Default frontend-generic profile runtime implementation backed by injected
49
+ * adapters.
50
+ */
51
+ export declare class FrontendProfileRuntime implements FrontendProfileRuntimeClient {
52
+ private readonly adapters;
53
+ constructor(adapters: FrontendProfileRuntimeAdapters);
54
+ loadProfile(input: ProfileLoadRequest): Promise<LoadedActorProfile>;
55
+ registerTrustedDevice(input: TrustedDeviceRegistrationRequest): Promise<FrontendTrustedDeviceRegistrationResult>;
56
+ connectToSubjectIndex(input: SubjectIndexConnectionRequest): Promise<FrontendSubjectIndexConnectionResult>;
57
+ getSubjectIndexComposition(input: SubjectIndexCompositionRequest): Promise<FrontendSubjectIndexCompositionResult>;
58
+ }
59
+ export declare function requireFrontendProfileRuntimeMethod<T extends keyof FrontendProfileRuntimeClient>(client: FrontendProfileRuntimeClient, method: T): NonNullable<FrontendProfileRuntimeClient[T]>;
60
+ export declare function loadFrontendProfile(client: FrontendProfileRuntimeClient, input: ProfileLoadRequest): Promise<LoadedActorProfile>;
61
+ export declare function registerFrontendTrustedDevice(client: FrontendProfileRuntimeClient, input: TrustedDeviceRegistrationRequest): Promise<FrontendTrustedDeviceRegistrationResult>;
62
+ export declare function connectFrontendToSubjectIndex(client: FrontendProfileRuntimeClient, input: SubjectIndexConnectionRequest): Promise<FrontendSubjectIndexConnectionResult>;
63
+ export declare function getFrontendSubjectIndexComposition(client: FrontendProfileRuntimeClient, input: SubjectIndexCompositionRequest): Promise<FrontendSubjectIndexCompositionResult>;
@@ -0,0 +1,41 @@
1
+ // Copyright 2026 Antifraud Services Inc. under the Apache License, Version 2.0.
2
+ /**
3
+ * Default frontend-generic profile runtime implementation backed by injected
4
+ * adapters.
5
+ */
6
+ export class FrontendProfileRuntime {
7
+ constructor(adapters) {
8
+ this.adapters = adapters;
9
+ }
10
+ async loadProfile(input) {
11
+ return this.adapters.loadProfile(input);
12
+ }
13
+ async registerTrustedDevice(input) {
14
+ return this.adapters.registerTrustedDevice(input);
15
+ }
16
+ async connectToSubjectIndex(input) {
17
+ return this.adapters.connectToSubjectIndex(input);
18
+ }
19
+ async getSubjectIndexComposition(input) {
20
+ return this.adapters.getSubjectIndexComposition(input);
21
+ }
22
+ }
23
+ export function requireFrontendProfileRuntimeMethod(client, method) {
24
+ const candidate = client[method];
25
+ if (typeof candidate !== 'function') {
26
+ throw new Error(`FrontendProfileRuntimeClient does not implement '${String(method)}'.`);
27
+ }
28
+ return candidate.bind(client);
29
+ }
30
+ export async function loadFrontendProfile(client, input) {
31
+ return requireFrontendProfileRuntimeMethod(client, 'loadProfile')(input);
32
+ }
33
+ export async function registerFrontendTrustedDevice(client, input) {
34
+ return requireFrontendProfileRuntimeMethod(client, 'registerTrustedDevice')(input);
35
+ }
36
+ export async function connectFrontendToSubjectIndex(client, input) {
37
+ return requireFrontendProfileRuntimeMethod(client, 'connectToSubjectIndex')(input);
38
+ }
39
+ export async function getFrontendSubjectIndexComposition(client, input) {
40
+ return requireFrontendProfileRuntimeMethod(client, 'getSubjectIndexComposition')(input);
41
+ }
package/dist/index.d.ts CHANGED
@@ -11,6 +11,8 @@ export * from './VerifierService.js';
11
11
  export * from './ProfileManager.js';
12
12
  export * from './ProfileRegistry.js';
13
13
  export * from './ClientSDK.js';
14
+ export * from './frontend-profile-runtime.js';
15
+ export * from './individual-controller-frontend-runtime.js';
14
16
  export * from './discovery/index.js';
15
17
  export * from './orchestration/client-port.js';
16
18
  export * from './orchestration/host-onboarding-sdk.js';
package/dist/index.js CHANGED
@@ -12,6 +12,8 @@ export * from './VerifierService.js';
12
12
  export * from './ProfileManager.js';
13
13
  export * from './ProfileRegistry.js';
14
14
  export * from './ClientSDK.js';
15
+ export * from './frontend-profile-runtime.js';
16
+ export * from './individual-controller-frontend-runtime.js';
15
17
  export * from './discovery/index.js';
16
18
  export * from './orchestration/client-port.js';
17
19
  export * from './orchestration/host-onboarding-sdk.js';
@@ -0,0 +1,50 @@
1
+ import type { SubmitAndPollResult } from 'gdc-sdk-core-ts';
2
+ import type { ProfileLoadRequest } from 'gdc-sdk-core-ts';
3
+ import { type FrontendProfileRuntimeClient } from './frontend-profile-runtime.js';
4
+ import { IndividualControllerSdk } from './orchestration/individual-controller-sdk.js';
5
+ import type { FrontClinicalBundleSearchInput, FrontIndividualOrganizationBootstrapInput, FrontIndividualOrganizationConfirmOrderInput, FrontIndividualOrganizationStartResult, FrontRouteContext, FrontRuntimeClient } from './orchestration/client-port.js';
6
+ import type { LoadedActorProfile } from 'gdc-sdk-core-ts';
7
+ export type FrontendIndividualControllerProfile = {
8
+ profile: LoadedActorProfile;
9
+ sdk: IndividualControllerSdk;
10
+ };
11
+ /**
12
+ * First pragmatic frontend use-case wrapper on top of the generic v2 profile
13
+ * runtime.
14
+ *
15
+ * It keeps the generic `loadProfile(...)` contract intact while giving portal
16
+ * or app code one narrower surface for the current individual-controller
17
+ * baseline.
18
+ */
19
+ export declare class IndividualControllerFrontendRuntime {
20
+ private readonly profileRuntime;
21
+ private readonly facadeClient;
22
+ constructor(profileRuntime: FrontendProfileRuntimeClient, facadeClient: FrontRuntimeClient);
23
+ /**
24
+ * Loads one frontend profile and ensures it exposes the individual-controller
25
+ * actor capability before materializing the facade.
26
+ */
27
+ loadProfile(input: ProfileLoadRequest): Promise<FrontendIndividualControllerProfile>;
28
+ /**
29
+ * Starts the current individual/family bootstrap flow from frontend code.
30
+ */
31
+ startIndividualOrganization(profile: FrontendIndividualControllerProfile, ctx: FrontRouteContext, input: FrontIndividualOrganizationBootstrapInput): Promise<FrontIndividualOrganizationStartResult>;
32
+ /**
33
+ * Confirms the order returned by the frontend bootstrap flow.
34
+ */
35
+ confirmIndividualOrganizationOrder(profile: FrontendIndividualControllerProfile, ctx: FrontRouteContext, input: FrontIndividualOrganizationConfirmOrderInput): Promise<SubmitAndPollResult>;
36
+ /**
37
+ * Searches the subject clinical index from the frontend individual-controller
38
+ * facade.
39
+ */
40
+ searchClinicalBundle(profile: FrontendIndividualControllerProfile, ctx: FrontRouteContext, input: FrontClinicalBundleSearchInput): Promise<{
41
+ thid: string;
42
+ }>;
43
+ /**
44
+ * Reads the latest IPS-oriented bundle from the frontend individual-controller
45
+ * facade.
46
+ */
47
+ getLatestIps(profile: FrontendIndividualControllerProfile, ctx: FrontRouteContext, subject: string): Promise<{
48
+ thid: string;
49
+ }>;
50
+ }
@@ -0,0 +1,58 @@
1
+ // Copyright 2026 Antifraud Services Inc. under the Apache License, Version 2.0.
2
+ import { ActorKinds } from 'gdc-common-utils-ts/constants/actor-session';
3
+ import { loadFrontendProfile, } from './frontend-profile-runtime.js';
4
+ import { IndividualControllerSdk } from './orchestration/individual-controller-sdk.js';
5
+ /**
6
+ * First pragmatic frontend use-case wrapper on top of the generic v2 profile
7
+ * runtime.
8
+ *
9
+ * It keeps the generic `loadProfile(...)` contract intact while giving portal
10
+ * or app code one narrower surface for the current individual-controller
11
+ * baseline.
12
+ */
13
+ export class IndividualControllerFrontendRuntime {
14
+ constructor(profileRuntime, facadeClient) {
15
+ this.profileRuntime = profileRuntime;
16
+ this.facadeClient = facadeClient;
17
+ }
18
+ /**
19
+ * Loads one frontend profile and ensures it exposes the individual-controller
20
+ * actor capability before materializing the facade.
21
+ */
22
+ async loadProfile(input) {
23
+ const profile = await loadFrontendProfile(this.profileRuntime, input);
24
+ if (!profile.session.actorKinds.includes(ActorKinds.IndividualController)) {
25
+ throw new Error('Loaded frontend profile does not expose actor kind \'individual_controller\'.');
26
+ }
27
+ return {
28
+ profile,
29
+ sdk: new IndividualControllerSdk(this.facadeClient),
30
+ };
31
+ }
32
+ /**
33
+ * Starts the current individual/family bootstrap flow from frontend code.
34
+ */
35
+ startIndividualOrganization(profile, ctx, input) {
36
+ return profile.sdk.startIndividualOrganization(ctx, input);
37
+ }
38
+ /**
39
+ * Confirms the order returned by the frontend bootstrap flow.
40
+ */
41
+ confirmIndividualOrganizationOrder(profile, ctx, input) {
42
+ return profile.sdk.confirmIndividualOrganizationOrder(ctx, input);
43
+ }
44
+ /**
45
+ * Searches the subject clinical index from the frontend individual-controller
46
+ * facade.
47
+ */
48
+ searchClinicalBundle(profile, ctx, input) {
49
+ return profile.sdk.searchClinicalBundle(ctx, input);
50
+ }
51
+ /**
52
+ * Reads the latest IPS-oriented bundle from the frontend individual-controller
53
+ * facade.
54
+ */
55
+ getLatestIps(profile, ctx, subject) {
56
+ return profile.sdk.getLatestIps(ctx, subject);
57
+ }
58
+ }
@@ -1,6 +1,8 @@
1
1
  import type { DeviceAppType, DeviceUserClass } from 'gdc-common-utils-ts/constants';
2
+ import type { LicenseListSearchState } from 'gdc-common-utils-ts/utils/license-list-search';
3
+ import type { LicenseOfferSearchState, LicenseOrderSearchState } from 'gdc-common-utils-ts/utils/license-commercial-search';
2
4
  import type { IndividualOnboardingDraftInput, IndividualOnboardingDraftResult } from 'gdc-common-utils-ts/models/individual-onboarding';
3
- import type { BundleSearchQuery, CommunicationInput, PollOptions, SubmitAndPollResult, SubmitPayload } from 'gdc-sdk-core-ts';
5
+ import type { BundleSearchQuery, CommunicationInput, EmployeeSearchValue, HostLifecycleInput, HostRouteContext, HostedTenantLifecycleInput, OrganizationDidBindingInput, LegalOrganizationOrderInput, PollOptions, SubmitAndPollResult, SubmitPayload } from 'gdc-sdk-core-ts';
4
6
  export type FrontRouteContext = {
5
7
  providerDid: string;
6
8
  idToken: string;
@@ -21,6 +23,7 @@ export type FrontOrganizationActivationInput = {
21
23
  service?: Record<string, unknown>;
22
24
  additionalClaims?: Record<string, unknown>;
23
25
  };
26
+ export type FrontOrganizationDidBindingInput = OrganizationDidBindingInput;
24
27
  export type FrontLegalOrganizationOrderInput = {
25
28
  offerId: string;
26
29
  orderClaims?: Record<string, unknown>;
@@ -36,6 +39,35 @@ export type FrontOrganizationEmployeeLifecycleInput = {
36
39
  employeeClaims?: Record<string, unknown>;
37
40
  resourceId?: string;
38
41
  };
42
+ export type FrontOrganizationEmployeeSearchInput = {
43
+ employeeClaims?: Record<string, EmployeeSearchValue>;
44
+ requestThid?: string;
45
+ pollOptions?: PollOptions;
46
+ };
47
+ /**
48
+ * Frontend/runtime search/list input for license seats.
49
+ */
50
+ export type FrontLicenseListSearchInput = {
51
+ licenseQuery?: Partial<LicenseListSearchState>;
52
+ requestThid?: string;
53
+ pollOptions?: PollOptions;
54
+ };
55
+ /**
56
+ * Frontend/runtime search/list input for commercial offer read-models.
57
+ */
58
+ export type FrontLicenseOfferSearchInput = {
59
+ offerQuery?: Partial<LicenseOfferSearchState>;
60
+ requestThid?: string;
61
+ pollOptions?: PollOptions;
62
+ };
63
+ /**
64
+ * Frontend/runtime search/list input for commercial order/payment read-models.
65
+ */
66
+ export type FrontLicenseOrderSearchInput = {
67
+ orderQuery?: Partial<LicenseOrderSearchState>;
68
+ requestThid?: string;
69
+ pollOptions?: PollOptions;
70
+ };
39
71
  export type FrontEmployeeDeviceActivationRequestInput = {
40
72
  activationCode: string;
41
73
  dcrPayload?: Record<string, unknown>;
@@ -134,11 +166,23 @@ export type FrontDigitalTwinGenerationInput = {
134
166
  format?: 'org.hl7.fhir.r4' | 'org.hl7.fhir.api';
135
167
  };
136
168
  export type FrontRuntimeClient = {
137
- activateOrganizationInGatewayFromIcaProof?: (input: FrontOrganizationActivationInput, pollOptions?: PollOptions) => Promise<SubmitAndPollResult>;
138
- confirmLegalOrganizationOrder?: (input: FrontLegalOrganizationOrderInput, pollOptions?: PollOptions) => Promise<SubmitAndPollResult>;
169
+ activateOrganizationInGatewayFromIcaProof?: (hostCtx: HostRouteContext, input: FrontOrganizationActivationInput, pollOptions?: PollOptions) => Promise<SubmitAndPollResult>;
170
+ confirmLegalOrganizationOrder?: (hostCtx: HostRouteContext, input: LegalOrganizationOrderInput, pollOptions?: PollOptions) => Promise<SubmitAndPollResult>;
171
+ disableHost?: (hostCtx: HostRouteContext, input: HostLifecycleInput, pollOptions?: PollOptions) => Promise<SubmitAndPollResult>;
172
+ purgeHost?: (hostCtx: HostRouteContext, input: HostLifecycleInput, pollOptions?: PollOptions) => Promise<SubmitAndPollResult>;
139
173
  createOrganizationEmployee?: (ctx: FrontRouteContext, input: FrontOrganizationEmployeeCreationInput, pollOptions?: PollOptions) => Promise<SubmitAndPollResult>;
174
+ submitOrganizationDidBinding?: (ctx: FrontRouteContext, input: FrontOrganizationDidBindingInput, pollOptions?: PollOptions) => Promise<SubmitAndPollResult>;
140
175
  disableEmployee?: (ctx: FrontRouteContext, input: FrontOrganizationEmployeeLifecycleInput, pollOptions?: PollOptions) => Promise<SubmitAndPollResult>;
176
+ searchOrganizationEmployees?: (ctx: FrontRouteContext, input: FrontOrganizationEmployeeSearchInput) => Promise<SubmitAndPollResult>;
177
+ searchOrganizationLicenses?: (ctx: FrontRouteContext, input: FrontLicenseListSearchInput) => Promise<SubmitAndPollResult>;
178
+ listOrganizationLicenses?: (ctx: FrontRouteContext, input?: FrontLicenseListSearchInput) => Promise<SubmitAndPollResult>;
179
+ searchOrganizationLicenseOffers?: (ctx: FrontRouteContext, input: FrontLicenseOfferSearchInput) => Promise<SubmitAndPollResult>;
180
+ listOrganizationLicenseOffers?: (ctx: FrontRouteContext, input?: FrontLicenseOfferSearchInput) => Promise<SubmitAndPollResult>;
181
+ searchOrganizationLicenseOrders?: (ctx: FrontRouteContext, input: FrontLicenseOrderSearchInput) => Promise<SubmitAndPollResult>;
182
+ listOrganizationLicenseOrders?: (ctx: FrontRouteContext, input?: FrontLicenseOrderSearchInput) => Promise<SubmitAndPollResult>;
141
183
  purgeEmployee?: (ctx: FrontRouteContext, input: FrontOrganizationEmployeeLifecycleInput, pollOptions?: PollOptions) => Promise<SubmitAndPollResult>;
184
+ disableTenant?: (hostCtx: HostRouteContext, input: HostedTenantLifecycleInput, pollOptions?: PollOptions) => Promise<SubmitAndPollResult>;
185
+ purgeTenant?: (hostCtx: HostRouteContext, input: HostedTenantLifecycleInput, pollOptions?: PollOptions) => Promise<SubmitAndPollResult>;
142
186
  activateEmployeeDeviceWithActivationRequest?: (ctx: FrontRouteContext, input: FrontEmployeeDeviceActivationRequestInput) => Promise<SubmitAndPollResult>;
143
187
  requestSmartToken?: (input: FrontSmartTokenRequestInput) => Promise<FrontSmartTokenExchangeResult>;
144
188
  startIndividualOrganization?: (ctx: FrontRouteContext, input: FrontIndividualOrganizationBootstrapInput) => Promise<FrontIndividualOrganizationStartResult>;
@@ -148,6 +192,12 @@ export type FrontRuntimeClient = {
148
192
  purgeIndividual?: (ctx: FrontRouteContext, input: FrontIndividualOrganizationLifecycleInput, pollOptions?: PollOptions) => Promise<SubmitAndPollResult>;
149
193
  disableIndividualMember?: (ctx: FrontRouteContext, input: FrontIndividualMemberLifecycleInput, pollOptions?: PollOptions) => Promise<SubmitAndPollResult>;
150
194
  purgeIndividualMember?: (ctx: FrontRouteContext, input: FrontIndividualMemberLifecycleInput, pollOptions?: PollOptions) => Promise<SubmitAndPollResult>;
195
+ searchIndividualLicenses?: (ctx: FrontRouteContext, input: FrontLicenseListSearchInput) => Promise<SubmitAndPollResult>;
196
+ listIndividualLicenses?: (ctx: FrontRouteContext, input?: FrontLicenseListSearchInput) => Promise<SubmitAndPollResult>;
197
+ searchIndividualLicenseOffers?: (ctx: FrontRouteContext, input: FrontLicenseOfferSearchInput) => Promise<SubmitAndPollResult>;
198
+ listIndividualLicenseOffers?: (ctx: FrontRouteContext, input?: FrontLicenseOfferSearchInput) => Promise<SubmitAndPollResult>;
199
+ searchIndividualLicenseOrders?: (ctx: FrontRouteContext, input: FrontLicenseOrderSearchInput) => Promise<SubmitAndPollResult>;
200
+ listIndividualLicenseOrders?: (ctx: FrontRouteContext, input?: FrontLicenseOrderSearchInput) => Promise<SubmitAndPollResult>;
151
201
  grantProfessionalAccess?: (ctx: FrontRouteContext, input: FrontGrantProfessionalAccessInput) => Promise<FrontGrantProfessionalAccessResult>;
152
202
  importIpsOrFhirAndUpdateIndex?: (ctx: FrontRouteContext, input: FrontIpsOrFhirImportInput) => Promise<SubmitAndPollResult>;
153
203
  upsertRelatedPersonAndPoll?: (ctx: FrontRouteContext, input: FrontRelatedPersonUpsertInput) => Promise<SubmitAndPollResult>;
@@ -1,9 +1,12 @@
1
- import type { PollOptions, SubmitAndPollResult, SubmitPayload } from 'gdc-sdk-core-ts';
2
- import { type FrontLegalOrganizationOrderInput, type FrontOrganizationActivationInput, type FrontRuntimeClient } from './client-port.js';
1
+ import type { HostLifecycleInput, HostRouteContext, PollOptions, SubmitAndPollResult, SubmitPayload } from 'gdc-sdk-core-ts';
2
+ import { type FrontOrganizationActivationInput, type FrontRuntimeClient } from './client-port.js';
3
+ import type { LegalOrganizationOrderInput } from 'gdc-sdk-core-ts';
3
4
  export declare class HostOnboardingSdk {
4
5
  private readonly client;
5
6
  constructor(client: FrontRuntimeClient);
6
- activateOrganizationInGatewayFromIcaProof(input: FrontOrganizationActivationInput, pollOptions?: PollOptions): Promise<SubmitAndPollResult>;
7
- confirmLegalOrganizationOrder(input: FrontLegalOrganizationOrderInput, pollOptions?: PollOptions): Promise<SubmitAndPollResult>;
7
+ activateOrganizationInGatewayFromIcaProof(hostCtx: HostRouteContext, input: FrontOrganizationActivationInput, pollOptions?: PollOptions): Promise<SubmitAndPollResult>;
8
+ confirmLegalOrganizationOrder(hostCtx: HostRouteContext, input: LegalOrganizationOrderInput, pollOptions?: PollOptions): Promise<SubmitAndPollResult>;
9
+ disableHost(hostCtx: HostRouteContext, input: HostLifecycleInput, pollOptions?: PollOptions): Promise<SubmitAndPollResult>;
10
+ purgeHost(hostCtx: HostRouteContext, input: HostLifecycleInput, pollOptions?: PollOptions): Promise<SubmitAndPollResult>;
8
11
  submitAndPoll(submitPath: string, pollPath: string, payload: SubmitPayload, pollOptions?: PollOptions): Promise<SubmitAndPollResult>;
9
12
  }
@@ -1,14 +1,20 @@
1
1
  // Copyright 2026 Antifraud Services Inc. under the Apache License, Version 2.0.
2
- import { requireClientMethod } from './client-port.js';
2
+ import { requireClientMethod, } from './client-port.js';
3
3
  export class HostOnboardingSdk {
4
4
  constructor(client) {
5
5
  this.client = client;
6
6
  }
7
- activateOrganizationInGatewayFromIcaProof(input, pollOptions) {
8
- return requireClientMethod(this.client, 'activateOrganizationInGatewayFromIcaProof')(input, pollOptions);
7
+ activateOrganizationInGatewayFromIcaProof(hostCtx, input, pollOptions) {
8
+ return requireClientMethod(this.client, 'activateOrganizationInGatewayFromIcaProof')(hostCtx, input, pollOptions);
9
9
  }
10
- confirmLegalOrganizationOrder(input, pollOptions) {
11
- return requireClientMethod(this.client, 'confirmLegalOrganizationOrder')(input, pollOptions);
10
+ confirmLegalOrganizationOrder(hostCtx, input, pollOptions) {
11
+ return requireClientMethod(this.client, 'confirmLegalOrganizationOrder')(hostCtx, input, pollOptions);
12
+ }
13
+ disableHost(hostCtx, input, pollOptions) {
14
+ return requireClientMethod(this.client, 'disableHost')(hostCtx, input, pollOptions);
15
+ }
16
+ purgeHost(hostCtx, input, pollOptions) {
17
+ return requireClientMethod(this.client, 'purgeHost')(hostCtx, input, pollOptions);
12
18
  }
13
19
  submitAndPoll(submitPath, pollPath, payload, pollOptions) {
14
20
  return requireClientMethod(this.client, 'submitAndPoll')(submitPath, pollPath, payload, pollOptions);
@@ -1,5 +1,5 @@
1
1
  import type { PollOptions, SubmitAndPollResult } from 'gdc-sdk-core-ts';
2
- import { type FrontCommunicationIngestionInput, type FrontDigitalTwinGenerationInput, type FrontGrantProfessionalAccessInput, type FrontGrantProfessionalAccessResult, type FrontIndividualMemberLifecycleInput, type FrontIndividualOnboardingPdfDraftInput, type FrontIndividualOnboardingPdfDraftResult, type FrontIndividualOrganizationBootstrapInput, type FrontIndividualOrganizationConfirmOrderInput, type FrontIndividualOrganizationLifecycleInput, type FrontIndividualOrganizationStartResult, type FrontIpsOrFhirImportInput, type FrontRelatedPersonUpsertInput, type FrontRouteContext, type FrontRuntimeClient, type FrontSmartTokenExchangeResult, type FrontSmartTokenRequestInput } from './client-port.js';
2
+ import { type FrontClinicalBundleSearchInput, type FrontCommunicationIngestionInput, type FrontDigitalTwinGenerationInput, type FrontGrantProfessionalAccessInput, type FrontGrantProfessionalAccessResult, type FrontIndividualMemberLifecycleInput, type FrontIndividualOnboardingPdfDraftInput, type FrontIndividualOnboardingPdfDraftResult, type FrontIndividualOrganizationBootstrapInput, type FrontIndividualOrganizationConfirmOrderInput, type FrontIndividualOrganizationLifecycleInput, type FrontIndividualOrganizationStartResult, type FrontIpsOrFhirImportInput, type FrontLicenseListSearchInput, type FrontLicenseOfferSearchInput, type FrontLicenseOrderSearchInput, type FrontRelatedPersonUpsertInput, type FrontRouteContext, type FrontRuntimeClient, type FrontSmartTokenExchangeResult, type FrontSmartTokenRequestInput } from './client-port.js';
3
3
  export declare class IndividualControllerSdk {
4
4
  private readonly client;
5
5
  constructor(client: FrontRuntimeClient);
@@ -15,5 +15,22 @@ export declare class IndividualControllerSdk {
15
15
  upsertRelatedPersonAndPoll(ctx: FrontRouteContext, input: FrontRelatedPersonUpsertInput): Promise<SubmitAndPollResult>;
16
16
  ingestCommunicationAndUpdateIndex(ctx: FrontRouteContext, input: FrontCommunicationIngestionInput): Promise<SubmitAndPollResult>;
17
17
  generateDigitalTwinFromSubjectData(ctx: FrontRouteContext, input: FrontDigitalTwinGenerationInput): Promise<SubmitAndPollResult>;
18
+ searchClinicalBundle(ctx: FrontRouteContext, input: FrontClinicalBundleSearchInput): Promise<{
19
+ thid: string;
20
+ }>;
21
+ getLatestIps(ctx: FrontRouteContext, subject: string): Promise<{
22
+ thid: string;
23
+ }>;
24
+ searchLicenses(ctx: FrontRouteContext, input: FrontLicenseListSearchInput): Promise<SubmitAndPollResult>;
25
+ /** Lists subject/individual-side license seats with optional filters. */
26
+ listLicenses(ctx: FrontRouteContext, input?: FrontLicenseListSearchInput): Promise<SubmitAndPollResult>;
27
+ /** Searches subject-side commercial offer records that back portal list/detail views. */
28
+ searchLicenseOffers(ctx: FrontRouteContext, input: FrontLicenseOfferSearchInput): Promise<SubmitAndPollResult>;
29
+ /** Lists subject-side commercial offer records without requiring explicit filters. */
30
+ listLicenseOffers(ctx: FrontRouteContext, input?: FrontLicenseOfferSearchInput): Promise<SubmitAndPollResult>;
31
+ /** Searches subject-side commercial order/payment records for portal read-model flows. */
32
+ searchLicenseOrders(ctx: FrontRouteContext, input: FrontLicenseOrderSearchInput): Promise<SubmitAndPollResult>;
33
+ /** Lists subject-side commercial order/payment records without requiring explicit filters. */
34
+ listLicenseOrders(ctx: FrontRouteContext, input?: FrontLicenseOrderSearchInput): Promise<SubmitAndPollResult>;
18
35
  requestSmartToken(input: FrontSmartTokenRequestInput): Promise<FrontSmartTokenExchangeResult>;
19
36
  }
@@ -40,6 +40,35 @@ export class IndividualControllerSdk {
40
40
  generateDigitalTwinFromSubjectData(ctx, input) {
41
41
  return requireClientMethod(this.client, 'generateDigitalTwinFromSubjectData')(ctx, input);
42
42
  }
43
+ searchClinicalBundle(ctx, input) {
44
+ return requireClientMethod(this.client, 'searchClinicalBundle')(ctx, input);
45
+ }
46
+ getLatestIps(ctx, subject) {
47
+ return requireClientMethod(this.client, 'getLatestIps')(ctx, subject);
48
+ }
49
+ searchLicenses(ctx, input) {
50
+ return requireClientMethod(this.client, 'searchIndividualLicenses')(ctx, input);
51
+ }
52
+ /** Lists subject/individual-side license seats with optional filters. */
53
+ listLicenses(ctx, input = {}) {
54
+ return requireClientMethod(this.client, 'listIndividualLicenses')(ctx, input);
55
+ }
56
+ /** Searches subject-side commercial offer records that back portal list/detail views. */
57
+ searchLicenseOffers(ctx, input) {
58
+ return requireClientMethod(this.client, 'searchIndividualLicenseOffers')(ctx, input);
59
+ }
60
+ /** Lists subject-side commercial offer records without requiring explicit filters. */
61
+ listLicenseOffers(ctx, input = {}) {
62
+ return requireClientMethod(this.client, 'listIndividualLicenseOffers')(ctx, input);
63
+ }
64
+ /** Searches subject-side commercial order/payment records for portal read-model flows. */
65
+ searchLicenseOrders(ctx, input) {
66
+ return requireClientMethod(this.client, 'searchIndividualLicenseOrders')(ctx, input);
67
+ }
68
+ /** Lists subject-side commercial order/payment records without requiring explicit filters. */
69
+ listLicenseOrders(ctx, input = {}) {
70
+ return requireClientMethod(this.client, 'listIndividualLicenseOrders')(ctx, input);
71
+ }
43
72
  requestSmartToken(input) {
44
73
  return requireClientMethod(this.client, 'requestSmartToken')(input);
45
74
  }
@@ -1,11 +1,40 @@
1
- import type { PollOptions, SubmitAndPollResult } from 'gdc-sdk-core-ts';
2
- import { type FrontEmployeeDeviceActivationRequestInput, type FrontOrganizationEmployeeCreationInput, type FrontOrganizationEmployeeLifecycleInput, type FrontRouteContext, type FrontRuntimeClient, type FrontSmartTokenExchangeResult, type FrontSmartTokenRequestInput } from './client-port.js';
1
+ import type { HostRouteContext, HostedTenantLifecycleInput, PollOptions, SubmitAndPollResult } from 'gdc-sdk-core-ts';
2
+ import { type FrontEmployeeDeviceActivationRequestInput, type FrontLicenseListSearchInput, type FrontLicenseOfferSearchInput, type FrontLicenseOrderSearchInput, type FrontOrganizationDidBindingInput, type FrontOrganizationEmployeeCreationInput, type FrontOrganizationEmployeeLifecycleInput, type FrontOrganizationEmployeeSearchInput, type FrontRouteContext, type FrontRuntimeClient, type FrontSmartTokenExchangeResult, type FrontSmartTokenRequestInput } from './client-port.js';
3
3
  export declare class OrganizationControllerSdk {
4
4
  private readonly client;
5
5
  constructor(client: FrontRuntimeClient);
6
+ /**
7
+ * Binds the current tenant organization DID document to one public alias
8
+ * view.
9
+ *
10
+ * Alias contract:
11
+ * - the current tenant path identifies the organization
12
+ * - `organization.url` carries the public alias/domain list
13
+ * - `controller.sameAs` is optional corroborating identity evidence
14
+ *
15
+ * Current version limits:
16
+ * - this binding flow does not accept new organization public keys
17
+ */
18
+ submitOrganizationDidBinding(ctx: FrontRouteContext, input: FrontOrganizationDidBindingInput, pollOptions?: PollOptions): Promise<SubmitAndPollResult>;
6
19
  createOrganizationEmployee(ctx: FrontRouteContext, input: FrontOrganizationEmployeeCreationInput, pollOptions?: PollOptions): Promise<SubmitAndPollResult>;
7
20
  disableEmployee(ctx: FrontRouteContext, input: FrontOrganizationEmployeeLifecycleInput, pollOptions?: PollOptions): Promise<SubmitAndPollResult>;
21
+ searchOrganizationEmployees(ctx: FrontRouteContext, input: FrontOrganizationEmployeeSearchInput): Promise<SubmitAndPollResult>;
22
+ searchLicenses(ctx: FrontRouteContext, input: FrontLicenseListSearchInput): Promise<SubmitAndPollResult>;
23
+ /** Lists organization-owned license seats with optional filters. */
24
+ listLicenses(ctx: FrontRouteContext, input?: FrontLicenseListSearchInput): Promise<SubmitAndPollResult>;
25
+ /** Searches hosted commercial offer records that back portal list/detail views. */
26
+ searchLicenseOffers(ctx: FrontRouteContext, input: FrontLicenseOfferSearchInput): Promise<SubmitAndPollResult>;
27
+ /** Lists hosted commercial offer records without requiring explicit filters. */
28
+ listLicenseOffers(ctx: FrontRouteContext, input?: FrontLicenseOfferSearchInput): Promise<SubmitAndPollResult>;
29
+ /** Searches hosted commercial order/payment records for portal read-model flows. */
30
+ searchLicenseOrders(ctx: FrontRouteContext, input: FrontLicenseOrderSearchInput): Promise<SubmitAndPollResult>;
31
+ /** Lists hosted commercial order/payment records without requiring explicit filters. */
32
+ listLicenseOrders(ctx: FrontRouteContext, input?: FrontLicenseOrderSearchInput): Promise<SubmitAndPollResult>;
8
33
  purgeEmployee(ctx: FrontRouteContext, input: FrontOrganizationEmployeeLifecycleInput, pollOptions?: PollOptions): Promise<SubmitAndPollResult>;
34
+ /** Disables the hosted tenant itself through the host registry. */
35
+ disableTenant(hostCtx: HostRouteContext, input: HostedTenantLifecycleInput, pollOptions?: PollOptions): Promise<SubmitAndPollResult>;
36
+ /** Purges the already-disabled hosted tenant through the host registry. */
37
+ purgeTenant(hostCtx: HostRouteContext, input: HostedTenantLifecycleInput, pollOptions?: PollOptions): Promise<SubmitAndPollResult>;
9
38
  activateEmployeeDeviceWithActivationRequest(ctx: FrontRouteContext, input: FrontEmployeeDeviceActivationRequestInput): Promise<SubmitAndPollResult>;
10
39
  requestSmartToken(input: FrontSmartTokenRequestInput): Promise<FrontSmartTokenExchangeResult>;
11
40
  }
@@ -4,15 +4,64 @@ export class OrganizationControllerSdk {
4
4
  constructor(client) {
5
5
  this.client = client;
6
6
  }
7
+ /**
8
+ * Binds the current tenant organization DID document to one public alias
9
+ * view.
10
+ *
11
+ * Alias contract:
12
+ * - the current tenant path identifies the organization
13
+ * - `organization.url` carries the public alias/domain list
14
+ * - `controller.sameAs` is optional corroborating identity evidence
15
+ *
16
+ * Current version limits:
17
+ * - this binding flow does not accept new organization public keys
18
+ */
19
+ submitOrganizationDidBinding(ctx, input, pollOptions) {
20
+ return requireClientMethod(this.client, 'submitOrganizationDidBinding')(ctx, input, pollOptions);
21
+ }
7
22
  createOrganizationEmployee(ctx, input, pollOptions) {
8
23
  return requireClientMethod(this.client, 'createOrganizationEmployee')(ctx, input, pollOptions);
9
24
  }
10
25
  disableEmployee(ctx, input, pollOptions) {
11
26
  return requireClientMethod(this.client, 'disableEmployee')(ctx, input, pollOptions);
12
27
  }
28
+ searchOrganizationEmployees(ctx, input) {
29
+ return requireClientMethod(this.client, 'searchOrganizationEmployees')(ctx, input);
30
+ }
31
+ searchLicenses(ctx, input) {
32
+ return requireClientMethod(this.client, 'searchOrganizationLicenses')(ctx, input);
33
+ }
34
+ /** Lists organization-owned license seats with optional filters. */
35
+ listLicenses(ctx, input = {}) {
36
+ return requireClientMethod(this.client, 'listOrganizationLicenses')(ctx, input);
37
+ }
38
+ /** Searches hosted commercial offer records that back portal list/detail views. */
39
+ searchLicenseOffers(ctx, input) {
40
+ return requireClientMethod(this.client, 'searchOrganizationLicenseOffers')(ctx, input);
41
+ }
42
+ /** Lists hosted commercial offer records without requiring explicit filters. */
43
+ listLicenseOffers(ctx, input = {}) {
44
+ return requireClientMethod(this.client, 'listOrganizationLicenseOffers')(ctx, input);
45
+ }
46
+ /** Searches hosted commercial order/payment records for portal read-model flows. */
47
+ searchLicenseOrders(ctx, input) {
48
+ return requireClientMethod(this.client, 'searchOrganizationLicenseOrders')(ctx, input);
49
+ }
50
+ /** Lists hosted commercial order/payment records without requiring explicit filters. */
51
+ listLicenseOrders(ctx, input = {}) {
52
+ return requireClientMethod(this.client, 'listOrganizationLicenseOrders')(ctx, input);
53
+ }
13
54
  purgeEmployee(ctx, input, pollOptions) {
14
55
  return requireClientMethod(this.client, 'purgeEmployee')(ctx, input, pollOptions);
15
56
  }
57
+ /** Disables the hosted tenant itself through the host registry. */
58
+ disableTenant(hostCtx, input, pollOptions) {
59
+ return requireClientMethod(this.client, 'disableTenant')(hostCtx, input, pollOptions);
60
+ }
61
+ /** Purges the already-disabled hosted tenant through the host registry. */
62
+ purgeTenant(hostCtx, input, pollOptions) {
63
+ return requireClientMethod(this.client, 'purgeTenant')(hostCtx, input, pollOptions);
64
+ }
16
65
  activateEmployeeDeviceWithActivationRequest(ctx, input) {
17
66
  return requireClientMethod(this.client, 'activateEmployeeDeviceWithActivationRequest')(ctx, input);
18
67
  }
@@ -1,5 +1,5 @@
1
1
  import type { PollOptions, SubmitAndPollResult, SubmitPayload } from 'gdc-sdk-core-ts';
2
- import { type FrontCommunicationIngestionInput, type FrontDigitalTwinGenerationInput, type FrontGrantProfessionalAccessInput, type FrontGrantProfessionalAccessResult, type FrontIndividualOrganizationBootstrapInput, type FrontIndividualOrganizationStartResult, type FrontIpsOrFhirImportInput, type FrontRouteContext, type FrontRuntimeClient, type FrontSmartTokenExchangeResult, type FrontSmartTokenRequestInput } from './client-port.js';
2
+ import { type FrontClinicalBundleSearchInput, type FrontCommunicationIngestionInput, type FrontDigitalTwinGenerationInput, type FrontGrantProfessionalAccessInput, type FrontGrantProfessionalAccessResult, type FrontIndividualOrganizationBootstrapInput, type FrontIndividualOrganizationStartResult, type FrontIpsOrFhirImportInput, type FrontLicenseListSearchInput, type FrontLicenseOfferSearchInput, type FrontLicenseOrderSearchInput, type FrontRouteContext, type FrontRuntimeClient, type FrontSmartTokenExchangeResult, type FrontSmartTokenRequestInput } from './client-port.js';
3
3
  export declare class PersonalSdk {
4
4
  private readonly client;
5
5
  constructor(client: FrontRuntimeClient);
@@ -8,6 +8,23 @@ export declare class PersonalSdk {
8
8
  importIpsOrFhirAndUpdateIndex(ctx: FrontRouteContext, input: FrontIpsOrFhirImportInput): Promise<SubmitAndPollResult>;
9
9
  ingestCommunicationAndUpdateIndex(ctx: FrontRouteContext, input: FrontCommunicationIngestionInput): Promise<SubmitAndPollResult>;
10
10
  generateDigitalTwinFromSubjectData(ctx: FrontRouteContext, input: FrontDigitalTwinGenerationInput): Promise<SubmitAndPollResult>;
11
+ searchClinicalBundle(ctx: FrontRouteContext, input: FrontClinicalBundleSearchInput): Promise<{
12
+ thid: string;
13
+ }>;
14
+ getLatestIps(ctx: FrontRouteContext, subject: string): Promise<{
15
+ thid: string;
16
+ }>;
17
+ searchLicenses(ctx: FrontRouteContext, input: FrontLicenseListSearchInput): Promise<SubmitAndPollResult>;
18
+ /** Lists subject-side license seats with optional filters. */
19
+ listLicenses(ctx: FrontRouteContext, input?: FrontLicenseListSearchInput): Promise<SubmitAndPollResult>;
20
+ /** Searches subject-side commercial offer records that back personal portal views. */
21
+ searchLicenseOffers(ctx: FrontRouteContext, input: FrontLicenseOfferSearchInput): Promise<SubmitAndPollResult>;
22
+ /** Lists subject-side commercial offer records without requiring explicit filters. */
23
+ listLicenseOffers(ctx: FrontRouteContext, input?: FrontLicenseOfferSearchInput): Promise<SubmitAndPollResult>;
24
+ /** Searches subject-side commercial order/payment records for portal read-model flows. */
25
+ searchLicenseOrders(ctx: FrontRouteContext, input: FrontLicenseOrderSearchInput): Promise<SubmitAndPollResult>;
26
+ /** Lists subject-side commercial order/payment records without requiring explicit filters. */
27
+ listLicenseOrders(ctx: FrontRouteContext, input?: FrontLicenseOrderSearchInput): Promise<SubmitAndPollResult>;
11
28
  requestSmartToken(input: FrontSmartTokenRequestInput): Promise<FrontSmartTokenExchangeResult>;
12
29
  submitAndPoll(submitPath: string, pollPath: string, payload: SubmitPayload, pollOptions?: PollOptions): Promise<SubmitAndPollResult>;
13
30
  }
@@ -19,6 +19,35 @@ export class PersonalSdk {
19
19
  generateDigitalTwinFromSubjectData(ctx, input) {
20
20
  return requireClientMethod(this.client, 'generateDigitalTwinFromSubjectData')(ctx, input);
21
21
  }
22
+ searchClinicalBundle(ctx, input) {
23
+ return requireClientMethod(this.client, 'searchClinicalBundle')(ctx, input);
24
+ }
25
+ getLatestIps(ctx, subject) {
26
+ return requireClientMethod(this.client, 'getLatestIps')(ctx, subject);
27
+ }
28
+ searchLicenses(ctx, input) {
29
+ return requireClientMethod(this.client, 'searchIndividualLicenses')(ctx, input);
30
+ }
31
+ /** Lists subject-side license seats with optional filters. */
32
+ listLicenses(ctx, input = {}) {
33
+ return requireClientMethod(this.client, 'listIndividualLicenses')(ctx, input);
34
+ }
35
+ /** Searches subject-side commercial offer records that back personal portal views. */
36
+ searchLicenseOffers(ctx, input) {
37
+ return requireClientMethod(this.client, 'searchIndividualLicenseOffers')(ctx, input);
38
+ }
39
+ /** Lists subject-side commercial offer records without requiring explicit filters. */
40
+ listLicenseOffers(ctx, input = {}) {
41
+ return requireClientMethod(this.client, 'listIndividualLicenseOffers')(ctx, input);
42
+ }
43
+ /** Searches subject-side commercial order/payment records for portal read-model flows. */
44
+ searchLicenseOrders(ctx, input) {
45
+ return requireClientMethod(this.client, 'searchIndividualLicenseOrders')(ctx, input);
46
+ }
47
+ /** Lists subject-side commercial order/payment records without requiring explicit filters. */
48
+ listLicenseOrders(ctx, input = {}) {
49
+ return requireClientMethod(this.client, 'listIndividualLicenseOrders')(ctx, input);
50
+ }
22
51
  requestSmartToken(input) {
23
52
  return requireClientMethod(this.client, 'requestSmartToken')(input);
24
53
  }
@@ -1,7 +1,7 @@
1
1
  import type { DeviceAppType, DeviceUserClass } from 'gdc-common-utils-ts/constants';
2
2
  import type { IndividualOnboardingDraftInput, IndividualOnboardingDraftResult } from 'gdc-common-utils-ts/models/individual-onboarding';
3
- import { type SubmitAndPollResult } from 'gdc-sdk-core-ts';
4
- import { type FrontGrantProfessionalAccessResult, type FrontSmartTokenExchangeResult, type FrontSmartTokenRequestInput } from './orchestration/client-port.js';
3
+ import { type HostLifecycleInput, type HostRouteContext, type HostedTenantLifecycleInput, type LegalOrganizationOrderInput, type SubmitAndPollResult } from 'gdc-sdk-core-ts';
4
+ import { type FrontLicenseListSearchInput, type FrontLicenseOfferSearchInput, type FrontLicenseOrderSearchInput, type FrontOrganizationEmployeeSearchInput, type FrontGrantProfessionalAccessResult, type FrontSmartTokenExchangeResult, type FrontSmartTokenRequestInput } from './orchestration/client-port.js';
5
5
  export declare class CommonAuthService {
6
6
  activateDevice(_licenseCode: string, _providerDid: string, _idToken: string): Promise<{
7
7
  thid: string;
@@ -10,16 +10,15 @@ export declare class CommonAuthService {
10
10
  requestSmartToken(input: FrontSmartTokenRequestInput): Promise<FrontSmartTokenExchangeResult>;
11
11
  }
12
12
  export declare class OrgAdminService {
13
- activateOrganizationInGatewayFromIcaProof(_input: {
13
+ activateOrganizationInGatewayFromIcaProof(_hostCtx: HostRouteContext, _input: {
14
14
  vpToken: string;
15
15
  controller?: Record<string, unknown>;
16
16
  service?: Record<string, unknown>;
17
17
  additionalClaims?: Record<string, unknown>;
18
18
  }): Promise<SubmitAndPollResult>;
19
- confirmLegalOrganizationOrder(_input: {
20
- offerId: string;
21
- orderClaims?: Record<string, unknown>;
22
- }): Promise<SubmitAndPollResult>;
19
+ confirmLegalOrganizationOrder(_hostCtx: HostRouteContext, _input: LegalOrganizationOrderInput): Promise<SubmitAndPollResult>;
20
+ disableHost(_hostCtx: HostRouteContext, _input: HostLifecycleInput): Promise<SubmitAndPollResult>;
21
+ purgeHost(_hostCtx: HostRouteContext, _input: HostLifecycleInput): Promise<SubmitAndPollResult>;
23
22
  createOrganizationEmployee(_providerDid: string, _idToken: string, _params: {
24
23
  email: string;
25
24
  role: string;
@@ -36,6 +35,18 @@ export declare class OrgAdminService {
36
35
  employeeClaims?: Record<string, unknown>;
37
36
  resourceId?: string;
38
37
  }): Promise<SubmitAndPollResult>;
38
+ disableTenant(_hostCtx: HostRouteContext, _input: HostedTenantLifecycleInput): Promise<SubmitAndPollResult>;
39
+ purgeTenant(_hostCtx: HostRouteContext, _input: HostedTenantLifecycleInput): Promise<SubmitAndPollResult>;
40
+ searchOrganizationEmployees(_providerDid: string, _idToken: string, input: FrontOrganizationEmployeeSearchInput): Promise<SubmitAndPollResult>;
41
+ searchOrganizationLicenses(_providerDid: string, _idToken: string, input: FrontLicenseListSearchInput): Promise<SubmitAndPollResult>;
42
+ /** Lists organization-owned license seats with optional semantic filters. */
43
+ listOrganizationLicenses(providerDid: string, idToken: string, input?: FrontLicenseListSearchInput): Promise<SubmitAndPollResult>;
44
+ searchOrganizationLicenseOffers(_providerDid: string, _idToken: string, input: FrontLicenseOfferSearchInput): Promise<SubmitAndPollResult>;
45
+ /** Lists organization-owned commercial offer records with optional semantic filters. */
46
+ listOrganizationLicenseOffers(providerDid: string, idToken: string, input?: FrontLicenseOfferSearchInput): Promise<SubmitAndPollResult>;
47
+ searchOrganizationLicenseOrders(_providerDid: string, _idToken: string, input: FrontLicenseOrderSearchInput): Promise<SubmitAndPollResult>;
48
+ /** Lists organization-owned commercial order/payment records with optional semantic filters. */
49
+ listOrganizationLicenseOrders(providerDid: string, idToken: string, input?: FrontLicenseOrderSearchInput): Promise<SubmitAndPollResult>;
39
50
  }
40
51
  export declare class FamilyAdminService {
41
52
  prepareIndividualOnboardingPdfDraft(_providerDid: string, _idToken: string, input: IndividualOnboardingDraftInput): Promise<IndividualOnboardingDraftResult>;
@@ -75,6 +86,15 @@ export declare class FamilyAdminService {
75
86
  memberClaims?: Record<string, unknown>;
76
87
  resourceId?: string;
77
88
  }): Promise<SubmitAndPollResult>;
89
+ searchIndividualLicenses(_providerDid: string, _idToken: string, input: FrontLicenseListSearchInput): Promise<SubmitAndPollResult>;
90
+ /** Lists subject/individual-side license seats with optional semantic filters. */
91
+ listIndividualLicenses(providerDid: string, idToken: string, input?: FrontLicenseListSearchInput): Promise<SubmitAndPollResult>;
92
+ searchIndividualLicenseOffers(_providerDid: string, _idToken: string, input: FrontLicenseOfferSearchInput): Promise<SubmitAndPollResult>;
93
+ /** Lists subject/individual-side commercial offer records with optional semantic filters. */
94
+ listIndividualLicenseOffers(providerDid: string, idToken: string, input?: FrontLicenseOfferSearchInput): Promise<SubmitAndPollResult>;
95
+ searchIndividualLicenseOrders(_providerDid: string, _idToken: string, input: FrontLicenseOrderSearchInput): Promise<SubmitAndPollResult>;
96
+ /** Lists subject/individual-side commercial order/payment records with optional semantic filters. */
97
+ listIndividualLicenseOrders(providerDid: string, idToken: string, input?: FrontLicenseOrderSearchInput): Promise<SubmitAndPollResult>;
78
98
  }
79
99
  export declare class IndividualService {
80
100
  /**
package/dist/services.js CHANGED
@@ -1,5 +1,6 @@
1
1
  // Copyright 2026 Antifraud Services Inc. under the Apache License, Version 2.0.
2
- import { createIndividualOnboardingFacade } from 'gdc-sdk-core-ts';
2
+ import { LicenseListSearchEditor, LicenseOfferSearchEditor, LicenseOrderSearchEditor } from 'gdc-common-utils-ts';
3
+ import { buildEmployeeSearchBundle, createIndividualOnboardingFacade, } from 'gdc-sdk-core-ts';
3
4
  import { createSyntheticSubmitAndPollResult, } from './orchestration/client-port.js';
4
5
  function requireNonEmptyText(value, fieldName) {
5
6
  const normalized = String(value ?? '').trim();
@@ -35,12 +36,18 @@ export class CommonAuthService {
35
36
  }
36
37
  }
37
38
  export class OrgAdminService {
38
- async activateOrganizationInGatewayFromIcaProof(_input) {
39
+ async activateOrganizationInGatewayFromIcaProof(_hostCtx, _input) {
39
40
  return createSyntheticSubmitAndPollResult(runtimeThid('host-activation'));
40
41
  }
41
- async confirmLegalOrganizationOrder(_input) {
42
+ async confirmLegalOrganizationOrder(_hostCtx, _input) {
42
43
  return createSyntheticSubmitAndPollResult(runtimeThid('host-order-confirmation'));
43
44
  }
45
+ async disableHost(_hostCtx, _input) {
46
+ return createSyntheticSubmitAndPollResult(runtimeThid('host-disable'));
47
+ }
48
+ async purgeHost(_hostCtx, _input) {
49
+ return createSyntheticSubmitAndPollResult(runtimeThid('host-purge'));
50
+ }
44
51
  async createOrganizationEmployee(_providerDid, _idToken, _params) {
45
52
  return { thid: `thid-${Date.now()}` };
46
53
  }
@@ -50,6 +57,75 @@ export class OrgAdminService {
50
57
  async purgeEmployee(_providerDid, _idToken, _input) {
51
58
  return createSyntheticSubmitAndPollResult(runtimeThid('employee-purge'));
52
59
  }
60
+ async disableTenant(_hostCtx, _input) {
61
+ return createSyntheticSubmitAndPollResult(runtimeThid('tenant-disable'));
62
+ }
63
+ async purgeTenant(_hostCtx, _input) {
64
+ return createSyntheticSubmitAndPollResult(runtimeThid('tenant-purge'));
65
+ }
66
+ async searchOrganizationEmployees(_providerDid, _idToken, input) {
67
+ const thid = input.requestThid || runtimeThid('employee-search');
68
+ return createSyntheticSubmitAndPollResult(thid, {
69
+ thid,
70
+ request: buildEmployeeSearchBundle({
71
+ claims: input.employeeClaims,
72
+ }),
73
+ });
74
+ }
75
+ async searchOrganizationLicenses(_providerDid, _idToken, input) {
76
+ const thid = input.requestThid || runtimeThid('organization-license-search');
77
+ return createSyntheticSubmitAndPollResult(thid, {
78
+ thid,
79
+ request: {
80
+ resourceType: 'Bundle',
81
+ type: 'batch',
82
+ entry: [
83
+ new LicenseListSearchEditor(input.licenseQuery || {})
84
+ .buildSearchEntry(),
85
+ ],
86
+ },
87
+ });
88
+ }
89
+ /** Lists organization-owned license seats with optional semantic filters. */
90
+ async listOrganizationLicenses(providerDid, idToken, input = {}) {
91
+ return this.searchOrganizationLicenses(providerDid, idToken, input);
92
+ }
93
+ async searchOrganizationLicenseOffers(_providerDid, _idToken, input) {
94
+ const thid = input.requestThid || runtimeThid('organization-license-offer-search');
95
+ return createSyntheticSubmitAndPollResult(thid, {
96
+ thid,
97
+ request: {
98
+ resourceType: 'Bundle',
99
+ type: 'batch',
100
+ entry: [
101
+ new LicenseOfferSearchEditor(input.offerQuery || {})
102
+ .buildSearchEntry(),
103
+ ],
104
+ },
105
+ });
106
+ }
107
+ /** Lists organization-owned commercial offer records with optional semantic filters. */
108
+ async listOrganizationLicenseOffers(providerDid, idToken, input = {}) {
109
+ return this.searchOrganizationLicenseOffers(providerDid, idToken, input);
110
+ }
111
+ async searchOrganizationLicenseOrders(_providerDid, _idToken, input) {
112
+ const thid = input.requestThid || runtimeThid('organization-license-order-search');
113
+ return createSyntheticSubmitAndPollResult(thid, {
114
+ thid,
115
+ request: {
116
+ resourceType: 'Bundle',
117
+ type: 'batch',
118
+ entry: [
119
+ new LicenseOrderSearchEditor(input.orderQuery || {})
120
+ .buildSearchEntry(),
121
+ ],
122
+ },
123
+ });
124
+ }
125
+ /** Lists organization-owned commercial order/payment records with optional semantic filters. */
126
+ async listOrganizationLicenseOrders(providerDid, idToken, input = {}) {
127
+ return this.searchOrganizationLicenseOrders(providerDid, idToken, input);
128
+ }
53
129
  }
54
130
  export class FamilyAdminService {
55
131
  async prepareIndividualOnboardingPdfDraft(_providerDid, _idToken, input) {
@@ -76,6 +152,60 @@ export class FamilyAdminService {
76
152
  async purgeIndividualMember(_providerDid, _idToken, _input) {
77
153
  return createSyntheticSubmitAndPollResult(runtimeThid('individual-member-purge'));
78
154
  }
155
+ async searchIndividualLicenses(_providerDid, _idToken, input) {
156
+ const thid = input.requestThid || runtimeThid('individual-license-search');
157
+ return createSyntheticSubmitAndPollResult(thid, {
158
+ thid,
159
+ request: {
160
+ resourceType: 'Bundle',
161
+ type: 'batch',
162
+ entry: [
163
+ new LicenseListSearchEditor(input.licenseQuery || {})
164
+ .buildSearchEntry(),
165
+ ],
166
+ },
167
+ });
168
+ }
169
+ /** Lists subject/individual-side license seats with optional semantic filters. */
170
+ async listIndividualLicenses(providerDid, idToken, input = {}) {
171
+ return this.searchIndividualLicenses(providerDid, idToken, input);
172
+ }
173
+ async searchIndividualLicenseOffers(_providerDid, _idToken, input) {
174
+ const thid = input.requestThid || runtimeThid('individual-license-offer-search');
175
+ return createSyntheticSubmitAndPollResult(thid, {
176
+ thid,
177
+ request: {
178
+ resourceType: 'Bundle',
179
+ type: 'batch',
180
+ entry: [
181
+ new LicenseOfferSearchEditor(input.offerQuery || {})
182
+ .buildSearchEntry(),
183
+ ],
184
+ },
185
+ });
186
+ }
187
+ /** Lists subject/individual-side commercial offer records with optional semantic filters. */
188
+ async listIndividualLicenseOffers(providerDid, idToken, input = {}) {
189
+ return this.searchIndividualLicenseOffers(providerDid, idToken, input);
190
+ }
191
+ async searchIndividualLicenseOrders(_providerDid, _idToken, input) {
192
+ const thid = input.requestThid || runtimeThid('individual-license-order-search');
193
+ return createSyntheticSubmitAndPollResult(thid, {
194
+ thid,
195
+ request: {
196
+ resourceType: 'Bundle',
197
+ type: 'batch',
198
+ entry: [
199
+ new LicenseOrderSearchEditor(input.orderQuery || {})
200
+ .buildSearchEntry(),
201
+ ],
202
+ },
203
+ });
204
+ }
205
+ /** Lists subject/individual-side commercial order/payment records with optional semantic filters. */
206
+ async listIndividualLicenseOrders(providerDid, idToken, input = {}) {
207
+ return this.searchIndividualLicenseOrders(providerDid, idToken, input);
208
+ }
79
209
  }
80
210
  export class IndividualService {
81
211
  /**
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "gdc-sdk-front-ts",
3
- "version": "0.9.1",
3
+ "version": "2.0.2",
4
4
  "description": "Next-generation frontend runtime package for the GDC SDK family",
5
5
  "license": "Apache-2.0",
6
6
  "author": "Antifraud Services Inc.",
@@ -17,8 +17,8 @@
17
17
  },
18
18
  "dependencies": {
19
19
  "@babel/runtime": "^7.28.4",
20
- "gdc-common-utils-ts": "^1.20.1",
21
- "gdc-sdk-core-ts": "^0.9.1"
20
+ "gdc-common-utils-ts": "^2.0.4",
21
+ "gdc-sdk-core-ts": "^2.0.3"
22
22
  },
23
23
  "devDependencies": {
24
24
  "@types/node": "^20.14.10",