gdc-sdk-node-ts 0.9.1 → 0.12.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.
- package/README.md +89 -2
- package/dist/constants/lifecycle.d.ts +1 -0
- package/dist/constants/lifecycle.js +2 -0
- package/dist/gdc-session-bridge.js +6 -2
- package/dist/host-onboarding.d.ts +6 -39
- package/dist/host-onboarding.js +8 -38
- package/dist/index.d.ts +3 -0
- package/dist/index.js +3 -0
- package/dist/individual-onboarding.d.ts +1 -0
- package/dist/individual-onboarding.js +1 -0
- package/dist/individual-start.d.ts +1 -10
- package/dist/legacy-compat.d.ts +2 -0
- package/dist/legacy-compat.js +1 -0
- package/dist/node-runtime-client.d.ts +87 -9
- package/dist/node-runtime-client.js +232 -25
- package/dist/orchestration/client-port.d.ts +21 -1
- package/dist/orchestration/host-onboarding-sdk.d.ts +16 -4
- package/dist/orchestration/host-onboarding-sdk.js +22 -1
- package/dist/orchestration/individual-controller-sdk.d.ts +36 -1
- package/dist/orchestration/individual-controller-sdk.js +51 -0
- package/dist/orchestration/organization-controller-sdk.d.ts +58 -1
- package/dist/orchestration/organization-controller-sdk.js +77 -0
- package/dist/orchestration/personal-sdk.d.ts +17 -1
- package/dist/orchestration/personal-sdk.js +32 -0
- package/dist/order-offer-summary.d.ts +6 -0
- package/dist/order-offer-summary.js +11 -0
- package/dist/organization-license-order.d.ts +40 -0
- package/dist/organization-license-order.js +42 -0
- package/dist/resource-operations.d.ts +153 -0
- package/dist/resource-operations.js +190 -13
- package/dist/session.js +1 -1
- package/package.json +13 -4
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
import { type NodeRuntimeClient, type PollOptions, type SubmitAndPollResult, type SubmitPayload } from './client-port.js';
|
|
2
2
|
import type { RouteContext } from '../individual-onboarding.js';
|
|
3
|
+
import type { HostRouteContext, HostedTenantLifecycleInput } from '../host-onboarding.js';
|
|
3
4
|
import type { EmployeeDeviceActivationResult, EmployeeDeviceActivationRequestInput } from '../device-activation.js';
|
|
4
5
|
import type { SmartTokenExchangeResult, SmartTokenRequestInput } from '../smart-token.js';
|
|
6
|
+
import type { OrganizationLicenseOrderConfirmInput } from '../organization-license-order.js';
|
|
5
7
|
import type { NodeCapability } from '../session.js';
|
|
6
|
-
import type { OrganizationEmployeeCreationInput, OrganizationEmployeeLifecycleInput } from '../resource-operations.js';
|
|
8
|
+
import type { LicenseListRuntimeSearchInput, LicenseOfferRuntimeSearchInput, LicenseOrderRuntimeSearchInput, OrganizationEmployeeCreationInput, OrganizationEmployeeLifecycleInput, OrganizationEmployeeSearchInput } from '../resource-operations.js';
|
|
7
9
|
/**
|
|
8
10
|
* Organization-controller oriented facade over a `NodeRuntimeClient`.
|
|
9
11
|
*
|
|
@@ -29,6 +31,51 @@ export declare class OrganizationControllerSdk {
|
|
|
29
31
|
* Preferred public alias for employee disable.
|
|
30
32
|
*/
|
|
31
33
|
disableEmployee(ctx: RouteContext, input: OrganizationEmployeeLifecycleInput, pollOptions?: PollOptions): Promise<SubmitAndPollResult>;
|
|
34
|
+
/**
|
|
35
|
+
* Searches employees/professionals under the current organization tenant.
|
|
36
|
+
*/
|
|
37
|
+
searchOrganizationEmployees(ctx: RouteContext, input: OrganizationEmployeeSearchInput): Promise<SubmitAndPollResult>;
|
|
38
|
+
/**
|
|
39
|
+
* Searches organization-owned license seats using semantic license filters.
|
|
40
|
+
*/
|
|
41
|
+
searchLicenses(ctx: RouteContext, input: LicenseListRuntimeSearchInput): Promise<SubmitAndPollResult>;
|
|
42
|
+
/**
|
|
43
|
+
* Lists organization-owned license seats with optional filters.
|
|
44
|
+
*/
|
|
45
|
+
listLicenses(ctx: RouteContext, input?: LicenseListRuntimeSearchInput): Promise<SubmitAndPollResult>;
|
|
46
|
+
/**
|
|
47
|
+
* Searches commercial license offers known for the current organization.
|
|
48
|
+
*/
|
|
49
|
+
searchLicenseOffers(ctx: RouteContext, input: LicenseOfferRuntimeSearchInput): Promise<SubmitAndPollResult>;
|
|
50
|
+
/**
|
|
51
|
+
* Lists commercial license offers known for the current organization.
|
|
52
|
+
*/
|
|
53
|
+
listLicenseOffers(ctx: RouteContext, input?: LicenseOfferRuntimeSearchInput): Promise<SubmitAndPollResult>;
|
|
54
|
+
/**
|
|
55
|
+
* Searches commercial license orders/payment records known for the current
|
|
56
|
+
* organization.
|
|
57
|
+
*/
|
|
58
|
+
searchLicenseOrders(ctx: RouteContext, input: LicenseOrderRuntimeSearchInput): Promise<SubmitAndPollResult>;
|
|
59
|
+
/**
|
|
60
|
+
* Lists commercial license orders/payment records known for the current
|
|
61
|
+
* organization.
|
|
62
|
+
*/
|
|
63
|
+
listLicenseOrders(ctx: RouteContext, input?: LicenseOrderRuntimeSearchInput): Promise<SubmitAndPollResult>;
|
|
64
|
+
/**
|
|
65
|
+
* Confirms an already paid organization-side license order so GW CORE can
|
|
66
|
+
* activate additional tenant seats once the public route exists.
|
|
67
|
+
*
|
|
68
|
+
* The commercial/payment step happens outside GW CORE. This method models
|
|
69
|
+
* the follow-up confirmation that should materialize new seats from the
|
|
70
|
+
* accepted order.
|
|
71
|
+
*
|
|
72
|
+
* Current runtime note:
|
|
73
|
+
* - search/list of organization license offers and orders already exists
|
|
74
|
+
* - the public/write post-payment seat-activation route is not converged yet
|
|
75
|
+
* - current runtime clients therefore throw an explicit unsupported-flow
|
|
76
|
+
* error instead of fabricating an unstable payload contract
|
|
77
|
+
*/
|
|
78
|
+
confirmOrganizationLicenseOrder(ctx: RouteContext, input: OrganizationLicenseOrderConfirmInput, pollOptions?: PollOptions): Promise<SubmitAndPollResult>;
|
|
32
79
|
/**
|
|
33
80
|
* Purges an already inactive employee and frees the associated license seat.
|
|
34
81
|
*/
|
|
@@ -37,6 +84,16 @@ export declare class OrganizationControllerSdk {
|
|
|
37
84
|
* Preferred public alias for employee purge.
|
|
38
85
|
*/
|
|
39
86
|
purgeEmployee(ctx: RouteContext, input: OrganizationEmployeeLifecycleInput, pollOptions?: PollOptions): Promise<SubmitAndPollResult>;
|
|
87
|
+
/**
|
|
88
|
+
* Disables the hosted tenant itself through the host registry once no active
|
|
89
|
+
* employees or individual/member descendants remain.
|
|
90
|
+
*/
|
|
91
|
+
disableTenant(hostCtx: HostRouteContext, input: HostedTenantLifecycleInput, pollOptions?: PollOptions): Promise<SubmitAndPollResult>;
|
|
92
|
+
/**
|
|
93
|
+
* Purges the hosted tenant through the host registry after tenant disable and
|
|
94
|
+
* descendant purges have both completed.
|
|
95
|
+
*/
|
|
96
|
+
purgeTenant(hostCtx: HostRouteContext, input: HostedTenantLifecycleInput, pollOptions?: PollOptions): Promise<SubmitAndPollResult>;
|
|
40
97
|
/**
|
|
41
98
|
* Activates the employee device from a previously issued activation request.
|
|
42
99
|
*/
|
|
@@ -37,6 +37,67 @@ export class OrganizationControllerSdk {
|
|
|
37
37
|
assertFacadeCapability(this.capabilities, ActorCapabilities.OrganizationDisableEmployee, ActorKinds.OrganizationController, 'disableEmployee');
|
|
38
38
|
return requireClientMethod(this.client, 'disableEmployee')(ctx, input, pollOptions);
|
|
39
39
|
}
|
|
40
|
+
/**
|
|
41
|
+
* Searches employees/professionals under the current organization tenant.
|
|
42
|
+
*/
|
|
43
|
+
searchOrganizationEmployees(ctx, input) {
|
|
44
|
+
return requireClientMethod(this.client, 'searchOrganizationEmployees')(ctx, input);
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Searches organization-owned license seats using semantic license filters.
|
|
48
|
+
*/
|
|
49
|
+
searchLicenses(ctx, input) {
|
|
50
|
+
return requireClientMethod(this.client, 'searchOrganizationLicenses')(ctx, input);
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Lists organization-owned license seats with optional filters.
|
|
54
|
+
*/
|
|
55
|
+
listLicenses(ctx, input = {}) {
|
|
56
|
+
return requireClientMethod(this.client, 'listOrganizationLicenses')(ctx, input);
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Searches commercial license offers known for the current organization.
|
|
60
|
+
*/
|
|
61
|
+
searchLicenseOffers(ctx, input) {
|
|
62
|
+
return requireClientMethod(this.client, 'searchOrganizationLicenseOffers')(ctx, input);
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Lists commercial license offers known for the current organization.
|
|
66
|
+
*/
|
|
67
|
+
listLicenseOffers(ctx, input = {}) {
|
|
68
|
+
return requireClientMethod(this.client, 'listOrganizationLicenseOffers')(ctx, input);
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Searches commercial license orders/payment records known for the current
|
|
72
|
+
* organization.
|
|
73
|
+
*/
|
|
74
|
+
searchLicenseOrders(ctx, input) {
|
|
75
|
+
return requireClientMethod(this.client, 'searchOrganizationLicenseOrders')(ctx, input);
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Lists commercial license orders/payment records known for the current
|
|
79
|
+
* organization.
|
|
80
|
+
*/
|
|
81
|
+
listLicenseOrders(ctx, input = {}) {
|
|
82
|
+
return requireClientMethod(this.client, 'listOrganizationLicenseOrders')(ctx, input);
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Confirms an already paid organization-side license order so GW CORE can
|
|
86
|
+
* activate additional tenant seats once the public route exists.
|
|
87
|
+
*
|
|
88
|
+
* The commercial/payment step happens outside GW CORE. This method models
|
|
89
|
+
* the follow-up confirmation that should materialize new seats from the
|
|
90
|
+
* accepted order.
|
|
91
|
+
*
|
|
92
|
+
* Current runtime note:
|
|
93
|
+
* - search/list of organization license offers and orders already exists
|
|
94
|
+
* - the public/write post-payment seat-activation route is not converged yet
|
|
95
|
+
* - current runtime clients therefore throw an explicit unsupported-flow
|
|
96
|
+
* error instead of fabricating an unstable payload contract
|
|
97
|
+
*/
|
|
98
|
+
confirmOrganizationLicenseOrder(ctx, input, pollOptions) {
|
|
99
|
+
return requireClientMethod(this.client, 'confirmOrganizationLicenseOrder')(ctx, input, pollOptions);
|
|
100
|
+
}
|
|
40
101
|
/**
|
|
41
102
|
* Purges an already inactive employee and frees the associated license seat.
|
|
42
103
|
*/
|
|
@@ -51,6 +112,22 @@ export class OrganizationControllerSdk {
|
|
|
51
112
|
assertFacadeCapability(this.capabilities, ActorCapabilities.OrganizationPurgeEmployee, ActorKinds.OrganizationController, 'purgeEmployee');
|
|
52
113
|
return requireClientMethod(this.client, 'purgeEmployee')(ctx, input, pollOptions);
|
|
53
114
|
}
|
|
115
|
+
/**
|
|
116
|
+
* Disables the hosted tenant itself through the host registry once no active
|
|
117
|
+
* employees or individual/member descendants remain.
|
|
118
|
+
*/
|
|
119
|
+
disableTenant(hostCtx, input, pollOptions) {
|
|
120
|
+
assertFacadeCapability(this.capabilities, ActorCapabilities.OrganizationDisableTenant, ActorKinds.OrganizationController, 'disableTenant');
|
|
121
|
+
return requireClientMethod(this.client, 'disableTenant')(hostCtx, input, pollOptions);
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* Purges the hosted tenant through the host registry after tenant disable and
|
|
125
|
+
* descendant purges have both completed.
|
|
126
|
+
*/
|
|
127
|
+
purgeTenant(hostCtx, input, pollOptions) {
|
|
128
|
+
assertFacadeCapability(this.capabilities, ActorCapabilities.OrganizationPurgeTenant, ActorKinds.OrganizationController, 'purgeTenant');
|
|
129
|
+
return requireClientMethod(this.client, 'purgeTenant')(hostCtx, input, pollOptions);
|
|
130
|
+
}
|
|
54
131
|
/**
|
|
55
132
|
* Activates the employee device from a previously issued activation request.
|
|
56
133
|
*/
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { type NodeRuntimeClient, type PollOptions, type SubmitAndPollResult, type SubmitPayload } from './client-port.js';
|
|
2
2
|
import type { IndividualOrganizationBootstrapInput, IndividualOrganizationStartResult } from '../individual-start.js';
|
|
3
3
|
import type { RouteContext } from '../individual-onboarding.js';
|
|
4
|
-
import type { CommunicationIngestionInput, DigitalTwinGenerationInput, GrantProfessionalAccessInput, GrantProfessionalAccessResult, IpsOrFhirImportInput } from '../resource-operations.js';
|
|
4
|
+
import type { ClinicalBundleSearchInput, CommunicationIngestionInput, DigitalTwinGenerationInput, GrantProfessionalAccessInput, GrantProfessionalAccessResult, IpsOrFhirImportInput, LicenseListRuntimeSearchInput, LicenseOfferRuntimeSearchInput, LicenseOrderRuntimeSearchInput } from '../resource-operations.js';
|
|
5
5
|
import type { SmartTokenExchangeResult, SmartTokenRequestInput } from '../smart-token.js';
|
|
6
6
|
export declare class PersonalSdk {
|
|
7
7
|
private readonly client;
|
|
@@ -16,6 +16,22 @@ export declare class PersonalSdk {
|
|
|
16
16
|
ingestCommunicationAndUpdateIndex(ctx: RouteContext, input: CommunicationIngestionInput): Promise<SubmitAndPollResult>;
|
|
17
17
|
/** Triggers digital twin generation from subject data. */
|
|
18
18
|
generateDigitalTwinFromSubjectData(ctx: RouteContext, input: DigitalTwinGenerationInput): Promise<SubmitAndPollResult>;
|
|
19
|
+
/** Searches indexed clinical bundles for the current subject/controller context. */
|
|
20
|
+
searchClinicalBundle(ctx: RouteContext, input: ClinicalBundleSearchInput): Promise<SubmitAndPollResult>;
|
|
21
|
+
/** Returns the latest IPS-oriented bundle for one subject. */
|
|
22
|
+
getLatestIps(ctx: RouteContext, input: Omit<ClinicalBundleSearchInput, 'includedTypes'>): Promise<SubmitAndPollResult>;
|
|
23
|
+
/** Searches subject-side license seats using semantic filters. */
|
|
24
|
+
searchLicenses(ctx: RouteContext, input: LicenseListRuntimeSearchInput): Promise<SubmitAndPollResult>;
|
|
25
|
+
/** Lists subject-side license seats with optional filters. */
|
|
26
|
+
listLicenses(ctx: RouteContext, input?: LicenseListRuntimeSearchInput): Promise<SubmitAndPollResult>;
|
|
27
|
+
/** Searches subject-side commercial license offers. */
|
|
28
|
+
searchLicenseOffers(ctx: RouteContext, input: LicenseOfferRuntimeSearchInput): Promise<SubmitAndPollResult>;
|
|
29
|
+
/** Lists subject-side commercial license offers. */
|
|
30
|
+
listLicenseOffers(ctx: RouteContext, input?: LicenseOfferRuntimeSearchInput): Promise<SubmitAndPollResult>;
|
|
31
|
+
/** Searches subject-side commercial license orders/payment projections. */
|
|
32
|
+
searchLicenseOrders(ctx: RouteContext, input: LicenseOrderRuntimeSearchInput): Promise<SubmitAndPollResult>;
|
|
33
|
+
/** Lists subject-side commercial license orders/payment projections. */
|
|
34
|
+
listLicenseOrders(ctx: RouteContext, input?: LicenseOrderRuntimeSearchInput): Promise<SubmitAndPollResult>;
|
|
19
35
|
/** Requests SMART/OpenID token with simplified exchange flow. */
|
|
20
36
|
requestSmartToken(input: SmartTokenRequestInput): Promise<SmartTokenExchangeResult>;
|
|
21
37
|
submitAndPoll(submitPath: string, pollPath: string, payload: SubmitPayload, pollOptions?: PollOptions): Promise<SubmitAndPollResult>;
|
|
@@ -24,6 +24,38 @@ export class PersonalSdk {
|
|
|
24
24
|
generateDigitalTwinFromSubjectData(ctx, input) {
|
|
25
25
|
return requireClientMethod(this.client, 'generateDigitalTwinFromSubjectData')(ctx, input);
|
|
26
26
|
}
|
|
27
|
+
/** Searches indexed clinical bundles for the current subject/controller context. */
|
|
28
|
+
searchClinicalBundle(ctx, input) {
|
|
29
|
+
return requireClientMethod(this.client, 'searchClinicalBundle')(ctx, input);
|
|
30
|
+
}
|
|
31
|
+
/** Returns the latest IPS-oriented bundle for one subject. */
|
|
32
|
+
getLatestIps(ctx, input) {
|
|
33
|
+
return requireClientMethod(this.client, 'getLatestIps')(ctx, input);
|
|
34
|
+
}
|
|
35
|
+
/** Searches subject-side license seats using semantic filters. */
|
|
36
|
+
searchLicenses(ctx, input) {
|
|
37
|
+
return requireClientMethod(this.client, 'searchIndividualLicenses')(ctx, input);
|
|
38
|
+
}
|
|
39
|
+
/** Lists subject-side license seats with optional filters. */
|
|
40
|
+
listLicenses(ctx, input = {}) {
|
|
41
|
+
return requireClientMethod(this.client, 'listIndividualLicenses')(ctx, input);
|
|
42
|
+
}
|
|
43
|
+
/** Searches subject-side commercial license offers. */
|
|
44
|
+
searchLicenseOffers(ctx, input) {
|
|
45
|
+
return requireClientMethod(this.client, 'searchIndividualLicenseOffers')(ctx, input);
|
|
46
|
+
}
|
|
47
|
+
/** Lists subject-side commercial license offers. */
|
|
48
|
+
listLicenseOffers(ctx, input = {}) {
|
|
49
|
+
return requireClientMethod(this.client, 'listIndividualLicenseOffers')(ctx, input);
|
|
50
|
+
}
|
|
51
|
+
/** Searches subject-side commercial license orders/payment projections. */
|
|
52
|
+
searchLicenseOrders(ctx, input) {
|
|
53
|
+
return requireClientMethod(this.client, 'searchIndividualLicenseOrders')(ctx, input);
|
|
54
|
+
}
|
|
55
|
+
/** Lists subject-side commercial license orders/payment projections. */
|
|
56
|
+
listLicenseOrders(ctx, input = {}) {
|
|
57
|
+
return requireClientMethod(this.client, 'listIndividualLicenseOrders')(ctx, input);
|
|
58
|
+
}
|
|
27
59
|
/** Requests SMART/OpenID token with simplified exchange flow. */
|
|
28
60
|
requestSmartToken(input) {
|
|
29
61
|
return requireClientMethod(this.client, 'requestSmartToken')(input);
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { type LicenseOfferPreview, type LicenseOrderSummary } from 'gdc-common-utils-ts';
|
|
2
|
+
export type OfferPreview = LicenseOfferPreview;
|
|
3
|
+
export type OrderSummary = LicenseOrderSummary;
|
|
4
|
+
export declare function extractOfferIdFromResponseBody(body: unknown): string | undefined;
|
|
5
|
+
export declare function extractOfferPreviewFromResponseBody(body: unknown): OfferPreview;
|
|
6
|
+
export declare function extractOrderSummaryFromResponseBody(body: unknown): OrderSummary;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
// Copyright 2026 Antifraud Services Inc. under the Apache License, Version 2.0.
|
|
2
|
+
import { ClaimsOfferSchemaorg, extractPrimaryClaims, readLicenseOfferPreviewFromResponseBody, readLicenseOrderSummaryFromResponseBody, } from 'gdc-common-utils-ts';
|
|
3
|
+
export function extractOfferIdFromResponseBody(body) {
|
|
4
|
+
return String(extractPrimaryClaims(body)[ClaimsOfferSchemaorg.identifier] || '').trim() || undefined;
|
|
5
|
+
}
|
|
6
|
+
export function extractOfferPreviewFromResponseBody(body) {
|
|
7
|
+
return readLicenseOfferPreviewFromResponseBody(body);
|
|
8
|
+
}
|
|
9
|
+
export function extractOrderSummaryFromResponseBody(body) {
|
|
10
|
+
return readLicenseOrderSummaryFromResponseBody(body);
|
|
11
|
+
}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import type { PollOptions, SubmitAndPollResult } from './orchestration/client-port.js';
|
|
2
|
+
import type { HostRouteContext } from './host-onboarding.js';
|
|
3
|
+
import type { RouteContext } from './individual-onboarding.js';
|
|
4
|
+
/**
|
|
5
|
+
* High-level runtime input for organization-side extra-license activation after
|
|
6
|
+
* the portal has already resolved the commercial/payment step out of band.
|
|
7
|
+
*
|
|
8
|
+
* Target business sequence:
|
|
9
|
+
* - portal lists/searches `Offer`
|
|
10
|
+
* - portal completes the fictitious or real payment outside GW CORE
|
|
11
|
+
* - portal confirms the accepted offer to GW CORE
|
|
12
|
+
* - GW CORE materializes the new `device-licenses` seats for the tenant
|
|
13
|
+
*
|
|
14
|
+
* Transport note:
|
|
15
|
+
* - current GW CORE exposes this confirmation step through the host
|
|
16
|
+
* `registry/org.schema/Order/_batch` route
|
|
17
|
+
* - the organization controller still reasons in tenant context, so the
|
|
18
|
+
* runtime adapts that higher-level intent onto the current host route
|
|
19
|
+
*/
|
|
20
|
+
export type OrganizationLicenseOrderConfirmInput = Readonly<{
|
|
21
|
+
offerId: string;
|
|
22
|
+
hostNetwork?: string;
|
|
23
|
+
dataType?: string;
|
|
24
|
+
additionalClaims?: Record<string, unknown>;
|
|
25
|
+
timeoutSeconds?: number;
|
|
26
|
+
intervalSeconds?: number;
|
|
27
|
+
}>;
|
|
28
|
+
type ConfirmOrganizationLicenseOrderDeps = Readonly<{
|
|
29
|
+
routeCtx: RouteContext;
|
|
30
|
+
input: OrganizationLicenseOrderConfirmInput;
|
|
31
|
+
defaultTimeoutMs?: number;
|
|
32
|
+
defaultIntervalMs?: number;
|
|
33
|
+
hostRegistryOrderBatchPath: (ctx: HostRouteContext) => string;
|
|
34
|
+
hostRegistryOrderPollPath: (ctx: HostRouteContext) => string;
|
|
35
|
+
submitAndPoll: (submitPath: string, pollPath: string, payload: {
|
|
36
|
+
thid?: string;
|
|
37
|
+
} & Record<string, unknown>, options?: PollOptions) => Promise<SubmitAndPollResult>;
|
|
38
|
+
}>;
|
|
39
|
+
export declare function confirmOrganizationLicenseOrderWithDeps(deps: ConfirmOrganizationLicenseOrderDeps): Promise<SubmitAndPollResult>;
|
|
40
|
+
export {};
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
// Copyright 2026 Antifraud Services Inc. under the Apache License, Version 2.0.
|
|
2
|
+
import { resolvePollOptionsFromSeconds } from './poll-options.js';
|
|
3
|
+
export async function confirmOrganizationLicenseOrderWithDeps(deps) {
|
|
4
|
+
const offerId = String(deps.input.offerId || '').trim();
|
|
5
|
+
if (!offerId) {
|
|
6
|
+
throw new Error('confirmOrganizationLicenseOrder requires offerId.');
|
|
7
|
+
}
|
|
8
|
+
const claims = {
|
|
9
|
+
'@context': 'org.schema',
|
|
10
|
+
'Order.acceptedOffer.identifier': offerId,
|
|
11
|
+
...(deps.input.additionalClaims || {}),
|
|
12
|
+
};
|
|
13
|
+
const hostCtx = {
|
|
14
|
+
jurisdiction: String(deps.routeCtx.jurisdiction || '').trim(),
|
|
15
|
+
hostNetwork: String(deps.input.hostNetwork || 'test').trim() || 'test',
|
|
16
|
+
};
|
|
17
|
+
const payload = {
|
|
18
|
+
jti: `jti-${createRuntimeUuid()}`,
|
|
19
|
+
iss: deps.routeCtx.tenantId,
|
|
20
|
+
aud: deps.routeCtx.tenantId,
|
|
21
|
+
type: 'application/didcomm-plain+json',
|
|
22
|
+
thid: `organization-license-order-${createRuntimeUuid()}`,
|
|
23
|
+
body: {
|
|
24
|
+
data: [{
|
|
25
|
+
type: deps.input.dataType || 'Organization-order-request-v1.0',
|
|
26
|
+
meta: { claims },
|
|
27
|
+
resource: { meta: { claims } },
|
|
28
|
+
}],
|
|
29
|
+
},
|
|
30
|
+
};
|
|
31
|
+
return deps.submitAndPoll(deps.hostRegistryOrderBatchPath(hostCtx), deps.hostRegistryOrderPollPath(hostCtx), payload, resolvePollOptionsFromSeconds(deps.input.timeoutSeconds, deps.input.intervalSeconds, {
|
|
32
|
+
timeoutMs: deps.defaultTimeoutMs,
|
|
33
|
+
intervalMs: deps.defaultIntervalMs,
|
|
34
|
+
}));
|
|
35
|
+
}
|
|
36
|
+
function createRuntimeUuid() {
|
|
37
|
+
const fromCrypto = globalThis.crypto?.randomUUID?.();
|
|
38
|
+
if (fromCrypto) {
|
|
39
|
+
return fromCrypto;
|
|
40
|
+
}
|
|
41
|
+
return `fallback-${Date.now()}-${Math.random().toString(16).slice(2)}`;
|
|
42
|
+
}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { type LicenseOfferSearchDraft, type LicenseOrderSearchDraft, type LicenseListSearchDraft } from 'gdc-common-utils-ts';
|
|
1
2
|
import type { BundleSearchQuery, CommunicationInput, DateRange, EmployeeSearchValue } from 'gdc-sdk-core-ts';
|
|
2
3
|
import type { SubmitAndPollResult } from './orchestration/client-port.js';
|
|
3
4
|
import type { RouteContext } from './individual-onboarding.js';
|
|
@@ -59,6 +60,43 @@ export type OrganizationEmployeeSearchInput = {
|
|
|
59
60
|
intervalMs?: number;
|
|
60
61
|
};
|
|
61
62
|
};
|
|
63
|
+
/**
|
|
64
|
+
* Runtime search/list input for license seats exposed through actor facades.
|
|
65
|
+
*
|
|
66
|
+
* The semantic filter set comes from the shared license controller facade.
|
|
67
|
+
*/
|
|
68
|
+
export type LicenseListRuntimeSearchInput = {
|
|
69
|
+
licenseQuery?: Partial<LicenseListSearchDraft>;
|
|
70
|
+
requestThid?: string;
|
|
71
|
+
pollOptions?: {
|
|
72
|
+
timeoutMs?: number;
|
|
73
|
+
intervalMs?: number;
|
|
74
|
+
};
|
|
75
|
+
};
|
|
76
|
+
/**
|
|
77
|
+
* Runtime search/list input for commercial offer read-models exposed through
|
|
78
|
+
* actor facades.
|
|
79
|
+
*/
|
|
80
|
+
export type LicenseOfferRuntimeSearchInput = {
|
|
81
|
+
offerQuery?: Partial<LicenseOfferSearchDraft>;
|
|
82
|
+
requestThid?: string;
|
|
83
|
+
pollOptions?: {
|
|
84
|
+
timeoutMs?: number;
|
|
85
|
+
intervalMs?: number;
|
|
86
|
+
};
|
|
87
|
+
};
|
|
88
|
+
/**
|
|
89
|
+
* Runtime search/list input for commercial order/payment read-models exposed
|
|
90
|
+
* through actor facades.
|
|
91
|
+
*/
|
|
92
|
+
export type LicenseOrderRuntimeSearchInput = {
|
|
93
|
+
orderQuery?: Partial<LicenseOrderSearchDraft>;
|
|
94
|
+
requestThid?: string;
|
|
95
|
+
pollOptions?: {
|
|
96
|
+
timeoutMs?: number;
|
|
97
|
+
intervalMs?: number;
|
|
98
|
+
};
|
|
99
|
+
};
|
|
62
100
|
/**
|
|
63
101
|
* Current GW CORE individual/family lifecycle locator payload.
|
|
64
102
|
*
|
|
@@ -255,6 +293,54 @@ export declare function searchOrganizationEmployeesWithDeps(routeCtx: RouteConte
|
|
|
255
293
|
intervalMs?: number;
|
|
256
294
|
}) => Promise<SubmitAndPollResult>;
|
|
257
295
|
}): Promise<SubmitAndPollResult>;
|
|
296
|
+
/**
|
|
297
|
+
* Searches license seats for one organization/tenant through `License/_search`.
|
|
298
|
+
*/
|
|
299
|
+
export declare function searchOrganizationLicensesWithDeps(routeCtx: RouteContext, input: LicenseListRuntimeSearchInput, deps: {
|
|
300
|
+
organizationLicenseSearchPath: (ctx: RouteContext) => string;
|
|
301
|
+
organizationLicenseSearchPollPath: (ctx: RouteContext) => string;
|
|
302
|
+
submitAndPoll: (submitPath: string, pollPath: string, payload: {
|
|
303
|
+
thid?: string;
|
|
304
|
+
} & Record<string, unknown>, pollOptions?: {
|
|
305
|
+
timeoutMs?: number;
|
|
306
|
+
intervalMs?: number;
|
|
307
|
+
}) => Promise<SubmitAndPollResult>;
|
|
308
|
+
}): Promise<SubmitAndPollResult>;
|
|
309
|
+
/**
|
|
310
|
+
* Lists license seats using the same canonical `License/_search` route with no
|
|
311
|
+
* mandatory filters.
|
|
312
|
+
*/
|
|
313
|
+
export declare function listOrganizationLicensesWithDeps(routeCtx: RouteContext, input: LicenseListRuntimeSearchInput | undefined, deps: Parameters<typeof searchOrganizationLicensesWithDeps>[2]): Promise<SubmitAndPollResult>;
|
|
314
|
+
/**
|
|
315
|
+
* Searches commercial license offers for one organization/tenant through
|
|
316
|
+
* `Offer/_search`.
|
|
317
|
+
*/
|
|
318
|
+
export declare function searchOrganizationLicenseOffersWithDeps(routeCtx: RouteContext, input: LicenseOfferRuntimeSearchInput, deps: {
|
|
319
|
+
organizationLicenseOfferSearchPath: (ctx: RouteContext) => string;
|
|
320
|
+
organizationLicenseOfferSearchPollPath: (ctx: RouteContext) => string;
|
|
321
|
+
submitAndPoll: (submitPath: string, pollPath: string, payload: {
|
|
322
|
+
thid?: string;
|
|
323
|
+
} & Record<string, unknown>, pollOptions?: {
|
|
324
|
+
timeoutMs?: number;
|
|
325
|
+
intervalMs?: number;
|
|
326
|
+
}) => Promise<SubmitAndPollResult>;
|
|
327
|
+
}): Promise<SubmitAndPollResult>;
|
|
328
|
+
export declare function listOrganizationLicenseOffersWithDeps(routeCtx: RouteContext, input: LicenseOfferRuntimeSearchInput | undefined, deps: Parameters<typeof searchOrganizationLicenseOffersWithDeps>[2]): Promise<SubmitAndPollResult>;
|
|
329
|
+
/**
|
|
330
|
+
* Searches commercial license orders/payment projections for one
|
|
331
|
+
* organization/tenant through `Order/_search`.
|
|
332
|
+
*/
|
|
333
|
+
export declare function searchOrganizationLicenseOrdersWithDeps(routeCtx: RouteContext, input: LicenseOrderRuntimeSearchInput, deps: {
|
|
334
|
+
organizationLicenseOrderSearchPath: (ctx: RouteContext) => string;
|
|
335
|
+
organizationLicenseOrderSearchPollPath: (ctx: RouteContext) => string;
|
|
336
|
+
submitAndPoll: (submitPath: string, pollPath: string, payload: {
|
|
337
|
+
thid?: string;
|
|
338
|
+
} & Record<string, unknown>, pollOptions?: {
|
|
339
|
+
timeoutMs?: number;
|
|
340
|
+
intervalMs?: number;
|
|
341
|
+
}) => Promise<SubmitAndPollResult>;
|
|
342
|
+
}): Promise<SubmitAndPollResult>;
|
|
343
|
+
export declare function listOrganizationLicenseOrdersWithDeps(routeCtx: RouteContext, input: LicenseOrderRuntimeSearchInput | undefined, deps: Parameters<typeof searchOrganizationLicenseOrdersWithDeps>[2]): Promise<SubmitAndPollResult>;
|
|
258
344
|
export declare function disableIndividualOrganizationWithDeps(routeCtx: RouteContext, input: IndividualOrganizationLifecycleInput, options: {
|
|
259
345
|
timeoutMs?: number;
|
|
260
346
|
intervalMs?: number;
|
|
@@ -281,6 +367,47 @@ export declare function purgeIndividualOrganizationWithDeps(routeCtx: RouteConte
|
|
|
281
367
|
intervalMs?: number;
|
|
282
368
|
}) => Promise<SubmitAndPollResult>;
|
|
283
369
|
}): Promise<SubmitAndPollResult>;
|
|
370
|
+
/**
|
|
371
|
+
* Searches license seats for one individual/family controller context through
|
|
372
|
+
* the shared `License/_search` route.
|
|
373
|
+
*/
|
|
374
|
+
export declare function searchIndividualLicensesWithDeps(routeCtx: RouteContext, input: LicenseListRuntimeSearchInput, deps: {
|
|
375
|
+
individualLicenseSearchPath: (ctx: RouteContext) => string;
|
|
376
|
+
individualLicenseSearchPollPath: (ctx: RouteContext) => string;
|
|
377
|
+
submitAndPoll: (submitPath: string, pollPath: string, payload: {
|
|
378
|
+
thid?: string;
|
|
379
|
+
} & Record<string, unknown>, pollOptions?: {
|
|
380
|
+
timeoutMs?: number;
|
|
381
|
+
intervalMs?: number;
|
|
382
|
+
}) => Promise<SubmitAndPollResult>;
|
|
383
|
+
}): Promise<SubmitAndPollResult>;
|
|
384
|
+
/**
|
|
385
|
+
* Lists license seats for the individual/family side using the same canonical
|
|
386
|
+
* search route without mandatory filters.
|
|
387
|
+
*/
|
|
388
|
+
export declare function listIndividualLicensesWithDeps(routeCtx: RouteContext, input: LicenseListRuntimeSearchInput | undefined, deps: Parameters<typeof searchIndividualLicensesWithDeps>[2]): Promise<SubmitAndPollResult>;
|
|
389
|
+
export declare function searchIndividualLicenseOffersWithDeps(routeCtx: RouteContext, input: LicenseOfferRuntimeSearchInput, deps: {
|
|
390
|
+
individualLicenseOfferSearchPath: (ctx: RouteContext) => string;
|
|
391
|
+
individualLicenseOfferSearchPollPath: (ctx: RouteContext) => string;
|
|
392
|
+
submitAndPoll: (submitPath: string, pollPath: string, payload: {
|
|
393
|
+
thid?: string;
|
|
394
|
+
} & Record<string, unknown>, pollOptions?: {
|
|
395
|
+
timeoutMs?: number;
|
|
396
|
+
intervalMs?: number;
|
|
397
|
+
}) => Promise<SubmitAndPollResult>;
|
|
398
|
+
}): Promise<SubmitAndPollResult>;
|
|
399
|
+
export declare function listIndividualLicenseOffersWithDeps(routeCtx: RouteContext, input: LicenseOfferRuntimeSearchInput | undefined, deps: Parameters<typeof searchIndividualLicenseOffersWithDeps>[2]): Promise<SubmitAndPollResult>;
|
|
400
|
+
export declare function searchIndividualLicenseOrdersWithDeps(routeCtx: RouteContext, input: LicenseOrderRuntimeSearchInput, deps: {
|
|
401
|
+
individualLicenseOrderSearchPath: (ctx: RouteContext) => string;
|
|
402
|
+
individualLicenseOrderSearchPollPath: (ctx: RouteContext) => string;
|
|
403
|
+
submitAndPoll: (submitPath: string, pollPath: string, payload: {
|
|
404
|
+
thid?: string;
|
|
405
|
+
} & Record<string, unknown>, pollOptions?: {
|
|
406
|
+
timeoutMs?: number;
|
|
407
|
+
intervalMs?: number;
|
|
408
|
+
}) => Promise<SubmitAndPollResult>;
|
|
409
|
+
}): Promise<SubmitAndPollResult>;
|
|
410
|
+
export declare function listIndividualLicenseOrdersWithDeps(routeCtx: RouteContext, input: LicenseOrderRuntimeSearchInput | undefined, deps: Parameters<typeof searchIndividualLicenseOrdersWithDeps>[2]): Promise<SubmitAndPollResult>;
|
|
284
411
|
export declare function importIpsOrFhirAndUpdateIndexWithDeps(routeCtx: RouteContext, input: IpsOrFhirImportInput, deps: {
|
|
285
412
|
individualCompositionR4BatchPath: (ctx: RouteContext) => string;
|
|
286
413
|
individualCompositionR4PollPath: (ctx: RouteContext) => string;
|
|
@@ -291,6 +418,32 @@ export declare function importIpsOrFhirAndUpdateIndexWithDeps(routeCtx: RouteCon
|
|
|
291
418
|
intervalMs?: number;
|
|
292
419
|
}) => Promise<SubmitAndPollResult>;
|
|
293
420
|
}): Promise<SubmitAndPollResult>;
|
|
421
|
+
export declare function disableIndividualMemberWithDeps(routeCtx: RouteContext, input: IndividualMemberLifecycleInput, options: {
|
|
422
|
+
timeoutMs?: number;
|
|
423
|
+
intervalMs?: number;
|
|
424
|
+
} | undefined, deps: {
|
|
425
|
+
individualRelatedPersonBatchPath: (ctx: RouteContext) => string;
|
|
426
|
+
individualRelatedPersonPollPath: (ctx: RouteContext) => string;
|
|
427
|
+
submitAndPoll: (submitPath: string, pollPath: string, payload: {
|
|
428
|
+
thid?: string;
|
|
429
|
+
} & Record<string, unknown>, pollOptions?: {
|
|
430
|
+
timeoutMs?: number;
|
|
431
|
+
intervalMs?: number;
|
|
432
|
+
}) => Promise<SubmitAndPollResult>;
|
|
433
|
+
}): Promise<SubmitAndPollResult>;
|
|
434
|
+
export declare function purgeIndividualMemberWithDeps(routeCtx: RouteContext, input: IndividualMemberLifecycleInput, options: {
|
|
435
|
+
timeoutMs?: number;
|
|
436
|
+
intervalMs?: number;
|
|
437
|
+
} | undefined, deps: {
|
|
438
|
+
individualRelatedPersonPurgePath: (ctx: RouteContext) => string;
|
|
439
|
+
individualRelatedPersonPurgePollPath: (ctx: RouteContext) => string;
|
|
440
|
+
submitAndPoll: (submitPath: string, pollPath: string, payload: {
|
|
441
|
+
thid?: string;
|
|
442
|
+
} & Record<string, unknown>, pollOptions?: {
|
|
443
|
+
timeoutMs?: number;
|
|
444
|
+
intervalMs?: number;
|
|
445
|
+
}) => Promise<SubmitAndPollResult>;
|
|
446
|
+
}): Promise<SubmitAndPollResult>;
|
|
294
447
|
export declare function upsertRelatedPersonAndPollWithDeps(routeCtx: RouteContext, input: RelatedPersonUpsertInput, deps: {
|
|
295
448
|
individualRelatedPersonBatchPath: (ctx: RouteContext) => string;
|
|
296
449
|
individualRelatedPersonPollPath: (ctx: RouteContext) => string;
|