@velocitycareerlabs/sample-libapp 1.25.0-dev-build.1c5e2a209

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (27) hide show
  1. package/LICENSE +202 -0
  2. package/contexts/credential-extensions-2022.jsonld.json +36 -0
  3. package/contexts/layer1-v1.0.jsonld.json +414 -0
  4. package/contexts/layer1-v1.1.jsonld.json +451 -0
  5. package/display-descriptors/education-degree-graduation-v1.1.descriptor.json +263 -0
  6. package/display-descriptors/email-v1.0.descriptor.json +19 -0
  7. package/display-descriptors/employment-current-v1.1.descriptor.json +189 -0
  8. package/display-descriptors/en/education-degree-graduation-v1.1.descriptor.json +263 -0
  9. package/display-descriptors/en/email-v1.0.descriptor.json +19 -0
  10. package/display-descriptors/en/employment-current-v1.1.descriptor.json +189 -0
  11. package/display-descriptors/en/open-badge-credential.descriptor.json +259 -0
  12. package/display-descriptors/open-badge-credential.descriptor.json +259 -0
  13. package/docker/compose.yml +9 -0
  14. package/docker/nginx.conf +9 -0
  15. package/form-schemas/EducationDegreeGraduationV1.1.form-schema.json +126 -0
  16. package/form-schemas/EmailV1.0.form-schema.json +5 -0
  17. package/form-schemas/EmploymentCurrentV1.1.form-schema.json +96 -0
  18. package/form-schemas/OpenBadgeCredential.form-schema.json +113 -0
  19. package/form-schemas/en/EducationDegreeGraduationV1.1.form-schema.json +126 -0
  20. package/form-schemas/en/EmailV1.0.form-schema.json +5 -0
  21. package/form-schemas/en/EmploymentCurrentV1.1.form-schema.json +96 -0
  22. package/form-schemas/en/OpenBadgeCredential.form-schema.json +113 -0
  23. package/package.json +18 -0
  24. package/schemas/education-degree-graduation-v1.1.schema.json +366 -0
  25. package/schemas/email-v1.0.schema.json +44 -0
  26. package/schemas/employment-current-v1.1.schema.json +267 -0
  27. package/schemas/open-badge-credential.schema.json +1351 -0
