gdc-common-utils-ts 2.0.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.
@@ -0,0 +1,225 @@
1
+ import { EXAMPLE_BUNDLE_RESOURCE_TYPE } from './shared';
2
+ /**
3
+ * Minimal DIDComm bundle attachment example shape reused by ICA response fixtures.
4
+ */
5
+ export interface IcaVerifyResponseExampleAttachment {
6
+ id: string;
7
+ format: string;
8
+ media_type: string;
9
+ filename: string;
10
+ data: {
11
+ json: {
12
+ format: string;
13
+ jwt: string;
14
+ };
15
+ };
16
+ }
17
+ /**
18
+ * Minimal OperationOutcome issue example shape reused by ICA response fixtures.
19
+ */
20
+ export interface IcaVerifyResponseExampleIssue {
21
+ severity: 'information' | 'warning' | 'error' | 'fatal';
22
+ code: string;
23
+ diagnostics: string;
24
+ }
25
+ /**
26
+ * Minimal OperationOutcome example shape reused by ICA response fixtures.
27
+ */
28
+ export interface IcaVerifyResponseExampleOutcome {
29
+ resourceType: typeof EXAMPLE_VERIFY_RESPONSE_OPERATION_OUTCOME_RESOURCE_TYPE;
30
+ issue: IcaVerifyResponseExampleIssue[];
31
+ }
32
+ /**
33
+ * Canonical example of the `_verify-response` DIDComm payload emitted by ICA.
34
+ *
35
+ * This example is intentionally transport-neutral and reusable by:
36
+ * - Swagger/OpenAPI examples
37
+ * - SDK unit tests
38
+ * - portal/BFF documentation
39
+ *
40
+ * Contract notes:
41
+ * - `body.data[0]` carries the organization credential plus optional generated
42
+ * organization signing keypair
43
+ * - `body.data[1]` carries the legal representative credential plus the
44
+ * controller binding public key
45
+ * - `credentialSubject.sameAs` expresses public identity continuity
46
+ * - `credentialSubject.hasCredential.material` expresses controller
47
+ * signing/binding key continuity as an RFC 9278 JWK-thumbprint URN
48
+ */
49
+ export interface IcaVerifyTermsResponseExample {
50
+ jti: string;
51
+ iss: string;
52
+ aud: string;
53
+ thid: string;
54
+ type: string;
55
+ attachments: IcaVerifyResponseExampleAttachment[];
56
+ body: {
57
+ resourceType: typeof EXAMPLE_BUNDLE_RESOURCE_TYPE;
58
+ type: typeof EXAMPLE_VERIFY_RESPONSE_BATCH_RESPONSE_TYPE;
59
+ total: number;
60
+ issues: IcaVerifyResponseExampleOutcome;
61
+ data: Array<Record<string, unknown>>;
62
+ };
63
+ }
64
+ export declare const EXAMPLE_VERIFY_RESPONSE_OPERATION_OUTCOME_RESOURCE_TYPE: "OperationOutcome";
65
+ export declare const EXAMPLE_VERIFY_RESPONSE_BATCH_RESPONSE_TYPE: "batch-response";
66
+ export declare const EXAMPLE_VERIFY_RESPONSE_SCHEMA_ORG_CONTEXT: "https://schema.org";
67
+ export declare const EXAMPLE_VERIFY_RESPONSE_PERSON_TYPE: "Person";
68
+ export declare const EXAMPLE_VERIFY_RESPONSE_ORGANIZATION_TYPE: "Organization";
69
+ export declare const EXAMPLE_VERIFY_RESPONSE_JTI: "urn:uuid:verify-resp-001";
70
+ export declare const EXAMPLE_VERIFY_RESPONSE_THID: "verify-terms-001";
71
+ export declare const EXAMPLE_VERIFY_RESPONSE_BUNDLE_TYPE: "application/bundle-api+json";
72
+ export declare const EXAMPLE_VERIFY_RESPONSE_DATE: "2026-03-12T21:12:26.646Z";
73
+ export declare const EXAMPLE_VERIFY_RESPONSE_PROOF_DATE: "2026-03-12T21:12:57.534Z";
74
+ export declare const EXAMPLE_VERIFY_RESPONSE_VERSION_ID: "zPdfVersionHash001";
75
+ export declare const EXAMPLE_VERIFY_RESPONSE_ORG_VC_ID: "urn:uuid:org-vc-001";
76
+ export declare const EXAMPLE_VERIFY_RESPONSE_PERSON_VC_ID: "urn:uuid:person-vc-001";
77
+ export declare const EXAMPLE_VERIFY_RESPONSE_ORG_ENTRY_TYPE: "Organization-verification-v1.0";
78
+ export declare const EXAMPLE_VERIFY_RESPONSE_PERSON_ENTRY_TYPE: "LegalRepresentative-verification-v1.0";
79
+ export declare const EXAMPLE_VERIFY_RESPONSE_ORG_ATTACHMENT_ID: "vc-jwt-1";
80
+ export declare const EXAMPLE_VERIFY_RESPONSE_PERSON_ATTACHMENT_ID: "vc-jwt-2";
81
+ export declare const EXAMPLE_VERIFY_RESPONSE_ORG_ATTACHMENT_FILENAME: "Organization-verification-v1.0-1.jwt";
82
+ export declare const EXAMPLE_VERIFY_RESPONSE_PERSON_ATTACHMENT_FILENAME: "LegalRepresentative-verification-v1.0-2.jwt";
83
+ export declare const EXAMPLE_VERIFY_RESPONSE_ORG_JWT: "<vc-jwt-organization>";
84
+ export declare const EXAMPLE_VERIFY_RESPONSE_PERSON_JWT: "<vc-jwt-legal-representative>";
85
+ export declare const EXAMPLE_VERIFY_RESPONSE_MEDIA_TYPE: "application/vc+jwt";
86
+ export declare const EXAMPLE_VERIFY_RESPONSE_ATTACHMENT_FORMAT: "vc+jwt";
87
+ export declare const EXAMPLE_VERIFY_RESPONSE_STATUS_OK: "200";
88
+ export declare const EXAMPLE_VERIFY_RESPONSE_ORG_KID: "org-es384-001";
89
+ export declare const EXAMPLE_VERIFY_RESPONSE_PERSON_KID: "controller-es384-001";
90
+ export declare const EXAMPLE_VERIFY_RESPONSE_ORG_DID: "did:web:globaldatacare.es:onehealth:organization:taxid:VATES-B00112233";
91
+ export declare const EXAMPLE_VERIFY_RESPONSE_PERSON_NAME: "Alex Example";
92
+ export declare const EXAMPLE_VERIFY_RESPONSE_PERSON_GIVEN_NAME: "Alex";
93
+ export declare const EXAMPLE_VERIFY_RESPONSE_PERSON_FAMILY_NAME: "Example";
94
+ export declare const EXAMPLE_VERIFY_RESPONSE_PERSON_NATIONALITY: "ES";
95
+ export declare const EXAMPLE_VERIFY_RESPONSE_PERSON_ADDITIONAL_TYPE: "ES384";
96
+ export declare const EXAMPLE_VERIFY_RESPONSE_PERSON_ALTERNATE_NAME: "controller-es384-001";
97
+ export declare const EXAMPLE_VERIFY_RESPONSE_ORG_ADDITIONAL_TYPE: "sector=onehealth;section=dataprovider;kind=clinic;action=_index-provider,_research-provider";
98
+ export declare const EXAMPLE_VERIFY_RESPONSE_ADDRESS_TYPE: "PostalAddress";
99
+ export declare const EXAMPLE_VERIFY_RESPONSE_ADDRESS_COUNTRY: "ES";
100
+ export declare const EXAMPLE_VERIFY_RESPONSE_OCCUPATION_TYPE: "Occupation";
101
+ export declare const EXAMPLE_VERIFY_RESPONSE_OCCUPATION_NAME: "LegalRepresentative";
102
+ export declare const EXAMPLE_VERIFY_RESPONSE_OCCUPATION_IDENTIFIER: "urn:ilo:ilostat:isco-08:1120";
103
+ export declare const EXAMPLE_VERIFY_RESPONSE_PROOF_TYPE: "JsonWebSignature2020";
104
+ export declare const EXAMPLE_VERIFY_RESPONSE_PROOF_PURPOSE: "assertionMethod";
105
+ export declare const EXAMPLE_VERIFY_RESPONSE_PROOF_VERIFICATION_METHOD: "did:web:localhost%3A3310#verification-key-001";
106
+ export declare const EXAMPLE_VERIFY_RESPONSE_ORG_PROOF_JWS: "<detached-jws-organization-truncated>";
107
+ export declare const EXAMPLE_VERIFY_RESPONSE_PERSON_PROOF_JWS: "<detached-jws-person-truncated>";
108
+ /**
109
+ * Shared success outcome reused at bundle level and item level.
110
+ */
111
+ export declare const EXAMPLE_VERIFY_RESPONSE_SUCCESS_OUTCOME: IcaVerifyResponseExampleOutcome;
112
+ export declare const EXAMPLE_VERIFY_RESPONSE_ORG_ITEM_OUTCOME: IcaVerifyResponseExampleOutcome;
113
+ export declare const EXAMPLE_VERIFY_RESPONSE_PERSON_ITEM_OUTCOME: IcaVerifyResponseExampleOutcome;
114
+ export declare const EXAMPLE_VERIFY_RESPONSE_ORG_PUBLIC_KEY_JWK: Readonly<{
115
+ kty: "EC";
116
+ crv: "P-384";
117
+ x: "org-pub-x";
118
+ y: "org-pub-y";
119
+ alg: "ES384";
120
+ kid: "org-es384-001";
121
+ }>;
122
+ export declare const EXAMPLE_VERIFY_RESPONSE_ORG_PRIVATE_KEY_JWK: Readonly<{
123
+ d: "org-priv-d";
124
+ kty: "EC";
125
+ crv: "P-384";
126
+ x: "org-pub-x";
127
+ y: "org-pub-y";
128
+ alg: "ES384";
129
+ kid: "org-es384-001";
130
+ }>;
131
+ export declare const EXAMPLE_VERIFY_RESPONSE_PERSON_PUBLIC_KEY_JWK: Readonly<{
132
+ kty: "EC";
133
+ crv: "P-384";
134
+ x: "controller-x";
135
+ y: "controller-y";
136
+ alg: "ES384";
137
+ kid: "controller-es384-001";
138
+ }>;
139
+ export declare const EXAMPLE_VERIFY_RESPONSE_ORG_CREDENTIAL: Readonly<{
140
+ id: "urn:uuid:org-vc-001";
141
+ '@context': ("https://www.w3.org/ns/credentials/v2" | "https://schema.org")[];
142
+ type: ("VerifiableCredential" | "OrganizationCredential")[];
143
+ issuer: "did:web:ica.example.org";
144
+ validFrom: "2026-03-12T21:12:26.646Z";
145
+ meta: {
146
+ versionId: "zPdfVersionHash001";
147
+ };
148
+ credentialSubject: {
149
+ id: "did:web:globaldatacare.es:onehealth:organization:taxid:VATES-B00112233";
150
+ '@type': "Organization";
151
+ legalName: "ACME Health Provider";
152
+ taxID: "VATES-B00112233";
153
+ sameAs: "did:web:provider.example.org";
154
+ url: "health-care.provider.example.org";
155
+ alternateName: string;
156
+ additionalType: "sector=onehealth;section=dataprovider;kind=clinic;action=_index-provider,_research-provider";
157
+ address: {
158
+ '@type': "PostalAddress";
159
+ addressCountry: "ES";
160
+ };
161
+ };
162
+ evidence: never[];
163
+ proof: {
164
+ type: "JsonWebSignature2020";
165
+ created: "2026-03-12T21:12:57.534Z";
166
+ proofPurpose: "assertionMethod";
167
+ verificationMethod: "did:web:localhost%3A3310#verification-key-001";
168
+ jws: "<detached-jws-organization-truncated>";
169
+ };
170
+ }>;
171
+ export declare const EXAMPLE_VERIFY_RESPONSE_PERSON_CREDENTIAL: Readonly<{
172
+ id: "urn:uuid:person-vc-001";
173
+ '@context': ("https://www.w3.org/ns/credentials/v2" | "https://schema.org")[];
174
+ type: ("VerifiableCredential" | "LegalRepresentativeCredential" | "PersonCredential")[];
175
+ issuer: "did:web:ica.example.org";
176
+ validFrom: "2026-03-12T21:12:26.646Z";
177
+ meta: {
178
+ versionId: "zPdfVersionHash001";
179
+ };
180
+ credentialSubject: {
181
+ id: "urn:person:identifier:IDCES-99999999R";
182
+ '@type': "Person";
183
+ name: "Alex Example";
184
+ givenName: "Alex";
185
+ familyName: "Example";
186
+ identifier: "IDCES-99999999R";
187
+ nationality: "ES";
188
+ sameAs: "urn:multibase:zControllerHash";
189
+ hasCredential: {
190
+ material: "urn:ietf:params:oauth:jwk-thumbprint:sha-256:Q0ZfM0V4YW1wbGVUaHVtYnByaW50X2Jhc2U2NHVybA";
191
+ };
192
+ hasOccupation: {
193
+ '@type': "Occupation";
194
+ name: "LegalRepresentative";
195
+ identifier: "urn:ilo:ilostat:isco-08:1120";
196
+ };
197
+ memberOf: {
198
+ '@type': "Organization";
199
+ legalName: "ACME Health Provider";
200
+ taxID: "VATES-B00112233";
201
+ };
202
+ alternateName: "controller-es384-001";
203
+ additionalType: "ES384";
204
+ };
205
+ evidence: never[];
206
+ proof: {
207
+ type: "JsonWebSignature2020";
208
+ created: "2026-03-12T21:12:57.534Z";
209
+ proofPurpose: "assertionMethod";
210
+ verificationMethod: "did:web:localhost%3A3310#verification-key-001";
211
+ jws: "<detached-jws-person-truncated>";
212
+ };
213
+ }>;
214
+ export declare const EXAMPLE_VERIFY_RESPONSE_ORG_ATTACHMENT: IcaVerifyResponseExampleAttachment;
215
+ export declare const EXAMPLE_VERIFY_RESPONSE_PERSON_ATTACHMENT: IcaVerifyResponseExampleAttachment;
216
+ /**
217
+ * Canonical `_verify-response` success example shared across ICA repos.
218
+ */
219
+ export declare const EXAMPLE_ICA_VERIFY_TERMS_RESPONSE_SUCCESS: IcaVerifyTermsResponseExample;
220
+ /**
221
+ * Returns a detached deep clone of the canonical ICA `_verify-response`
222
+ * success example so tests/docs can tweak fields without mutating the shared
223
+ * frozen baseline.
224
+ */
225
+ export declare function cloneIcaVerifyTermsResponseSuccessExample(): IcaVerifyTermsResponseExample;
@@ -0,0 +1,257 @@
1
+ // Copyright 2026 Antifraud Services Inc. under the Apache License, Version 2.0.
2
+ // Always create JSDoc, do not use strings inline in keys nor values, use types instead, and reuse the data test examples.
3
+ import { ActivationCredentialTypes, W3cCredentialContexts, W3cCredentialTypes, } from '../constants/verifiable-credentials.js';
4
+ import { ResourceTypesFhirR4 } from '../constants/fhir-resource-types.js';
5
+ import { IssueSeverity, IssueType } from '../models/issue.js';
6
+ import { EXAMPLE_DEFAULT_ICA_DID, EXAMPLE_BUNDLE_RESOURCE_TYPE, EXAMPLE_PROVIDER_DOMAIN, EXAMPLE_PROVIDER_LEGAL_NAME, EXAMPLE_PROVIDER_TAX_ID, EXAMPLE_TENANT_SERVICE_DID, } from './shared.js';
7
+ import { EXAMPLE_ORG_CONTROLLER_SIGNING_KEY_ID, EXAMPLE_REPRESENTATIVE_IDENTIFIER, EXAMPLE_REPRESENTATIVE_SAME_AS, EXAMPLE_REPRESENTATIVE_SUBJECT_URN, } from './ica-activation-proof.js';
8
+ export const EXAMPLE_VERIFY_RESPONSE_OPERATION_OUTCOME_RESOURCE_TYPE = 'OperationOutcome';
9
+ export const EXAMPLE_VERIFY_RESPONSE_BATCH_RESPONSE_TYPE = 'batch-response';
10
+ export const EXAMPLE_VERIFY_RESPONSE_SCHEMA_ORG_CONTEXT = 'https://schema.org';
11
+ export const EXAMPLE_VERIFY_RESPONSE_PERSON_TYPE = 'Person';
12
+ export const EXAMPLE_VERIFY_RESPONSE_ORGANIZATION_TYPE = ResourceTypesFhirR4.Organization;
13
+ export const EXAMPLE_VERIFY_RESPONSE_JTI = 'urn:uuid:verify-resp-001';
14
+ export const EXAMPLE_VERIFY_RESPONSE_THID = 'verify-terms-001';
15
+ export const EXAMPLE_VERIFY_RESPONSE_BUNDLE_TYPE = 'application/bundle-api+json';
16
+ export const EXAMPLE_VERIFY_RESPONSE_DATE = '2026-03-12T21:12:26.646Z';
17
+ export const EXAMPLE_VERIFY_RESPONSE_PROOF_DATE = '2026-03-12T21:12:57.534Z';
18
+ export const EXAMPLE_VERIFY_RESPONSE_VERSION_ID = 'zPdfVersionHash001';
19
+ export const EXAMPLE_VERIFY_RESPONSE_ORG_VC_ID = 'urn:uuid:org-vc-001';
20
+ export const EXAMPLE_VERIFY_RESPONSE_PERSON_VC_ID = 'urn:uuid:person-vc-001';
21
+ export const EXAMPLE_VERIFY_RESPONSE_ORG_ENTRY_TYPE = 'Organization-verification-v1.0';
22
+ export const EXAMPLE_VERIFY_RESPONSE_PERSON_ENTRY_TYPE = 'LegalRepresentative-verification-v1.0';
23
+ export const EXAMPLE_VERIFY_RESPONSE_ORG_ATTACHMENT_ID = 'vc-jwt-1';
24
+ export const EXAMPLE_VERIFY_RESPONSE_PERSON_ATTACHMENT_ID = 'vc-jwt-2';
25
+ export const EXAMPLE_VERIFY_RESPONSE_ORG_ATTACHMENT_FILENAME = 'Organization-verification-v1.0-1.jwt';
26
+ export const EXAMPLE_VERIFY_RESPONSE_PERSON_ATTACHMENT_FILENAME = 'LegalRepresentative-verification-v1.0-2.jwt';
27
+ export const EXAMPLE_VERIFY_RESPONSE_ORG_JWT = '<vc-jwt-organization>';
28
+ export const EXAMPLE_VERIFY_RESPONSE_PERSON_JWT = '<vc-jwt-legal-representative>';
29
+ export const EXAMPLE_VERIFY_RESPONSE_MEDIA_TYPE = 'application/vc+jwt';
30
+ export const EXAMPLE_VERIFY_RESPONSE_ATTACHMENT_FORMAT = 'vc+jwt';
31
+ export const EXAMPLE_VERIFY_RESPONSE_STATUS_OK = '200';
32
+ export const EXAMPLE_VERIFY_RESPONSE_ORG_KID = 'org-es384-001';
33
+ export const EXAMPLE_VERIFY_RESPONSE_PERSON_KID = 'controller-es384-001';
34
+ export const EXAMPLE_VERIFY_RESPONSE_ORG_DID = 'did:web:globaldatacare.es:onehealth:organization:taxid:VATES-B00112233';
35
+ export const EXAMPLE_VERIFY_RESPONSE_PERSON_NAME = 'Alex Example';
36
+ export const EXAMPLE_VERIFY_RESPONSE_PERSON_GIVEN_NAME = 'Alex';
37
+ export const EXAMPLE_VERIFY_RESPONSE_PERSON_FAMILY_NAME = 'Example';
38
+ export const EXAMPLE_VERIFY_RESPONSE_PERSON_NATIONALITY = 'ES';
39
+ export const EXAMPLE_VERIFY_RESPONSE_PERSON_ADDITIONAL_TYPE = 'ES384';
40
+ export const EXAMPLE_VERIFY_RESPONSE_PERSON_ALTERNATE_NAME = EXAMPLE_VERIFY_RESPONSE_PERSON_KID;
41
+ export const EXAMPLE_VERIFY_RESPONSE_ORG_ADDITIONAL_TYPE = 'sector=onehealth;section=dataprovider;kind=clinic;action=_index-provider,_research-provider';
42
+ export const EXAMPLE_VERIFY_RESPONSE_ADDRESS_TYPE = 'PostalAddress';
43
+ export const EXAMPLE_VERIFY_RESPONSE_ADDRESS_COUNTRY = 'ES';
44
+ export const EXAMPLE_VERIFY_RESPONSE_OCCUPATION_TYPE = 'Occupation';
45
+ export const EXAMPLE_VERIFY_RESPONSE_OCCUPATION_NAME = 'LegalRepresentative';
46
+ export const EXAMPLE_VERIFY_RESPONSE_OCCUPATION_IDENTIFIER = 'urn:ilo:ilostat:isco-08:1120';
47
+ export const EXAMPLE_VERIFY_RESPONSE_PROOF_TYPE = 'JsonWebSignature2020';
48
+ export const EXAMPLE_VERIFY_RESPONSE_PROOF_PURPOSE = 'assertionMethod';
49
+ export const EXAMPLE_VERIFY_RESPONSE_PROOF_VERIFICATION_METHOD = 'did:web:localhost%3A3310#verification-key-001';
50
+ export const EXAMPLE_VERIFY_RESPONSE_ORG_PROOF_JWS = '<detached-jws-organization-truncated>';
51
+ export const EXAMPLE_VERIFY_RESPONSE_PERSON_PROOF_JWS = '<detached-jws-person-truncated>';
52
+ /**
53
+ * Shared success outcome reused at bundle level and item level.
54
+ */
55
+ export const EXAMPLE_VERIFY_RESPONSE_SUCCESS_OUTCOME = {
56
+ resourceType: EXAMPLE_VERIFY_RESPONSE_OPERATION_OUTCOME_RESOURCE_TYPE,
57
+ issue: [
58
+ {
59
+ severity: IssueSeverity.Information,
60
+ code: IssueType.Informational,
61
+ diagnostics: 'Verification completed.',
62
+ },
63
+ ],
64
+ };
65
+ export const EXAMPLE_VERIFY_RESPONSE_ORG_ITEM_OUTCOME = {
66
+ resourceType: EXAMPLE_VERIFY_RESPONSE_OPERATION_OUTCOME_RESOURCE_TYPE,
67
+ issue: [
68
+ {
69
+ severity: IssueSeverity.Information,
70
+ code: IssueType.Informational,
71
+ diagnostics: 'Organization credential extracted from verified document.',
72
+ },
73
+ ],
74
+ };
75
+ export const EXAMPLE_VERIFY_RESPONSE_PERSON_ITEM_OUTCOME = {
76
+ resourceType: EXAMPLE_VERIFY_RESPONSE_OPERATION_OUTCOME_RESOURCE_TYPE,
77
+ issue: [
78
+ {
79
+ severity: IssueSeverity.Information,
80
+ code: IssueType.Informational,
81
+ diagnostics: 'Legal representative credential extracted from verified document.',
82
+ },
83
+ ],
84
+ };
85
+ export const EXAMPLE_VERIFY_RESPONSE_ORG_PUBLIC_KEY_JWK = Object.freeze({
86
+ kty: 'EC',
87
+ crv: 'P-384',
88
+ x: 'org-pub-x',
89
+ y: 'org-pub-y',
90
+ alg: 'ES384',
91
+ kid: EXAMPLE_VERIFY_RESPONSE_ORG_KID,
92
+ });
93
+ export const EXAMPLE_VERIFY_RESPONSE_ORG_PRIVATE_KEY_JWK = Object.freeze({
94
+ ...EXAMPLE_VERIFY_RESPONSE_ORG_PUBLIC_KEY_JWK,
95
+ d: 'org-priv-d',
96
+ });
97
+ export const EXAMPLE_VERIFY_RESPONSE_PERSON_PUBLIC_KEY_JWK = Object.freeze({
98
+ kty: 'EC',
99
+ crv: 'P-384',
100
+ x: 'controller-x',
101
+ y: 'controller-y',
102
+ alg: 'ES384',
103
+ kid: EXAMPLE_VERIFY_RESPONSE_PERSON_KID,
104
+ });
105
+ export const EXAMPLE_VERIFY_RESPONSE_ORG_CREDENTIAL = Object.freeze({
106
+ id: EXAMPLE_VERIFY_RESPONSE_ORG_VC_ID,
107
+ '@context': [W3cCredentialContexts.V2, EXAMPLE_VERIFY_RESPONSE_SCHEMA_ORG_CONTEXT],
108
+ type: [W3cCredentialTypes.VerifiableCredential, ActivationCredentialTypes.OrganizationCredential],
109
+ issuer: EXAMPLE_DEFAULT_ICA_DID,
110
+ validFrom: EXAMPLE_VERIFY_RESPONSE_DATE,
111
+ meta: {
112
+ versionId: EXAMPLE_VERIFY_RESPONSE_VERSION_ID,
113
+ },
114
+ credentialSubject: {
115
+ id: EXAMPLE_VERIFY_RESPONSE_ORG_DID,
116
+ '@type': EXAMPLE_VERIFY_RESPONSE_ORGANIZATION_TYPE,
117
+ legalName: EXAMPLE_PROVIDER_LEGAL_NAME,
118
+ taxID: EXAMPLE_PROVIDER_TAX_ID,
119
+ sameAs: EXAMPLE_TENANT_SERVICE_DID,
120
+ url: EXAMPLE_PROVIDER_DOMAIN,
121
+ alternateName: 'example-provider',
122
+ additionalType: EXAMPLE_VERIFY_RESPONSE_ORG_ADDITIONAL_TYPE,
123
+ address: {
124
+ '@type': EXAMPLE_VERIFY_RESPONSE_ADDRESS_TYPE,
125
+ addressCountry: EXAMPLE_VERIFY_RESPONSE_ADDRESS_COUNTRY,
126
+ },
127
+ },
128
+ evidence: [],
129
+ proof: {
130
+ type: EXAMPLE_VERIFY_RESPONSE_PROOF_TYPE,
131
+ created: EXAMPLE_VERIFY_RESPONSE_PROOF_DATE,
132
+ proofPurpose: EXAMPLE_VERIFY_RESPONSE_PROOF_PURPOSE,
133
+ verificationMethod: EXAMPLE_VERIFY_RESPONSE_PROOF_VERIFICATION_METHOD,
134
+ jws: EXAMPLE_VERIFY_RESPONSE_ORG_PROOF_JWS,
135
+ },
136
+ });
137
+ export const EXAMPLE_VERIFY_RESPONSE_PERSON_CREDENTIAL = Object.freeze({
138
+ id: EXAMPLE_VERIFY_RESPONSE_PERSON_VC_ID,
139
+ '@context': [W3cCredentialContexts.V2, EXAMPLE_VERIFY_RESPONSE_SCHEMA_ORG_CONTEXT],
140
+ type: [
141
+ W3cCredentialTypes.VerifiableCredential,
142
+ ActivationCredentialTypes.PersonCredential,
143
+ ActivationCredentialTypes.LegalRepresentativeCredential,
144
+ ],
145
+ issuer: EXAMPLE_DEFAULT_ICA_DID,
146
+ validFrom: EXAMPLE_VERIFY_RESPONSE_DATE,
147
+ meta: {
148
+ versionId: EXAMPLE_VERIFY_RESPONSE_VERSION_ID,
149
+ },
150
+ credentialSubject: {
151
+ id: EXAMPLE_REPRESENTATIVE_SUBJECT_URN,
152
+ '@type': EXAMPLE_VERIFY_RESPONSE_PERSON_TYPE,
153
+ name: EXAMPLE_VERIFY_RESPONSE_PERSON_NAME,
154
+ givenName: EXAMPLE_VERIFY_RESPONSE_PERSON_GIVEN_NAME,
155
+ familyName: EXAMPLE_VERIFY_RESPONSE_PERSON_FAMILY_NAME,
156
+ identifier: EXAMPLE_REPRESENTATIVE_IDENTIFIER,
157
+ nationality: EXAMPLE_VERIFY_RESPONSE_PERSON_NATIONALITY,
158
+ sameAs: EXAMPLE_REPRESENTATIVE_SAME_AS,
159
+ hasCredential: {
160
+ material: EXAMPLE_ORG_CONTROLLER_SIGNING_KEY_ID,
161
+ },
162
+ hasOccupation: {
163
+ '@type': EXAMPLE_VERIFY_RESPONSE_OCCUPATION_TYPE,
164
+ name: EXAMPLE_VERIFY_RESPONSE_OCCUPATION_NAME,
165
+ identifier: EXAMPLE_VERIFY_RESPONSE_OCCUPATION_IDENTIFIER,
166
+ },
167
+ memberOf: {
168
+ '@type': EXAMPLE_VERIFY_RESPONSE_ORGANIZATION_TYPE,
169
+ legalName: EXAMPLE_PROVIDER_LEGAL_NAME,
170
+ taxID: EXAMPLE_PROVIDER_TAX_ID,
171
+ },
172
+ alternateName: EXAMPLE_VERIFY_RESPONSE_PERSON_ALTERNATE_NAME,
173
+ additionalType: EXAMPLE_VERIFY_RESPONSE_PERSON_ADDITIONAL_TYPE,
174
+ },
175
+ evidence: [],
176
+ proof: {
177
+ type: EXAMPLE_VERIFY_RESPONSE_PROOF_TYPE,
178
+ created: EXAMPLE_VERIFY_RESPONSE_PROOF_DATE,
179
+ proofPurpose: EXAMPLE_VERIFY_RESPONSE_PROOF_PURPOSE,
180
+ verificationMethod: EXAMPLE_VERIFY_RESPONSE_PROOF_VERIFICATION_METHOD,
181
+ jws: EXAMPLE_VERIFY_RESPONSE_PERSON_PROOF_JWS,
182
+ },
183
+ });
184
+ export const EXAMPLE_VERIFY_RESPONSE_ORG_ATTACHMENT = Object.freeze({
185
+ id: EXAMPLE_VERIFY_RESPONSE_ORG_ATTACHMENT_ID,
186
+ format: EXAMPLE_VERIFY_RESPONSE_ATTACHMENT_FORMAT,
187
+ media_type: EXAMPLE_VERIFY_RESPONSE_MEDIA_TYPE,
188
+ filename: EXAMPLE_VERIFY_RESPONSE_ORG_ATTACHMENT_FILENAME,
189
+ data: {
190
+ json: {
191
+ format: EXAMPLE_VERIFY_RESPONSE_ATTACHMENT_FORMAT,
192
+ jwt: EXAMPLE_VERIFY_RESPONSE_ORG_JWT,
193
+ },
194
+ },
195
+ });
196
+ export const EXAMPLE_VERIFY_RESPONSE_PERSON_ATTACHMENT = Object.freeze({
197
+ id: EXAMPLE_VERIFY_RESPONSE_PERSON_ATTACHMENT_ID,
198
+ format: EXAMPLE_VERIFY_RESPONSE_ATTACHMENT_FORMAT,
199
+ media_type: EXAMPLE_VERIFY_RESPONSE_MEDIA_TYPE,
200
+ filename: EXAMPLE_VERIFY_RESPONSE_PERSON_ATTACHMENT_FILENAME,
201
+ data: {
202
+ json: {
203
+ format: EXAMPLE_VERIFY_RESPONSE_ATTACHMENT_FORMAT,
204
+ jwt: EXAMPLE_VERIFY_RESPONSE_PERSON_JWT,
205
+ },
206
+ },
207
+ });
208
+ /**
209
+ * Canonical `_verify-response` success example shared across ICA repos.
210
+ */
211
+ export const EXAMPLE_ICA_VERIFY_TERMS_RESPONSE_SUCCESS = {
212
+ jti: EXAMPLE_VERIFY_RESPONSE_JTI,
213
+ iss: EXAMPLE_DEFAULT_ICA_DID,
214
+ aud: EXAMPLE_DEFAULT_ICA_DID,
215
+ thid: EXAMPLE_VERIFY_RESPONSE_THID,
216
+ type: EXAMPLE_VERIFY_RESPONSE_BUNDLE_TYPE,
217
+ attachments: [
218
+ EXAMPLE_VERIFY_RESPONSE_ORG_ATTACHMENT,
219
+ EXAMPLE_VERIFY_RESPONSE_PERSON_ATTACHMENT,
220
+ ],
221
+ body: {
222
+ resourceType: EXAMPLE_BUNDLE_RESOURCE_TYPE,
223
+ type: EXAMPLE_VERIFY_RESPONSE_BATCH_RESPONSE_TYPE,
224
+ total: 2,
225
+ issues: EXAMPLE_VERIFY_RESPONSE_SUCCESS_OUTCOME,
226
+ data: [
227
+ {
228
+ type: EXAMPLE_VERIFY_RESPONSE_ORG_ENTRY_TYPE,
229
+ publicKeyJwk: EXAMPLE_VERIFY_RESPONSE_ORG_PUBLIC_KEY_JWK,
230
+ privateKeyJwk: EXAMPLE_VERIFY_RESPONSE_ORG_PRIVATE_KEY_JWK,
231
+ keySource: 'generated',
232
+ response: {
233
+ status: EXAMPLE_VERIFY_RESPONSE_STATUS_OK,
234
+ outcome: EXAMPLE_VERIFY_RESPONSE_ORG_ITEM_OUTCOME,
235
+ },
236
+ resource: EXAMPLE_VERIFY_RESPONSE_ORG_CREDENTIAL,
237
+ },
238
+ {
239
+ type: EXAMPLE_VERIFY_RESPONSE_PERSON_ENTRY_TYPE,
240
+ publicKeyJwk: EXAMPLE_VERIFY_RESPONSE_PERSON_PUBLIC_KEY_JWK,
241
+ response: {
242
+ status: EXAMPLE_VERIFY_RESPONSE_STATUS_OK,
243
+ outcome: EXAMPLE_VERIFY_RESPONSE_PERSON_ITEM_OUTCOME,
244
+ },
245
+ resource: EXAMPLE_VERIFY_RESPONSE_PERSON_CREDENTIAL,
246
+ },
247
+ ],
248
+ },
249
+ };
250
+ /**
251
+ * Returns a detached deep clone of the canonical ICA `_verify-response`
252
+ * success example so tests/docs can tweak fields without mutating the shared
253
+ * frozen baseline.
254
+ */
255
+ export function cloneIcaVerifyTermsResponseSuccessExample() {
256
+ return JSON.parse(JSON.stringify(EXAMPLE_ICA_VERIFY_TERMS_RESPONSE_SUCCESS));
257
+ }
@@ -1,5 +1,6 @@
1
1
  export * from './shared';
2
2
  export * from './ica-activation-proof';
3
+ export * from './ica-verify-response';
3
4
  export * from './dataspace-discovery';
4
5
  export * from './organization-controller';
5
6
  export * from './individual-controller';
@@ -1,5 +1,6 @@
1
1
  export * from './shared.js';
2
2
  export * from './ica-activation-proof.js';
3
+ export * from './ica-verify-response.js';
3
4
  export * from './dataspace-discovery.js';
4
5
  export * from './organization-controller.js';
5
6
  export * from './individual-controller.js';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "gdc-common-utils-ts",
3
- "version": "2.0.1",
3
+ "version": "2.0.2",
4
4
  "publishConfig": {
5
5
  "access": "public"
6
6
  },