@sphereon/ssi-sdk.sd-jwt 0.32.1-next.18 → 0.32.1-next.287
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/dist/action-handler.d.ts.map +1 -1
- package/dist/action-handler.js +39 -8
- package/dist/action-handler.js.map +1 -1
- package/dist/defaultCallbacks.d.ts +2 -2
- package/dist/defaultCallbacks.d.ts.map +1 -1
- package/dist/defaultCallbacks.js +1 -1
- package/dist/defaultCallbacks.js.map +1 -1
- package/dist/types.d.ts +4 -4
- package/dist/types.d.ts.map +1 -1
- package/dist/utils.d.ts +15 -2
- package/dist/utils.d.ts.map +1 -1
- package/dist/utils.js +29 -4
- package/dist/utils.js.map +1 -1
- package/package.json +20 -20
- package/src/__tests__/resources/BoardingPassCredential-vct.json +196 -0
- package/src/__tests__/resources/LoyaltyProgram Account VC Schema V0.1 sd-jwt-schema.json +97 -0
- package/src/__tests__/resources/LoyaltyProgramAccountCredential-vct.json +126 -0
- package/src/__tests__/resources/boarding Pass VC Schema V1.0 sd-jwt.json +156 -0
- package/src/__tests__/resources/boardingpass-logo.png +0 -0
- package/src/__tests__/resources/boardingpass.svg +1 -0
- package/src/__tests__/resources/e-passport.svg +1 -0
- package/src/__tests__/resources/ePassport VC Schema V1.0.sd-jwt.json +226 -0
- package/src/__tests__/resources/ePassportCredential-vct.json +226 -0
- package/src/__tests__/resources/epassport-logo.png +0 -0
- package/src/__tests__/resources/loyaltyprogramaccount-icon.png +0 -0
- package/src/__tests__/resources/loyaltyprogramaccount.png +0 -0
- package/src/__tests__/resources/loyaltyprogramaccount.svg +1 -0
- package/src/__tests__/resources/travel-agency VC Employee v0.1 sd-jwt-schema.json +115 -0
- package/src/__tests__/resources/travel-agency-EmployeeAgencyCredential-vct.json +146 -0
- package/src/__tests__/resources/travel-agency-vc-employee-logo.png +0 -0
- package/src/__tests__/resources/travel-agency-vc-employee.svg +1 -0
- package/src/__tests__/sd-jwt-integrity.test.ts +100 -0
- package/src/__tests__/sd-jwt.test.ts +4 -4
- package/src/action-handler.ts +51 -18
- package/src/defaultCallbacks.ts +5 -4
- package/src/types.ts +4 -4
- package/src/utils.ts +48 -4
|
@@ -0,0 +1,226 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "ePassport Verifiable Credential",
|
|
3
|
+
"schema_uri": "https://iata.trustregistry.nborbit.ca/.well-known/schema/epassport.json",
|
|
4
|
+
"schema_uri#integrity": "sha256-ro3/ER87HPcrdV1JliUeH5JRDKNO+PThBd1gMf84EKc",
|
|
5
|
+
"vct": "https://iata.trustregistry.nborbit.ca/epassport",
|
|
6
|
+
"description": "A Verifiable Credential for an ePassport.",
|
|
7
|
+
"display": [
|
|
8
|
+
{
|
|
9
|
+
"description": "A Verifiable Credential for an ePassport.",
|
|
10
|
+
"lang": "en-US",
|
|
11
|
+
"name": "ePassport Verifiable Credential",
|
|
12
|
+
"rendering": {
|
|
13
|
+
"simple": {
|
|
14
|
+
"background_color": "#CB2210",
|
|
15
|
+
"logo": {
|
|
16
|
+
"alt_text": "ePassport Verifiable Credential Logo",
|
|
17
|
+
"uri": "https://iata.trustregistry.nborbit.ca/logo/epassport-logo.png",
|
|
18
|
+
"uri#integrity": "sha256-SSp0p9SBIotc7FIi/pkqbMthx4Gmx+g+IXnMdOOQXl4"
|
|
19
|
+
},
|
|
20
|
+
"text_color": "#F9F9F9"
|
|
21
|
+
},
|
|
22
|
+
"svg_template": {
|
|
23
|
+
"properties": {
|
|
24
|
+
"color_scheme": "light",
|
|
25
|
+
"contrast": "high",
|
|
26
|
+
"orientation": "landscape"
|
|
27
|
+
},
|
|
28
|
+
"uri": "https://iata.trustregistry.nborbit.ca/svg/epassport.svg",
|
|
29
|
+
"uri#integrity": "sha256-+2b8yT2jzbRuoHh5KnI6RzorWNTN/eL67ZvEV+abEfA"
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
],
|
|
34
|
+
"claims": [
|
|
35
|
+
{
|
|
36
|
+
"display": [
|
|
37
|
+
{
|
|
38
|
+
"description": "Information about the electronic passport.",
|
|
39
|
+
"label": "Electronic Passport",
|
|
40
|
+
"lang": "en-US"
|
|
41
|
+
}
|
|
42
|
+
],
|
|
43
|
+
"path": ["electronicPassport"]
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
"display": [
|
|
47
|
+
{
|
|
48
|
+
"description": "Data Group 1 of the electronic passport.",
|
|
49
|
+
"label": "Data Group 1",
|
|
50
|
+
"lang": "en-US"
|
|
51
|
+
}
|
|
52
|
+
],
|
|
53
|
+
"path": ["electronicPassport", "dataGroup1"]
|
|
54
|
+
},
|
|
55
|
+
{
|
|
56
|
+
"display": [
|
|
57
|
+
{
|
|
58
|
+
"description": "Date of birth of the passport holder.",
|
|
59
|
+
"label": "Birthdate",
|
|
60
|
+
"lang": "en-US"
|
|
61
|
+
}
|
|
62
|
+
],
|
|
63
|
+
"path": ["electronicPassport", "dataGroup1", "birthdate"]
|
|
64
|
+
},
|
|
65
|
+
{
|
|
66
|
+
"display": [
|
|
67
|
+
{
|
|
68
|
+
"description": "Document type code, such as 'P' for an ePassport.",
|
|
69
|
+
"label": "Document Type Code",
|
|
70
|
+
"lang": "en-US"
|
|
71
|
+
}
|
|
72
|
+
],
|
|
73
|
+
"path": ["electronicPassport", "dataGroup1", "docTypeCode"]
|
|
74
|
+
},
|
|
75
|
+
{
|
|
76
|
+
"display": [
|
|
77
|
+
{
|
|
78
|
+
"description": "Expiry date of the ePassport.",
|
|
79
|
+
"label": "Expiry Date",
|
|
80
|
+
"lang": "en-US"
|
|
81
|
+
}
|
|
82
|
+
],
|
|
83
|
+
"path": ["electronicPassport", "dataGroup1", "expiryDate"]
|
|
84
|
+
},
|
|
85
|
+
{
|
|
86
|
+
"display": [
|
|
87
|
+
{
|
|
88
|
+
"description": "Sex of the passport holder.",
|
|
89
|
+
"label": "Sex Code",
|
|
90
|
+
"lang": "en-US"
|
|
91
|
+
}
|
|
92
|
+
],
|
|
93
|
+
"path": ["electronicPassport", "dataGroup1", "sexCode"]
|
|
94
|
+
},
|
|
95
|
+
{
|
|
96
|
+
"display": [
|
|
97
|
+
{
|
|
98
|
+
"description": "Full name of the passport holder.",
|
|
99
|
+
"label": "Holder's Name",
|
|
100
|
+
"lang": "en-US"
|
|
101
|
+
}
|
|
102
|
+
],
|
|
103
|
+
"path": ["electronicPassport", "dataGroup1", "holdersName"]
|
|
104
|
+
},
|
|
105
|
+
{
|
|
106
|
+
"display": [
|
|
107
|
+
{
|
|
108
|
+
"description": "Issuer code of the ePassport.",
|
|
109
|
+
"label": "Issuer Code",
|
|
110
|
+
"lang": "en-US"
|
|
111
|
+
}
|
|
112
|
+
],
|
|
113
|
+
"path": ["electronicPassport", "dataGroup1", "issuerCode"]
|
|
114
|
+
},
|
|
115
|
+
{
|
|
116
|
+
"display": [
|
|
117
|
+
{
|
|
118
|
+
"description": "Nationality code of the passport holder.",
|
|
119
|
+
"label": "Nationality Code",
|
|
120
|
+
"lang": "en-US"
|
|
121
|
+
}
|
|
122
|
+
],
|
|
123
|
+
"path": ["electronicPassport", "dataGroup1", "natlCode"]
|
|
124
|
+
},
|
|
125
|
+
{
|
|
126
|
+
"display": [
|
|
127
|
+
{
|
|
128
|
+
"description": "Unique identifier for the passport.",
|
|
129
|
+
"label": "Passport Number",
|
|
130
|
+
"lang": "en-US"
|
|
131
|
+
}
|
|
132
|
+
],
|
|
133
|
+
"path": ["electronicPassport", "dataGroup1", "passportNumberIdentifier"]
|
|
134
|
+
},
|
|
135
|
+
{
|
|
136
|
+
"display": [
|
|
137
|
+
{
|
|
138
|
+
"description": "Encoded face biometric data from Data Group 2.",
|
|
139
|
+
"label": "Encoded Face Biometrics",
|
|
140
|
+
"lang": "en-US"
|
|
141
|
+
}
|
|
142
|
+
],
|
|
143
|
+
"path": ["electronicPassport", "dataGroup2EncodedFaceBiometrics", "faceBiometricDataEncodedPicture"]
|
|
144
|
+
},
|
|
145
|
+
{
|
|
146
|
+
"display": [
|
|
147
|
+
{
|
|
148
|
+
"description": "Data group 15 containing the public key for active authentication.",
|
|
149
|
+
"label": "Data Group 15",
|
|
150
|
+
"lang": "en-US"
|
|
151
|
+
}
|
|
152
|
+
],
|
|
153
|
+
"path": ["electronicPassport", "dataGroup15"]
|
|
154
|
+
},
|
|
155
|
+
{
|
|
156
|
+
"display": [
|
|
157
|
+
{
|
|
158
|
+
"description": "Public key for active authentication.",
|
|
159
|
+
"label": "Active Authentication Public Key",
|
|
160
|
+
"lang": "en-US"
|
|
161
|
+
}
|
|
162
|
+
],
|
|
163
|
+
"path": ["electronicPassport", "dataGroup15", "activeAuthentication", "publicKeyBinaryObject"]
|
|
164
|
+
},
|
|
165
|
+
{
|
|
166
|
+
"display": [
|
|
167
|
+
{
|
|
168
|
+
"description": "Document security object containing hashing information.",
|
|
169
|
+
"label": "Document Security Object",
|
|
170
|
+
"lang": "en-US"
|
|
171
|
+
}
|
|
172
|
+
],
|
|
173
|
+
"path": ["electronicPassport", "docSecurityObject"]
|
|
174
|
+
},
|
|
175
|
+
{
|
|
176
|
+
"display": [
|
|
177
|
+
{
|
|
178
|
+
"description": "Digest hash algorithm used for the document security object.",
|
|
179
|
+
"label": "Digest Hash Algorithm",
|
|
180
|
+
"lang": "en-US"
|
|
181
|
+
}
|
|
182
|
+
],
|
|
183
|
+
"path": ["electronicPassport", "docSecurityObject", "digestHashAlgorithmIdentifier"]
|
|
184
|
+
},
|
|
185
|
+
{
|
|
186
|
+
"display": [
|
|
187
|
+
{
|
|
188
|
+
"description": "Version number of the document security object.",
|
|
189
|
+
"label": "Version Number",
|
|
190
|
+
"lang": "en-US"
|
|
191
|
+
}
|
|
192
|
+
],
|
|
193
|
+
"path": ["electronicPassport", "docSecurityObject", "versionNumber"]
|
|
194
|
+
},
|
|
195
|
+
{
|
|
196
|
+
"display": [
|
|
197
|
+
{
|
|
198
|
+
"description": "Data group hash values within the document security object.",
|
|
199
|
+
"label": "Data Group Hash",
|
|
200
|
+
"lang": "en-US"
|
|
201
|
+
}
|
|
202
|
+
],
|
|
203
|
+
"path": ["electronicPassport", "docSecurityObject", "dataGroupHash", null]
|
|
204
|
+
},
|
|
205
|
+
{
|
|
206
|
+
"display": [
|
|
207
|
+
{
|
|
208
|
+
"description": "Data group number for the hash.",
|
|
209
|
+
"label": "Data Group Number",
|
|
210
|
+
"lang": "en-US"
|
|
211
|
+
}
|
|
212
|
+
],
|
|
213
|
+
"path": ["electronicPassport", "docSecurityObject", "dataGroupHash", null, "dataGroupNumber"]
|
|
214
|
+
},
|
|
215
|
+
{
|
|
216
|
+
"display": [
|
|
217
|
+
{
|
|
218
|
+
"description": "Hash value for the data group.",
|
|
219
|
+
"label": "Hash Value",
|
|
220
|
+
"lang": "en-US"
|
|
221
|
+
}
|
|
222
|
+
],
|
|
223
|
+
"path": ["electronicPassport", "docSecurityObject", "dataGroupHash", null, "valueBinaryObject"]
|
|
224
|
+
}
|
|
225
|
+
]
|
|
226
|
+
}
|
|
@@ -0,0 +1,226 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "ePassport Verifiable Credential",
|
|
3
|
+
"schema_uri": "https://iata.trustregistry.nborbit.ca/.well-known/schema/epassport.json",
|
|
4
|
+
"schema_uri#integrity": "sha256-MvSlwJxOreBIWTotPQlcOSzsd9gNSiGMltshUKL8TFI",
|
|
5
|
+
"vct": "https://iata.trustregistry.nborbit.ca/.well-known/vct/epassport.json",
|
|
6
|
+
"description": "A Verifiable Credential for an ePassport.",
|
|
7
|
+
"display": [
|
|
8
|
+
{
|
|
9
|
+
"description": "A Verifiable Credential for an ePassport.",
|
|
10
|
+
"lang": "en-US",
|
|
11
|
+
"name": "ePassport Verifiable Credential",
|
|
12
|
+
"rendering": {
|
|
13
|
+
"simple": {
|
|
14
|
+
"background_color": "#CB2210",
|
|
15
|
+
"logo": {
|
|
16
|
+
"alt_text": "ePassport Verifiable Credential Logo",
|
|
17
|
+
"uri": "https://iata.trustregistry.nborbit.ca/logo/epassport-logo.png",
|
|
18
|
+
"uri#integrity": "sha256-SSp0p9SBIotc7FIi/pkqbMthx4Gmx+g+IXnMdOOQXl4"
|
|
19
|
+
},
|
|
20
|
+
"text_color": "#F9F9F9"
|
|
21
|
+
},
|
|
22
|
+
"svg_template": {
|
|
23
|
+
"properties": {
|
|
24
|
+
"color_scheme": "light",
|
|
25
|
+
"contrast": "high",
|
|
26
|
+
"orientation": "landscape"
|
|
27
|
+
},
|
|
28
|
+
"uri": "https://iata.trustregistry.nborbit.ca/svg/epassport.svg",
|
|
29
|
+
"uri#integrity": "sha256-+2b8yT2jzbRuoHh5KnI6RzorWNTN/eL67ZvEV+abEfA"
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
],
|
|
34
|
+
"claims": [
|
|
35
|
+
{
|
|
36
|
+
"display": [
|
|
37
|
+
{
|
|
38
|
+
"description": "Information about the electronic passport.",
|
|
39
|
+
"label": "Electronic Passport",
|
|
40
|
+
"lang": "en-US"
|
|
41
|
+
}
|
|
42
|
+
],
|
|
43
|
+
"path": ["electronicPassport"]
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
"display": [
|
|
47
|
+
{
|
|
48
|
+
"description": "Data Group 1 of the electronic passport.",
|
|
49
|
+
"label": "Data Group 1",
|
|
50
|
+
"lang": "en-US"
|
|
51
|
+
}
|
|
52
|
+
],
|
|
53
|
+
"path": ["electronicPassport", "dataGroup1"]
|
|
54
|
+
},
|
|
55
|
+
{
|
|
56
|
+
"display": [
|
|
57
|
+
{
|
|
58
|
+
"description": "Date of birth of the passport holder.",
|
|
59
|
+
"label": "Birthdate",
|
|
60
|
+
"lang": "en-US"
|
|
61
|
+
}
|
|
62
|
+
],
|
|
63
|
+
"path": ["electronicPassport", "dataGroup1", "birthdate"]
|
|
64
|
+
},
|
|
65
|
+
{
|
|
66
|
+
"display": [
|
|
67
|
+
{
|
|
68
|
+
"description": "Document type code, such as 'P' for an ePassport.",
|
|
69
|
+
"label": "Document Type Code",
|
|
70
|
+
"lang": "en-US"
|
|
71
|
+
}
|
|
72
|
+
],
|
|
73
|
+
"path": ["electronicPassport", "dataGroup1", "docTypeCode"]
|
|
74
|
+
},
|
|
75
|
+
{
|
|
76
|
+
"display": [
|
|
77
|
+
{
|
|
78
|
+
"description": "Expiry date of the ePassport.",
|
|
79
|
+
"label": "Expiry Date",
|
|
80
|
+
"lang": "en-US"
|
|
81
|
+
}
|
|
82
|
+
],
|
|
83
|
+
"path": ["electronicPassport", "dataGroup1", "expiryDate"]
|
|
84
|
+
},
|
|
85
|
+
{
|
|
86
|
+
"display": [
|
|
87
|
+
{
|
|
88
|
+
"description": "Sex of the passport holder.",
|
|
89
|
+
"label": "Sex Code",
|
|
90
|
+
"lang": "en-US"
|
|
91
|
+
}
|
|
92
|
+
],
|
|
93
|
+
"path": ["electronicPassport", "dataGroup1", "sexCode"]
|
|
94
|
+
},
|
|
95
|
+
{
|
|
96
|
+
"display": [
|
|
97
|
+
{
|
|
98
|
+
"description": "Full name of the passport holder.",
|
|
99
|
+
"label": "Holder's Name",
|
|
100
|
+
"lang": "en-US"
|
|
101
|
+
}
|
|
102
|
+
],
|
|
103
|
+
"path": ["electronicPassport", "dataGroup1", "holdersName"]
|
|
104
|
+
},
|
|
105
|
+
{
|
|
106
|
+
"display": [
|
|
107
|
+
{
|
|
108
|
+
"description": "Issuer code of the ePassport.",
|
|
109
|
+
"label": "Issuer Code",
|
|
110
|
+
"lang": "en-US"
|
|
111
|
+
}
|
|
112
|
+
],
|
|
113
|
+
"path": ["electronicPassport", "dataGroup1", "issuerCode"]
|
|
114
|
+
},
|
|
115
|
+
{
|
|
116
|
+
"display": [
|
|
117
|
+
{
|
|
118
|
+
"description": "Nationality code of the passport holder.",
|
|
119
|
+
"label": "Nationality Code",
|
|
120
|
+
"lang": "en-US"
|
|
121
|
+
}
|
|
122
|
+
],
|
|
123
|
+
"path": ["electronicPassport", "dataGroup1", "natlCode"]
|
|
124
|
+
},
|
|
125
|
+
{
|
|
126
|
+
"display": [
|
|
127
|
+
{
|
|
128
|
+
"description": "Unique identifier for the passport.",
|
|
129
|
+
"label": "Passport Number",
|
|
130
|
+
"lang": "en-US"
|
|
131
|
+
}
|
|
132
|
+
],
|
|
133
|
+
"path": ["electronicPassport", "dataGroup1", "passportNumberIdentifier"]
|
|
134
|
+
},
|
|
135
|
+
{
|
|
136
|
+
"display": [
|
|
137
|
+
{
|
|
138
|
+
"description": "Encoded face biometric data from Data Group 2.",
|
|
139
|
+
"label": "Encoded Face Biometrics",
|
|
140
|
+
"lang": "en-US"
|
|
141
|
+
}
|
|
142
|
+
],
|
|
143
|
+
"path": ["electronicPassport", "dataGroup2EncodedFaceBiometrics", "faceBiometricDataEncodedPicture"]
|
|
144
|
+
},
|
|
145
|
+
{
|
|
146
|
+
"display": [
|
|
147
|
+
{
|
|
148
|
+
"description": "Data group 15 containing the public key for active authentication.",
|
|
149
|
+
"label": "Data Group 15",
|
|
150
|
+
"lang": "en-US"
|
|
151
|
+
}
|
|
152
|
+
],
|
|
153
|
+
"path": ["electronicPassport", "dataGroup15"]
|
|
154
|
+
},
|
|
155
|
+
{
|
|
156
|
+
"display": [
|
|
157
|
+
{
|
|
158
|
+
"description": "Public key for active authentication.",
|
|
159
|
+
"label": "Active Authentication Public Key",
|
|
160
|
+
"lang": "en-US"
|
|
161
|
+
}
|
|
162
|
+
],
|
|
163
|
+
"path": ["electronicPassport", "dataGroup15", "activeAuthentication", "publicKeyBinaryObject"]
|
|
164
|
+
},
|
|
165
|
+
{
|
|
166
|
+
"display": [
|
|
167
|
+
{
|
|
168
|
+
"description": "Document security object containing hashing information.",
|
|
169
|
+
"label": "Document Security Object",
|
|
170
|
+
"lang": "en-US"
|
|
171
|
+
}
|
|
172
|
+
],
|
|
173
|
+
"path": ["electronicPassport", "docSecurityObject"]
|
|
174
|
+
},
|
|
175
|
+
{
|
|
176
|
+
"display": [
|
|
177
|
+
{
|
|
178
|
+
"description": "Digest hash algorithm used for the document security object.",
|
|
179
|
+
"label": "Digest Hash Algorithm",
|
|
180
|
+
"lang": "en-US"
|
|
181
|
+
}
|
|
182
|
+
],
|
|
183
|
+
"path": ["electronicPassport", "docSecurityObject", "digestHashAlgorithmIdentifier"]
|
|
184
|
+
},
|
|
185
|
+
{
|
|
186
|
+
"display": [
|
|
187
|
+
{
|
|
188
|
+
"description": "Version number of the document security object.",
|
|
189
|
+
"label": "Version Number",
|
|
190
|
+
"lang": "en-US"
|
|
191
|
+
}
|
|
192
|
+
],
|
|
193
|
+
"path": ["electronicPassport", "docSecurityObject", "versionNumber"]
|
|
194
|
+
},
|
|
195
|
+
{
|
|
196
|
+
"display": [
|
|
197
|
+
{
|
|
198
|
+
"description": "Data group hash values within the document security object.",
|
|
199
|
+
"label": "Data Group Hash",
|
|
200
|
+
"lang": "en-US"
|
|
201
|
+
}
|
|
202
|
+
],
|
|
203
|
+
"path": ["electronicPassport", "docSecurityObject", "dataGroupHash", null]
|
|
204
|
+
},
|
|
205
|
+
{
|
|
206
|
+
"display": [
|
|
207
|
+
{
|
|
208
|
+
"description": "Data group number for the hash.",
|
|
209
|
+
"label": "Data Group Number",
|
|
210
|
+
"lang": "en-US"
|
|
211
|
+
}
|
|
212
|
+
],
|
|
213
|
+
"path": ["electronicPassport", "docSecurityObject", "dataGroupHash", null, "dataGroupNumber"]
|
|
214
|
+
},
|
|
215
|
+
{
|
|
216
|
+
"display": [
|
|
217
|
+
{
|
|
218
|
+
"description": "Hash value for the data group.",
|
|
219
|
+
"label": "Hash Value",
|
|
220
|
+
"lang": "en-US"
|
|
221
|
+
}
|
|
222
|
+
],
|
|
223
|
+
"path": ["electronicPassport", "docSecurityObject", "dataGroupHash", null, "valueBinaryObject"]
|
|
224
|
+
}
|
|
225
|
+
]
|
|
226
|
+
}
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<svg width="2058" height="1173" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" overflow="hidden"><defs><image width="600" height="573" xlink:href="data:image/png;base64,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" preserveAspectRatio="none" id="img0"></image><clipPath id="clip1"><rect x="0" y="0" width="559724" height="534536"/></clipPath></defs><g transform="translate(-430 -944)"><g><path d="M436.5 1003.59C436.5 972.61 461.611 947.5 492.586 947.5L2426.41 947.5C2457.39 947.5 2482.5 972.61 2482.5 1003.59L2482.5 2058.41C2482.5 2089.39 2457.39 2114.5 2426.41 2114.5L492.586 2114.5C461.611 2114.5 436.5 2089.39 436.5 2058.41Z" stroke="#060F6A" stroke-width="4.58333" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="8" stroke-opacity="1" fill="#9C4FE9" fill-rule="evenodd" fill-opacity="1"/><text fill="#FFFFFF" fill-opacity="1" font-family="61,61_MSFontService,sans-serif" font-style="normal" font-variant="normal" font-weight="400" font-stretch="normal" font-size="165" text-anchor="start" direction="ltr" writing-mode="lr-tb" unicode-bidi="normal" text-decoration="none" transform="matrix(1 0 0 1 1130.03 1165)">Loyalty program</text><g transform="matrix(0.000360892 0 0 0.000360892 526 1028)"><g clip-path="url(#clip1)" transform="matrix(1 0 0 1.00047 -0.0690252 -0.0260121)"><use width="100%" height="100%" xlink:href="#img0" opacity="1" transform="scale(932.873 932.873)"></use></g></g></g></g></svg>
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "EmployeeAgencyCredential",
|
|
4
|
+
"title": "Employee Agency Verifiable Credential",
|
|
5
|
+
"description": "A Verifiable Credential for employees working at a travel agency.",
|
|
6
|
+
"type": "object",
|
|
7
|
+
"required": ["employee", "iss", "iat", "vct", "cnf"],
|
|
8
|
+
"properties": {
|
|
9
|
+
"employee": {
|
|
10
|
+
"title": "Employee",
|
|
11
|
+
"description": "An individual employed by a travel agency.",
|
|
12
|
+
"type": "object",
|
|
13
|
+
"required": ["salutation", "givenName", "surname", "phoneNumber", "employeeID", "email", "jobTitle"],
|
|
14
|
+
"properties": {
|
|
15
|
+
"salutation": {
|
|
16
|
+
"title": "Credential Subject Salutation",
|
|
17
|
+
"description": "Honorific or title prefix (e.g., Mr., Mrs., Ms.).",
|
|
18
|
+
"type": "string",
|
|
19
|
+
"minLength": 1,
|
|
20
|
+
"maxLength": 10
|
|
21
|
+
},
|
|
22
|
+
"givenName": {
|
|
23
|
+
"title": "Credential Subject Given Name",
|
|
24
|
+
"type": "string",
|
|
25
|
+
"minLength": 1,
|
|
26
|
+
"maxLength": 64
|
|
27
|
+
},
|
|
28
|
+
"surname": {
|
|
29
|
+
"title": "Credential Subject Surname",
|
|
30
|
+
"type": "string",
|
|
31
|
+
"minLength": 1,
|
|
32
|
+
"maxLength": 64
|
|
33
|
+
},
|
|
34
|
+
"phoneNumber": {
|
|
35
|
+
"title": "Credential Subject Phone Number",
|
|
36
|
+
"description": "Employee's phone number, separated into country code and local number.",
|
|
37
|
+
"type": "object",
|
|
38
|
+
"required": ["countryCode", "localNumber"],
|
|
39
|
+
"properties": {
|
|
40
|
+
"countryCode": {
|
|
41
|
+
"title": "Country Code",
|
|
42
|
+
"description": "Phone number country code in E.164 format (e.g., +1, +44).",
|
|
43
|
+
"type": "string",
|
|
44
|
+
"minLength": 2,
|
|
45
|
+
"maxLength": 4
|
|
46
|
+
},
|
|
47
|
+
"localNumber": {
|
|
48
|
+
"title": "Local Number",
|
|
49
|
+
"description": "The local portion of the phone number (area code + number).",
|
|
50
|
+
"type": "string",
|
|
51
|
+
"minLength": 6,
|
|
52
|
+
"maxLength": 20
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
},
|
|
56
|
+
"employeeID": {
|
|
57
|
+
"title": "Credential Subject Employee ID",
|
|
58
|
+
"description": "Unique identifier for the employee within the organization.",
|
|
59
|
+
"type": "string",
|
|
60
|
+
"maxLength": 35
|
|
61
|
+
},
|
|
62
|
+
"email": {
|
|
63
|
+
"title": "Credential Subject Email",
|
|
64
|
+
"type": "string",
|
|
65
|
+
"format": "email",
|
|
66
|
+
"maxLength": 254
|
|
67
|
+
},
|
|
68
|
+
"jobTitle": {
|
|
69
|
+
"title": "Credential Subject Job Title",
|
|
70
|
+
"description": "Official title or role of the employee within the travel agency.",
|
|
71
|
+
"type": "string",
|
|
72
|
+
"minLength": 2,
|
|
73
|
+
"maxLength": 88
|
|
74
|
+
},
|
|
75
|
+
"pcc": {
|
|
76
|
+
"title": "Credential Subject PCC Codes",
|
|
77
|
+
"description": "An array of Pseudo City Codes (PCCs) associated with the employee.",
|
|
78
|
+
"type": "array",
|
|
79
|
+
"items": {
|
|
80
|
+
"type": "string",
|
|
81
|
+
"description": "Pseudo City Code for a branch or agency."
|
|
82
|
+
},
|
|
83
|
+
"minItems": 0,
|
|
84
|
+
"uniqueItems": true
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
},
|
|
88
|
+
"iss": {
|
|
89
|
+
"title": "Issuer",
|
|
90
|
+
"description": "URI identifying the issuer of the credential.",
|
|
91
|
+
"type": "string",
|
|
92
|
+
"format": "uri"
|
|
93
|
+
},
|
|
94
|
+
"iat": {
|
|
95
|
+
"title": "Issued At",
|
|
96
|
+
"description": "The time at which the credential was issued (Unix timestamp).",
|
|
97
|
+
"type": "integer"
|
|
98
|
+
},
|
|
99
|
+
"exp": {
|
|
100
|
+
"title": "Expiration",
|
|
101
|
+
"description": "The time at which the credential expires (Unix timestamp).",
|
|
102
|
+
"type": "integer"
|
|
103
|
+
},
|
|
104
|
+
"vct": {
|
|
105
|
+
"title": "Verifiable Credential Type",
|
|
106
|
+
"description": "A URI or string identifying the type or context of this credential.",
|
|
107
|
+
"type": "string"
|
|
108
|
+
},
|
|
109
|
+
"cnf": {
|
|
110
|
+
"title": "Confirmation",
|
|
111
|
+
"description": "Proof-of-possession key information used to bind the credential to a specific holder.",
|
|
112
|
+
"type": "object"
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
}
|