@@ -0,0 +1,1351 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema",
3
+ "$id": "https://purl.imsglobal.org/spec/ob/v3p0/schema/json/achievementsubjectv3p0.schema.json",
4
+ "title": "JSON Schema for the AchievementSubject class.",
5
+ "description": "A collection of information about the recipient of an achievement. Maps to Credential Subject in [[VC-DATA-MODEL]].\n\nThe badge image should be 400x400 in PNG format",
6
+ "type": "object",
7
+ "examples": [
8
+ {
9
+ "type": "AchievementSubject",
10
+ "achievement": {
11
+ "id": "https://velocitynetwork.foundation/credentials/openbadgecredential-5",
12
+ "type": "Achievement",
13
+ "name": "Our Wallet Passed JFF Plugfest #1 2022",
14
+ "description": "This wallet can display this Open Badge 3.0",
15
+ "criteria": {
16
+ "type": "Criteria",
17
+ "narrative": "The first cohort of the JFF Plugfest 1 in May/June of 2021 collaborated to push interoperability of VCs in education forward."
18
+ },
19
+ "image": {
20
+ "id": "https://w3c-ccg.github.io/vc-ed/plugfest-1-2022/images/plugfest-1-badge-image.png",
21
+ "type": "Image"
22
+ }
23
+ }
24
+ },
25
+ {
26
+ "type": "AchievementSubject",
27
+ "achievement": {
28
+ "type": "Achievement",
29
+ "id": "https://velocitynetwork.foundation/credentials/openbadgecredential-1",
30
+ "name": "Influenza Vaccine Immunization Education (IVIE)",
31
+ "description": "Influenza Vaccine Immunization Education (IVIE) is a self-guided learning module for nursing students to gain training specific to the administration of influenza vaccine in organized clinics for communities of people",
32
+ "criteria": {
33
+ "type": "Criteria",
34
+ "narrative": "https://example.com/ivie/criteria.html"
35
+ },
36
+ "alignment": [
37
+ {
38
+ "type": "Alignment",
39
+ "targetName": "North Dakota Medical Education Profile 3",
40
+ "targetUrl": "http://credentialengine.com",
41
+ "targetCode": "NDMEP3"
42
+ }
43
+ ],
44
+ "image": {
45
+ "id": "https://docs.velocitycareerlabs.io/Logos/volunteer-badge.png",
46
+ "type": "Image"
47
+ }
48
+ }
49
+ }
50
+ ],
51
+ "properties": {
52
+ "id": {
53
+ "description": "An identifier for the Credential Subject. Either `id` or at least one `identifier` MUST be supplied.",
54
+ "$comment": "Origin: URI (DerivedType); A `NormalizedString` that represents a Uniform Resource Identifier (URI).",
55
+ "type": "string"
56
+ },
57
+ "type": {
58
+ "default": "AchievementSubject",
59
+ "oneOf": [
60
+ {
61
+ "description": "The value of the type property MUST be an unordered set. One of the items MUST be the IRI 'AchievementSubject'.",
62
+ "$comment": "Origin: IRI (DerivedType); A `NormalizedString` that represents an Internationalized Resource Identifier (IRI), which extends the ASCII characters subset of the Uniform Resource Identifier (URI).",
63
+ "type": "string"
64
+ },
65
+ {
66
+ "type": "array",
67
+ "minItems": 1,
68
+ "items": {
69
+ "description": "The value of the type property MUST be an unordered set. One of the items MUST be the IRI 'AchievementSubject'.",
70
+ "$comment": "Origin: IRI (DerivedType); A `NormalizedString` that represents an Internationalized Resource Identifier (IRI), which extends the ASCII characters subset of the Uniform Resource Identifier (URI).",
71
+ "type": "string"
72
+ }
73
+ }
74
+ ]
75
+ },
76
+ "activityEndDate": {
77
+ "description": "The datetime the activity ended.",
78
+ "$comment": "Origin: DateTime (PrimitiveType); An [[ISO8601]] time using the syntax YYYY-MM-DDThh:mm:ss.",
79
+ "type": "string",
80
+ "format": "date-time"
81
+ },
82
+ "activityStartDate": {
83
+ "description": "The datetime the activity started.",
84
+ "$comment": "Origin: DateTime (PrimitiveType); An [[ISO8601]] time using the syntax YYYY-MM-DDThh:mm:ss.",
85
+ "type": "string",
86
+ "format": "date-time"
87
+ },
88
+ "creditsEarned": {
89
+ "description": "The number of credits earned, generally in semester or quarter credit hours. This field correlates with the Achievement `creditsAvailable` field.",
90
+ "$comment": "Origin: Float (PrimitiveType)",
91
+ "type": "number"
92
+ },
93
+ "achievement": {
94
+ "$ref": "#/$defs/Achievement"
95
+ },
96
+ "identifier": {
97
+ "type": "array",
98
+ "minItems": 1,
99
+ "items": {
100
+ "$ref": "#/$defs/IdentityObject"
101
+ },
102
+ "description": "A collection of information about the recipient of an achievement."
103
+ },
104
+ "image": {
105
+ "$ref": "#/$defs/Image"
106
+ },
107
+ "licenseNumber": {
108
+ "description": "The license number that was issued with this credential.",
109
+ "$comment": "Origin: String (PrimitiveType); Character strings.",
110
+ "type": "string"
111
+ },
112
+ "narrative": {
113
+ "description": "A narrative that connects multiple pieces of evidence. Likely only present at this location if evidence is a multi-value array.",
114
+ "$comment": "Origin: Markdown (DerivedType); A `String` that may contain Markdown.",
115
+ "type": "string"
116
+ },
117
+ "result": {
118
+ "type": "array",
119
+ "minItems": 1,
120
+ "items": {
121
+ "$ref": "#/$defs/Result"
122
+ },
123
+ "description": "Describes a result that was achieved."
124
+ },
125
+ "role": {
126
+ "description": "Role, position, or title of the learner when demonstrating or performing the achievement or evidence of learning being asserted. Examples include 'Student President', 'Intern', 'Captain', etc.",
127
+ "$comment": "Origin: String (PrimitiveType); Character strings.",
128
+ "type": "string"
129
+ },
130
+ "source": {
131
+ "$ref": "#/$defs/Profile"
132
+ },
133
+ "term": {
134
+ "description": "The academic term in which this assertion was achieved.",
135
+ "$comment": "Origin: String (PrimitiveType); Character strings.",
136
+ "type": "string"
137
+ }
138
+ },
139
+ "required": [
140
+ "type",
141
+ "achievement"
142
+ ],
143
+ "additionalProperties": false,
144
+ "$defs": {
145
+ "IdentityObject": {
146
+ "description": "A collection of information about the recipient of an achievement.",
147
+ "type": "object",
148
+ "properties": {
149
+ "type": {
150
+ "description": "MUST be the IRI 'IdentityObject'.",
151
+ "$comment": "Origin: IRI (DerivedType); A `NormalizedString` that represents an Internationalized Resource Identifier (IRI), which extends the ASCII characters subset of the Uniform Resource Identifier (URI).",
152
+ "type": "string",
153
+ "default": "IdentityObject"
154
+ },
155
+ "hashed": {
156
+ "description": "Whether or not the `identityHash` value is hashed.",
157
+ "$comment": "Origin: Boolean (PrimitiveType); A boolean, expressed as `true` or `false`",
158
+ "type": "boolean"
159
+ },
160
+ "identityHash": {
161
+ "description": "Either the IdentityHash of the identity or the plaintext value. If it's possible that the plaintext transmission and storage of the identity value would leak personally identifiable information where there is an expectation of privacy, it is strongly recommended that an IdentityHash be used.",
162
+ "$comment": "Origin: IdentityHash (DerivedType); A `String` consisting of an algorithm identifier, a `$` separator, and a hash across an identifier and an optionally appended salt string. The only supported algorithms are MD5 [[RFC1321]] and SHA-256 [[FIPS-180-4]], identified by the strings 'md5' and 'sha256' respectively. Identifiers and salts MUST be encoded in UTF-8 prior to hashing, and the resulting hash MUST be expressed in hexadecimal using uppercase (A-F, 0-9) or lowercase character (a-f, 0-9) sets. For example: 'sha256$b5809d8a92f8858436d7e6b87c12ebc0ae1eac4baecc2c0b913aee2c922ef399' represents the result of calculating a SHA-256 hash on the string 'a@example.comKosher'. in which the email identifier 'a@example.com' is salted with 'Kosher'",
163
+ "type": "string"
164
+ },
165
+ "identityType": {
166
+ "description": "The identity type.",
167
+ "$comment": "Origin: IdentifierTypeEnum (EnumExt)",
168
+ "anyOf": [
169
+ {
170
+ "type": "string",
171
+ "enum": [
172
+ "sourcedId",
173
+ "systemId",
174
+ "productId",
175
+ "userName",
176
+ "accountId",
177
+ "emailAddress",
178
+ "nationalIdentityNumber",
179
+ "isbn",
180
+ "issn",
181
+ "lisSourcedId",
182
+ "oneRosterSourcedId",
183
+ "sisSourcedId",
184
+ "ltiContextId",
185
+ "ltiDeploymentId",
186
+ "ltiToolId",
187
+ "ltiPlatformId",
188
+ "ltiUserId",
189
+ "identifier"
190
+ ]
191
+ },
192
+ {
193
+ "type": "string",
194
+ "pattern": "(ext:)[a-z|A-Z|0-9|.|-|_]+"
195
+ }
196
+ ]
197
+ },
198
+ "salt": {
199
+ "description": "If the `identityHash` is hashed, this should contain the string used to salt the hash. If this value is not provided, it should be assumed that the hash was not salted.",
200
+ "$comment": "Origin: String (PrimitiveType); Character strings.",
201
+ "type": "string"
202
+ }
203
+ },
204
+ "required": [
205
+ "type",
206
+ "hashed",
207
+ "identityHash",
208
+ "identityType"
209
+ ],
210
+ "additionalProperties": false
211
+ },
212
+ "Achievement": {
213
+ "description": "A collection of information about the accomplishment recognized by the Assertion. Many assertions may be created corresponding to one Achievement.",
214
+ "type": "object",
215
+ "properties": {
216
+ "id": {
217
+ "description": "Unique URI for the Achievement.",
218
+ "$comment": "Origin: URI (DerivedType); A `NormalizedString` that respresents a Uniform Resource Identifier (URI).",
219
+ "type": "string"
220
+ },
221
+ "type": {
222
+ "default": "Achievement",
223
+ "oneOf": [
224
+ {
225
+ "description": "No description supplied.",
226
+ "$comment": "Origin: IRI (DerivedType); A `NormalizedString` that represents an Internationalized Resource Identifier (IRI), which extends the ASCII characters subset of the Uniform Resource Identifier (URI).",
227
+ "type": "string"
228
+ },
229
+ {
230
+ "type": "array",
231
+ "minItems": 1,
232
+ "items": {
233
+ "description": "No description supplied.",
234
+ "$comment": "Origin: IRI (DerivedType); A `NormalizedString` that represents an Internationalized Resource Identifier (IRI), which extends the ASCII characters subset of the Uniform Resource Identifier (URI).",
235
+ "type": "string"
236
+ }
237
+ }
238
+ ]
239
+ },
240
+ "alignment": {
241
+ "type": "array",
242
+ "minItems": 1,
243
+ "items": {
244
+ "$ref": "#/$defs/Alignment"
245
+ }
246
+ },
247
+ "achievementType": {
248
+ "description": "The type of achievement. This is an extensible vocabulary.",
249
+ "$comment": "Origin: AchievementType (EnumExt); The type of achievement, for example 'Award' or 'Certification'. This is an extensible enumerated vocabulary. Extending the vocabulary makes use of a naming convention.",
250
+ "anyOf": [
251
+ {
252
+ "type": "string",
253
+ "enum": [
254
+ "Achievement",
255
+ "ApprenticeshipCertificate",
256
+ "Assessment",
257
+ "Assignment",
258
+ "AssociateDegree",
259
+ "Award",
260
+ "Badge",
261
+ "BachelorDegree",
262
+ "Certificate",
263
+ "CertificateOfCompletion",
264
+ "Certification",
265
+ "CommunityService",
266
+ "Competency",
267
+ "Course",
268
+ "CoCurricular",
269
+ "Degree",
270
+ "Diploma",
271
+ "DoctoralDegree",
272
+ "Fieldwork",
273
+ "GeneralEducationDevelopment",
274
+ "JourneymanCertificate",
275
+ "LearningProgram",
276
+ "License",
277
+ "Membership",
278
+ "ProfessionalDoctorate",
279
+ "QualityAssuranceCredential",
280
+ "MasterCertificate",
281
+ "MasterDegree",
282
+ "MicroCredential",
283
+ "ResearchDoctorate",
284
+ "SecondarySchoolDiploma"
285
+ ]
286
+ },
287
+ {
288
+ "type": "string",
289
+ "pattern": "(ext:)[a-z|A-Z|0-9|.|-|_]+"
290
+ }
291
+ ]
292
+ },
293
+ "creator": {
294
+ "$ref": "#/$defs/Profile"
295
+ },
296
+ "creditsAvailable": {
297
+ "description": "Credit hours associated with this entity, or credit hours possible. For example 3.0.",
298
+ "$comment": "Origin: Float (PrimitiveType)",
299
+ "type": "number"
300
+ },
301
+ "criteria": {
302
+ "$ref": "#/$defs/Criteria"
303
+ },
304
+ "description": {
305
+ "description": "A short description of the achievement.",
306
+ "$comment": "Origin: String (PrimitiveType); Character strings.",
307
+ "type": "string"
308
+ },
309
+ "endorsement": {
310
+ "type": "array",
311
+ "minItems": 1,
312
+ "items": {
313
+ "$ref": "#/$defs/EndorsementCredential"
314
+ }
315
+ },
316
+ "endorsementJwt": {
317
+ "type": "array",
318
+ "minItems": 1,
319
+ "items": {
320
+ "description": "Allows endorsers to make specific claims about the Achievement. These endorsements are signed with the VC-JWT proof format.",
321
+ "$comment": "Origin: CompactJws (DerivedType); A `String` in Compact JWS format [[RFC7515]].",
322
+ "type": "string",
323
+ "pattern": "^[a-zA-Z0-9_-]+\\.[a-zA-Z0-9_-]*\\.[a-zA-Z0-9_-]+$"
324
+ }
325
+ },
326
+ "fieldOfStudy": {
327
+ "description": "Category, subject, area of study, discipline, or general branch of knowledge. Examples include Business, Education, Psychology, and Technology.",
328
+ "$comment": "Origin: String (PrimitiveType); Character strings.",
329
+ "type": "string"
330
+ },
331
+ "humanCode": {
332
+ "description": "The code, generally human readable, associated with an achievement.",
333
+ "$comment": "Origin: String (PrimitiveType); Character strings.",
334
+ "type": "string"
335
+ },
336
+ "image": {
337
+ "$ref": "#/$defs/Image"
338
+ },
339
+ "@language": {
340
+ "description": "The language of the achievement.",
341
+ "$comment": "Origin: LanguageCode (DerivedType); A language code [[BCP47]].",
342
+ "type": "string",
343
+ "pattern": "^[a-z]{2,4}(-[A-Z][a-z]{3})?(-([A-Z]{2}|[0-9]{3}))?$"
344
+ },
345
+ "name": {
346
+ "description": "The name of the achievement.",
347
+ "$comment": "Origin: String (PrimitiveType); Character strings.",
348
+ "type": "string"
349
+ },
350
+ "otherIdentifier": {
351
+ "type": "array",
352
+ "minItems": 1,
353
+ "items": {
354
+ "$ref": "#/$defs/IdentifierEntry"
355
+ }
356
+ },
357
+ "related": {
358
+ "type": "array",
359
+ "minItems": 1,
360
+ "items": {
361
+ "$ref": "#/$defs/Related"
362
+ }
363
+ },
364
+ "resultDescription": {
365
+ "type": "array",
366
+ "minItems": 1,
367
+ "items": {
368
+ "$ref": "#/$defs/ResultDescription"
369
+ }
370
+ },
371
+ "specialization": {
372
+ "description": "Name given to the focus, concentration, or specific area of study defined in the achievement. Examples include 'Entrepreneurship', 'Technical Communication', and 'Finance'.",
373
+ "$comment": "Origin: String (PrimitiveType); Character strings.",
374
+ "type": "string"
375
+ },
376
+ "tag": {
377
+ "type": "array",
378
+ "minItems": 1,
379
+ "items": {
380
+ "description": "Tags that describes the type of achievement.",
381
+ "$comment": "Origin: String (PrimitiveType); Character strings.",
382
+ "type": "string"
383
+ }
384
+ },
385
+ "version": {
386
+ "description": "The version property allows issuers to set a version string for an Achievement. This is particularly useful when replacing a previous version with an update.",
387
+ "$comment": "Origin: String (PrimitiveType); Character strings.",
388
+ "type": "string"
389
+ }
390
+ },
391
+ "required": [
392
+ "id",
393
+ "type",
394
+ "criteria",
395
+ "description",
396
+ "name"
397
+ ],
398
+ "additionalProperties": true
399
+ },
400
+ "Alignment": {
401
+ "description": "Describes an alignment between an achievement and a node in an educational framework.",
402
+ "type": "object",
403
+ "properties": {
404
+ "type": {
405
+ "default": "Alignment",
406
+ "oneOf": [
407
+ {
408
+ "description": "The value of the type property MUST be an unordered set. One of the items MUST be the IRI 'Alignment'.",
409
+ "$comment": "Origin: IRI (DerivedType); A `NormalizedString` that represents an Internationalized Resource Identifier (IRI), which extends the ASCII characters subset of the Uniform Resource Identifier (URI).",
410
+ "type": "string"
411
+ },
412
+ {
413
+ "type": "array",
414
+ "minItems": 1,
415
+ "items": {
416
+ "description": "The value of the type property MUST be an unordered set. One of the items MUST be the IRI 'Alignment'.",
417
+ "$comment": "Origin: IRI (DerivedType); A `NormalizedString` that represents an Internationalized Resource Identifier (IRI), which extends the ASCII characters subset of the Uniform Resource Identifier (URI).",
418
+ "type": "string"
419
+ }
420
+ }
421
+ ]
422
+ },
423
+ "targetCode": {
424
+ "description": "If applicable, a locally unique string identifier that identifies the alignment target within its framework and/or targetUrl.",
425
+ "$comment": "Origin: String (PrimitiveType); Character strings.",
426
+ "type": "string"
427
+ },
428
+ "targetDescription": {
429
+ "description": "Short description of the alignment target.",
430
+ "$comment": "Origin: String (PrimitiveType); Character strings.",
431
+ "type": "string"
432
+ },
433
+ "targetName": {
434
+ "description": "Name of the alignment.",
435
+ "$comment": "Origin: String (PrimitiveType); Character strings.",
436
+ "type": "string"
437
+ },
438
+ "targetFramework": {
439
+ "description": "Name of the framework the alignment target.",
440
+ "$comment": "Origin: String (PrimitiveType); Character strings.",
441
+ "type": "string"
442
+ },
443
+ "targetType": {
444
+ "description": "The type of the alignment target node.",
445
+ "$comment": "Origin: AlignmentTargetType (EnumExt); The type of the alignment target node in the target framework.",
446
+ "anyOf": [
447
+ {
448
+ "type": "string",
449
+ "enum": [
450
+ "ceasn:Competency",
451
+ "ceterms:Credential",
452
+ "CFItem",
453
+ "CFRubric",
454
+ "CFRubricCriterion",
455
+ "CFRubricCriterionLevel",
456
+ "CTDL"
457
+ ]
458
+ },
459
+ {
460
+ "type": "string",
461
+ "pattern": "(ext:)[a-z|A-Z|0-9|.|-|_]+"
462
+ }
463
+ ]
464
+ },
465
+ "targetUrl": {
466
+ "description": "URL linking to the official description of the alignment target, for example an individual standard within an educational framework.",
467
+ "$comment": "Origin: URL (DerivedType); A `URI` that represents a Uniform Resource Locator (URL).",
468
+ "type": "string"
469
+ }
470
+ },
471
+ "required": [
472
+ "type",
473
+ "targetName",
474
+ "targetUrl"
475
+ ],
476
+ "additionalProperties": true
477
+ },
478
+ "Criteria": {
479
+ "description": "Descriptive metadata about the achievements necessary to be recognized with an assertion of a particular achievement. This data is added to the Achievement class so that it may be rendered when the achievement assertion is displayed, instead of simply a link to human-readable criteria external to the achievement. Embedding criteria allows either enhancement of an external criteria page or increased portability and ease of use by allowing issuers to skip hosting the formerly-required external criteria page altogether. Criteria is used to allow would-be recipients to learn what is required of them to be recognized with an assertion of a particular achievement. It is also used after the assertion is awarded to a recipient to let those inspecting earned achievements know the general requirements that the recipients met in order to earn it.",
480
+ "type": "object",
481
+ "properties": {
482
+ "id": {
483
+ "description": "The URI of a webpage that describes in a human-readable format the criteria for the achievement.",
484
+ "$comment": "Origin: URI (DerivedType); A `NormalizedString` that respresents a Uniform Resource Identifier (URI).",
485
+ "type": "string"
486
+ },
487
+ "narrative": {
488
+ "description": "A narrative of what is needed to earn the achievement. Markdown is allowed.",
489
+ "$comment": "Origin: Markdown (DerivedType); A `String` that may contain Markdown.",
490
+ "type": "string"
491
+ }
492
+ },
493
+ "required": [],
494
+ "additionalProperties": true
495
+ },
496
+ "EndorsementCredential": {
497
+ "description": "A verifiable credential that asserts a claim about an entity. As described in [[[#data-integrity]]], at least one proof mechanism, and the details necessary to evaluate that proof, MUST be expressed for a credential to be a verifiable credential. In the case of an embedded proof, the credential MUST append the proof in the `proof` property.",
498
+ "type": "object",
499
+ "properties": {
500
+ "@context": {
501
+ "type": "array",
502
+ "minItems": 1,
503
+ "items": {
504
+ "description": "The value of the `@context` property MUST be an ordered set where the first item is a URI with the value 'https://www.w3.org/2018/credentials/v1', and the second item is a URI with the value 'https://purl.imsglobal.org/spec/ob/v3p0/context/ob_v3p0.jsonld'.",
505
+ "$comment": "Origin: URI (DerivedType); A `NormalizedString` that respresents a Uniform Resource Identifier (URI).",
506
+ "type": "string"
507
+ }
508
+ },
509
+ "type": {
510
+ "default": "EndorsementCredential",
511
+ "oneOf": [
512
+ {
513
+ "description": "The value of the type property MUST be an unordered set. One of the items MUST be the URI 'VerifiableCredential', and one of the items MUST be the URI 'EndorsementCredential'.",
514
+ "$comment": "Origin: IRI (DerivedType); A `NormalizedString` that represents an Internationalized Resource Identifier (IRI), which extends the ASCII characters subset of the Uniform Resource Identifier (URI).",
515
+ "type": "string"
516
+ },
517
+ {
518
+ "type": "array",
519
+ "minItems": 1,
520
+ "items": {
521
+ "description": "The value of the type property MUST be an unordered set. One of the items MUST be the URI 'VerifiableCredential', and one of the items MUST be the URI 'EndorsementCredential'.",
522
+ "$comment": "Origin: IRI (DerivedType); A `NormalizedString` that represents an Internationalized Resource Identifier (IRI), which extends the ASCII characters subset of the Uniform Resource Identifier (URI).",
523
+ "type": "string"
524
+ }
525
+ }
526
+ ]
527
+ },
528
+ "id": {
529
+ "description": "Unambiguous reference to the credential.",
530
+ "$comment": "Origin: URI (DerivedType); A `NormalizedString` that respresents a Uniform Resource Identifier (URI).",
531
+ "type": "string"
532
+ },
533
+ "credentialSubject": {
534
+ "$ref": "#/$defs/EndorsementSubject"
535
+ },
536
+ "issuer": {
537
+ "$ref": "#/$defs/Profile"
538
+ },
539
+ "issuanceDate": {
540
+ "description": "Timestamp of when the credential was awarded.",
541
+ "$comment": "Origin: DateTimeZ (DerivedType); A `DateTime` with the trailing timezone specifier included, e.g. `2021-09-07T02:09:59+02:00`",
542
+ "type": "string",
543
+ "format": "date-time"
544
+ },
545
+ "expirationDate": {
546
+ "description": "If the credential has some notion of expiry, this indicates a timestamp when a credential should no longer be considered valid. After this time, the credential should be considered expired.",
547
+ "$comment": "Origin: DateTimeZ (DerivedType); A `DateTime` with the trailing timezone specifier included, e.g. `2021-09-07T02:09:59+02:00`",
548
+ "type": "string",
549
+ "format": "date-time"
550
+ },
551
+ "proof": {
552
+ "oneOf": [
553
+ {
554
+ "$ref": "#/$defs/Proof"
555
+ },
556
+ {
557
+ "type": "array",
558
+ "minItems": 1,
559
+ "items": {
560
+ "$ref": "#/$defs/Proof"
561
+ }
562
+ }
563
+ ]
564
+ },
565
+ "credentialSchema": {
566
+ "oneOf": [
567
+ {
568
+ "$ref": "#/$defs/CredentialSchema"
569
+ },
570
+ {
571
+ "type": "array",
572
+ "minItems": 1,
573
+ "items": {
574
+ "$ref": "#/$defs/CredentialSchema"
575
+ }
576
+ }
577
+ ]
578
+ },
579
+ "credentialStatus": {
580
+ "$ref": "#/$defs/CredentialStatus"
581
+ },
582
+ "refreshService": {
583
+ "$ref": "#/$defs/RefreshService"
584
+ }
585
+ },
586
+ "required": [
587
+ "@context",
588
+ "type",
589
+ "id",
590
+ "credentialSubject",
591
+ "issuer",
592
+ "issuanceDate"
593
+ ],
594
+ "additionalProperties": false
595
+ },
596
+ "CredentialStatus": {
597
+ "description": "The information in CredentialStatus is used to discover information about the current status of a verifiable credential, such as whether it is suspended or revoked.",
598
+ "type": "object",
599
+ "properties": {
600
+ "id": {
601
+ "description": "The value MUST be the URL of the issuer's credential status method.",
602
+ "$comment": "Origin: URI (DerivedType); A `NormalizedString` that respresents a Uniform Resource Identifier (URI).",
603
+ "type": "string"
604
+ },
605
+ "type": {
606
+ "description": "The name of the credential status method.",
607
+ "$comment": "Origin: IRI (DerivedType); A `NormalizedString` that represents an Internationalized Resource Identifier (IRI), which extends the ASCII characters subset of the Uniform Resource Identifier (URI).",
608
+ "type": "string"
609
+ }
610
+ },
611
+ "required": [
612
+ "id",
613
+ "type"
614
+ ],
615
+ "additionalProperties": true
616
+ },
617
+ "IdentifierEntry": {
618
+ "description": "No description supplied.",
619
+ "type": "object",
620
+ "properties": {
621
+ "type": {
622
+ "description": "The value of the type property MUST be an unordered set. One of the items MUST be the IRI 'IdentifierEntry'.",
623
+ "$comment": "Origin: IRI (DerivedType); A `NormalizedString` that represents an Internationalized Resource Identifier (IRI), which extends the ASCII characters subset of the Uniform Resource Identifier (URI).",
624
+ "type": "string",
625
+ "default": "IdentifierEntry"
626
+ },
627
+ "identifier": {
628
+ "description": "An identifier.",
629
+ "$comment": "Origin: Identifier (DerivedType); A `NormalizedString` that functions as an identifier.",
630
+ "type": "string"
631
+ },
632
+ "identifierType": {
633
+ "description": "The identifier type.",
634
+ "$comment": "Origin: IdentifierTypeEnum (EnumExt)",
635
+ "anyOf": [
636
+ {
637
+ "type": "string",
638
+ "enum": [
639
+ "sourcedId",
640
+ "systemId",
641
+ "productId",
642
+ "userName",
643
+ "accountId",
644
+ "emailAddress",
645
+ "nationalIdentityNumber",
646
+ "isbn",
647
+ "issn",
648
+ "lisSourcedId",
649
+ "oneRosterSourcedId",
650
+ "sisSourcedId",
651
+ "ltiContextId",
652
+ "ltiDeploymentId",
653
+ "ltiToolId",
654
+ "ltiPlatformId",
655
+ "ltiUserId",
656
+ "identifier"
657
+ ]
658
+ },
659
+ {
660
+ "type": "string",
661
+ "pattern": "(ext:)[a-z|A-Z|0-9|.|-|_]+"
662
+ }
663
+ ]
664
+ }
665
+ },
666
+ "required": [
667
+ "type",
668
+ "identifier",
669
+ "identifierType"
670
+ ],
671
+ "additionalProperties": false
672
+ },
673
+ "Proof": {
674
+ "description": "A JSON-LD Linked Data proof.",
675
+ "type": "object",
676
+ "properties": {
677
+ "type": {
678
+ "description": "Signature suite used to produce proof.",
679
+ "$comment": "Origin: IRI (DerivedType); A `NormalizedString` that represents an Internationalized Resource Identifier (IRI), which extends the ASCII characters subset of the Uniform Resource Identifier (URI).",
680
+ "type": "string"
681
+ },
682
+ "created": {
683
+ "description": "Date the proof was created.",
684
+ "$comment": "Origin: DateTime (PrimitiveType); An [[ISO8601]] time using the syntax YYYY-MM-DDThh:mm:ss.",
685
+ "type": "string",
686
+ "format": "date-time"
687
+ },
688
+ "challenge": {
689
+ "description": "A value chosen by the verifier to mitigate authentication proof replay attacks.",
690
+ "$comment": "Origin: String (PrimitiveType); Character strings.",
691
+ "type": "string"
692
+ },
693
+ "domain": {
694
+ "description": "The domain of the proof to restrict its use to a particular target.",
695
+ "$comment": "Origin: String (PrimitiveType); Character strings.",
696
+ "type": "string"
697
+ },
698
+ "nonce": {
699
+ "description": "A value chosen by the creator of proof to randomize proof values for privacy purposes.",
700
+ "$comment": "Origin: String (PrimitiveType); Character strings.",
701
+ "type": "string"
702
+ },
703
+ "proofPurpose": {
704
+ "description": "The purpose of the proof to be used with `verificationMethod`. MUST be 'assertionMethod'.",
705
+ "$comment": "Origin: String (PrimitiveType); Character strings.",
706
+ "type": "string"
707
+ },
708
+ "proofValue": {
709
+ "description": "Value of the proof.",
710
+ "$comment": "Origin: String (PrimitiveType); Character strings.",
711
+ "type": "string"
712
+ },
713
+ "verificationMethod": {
714
+ "description": "The URL of the public key that can verify the signature.",
715
+ "$comment": "Origin: URI (DerivedType); A `NormalizedString` that respresents a Uniform Resource Identifier (URI).",
716
+ "type": "string"
717
+ }
718
+ },
719
+ "required": [
720
+ "type"
721
+ ],
722
+ "additionalProperties": true
723
+ },
724
+ "RefreshService": {
725
+ "description": "The information in RefreshService is used to refresh the verifiable credential.",
726
+ "type": "object",
727
+ "properties": {
728
+ "id": {
729
+ "description": "The value MUST be the URL of the issuer's refresh service.",
730
+ "$comment": "Origin: URI (DerivedType); A `NormalizedString` that respresents a Uniform Resource Identifier (URI).",
731
+ "type": "string"
732
+ },
733
+ "type": {
734
+ "description": "The name of the refresh service method.",
735
+ "$comment": "Origin: IRI (DerivedType); A `NormalizedString` that represents an Internationalized Resource Identifier (IRI), which extends the ASCII characters subset of the Uniform Resource Identifier (URI).",
736
+ "type": "string"
737
+ }
738
+ },
739
+ "required": [
740
+ "id",
741
+ "type"
742
+ ],
743
+ "additionalProperties": true
744
+ },
745
+ "Image": {
746
+ "description": "Metadata about images that represent assertions, achieve or profiles. These properties can typically be represented as just the id string of the image, but using a fleshed-out document allows for including captions and other applicable metadata.",
747
+ "type": "object",
748
+ "properties": {
749
+ "id": {
750
+ "description": "The URI or Data URI of the image.",
751
+ "$comment": "Origin: URI (DerivedType); A `NormalizedString` that respresents a Uniform Resource Identifier (URI).",
752
+ "type": "string"
753
+ },
754
+ "type": {
755
+ "description": "MUST be the IRI 'Image'.",
756
+ "$comment": "Origin: IRI (DerivedType); A `NormalizedString` that represents an Internationalized Resource Identifier (IRI), which extends the ASCII characters subset of the Uniform Resource Identifier (URI).",
757
+ "type": "string",
758
+ "default": "Image"
759
+ },
760
+ "caption": {
761
+ "description": "The caption for the image.",
762
+ "$comment": "Origin: String (PrimitiveType); Character strings.",
763
+ "type": "string"
764
+ }
765
+ },
766
+ "required": [
767
+ "id",
768
+ "type"
769
+ ],
770
+ "additionalProperties": false
771
+ },
772
+ "ResultDescription": {
773
+ "description": "Describes a possible achievement result.",
774
+ "type": "object",
775
+ "properties": {
776
+ "id": {
777
+ "description": "The unique URI for this result description. Required so a result can link to this result description.",
778
+ "$comment": "Origin: URI (DerivedType); A `NormalizedString` that respresents a Uniform Resource Identifier (URI).",
779
+ "type": "string"
780
+ },
781
+ "type": {
782
+ "default": "ResultDescription",
783
+ "oneOf": [
784
+ {
785
+ "description": "The value of the type property MUST be an unordered set. One of the items MUST be the IRI 'ResultDescription'.",
786
+ "$comment": "Origin: IRI (DerivedType); A `NormalizedString` that represents an Internationalized Resource Identifier (IRI), which extends the ASCII characters subset of the Uniform Resource Identifier (URI).",
787
+ "type": "string"
788
+ },
789
+ {
790
+ "type": "array",
791
+ "minItems": 1,
792
+ "items": {
793
+ "description": "The value of the type property MUST be an unordered set. One of the items MUST be the IRI 'ResultDescription'.",
794
+ "$comment": "Origin: IRI (DerivedType); A `NormalizedString` that represents an Internationalized Resource Identifier (IRI), which extends the ASCII characters subset of the Uniform Resource Identifier (URI).",
795
+ "type": "string"
796
+ }
797
+ }
798
+ ]
799
+ },
800
+ "alignment": {
801
+ "type": "array",
802
+ "minItems": 1,
803
+ "items": {
804
+ "$ref": "#/$defs/Alignment"
805
+ }
806
+ },
807
+ "allowedValue": {
808
+ "type": "array",
809
+ "minItems": 1,
810
+ "items": {
811
+ "description": "An ordered list of allowed values. The values should be ordered from low to high as determined by the achievement creator.",
812
+ "$comment": "Origin: String (PrimitiveType); Character strings.",
813
+ "type": "string"
814
+ }
815
+ },
816
+ "name": {
817
+ "description": "The name of the result.",
818
+ "$comment": "Origin: String (PrimitiveType); Character strings.",
819
+ "type": "string"
820
+ },
821
+ "requiredLevel": {
822
+ "description": "The `id` of the rubric criterion level required to pass as determined by the achievement creator.",
823
+ "$comment": "Origin: URI (DerivedType); A `NormalizedString` that respresents a Uniform Resource Identifier (URI).",
824
+ "type": "string"
825
+ },
826
+ "requiredValue": {
827
+ "description": "A value from `allowedValue` or within the range of `valueMin` to `valueMax` required to pass as determined by the achievement creator.",
828
+ "$comment": "Origin: String (PrimitiveType); Character strings.",
829
+ "type": "string"
830
+ },
831
+ "resultType": {
832
+ "description": "The type of result this description represents. This is an extensible enumerated vocabulary.",
833
+ "$comment": "Origin: ResultType (EnumExt); The type of result. This is an extensible enumerated vocabulary. Extending the vocabulary makes use of a naming convention.",
834
+ "anyOf": [
835
+ {
836
+ "type": "string",
837
+ "enum": [
838
+ "GradePointAverage",
839
+ "LetterGrade",
840
+ "Percent",
841
+ "PerformanceLevel",
842
+ "PredictedScore",
843
+ "RawScore",
844
+ "Result",
845
+ "RubricCriterion",
846
+ "RubricCriterionLevel",
847
+ "RubricScore",
848
+ "ScaledScore",
849
+ "Status"
850
+ ]
851
+ },
852
+ {
853
+ "type": "string",
854
+ "pattern": "(ext:)[a-z|A-Z|0-9|.|-|_]+"
855
+ }
856
+ ]
857
+ },
858
+ "rubricCriterionLevel": {
859
+ "type": "array",
860
+ "minItems": 1,
861
+ "items": {
862
+ "$ref": "#/$defs/RubricCriterionLevel"
863
+ }
864
+ },
865
+ "valueMax": {
866
+ "description": "The maximum possible `value` that may be asserted in a linked result.",
867
+ "$comment": "Origin: String (PrimitiveType); Character strings.",
868
+ "type": "string"
869
+ },
870
+ "valueMin": {
871
+ "description": "The minimum possible `value` that may be asserted in a linked result.",
872
+ "$comment": "Origin: String (PrimitiveType); Character strings.",
873
+ "type": "string"
874
+ }
875
+ },
876
+ "required": [
877
+ "id",
878
+ "type",
879
+ "name",
880
+ "resultType"
881
+ ],
882
+ "additionalProperties": true
883
+ },
884
+ "RubricCriterionLevel": {
885
+ "description": "Describes a rubric criterion level.",
886
+ "type": "object",
887
+ "properties": {
888
+ "id": {
889
+ "description": "The unique URI for this rubric criterion level. Required so a result can link to this rubric criterion level.",
890
+ "$comment": "Origin: URI (DerivedType); A `NormalizedString` that respresents a Uniform Resource Identifier (URI).",
891
+ "type": "string"
892
+ },
893
+ "type": {
894
+ "default": "RubricCriterionLevel",
895
+ "oneOf": [
896
+ {
897
+ "description": "The value of the type property MUST be an unordered set. One of the items MUST be the IRI 'RubricCriterionLevel'.",
898
+ "$comment": "Origin: IRI (DerivedType); A `NormalizedString` that represents an Internationalized Resource Identifier (IRI), which extends the ASCII characters subset of the Uniform Resource Identifier (URI).",
899
+ "type": "string"
900
+ },
901
+ {
902
+ "type": "array",
903
+ "minItems": 1,
904
+ "items": {
905
+ "description": "The value of the type property MUST be an unordered set. One of the items MUST be the IRI 'RubricCriterionLevel'.",
906
+ "$comment": "Origin: IRI (DerivedType); A `NormalizedString` that represents an Internationalized Resource Identifier (IRI), which extends the ASCII characters subset of the Uniform Resource Identifier (URI).",
907
+ "type": "string"
908
+ }
909
+ }
910
+ ]
911
+ },
912
+ "alignment": {
913
+ "type": "array",
914
+ "minItems": 1,
915
+ "items": {
916
+ "$ref": "#/$defs/Alignment"
917
+ }
918
+ },
919
+ "description": {
920
+ "description": "Description of the rubric criterion level.",
921
+ "$comment": "Origin: String (PrimitiveType); Character strings.",
922
+ "type": "string"
923
+ },
924
+ "level": {
925
+ "description": "The rubric performance level in terms of success.",
926
+ "$comment": "Origin: String (PrimitiveType); Character strings.",
927
+ "type": "string"
928
+ },
929
+ "name": {
930
+ "description": "The name of the rubric criterion level.",
931
+ "$comment": "Origin: String (PrimitiveType); Character strings.",
932
+ "type": "string"
933
+ },
934
+ "points": {
935
+ "description": "The points associated with this rubric criterion level.",
936
+ "$comment": "Origin: String (PrimitiveType); Character strings.",
937
+ "type": "string"
938
+ }
939
+ },
940
+ "required": [
941
+ "id",
942
+ "type",
943
+ "name"
944
+ ],
945
+ "additionalProperties": true
946
+ },
947
+ "EndorsementSubject": {
948
+ "description": "A collection of information about the subject of the endorsement.",
949
+ "type": "object",
950
+ "properties": {
951
+ "id": {
952
+ "description": "The identifier of the individual, entity, organization, assertion, or achievement that is endorsed.",
953
+ "$comment": "Origin: URI (DerivedType); A `NormalizedString` that respresents a Uniform Resource Identifier (URI).",
954
+ "type": "string"
955
+ },
956
+ "type": {
957
+ "oneOf": [
958
+ {
959
+ "description": "The value of the type property MUST be an unordered set. One of the items MUST be the URI 'VerifiableCredential', and one of the items MUST be the URI 'EndorsementSubject'.",
960
+ "$comment": "Origin: IRI (DerivedType); A `NormalizedString` that represents an Internationalized Resource Identifier (IRI), which extends the ASCII characters subset of the Uniform Resource Identifier (URI).",
961
+ "type": "string"
962
+ },
963
+ {
964
+ "type": "array",
965
+ "minItems": 1,
966
+ "items": {
967
+ "description": "The value of the type property MUST be an unordered set. One of the items MUST be the URI 'VerifiableCredential', and one of the items MUST be the URI 'EndorsementSubject'.",
968
+ "$comment": "Origin: IRI (DerivedType); A `NormalizedString` that represents an Internationalized Resource Identifier (IRI), which extends the ASCII characters subset of the Uniform Resource Identifier (URI).",
969
+ "type": "string"
970
+ }
971
+ }
972
+ ]
973
+ },
974
+ "endorsementComment": {
975
+ "description": "Allows endorsers to make a simple claim in writing about the entity.",
976
+ "$comment": "Origin: Markdown (DerivedType); A `String` that may contain Markdown.",
977
+ "type": "string"
978
+ }
979
+ },
980
+ "required": [
981
+ "id",
982
+ "type"
983
+ ],
984
+ "additionalProperties": false
985
+ },
986
+ "Related": {
987
+ "description": "Identifies a related achievement.",
988
+ "type": "object",
989
+ "properties": {
990
+ "id": {
991
+ "description": "The related achievement.",
992
+ "$comment": "Origin: URI (DerivedType); A `NormalizedString` that respresents a Uniform Resource Identifier (URI).",
993
+ "type": "string"
994
+ },
995
+ "type": {
996
+ "oneOf": [
997
+ {
998
+ "description": "The value of the type property MUST be an unordered set. One of the items MUST be the IRI 'Related'.",
999
+ "$comment": "Origin: IRI (DerivedType); A `NormalizedString` that represents an Internationalized Resource Identifier (IRI), which extends the ASCII characters subset of the Uniform Resource Identifier (URI).",
1000
+ "type": "string"
1001
+ },
1002
+ {
1003
+ "type": "array",
1004
+ "minItems": 1,
1005
+ "items": {
1006
+ "description": "The value of the type property MUST be an unordered set. One of the items MUST be the IRI 'Related'.",
1007
+ "$comment": "Origin: IRI (DerivedType); A `NormalizedString` that represents an Internationalized Resource Identifier (IRI), which extends the ASCII characters subset of the Uniform Resource Identifier (URI).",
1008
+ "type": "string"
1009
+ }
1010
+ }
1011
+ ]
1012
+ },
1013
+ "@language": {
1014
+ "description": "The language of the related achievement.",
1015
+ "$comment": "Origin: LanguageCode (DerivedType); A language code [[BCP47]].",
1016
+ "type": "string",
1017
+ "pattern": "^[a-z]{2,4}(-[A-Z][a-z]{3})?(-([A-Z]{2}|[0-9]{3}))?$"
1018
+ },
1019
+ "version": {
1020
+ "description": "The version of the related achievement.",
1021
+ "$comment": "Origin: String (PrimitiveType); Character strings.",
1022
+ "type": "string"
1023
+ }
1024
+ },
1025
+ "required": [
1026
+ "id",
1027
+ "type"
1028
+ ],
1029
+ "additionalProperties": false
1030
+ },
1031
+ "Profile": {
1032
+ "description": "A Profile is a collection of information that describes the entity or organization using Open Badges. Issuers must be represented as Profiles, and recipients, endorsers, or other entities may also be represented using this vocabulary. Each Profile that represents an Issuer may be referenced in many BadgeClasses that it has defined. Anyone can create and host an Issuer file to start issuing Open Badges. Issuers may also serve as recipients of Open Badges, often identified within an Assertion by specific properties, like their url or contact email address.",
1033
+ "type": "object",
1034
+ "properties": {
1035
+ "id": {
1036
+ "description": "Unique URI for the Issuer/Profile file.",
1037
+ "$comment": "Origin: URI (DerivedType); A `NormalizedString` that respresents a Uniform Resource Identifier (URI).",
1038
+ "type": "string"
1039
+ },
1040
+ "type": {
1041
+ "default": "Profile",
1042
+ "oneOf": [
1043
+ {
1044
+ "description": "The value of the type property MUST be an unordered set. One of the items MUST be the IRI 'Profile'.",
1045
+ "$comment": "Origin: IRI (DerivedType); A `NormalizedString` that represents an Internationalized Resource Identifier (IRI), which extends the ASCII characters subset of the Uniform Resource Identifier (URI).",
1046
+ "type": "string"
1047
+ },
1048
+ {
1049
+ "type": "array",
1050
+ "minItems": 1,
1051
+ "items": {
1052
+ "description": "The value of the type property MUST be an unordered set. One of the items MUST be the IRI 'Profile'.",
1053
+ "$comment": "Origin: IRI (DerivedType); A `NormalizedString` that represents an Internationalized Resource Identifier (IRI), which extends the ASCII characters subset of the Uniform Resource Identifier (URI).",
1054
+ "type": "string"
1055
+ }
1056
+ }
1057
+ ]
1058
+ },
1059
+ "name": {
1060
+ "description": "The name of the entity or organization.",
1061
+ "$comment": "Origin: String (PrimitiveType); Character strings.",
1062
+ "type": "string"
1063
+ },
1064
+ "url": {
1065
+ "description": "The homepage or social media profile of the entity, whether individual or institutional. Should be a URL/URI Accessible via HTTP.",
1066
+ "$comment": "Origin: URI (DerivedType); A `NormalizedString` that respresents a Uniform Resource Identifier (URI).",
1067
+ "type": "string"
1068
+ },
1069
+ "phone": {
1070
+ "description": "A phone number.",
1071
+ "$comment": "Origin: PhoneNumber (DerivedType); A `NormalizedString` representing a phone number.",
1072
+ "type": "string"
1073
+ },
1074
+ "description": {
1075
+ "description": "A short description of the issuer entity or organization.",
1076
+ "$comment": "Origin: String (PrimitiveType); Character strings.",
1077
+ "type": "string"
1078
+ },
1079
+ "endorsement": {
1080
+ "type": "array",
1081
+ "minItems": 1,
1082
+ "items": {
1083
+ "$ref": "#/$defs/EndorsementCredential"
1084
+ }
1085
+ },
1086
+ "endorsementJwt": {
1087
+ "type": "array",
1088
+ "minItems": 1,
1089
+ "items": {
1090
+ "description": "Allows endorsers to make specific claims about the individual or organization represented by this profile. These endorsements are signed with the VC-JWT proof format.",
1091
+ "$comment": "Origin: CompactJws (DerivedType); A `String` in Compact JWS format [[RFC7515]].",
1092
+ "type": "string",
1093
+ "pattern": "^[a-zA-Z0-9_-]+\\.[a-zA-Z0-9_-]*\\.[a-zA-Z0-9_-]+$"
1094
+ }
1095
+ },
1096
+ "image": {
1097
+ "$ref": "#/$defs/Image"
1098
+ },
1099
+ "email": {
1100
+ "description": "An email address.",
1101
+ "$comment": "Origin: EmailAddress (DerivedType); A `NormalizedString` representing an email address.",
1102
+ "type": "string"
1103
+ },
1104
+ "address": {
1105
+ "$ref": "#/$defs/Address"
1106
+ },
1107
+ "otherIdentifier": {
1108
+ "type": "array",
1109
+ "minItems": 1,
1110
+ "items": {
1111
+ "$ref": "#/$defs/IdentifierEntry"
1112
+ }
1113
+ },
1114
+ "official": {
1115
+ "description": "If the entity is an organization, `official` is the name of an authorized official of the organization.",
1116
+ "$comment": "Origin: String (PrimitiveType); Character strings.",
1117
+ "type": "string"
1118
+ },
1119
+ "parentOrg": {
1120
+ "$ref": "#/$defs/Profile"
1121
+ },
1122
+ "familyName": {
1123
+ "description": "Family name. In the western world, often referred to as the 'last name' of a person.",
1124
+ "$comment": "Origin: String (PrimitiveType); Character strings.",
1125
+ "type": "string"
1126
+ },
1127
+ "givenName": {
1128
+ "description": "Given name. In the western world, often referred to as the 'first name' of a person.",
1129
+ "$comment": "Origin: String (PrimitiveType); Character strings.",
1130
+ "type": "string"
1131
+ },
1132
+ "additionalName": {
1133
+ "description": "Additional name. Includes what is often referred to as 'middle name' in the western world.",
1134
+ "$comment": "Origin: String (PrimitiveType); Character strings.",
1135
+ "type": "string"
1136
+ },
1137
+ "patronymicName": {
1138
+ "description": "Patronymic name.",
1139
+ "$comment": "Origin: String (PrimitiveType); Character strings.",
1140
+ "type": "string"
1141
+ },
1142
+ "honorificPrefix": {
1143
+ "description": "Honorific prefix(es) preceding a person's name (e.g. 'Dr', 'Mrs' or 'Mr').",
1144
+ "$comment": "Origin: String (PrimitiveType); Character strings.",
1145
+ "type": "string"
1146
+ },
1147
+ "honorificSuffix": {
1148
+ "description": "Honorific suffix(es) following a person's name (e.g. 'M.D, PhD').",
1149
+ "$comment": "Origin: String (PrimitiveType); Character strings.",
1150
+ "type": "string"
1151
+ },
1152
+ "familyNamePrefix": {
1153
+ "description": "Family name prefix. As used in some locales, this is the leading part of a family name (e.g. 'de' in the name 'de Boer').",
1154
+ "$comment": "Origin: String (PrimitiveType); Character strings.",
1155
+ "type": "string"
1156
+ },
1157
+ "dateOfBirth": {
1158
+ "description": "No description supplied.",
1159
+ "$comment": "Origin: Date (PrimitiveType); An [[ISO8601]] calendar date using the syntax YYYY-MM-DD.",
1160
+ "type": "string",
1161
+ "format": "date"
1162
+ }
1163
+ },
1164
+ "required": [
1165
+ "id",
1166
+ "type"
1167
+ ],
1168
+ "additionalProperties": true
1169
+ },
1170
+ "Address": {
1171
+ "description": "An address for the described entity.",
1172
+ "type": "object",
1173
+ "properties": {
1174
+ "type": {
1175
+ "default": "Address",
1176
+ "oneOf": [
1177
+ {
1178
+ "description": "The value of the type property MUST be an unordered set. One of the items MUST be the IRI 'Address'.",
1179
+ "$comment": "Origin: IRI (DerivedType); A `NormalizedString` that represents an Internationalized Resource Identifier (IRI), which extends the ASCII characters subset of the Uniform Resource Identifier (URI).",
1180
+ "type": "string"
1181
+ },
1182
+ {
1183
+ "type": "array",
1184
+ "minItems": 1,
1185
+ "items": {
1186
+ "description": "The value of the type property MUST be an unordered set. One of the items MUST be the IRI 'Address'.",
1187
+ "$comment": "Origin: IRI (DerivedType); A `NormalizedString` that represents an Internationalized Resource Identifier (IRI), which extends the ASCII characters subset of the Uniform Resource Identifier (URI).",
1188
+ "type": "string"
1189
+ }
1190
+ }
1191
+ ]
1192
+ },
1193
+ "addressCountry": {
1194
+ "description": "A country.",
1195
+ "$comment": "Origin: String (PrimitiveType); Character strings.",
1196
+ "type": "string"
1197
+ },
1198
+ "addressCountryCode": {
1199
+ "description": "A country code. The value must be a ISO 3166-1 alpha-2 country code [[ISO3166-1]].",
1200
+ "$comment": "Origin: CountryCode (DerivedType); A two-digit ISO 3166-1 alpha-2 country code [[ISO3166-1]].",
1201
+ "type": "string"
1202
+ },
1203
+ "addressRegion": {
1204
+ "description": "A region within the country.",
1205
+ "$comment": "Origin: String (PrimitiveType); Character strings.",
1206
+ "type": "string"
1207
+ },
1208
+ "addressLocality": {
1209
+ "description": "A locality within the region.",
1210
+ "$comment": "Origin: String (PrimitiveType); Character strings.",
1211
+ "type": "string"
1212
+ },
1213
+ "streetAddress": {
1214
+ "description": "A street address within the locality.",
1215
+ "$comment": "Origin: String (PrimitiveType); Character strings.",
1216
+ "type": "string"
1217
+ },
1218
+ "postOfficeBoxNumber": {
1219
+ "description": "A post office box number for PO box addresses.",
1220
+ "$comment": "Origin: String (PrimitiveType); Character strings.",
1221
+ "type": "string"
1222
+ },
1223
+ "postalCode": {
1224
+ "description": "A postal code.",
1225
+ "$comment": "Origin: String (PrimitiveType); Character strings.",
1226
+ "type": "string"
1227
+ },
1228
+ "geo": {
1229
+ "$ref": "#/$defs/GeoCoordinates"
1230
+ }
1231
+ },
1232
+ "required": [
1233
+ "type"
1234
+ ],
1235
+ "additionalProperties": false
1236
+ },
1237
+ "GeoCoordinates": {
1238
+ "description": "The geographic coordinates of a location.",
1239
+ "type": "object",
1240
+ "properties": {
1241
+ "type": {
1242
+ "description": "The value of the type property MUST be an unordered set. One of the items MUST be the IRI 'GeoCoordinates'.",
1243
+ "$comment": "Origin: IRI (DerivedType); A `NormalizedString` that represents an Internationalized Resource Identifier (IRI), which extends the ASCII characters subset of the Uniform Resource Identifier (URI).",
1244
+ "type": "string",
1245
+ "default": "GeoCoordinates"
1246
+ },
1247
+ "latitude": {
1248
+ "description": "The latitude of the location [[WGS84]].",
1249
+ "$comment": "Origin: Float (PrimitiveType)",
1250
+ "type": "number"
1251
+ },
1252
+ "longitude": {
1253
+ "description": "The longitude of the location [[WGS84]].",
1254
+ "$comment": "Origin: Float (PrimitiveType)",
1255
+ "type": "number"
1256
+ }
1257
+ },
1258
+ "required": [
1259
+ "type",
1260
+ "latitude",
1261
+ "longitude"
1262
+ ],
1263
+ "additionalProperties": false
1264
+ },
1265
+ "Result": {
1266
+ "description": "Describes a result that was achieved.",
1267
+ "type": "object",
1268
+ "properties": {
1269
+ "type": {
1270
+ "default": "Result",
1271
+ "oneOf": [
1272
+ {
1273
+ "description": "The value of the type property MUST be an unordered set. One of the items MUST be the IRI 'Result'.",
1274
+ "$comment": "Origin: IRI (DerivedType); A `NormalizedString` that represents an Internationalized Resource Identifier (IRI), which extends the ASCII characters subset of the Uniform Resource Identifier (URI).",
1275
+ "type": "string"
1276
+ },
1277
+ {
1278
+ "type": "array",
1279
+ "minItems": 1,
1280
+ "items": {
1281
+ "description": "The value of the type property MUST be an unordered set. One of the items MUST be the IRI 'Result'.",
1282
+ "$comment": "Origin: IRI (DerivedType); A `NormalizedString` that represents an Internationalized Resource Identifier (IRI), which extends the ASCII characters subset of the Uniform Resource Identifier (URI).",
1283
+ "type": "string"
1284
+ }
1285
+ }
1286
+ ]
1287
+ },
1288
+ "achievedLevel": {
1289
+ "description": "If the result represents an achieved rubric criterion level (e.g. Mastered), the value is the `id` of the RubricCriterionLevel in linked ResultDescription.",
1290
+ "$comment": "Origin: URI (DerivedType); A `NormalizedString` that respresents a Uniform Resource Identifier (URI).",
1291
+ "type": "string"
1292
+ },
1293
+ "alignment": {
1294
+ "type": "array",
1295
+ "minItems": 1,
1296
+ "items": {
1297
+ "$ref": "#/$defs/Alignment"
1298
+ }
1299
+ },
1300
+ "resultDescription": {
1301
+ "description": "An achievement can have many result descriptions describing possible results. The value of `resultDescription` is the `id` of the result description linked to this result. The linked result description must be in the achievement that is being asserted.",
1302
+ "$comment": "Origin: URI (DerivedType); A `NormalizedString` that respresents a Uniform Resource Identifier (URI).",
1303
+ "type": "string"
1304
+ },
1305
+ "status": {
1306
+ "description": "The status of the achievement. Required if `resultType` of the linked ResultDescription is Status.",
1307
+ "$comment": "Origin: ResultStatusType (Enumeration); Defined vocabulary to convey the status of an achievement.",
1308
+ "type": "string",
1309
+ "enum": [
1310
+ "Completed",
1311
+ "Enrolled",
1312
+ "Failed",
1313
+ "InProgress",
1314
+ "OnHold",
1315
+ "Withdrew"
1316
+ ]
1317
+ },
1318
+ "value": {
1319
+ "description": "A string representing the result of the performance, or demonstration, of the achievement. For example, 'A' if the recipient received an A grade in class.",
1320
+ "$comment": "Origin: String (PrimitiveType); Character strings.",
1321
+ "type": "string"
1322
+ }
1323
+ },
1324
+ "required": [
1325
+ "type"
1326
+ ],
1327
+ "additionalProperties": true
1328
+ },
1329
+ "CredentialSchema": {
1330
+ "description": "Identify the type and location of a data schema.",
1331
+ "type": "object",
1332
+ "properties": {
1333
+ "id": {
1334
+ "description": "The value MUST be a URI identifying the schema file. One instance of `CredentialSchema` MUST have an `id` that is the URL of the JSON Schema for this credential defined by this specification.",
1335
+ "$comment": "Origin: URI (DerivedType); A `NormalizedString` that respresents a Uniform Resource Identifier (URI).",
1336
+ "type": "string"
1337
+ },
1338
+ "type": {
1339
+ "description": "The value MUST identify the type of data schema validation. One instance of `CredentialSchema` MUST have a `type` of 'JsonSchemaValidator2019'.",
1340
+ "$comment": "Origin: IRI (DerivedType); A `NormalizedString` that represents an Internationalized Resource Identifier (IRI), which extends the ASCII characters subset of the Uniform Resource Identifier (URI).",
1341
+ "type": "string"
1342
+ }
1343
+ },
1344
+ "required": [
1345
+ "id",
1346
+ "type"
1347
+ ],
1348
+ "additionalProperties": true
1349
+ }
1350
+ }
1351
+ }