schema-resume-validator 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/LICENSE +21 -0
- data/README.md +227 -0
- data/schemas/context.jsonld +501 -0
- data/schemas/meta-schema.json +435 -0
- data/schemas/schema-resume.xsd +366 -0
- data/schemas/schema.json +849 -0
- metadata +113 -0
|
@@ -0,0 +1,435 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://schema-resume.org/meta-schema.json",
|
|
3
|
+
"$id": "https://schema-resume.org/meta-schema.json",
|
|
4
|
+
"$comment": "Primary domain: https://schema-resume.org/ | Alternate domain: https://tradik.github.io/schema-resume/",
|
|
5
|
+
"title": "Schema Resume Meta-Schema v1.1.0",
|
|
6
|
+
"description": "Self-hosted meta-schema providing validation rules for resume documents without external dependencies",
|
|
7
|
+
"type": "object",
|
|
8
|
+
"version": "1.1.0",
|
|
9
|
+
"definitions": {
|
|
10
|
+
"schemaArray": {
|
|
11
|
+
"type": "array",
|
|
12
|
+
"minItems": 1,
|
|
13
|
+
"items": { "$ref": "#" }
|
|
14
|
+
},
|
|
15
|
+
"nonNegativeInteger": {
|
|
16
|
+
"type": "integer",
|
|
17
|
+
"minimum": 0
|
|
18
|
+
},
|
|
19
|
+
"nonNegativeIntegerDefault0": {
|
|
20
|
+
"allOf": [
|
|
21
|
+
{ "$ref": "#/definitions/nonNegativeInteger" },
|
|
22
|
+
{ "default": 0 }
|
|
23
|
+
]
|
|
24
|
+
},
|
|
25
|
+
"simpleTypes": {
|
|
26
|
+
"enum": [
|
|
27
|
+
"array",
|
|
28
|
+
"boolean",
|
|
29
|
+
"integer",
|
|
30
|
+
"null",
|
|
31
|
+
"number",
|
|
32
|
+
"object",
|
|
33
|
+
"string"
|
|
34
|
+
]
|
|
35
|
+
},
|
|
36
|
+
"stringArray": {
|
|
37
|
+
"type": "array",
|
|
38
|
+
"items": { "type": "string" },
|
|
39
|
+
"uniqueItems": true,
|
|
40
|
+
"default": []
|
|
41
|
+
}
|
|
42
|
+
},
|
|
43
|
+
"properties": {
|
|
44
|
+
"$id": {
|
|
45
|
+
"type": "string",
|
|
46
|
+
"format": "uri-reference"
|
|
47
|
+
},
|
|
48
|
+
"$schema": {
|
|
49
|
+
"type": "string",
|
|
50
|
+
"format": "uri"
|
|
51
|
+
},
|
|
52
|
+
"$ref": {
|
|
53
|
+
"type": "string",
|
|
54
|
+
"format": "uri-reference"
|
|
55
|
+
},
|
|
56
|
+
"$comment": {
|
|
57
|
+
"type": "string"
|
|
58
|
+
},
|
|
59
|
+
"@context": {
|
|
60
|
+
"description": "JSON-LD context for semantic web integration"
|
|
61
|
+
},
|
|
62
|
+
"@type": {
|
|
63
|
+
"type": "string",
|
|
64
|
+
"description": "JSON-LD type annotation for semantic web compatibility (e.g., 'schema:Person', 'schema:Organization')"
|
|
65
|
+
},
|
|
66
|
+
"additionalType": {
|
|
67
|
+
"type": "string",
|
|
68
|
+
"description": "Additional type information for semantic web compatibility, can be a URL or Schema.org type"
|
|
69
|
+
},
|
|
70
|
+
"label": {
|
|
71
|
+
"type": "string",
|
|
72
|
+
"description": "Human-readable title for the schema"
|
|
73
|
+
},
|
|
74
|
+
"name": {
|
|
75
|
+
"type": "string",
|
|
76
|
+
"description": "Name of the person or entity"
|
|
77
|
+
},
|
|
78
|
+
"email": {
|
|
79
|
+
"type": "string",
|
|
80
|
+
"description": "Email address"
|
|
81
|
+
},
|
|
82
|
+
"phone": {
|
|
83
|
+
"type": "string",
|
|
84
|
+
"description": "Phone number"
|
|
85
|
+
},
|
|
86
|
+
"url": {
|
|
87
|
+
"type": "string",
|
|
88
|
+
"description": "URL or web address"
|
|
89
|
+
},
|
|
90
|
+
"image": {
|
|
91
|
+
"type": "string",
|
|
92
|
+
"description": "Image URL"
|
|
93
|
+
},
|
|
94
|
+
"summary": {
|
|
95
|
+
"type": "string",
|
|
96
|
+
"description": "Summary or description text"
|
|
97
|
+
},
|
|
98
|
+
"location": {
|
|
99
|
+
"type": "object",
|
|
100
|
+
"description": "Location or address information"
|
|
101
|
+
},
|
|
102
|
+
"profiles": {
|
|
103
|
+
"type": "array",
|
|
104
|
+
"description": "Social media and professional profiles"
|
|
105
|
+
},
|
|
106
|
+
"nationalities": {
|
|
107
|
+
"type": "array",
|
|
108
|
+
"description": "Citizenship and nationality information"
|
|
109
|
+
},
|
|
110
|
+
"description": {
|
|
111
|
+
"type": "string",
|
|
112
|
+
"description": "Explanatory text describing the purpose or usage"
|
|
113
|
+
},
|
|
114
|
+
"default": {
|
|
115
|
+
"description": "Default value for this property"
|
|
116
|
+
},
|
|
117
|
+
"readOnly": {
|
|
118
|
+
"type": "boolean",
|
|
119
|
+
"default": false,
|
|
120
|
+
"description": "Indicates if the property is read-only"
|
|
121
|
+
},
|
|
122
|
+
"examples": {
|
|
123
|
+
"type": "array",
|
|
124
|
+
"items": {},
|
|
125
|
+
"description": "Example values demonstrating valid data"
|
|
126
|
+
},
|
|
127
|
+
"multipleOf": {
|
|
128
|
+
"type": "number",
|
|
129
|
+
"exclusiveMinimum": 0,
|
|
130
|
+
"description": "Value must be divisible by this number"
|
|
131
|
+
},
|
|
132
|
+
"maximum": {
|
|
133
|
+
"type": "number",
|
|
134
|
+
"description": "Maximum allowed value (inclusive)"
|
|
135
|
+
},
|
|
136
|
+
"exclusiveMaximum": {
|
|
137
|
+
"type": "number",
|
|
138
|
+
"description": "Maximum allowed value (exclusive)"
|
|
139
|
+
},
|
|
140
|
+
"minimum": {
|
|
141
|
+
"type": "number",
|
|
142
|
+
"description": "Minimum allowed value (inclusive)"
|
|
143
|
+
},
|
|
144
|
+
"exclusiveMinimum": {
|
|
145
|
+
"type": "number",
|
|
146
|
+
"description": "Minimum allowed value (exclusive)"
|
|
147
|
+
},
|
|
148
|
+
"maxLength": {
|
|
149
|
+
"$ref": "#/definitions/nonNegativeInteger",
|
|
150
|
+
"description": "Maximum length for string values"
|
|
151
|
+
},
|
|
152
|
+
"minLength": {
|
|
153
|
+
"$ref": "#/definitions/nonNegativeIntegerDefault0",
|
|
154
|
+
"description": "Minimum length for string values"
|
|
155
|
+
},
|
|
156
|
+
"pattern": {
|
|
157
|
+
"type": "string",
|
|
158
|
+
"format": "regex",
|
|
159
|
+
"description": "Regular expression pattern that string must match"
|
|
160
|
+
},
|
|
161
|
+
"additionalItems": {
|
|
162
|
+
"anyOf": [
|
|
163
|
+
{ "type": "boolean" },
|
|
164
|
+
{ "$ref": "#" }
|
|
165
|
+
],
|
|
166
|
+
"default": true,
|
|
167
|
+
"description": "Schema for additional array items beyond defined positions, or boolean to allow/disallow them"
|
|
168
|
+
},
|
|
169
|
+
"items": {
|
|
170
|
+
"anyOf": [
|
|
171
|
+
{ "$ref": "#" },
|
|
172
|
+
{ "$ref": "#/definitions/schemaArray" }
|
|
173
|
+
],
|
|
174
|
+
"default": true,
|
|
175
|
+
"description": "Schema for array items"
|
|
176
|
+
},
|
|
177
|
+
"maxItems": {
|
|
178
|
+
"$ref": "#/definitions/nonNegativeInteger",
|
|
179
|
+
"description": "Maximum number of items allowed in array"
|
|
180
|
+
},
|
|
181
|
+
"minItems": {
|
|
182
|
+
"$ref": "#/definitions/nonNegativeIntegerDefault0",
|
|
183
|
+
"description": "Minimum number of items required in array"
|
|
184
|
+
},
|
|
185
|
+
"uniqueItems": {
|
|
186
|
+
"type": "boolean",
|
|
187
|
+
"default": false,
|
|
188
|
+
"description": "Whether all array items must be unique"
|
|
189
|
+
},
|
|
190
|
+
"contains": {
|
|
191
|
+
"$ref": "#",
|
|
192
|
+
"description": "Schema that at least one array item must match"
|
|
193
|
+
},
|
|
194
|
+
"maxProperties": {
|
|
195
|
+
"$ref": "#/definitions/nonNegativeInteger",
|
|
196
|
+
"description": "Maximum number of properties allowed in object"
|
|
197
|
+
},
|
|
198
|
+
"minProperties": {
|
|
199
|
+
"$ref": "#/definitions/nonNegativeIntegerDefault0",
|
|
200
|
+
"description": "Minimum number of properties required in object"
|
|
201
|
+
},
|
|
202
|
+
"required": {
|
|
203
|
+
"$ref": "#/definitions/stringArray",
|
|
204
|
+
"description": "List of property names that must be present"
|
|
205
|
+
},
|
|
206
|
+
"additionalProperties": {
|
|
207
|
+
"anyOf": [
|
|
208
|
+
{ "type": "boolean" },
|
|
209
|
+
{ "$ref": "#" }
|
|
210
|
+
],
|
|
211
|
+
"default": true,
|
|
212
|
+
"description": "Schema for properties not explicitly defined, or boolean to allow/disallow them"
|
|
213
|
+
},
|
|
214
|
+
"definitions": {
|
|
215
|
+
"type": "object",
|
|
216
|
+
"additionalProperties": { "$ref": "#" },
|
|
217
|
+
"default": {},
|
|
218
|
+
"description": "Reusable schema definitions referenced elsewhere"
|
|
219
|
+
},
|
|
220
|
+
"properties": {
|
|
221
|
+
"type": "object",
|
|
222
|
+
"additionalProperties": { "$ref": "#" },
|
|
223
|
+
"default": {},
|
|
224
|
+
"description": "Schema definitions for object properties"
|
|
225
|
+
},
|
|
226
|
+
"group": {
|
|
227
|
+
"type": "string",
|
|
228
|
+
"description": "Grouping or categorization field"
|
|
229
|
+
},
|
|
230
|
+
"category": {
|
|
231
|
+
"type": "string",
|
|
232
|
+
"description": "Category or classification field"
|
|
233
|
+
},
|
|
234
|
+
"workType": {
|
|
235
|
+
"type": "string",
|
|
236
|
+
"description": "Type of work arrangement"
|
|
237
|
+
},
|
|
238
|
+
"keyAchievements": {
|
|
239
|
+
"type": "array",
|
|
240
|
+
"description": "Notable achievements"
|
|
241
|
+
},
|
|
242
|
+
"coreCompetencies": {
|
|
243
|
+
"type": "array",
|
|
244
|
+
"description": "Core professional competencies"
|
|
245
|
+
},
|
|
246
|
+
"title": {
|
|
247
|
+
"type": "string",
|
|
248
|
+
"description": "Honorific title or prefix"
|
|
249
|
+
},
|
|
250
|
+
"dateOfBirth": {
|
|
251
|
+
"type": "string",
|
|
252
|
+
"description": "Date of birth"
|
|
253
|
+
},
|
|
254
|
+
"age": {
|
|
255
|
+
"type": "integer",
|
|
256
|
+
"description": "Current age in years"
|
|
257
|
+
},
|
|
258
|
+
"placeOfBirth": {
|
|
259
|
+
"type": "object",
|
|
260
|
+
"description": "Location where the person was born"
|
|
261
|
+
},
|
|
262
|
+
"gender": {
|
|
263
|
+
"type": "string",
|
|
264
|
+
"description": "Gender identity of the person"
|
|
265
|
+
},
|
|
266
|
+
"legalNote": {
|
|
267
|
+
"type": "object",
|
|
268
|
+
"description": "Legal disclaimers or notes"
|
|
269
|
+
},
|
|
270
|
+
"dateCreated": {
|
|
271
|
+
"type": "string",
|
|
272
|
+
"description": "Document creation timestamp"
|
|
273
|
+
},
|
|
274
|
+
"workAuthorization": {
|
|
275
|
+
"type": "array",
|
|
276
|
+
"description": "Work authorization information for multiple countries"
|
|
277
|
+
},
|
|
278
|
+
"status": {
|
|
279
|
+
"type": "string",
|
|
280
|
+
"description": "Work authorization status"
|
|
281
|
+
},
|
|
282
|
+
"visaType": {
|
|
283
|
+
"type": "string",
|
|
284
|
+
"description": "Type or category of visa"
|
|
285
|
+
},
|
|
286
|
+
"validFrom": {
|
|
287
|
+
"type": "string",
|
|
288
|
+
"description": "Start date of validity"
|
|
289
|
+
},
|
|
290
|
+
"notes": {
|
|
291
|
+
"type": "string",
|
|
292
|
+
"description": "Additional notes or information"
|
|
293
|
+
},
|
|
294
|
+
"industry": {
|
|
295
|
+
"type": "string",
|
|
296
|
+
"description": "Industry sector or business domain"
|
|
297
|
+
},
|
|
298
|
+
"contactDetails": {
|
|
299
|
+
"type": "object",
|
|
300
|
+
"description": "Organization contact information"
|
|
301
|
+
},
|
|
302
|
+
"fax": {
|
|
303
|
+
"type": "string",
|
|
304
|
+
"description": "Fax number"
|
|
305
|
+
},
|
|
306
|
+
"address": {
|
|
307
|
+
"type": "string",
|
|
308
|
+
"description": "Street address"
|
|
309
|
+
},
|
|
310
|
+
"streetAddress": {
|
|
311
|
+
"type": "string",
|
|
312
|
+
"description": "Street address line"
|
|
313
|
+
},
|
|
314
|
+
"city": {
|
|
315
|
+
"type": "string",
|
|
316
|
+
"description": "City name"
|
|
317
|
+
},
|
|
318
|
+
"region": {
|
|
319
|
+
"type": "string",
|
|
320
|
+
"description": "Region, state, or province"
|
|
321
|
+
},
|
|
322
|
+
"postalCode": {
|
|
323
|
+
"type": "string",
|
|
324
|
+
"description": "Postal or ZIP code"
|
|
325
|
+
},
|
|
326
|
+
"countryCode": {
|
|
327
|
+
"type": "string",
|
|
328
|
+
"description": "Country code (ISO-3166-1 ALPHA-2)"
|
|
329
|
+
},
|
|
330
|
+
"canonical": {
|
|
331
|
+
"type": "string",
|
|
332
|
+
"description": "Canonical URL"
|
|
333
|
+
},
|
|
334
|
+
"version": {
|
|
335
|
+
"type": "string",
|
|
336
|
+
"description": "Version number"
|
|
337
|
+
},
|
|
338
|
+
"lastModified": {
|
|
339
|
+
"type": "string",
|
|
340
|
+
"description": "Last modification timestamp"
|
|
341
|
+
},
|
|
342
|
+
"dateModified": {
|
|
343
|
+
"type": "string",
|
|
344
|
+
"description": "Date modified timestamp"
|
|
345
|
+
},
|
|
346
|
+
"datePublished": {
|
|
347
|
+
"type": "string",
|
|
348
|
+
"description": "Date published timestamp"
|
|
349
|
+
},
|
|
350
|
+
"patternProperties": {
|
|
351
|
+
"type": "object",
|
|
352
|
+
"additionalProperties": { "$ref": "#" },
|
|
353
|
+
"propertyNames": { "format": "regex" },
|
|
354
|
+
"default": {},
|
|
355
|
+
"description": "Schema for properties matching regex patterns"
|
|
356
|
+
},
|
|
357
|
+
"dependencies": {
|
|
358
|
+
"type": "object",
|
|
359
|
+
"additionalProperties": {
|
|
360
|
+
"anyOf": [
|
|
361
|
+
{ "$ref": "#" },
|
|
362
|
+
{ "$ref": "#/definitions/stringArray" }
|
|
363
|
+
]
|
|
364
|
+
},
|
|
365
|
+
"description": "Property dependencies and requirements"
|
|
366
|
+
},
|
|
367
|
+
"propertyNames": {
|
|
368
|
+
"$ref": "#",
|
|
369
|
+
"description": "Schema that all property names must match"
|
|
370
|
+
},
|
|
371
|
+
"const": {
|
|
372
|
+
"description": "Exact value that must match"
|
|
373
|
+
},
|
|
374
|
+
"enum": {
|
|
375
|
+
"type": "array",
|
|
376
|
+
"items": {},
|
|
377
|
+
"minItems": 1,
|
|
378
|
+
"uniqueItems": true,
|
|
379
|
+
"description": "List of allowed values"
|
|
380
|
+
},
|
|
381
|
+
"type": {
|
|
382
|
+
"anyOf": [
|
|
383
|
+
{ "$ref": "#/definitions/simpleTypes" },
|
|
384
|
+
{
|
|
385
|
+
"type": "array",
|
|
386
|
+
"items": { "$ref": "#/definitions/simpleTypes" },
|
|
387
|
+
"minItems": 1,
|
|
388
|
+
"uniqueItems": true
|
|
389
|
+
}
|
|
390
|
+
],
|
|
391
|
+
"description": "Expected data type or types"
|
|
392
|
+
},
|
|
393
|
+
"format": {
|
|
394
|
+
"type": "string",
|
|
395
|
+
"description": "Semantic format for string validation (email, uri, date, etc.)"
|
|
396
|
+
},
|
|
397
|
+
"contentMediaType": {
|
|
398
|
+
"type": "string",
|
|
399
|
+
"description": "Media type of string content"
|
|
400
|
+
},
|
|
401
|
+
"contentEncoding": {
|
|
402
|
+
"type": "string",
|
|
403
|
+
"description": "Encoding used for string content"
|
|
404
|
+
},
|
|
405
|
+
"if": {
|
|
406
|
+
"$ref": "#",
|
|
407
|
+
"description": "Conditional schema - if this matches, then 'then' applies"
|
|
408
|
+
},
|
|
409
|
+
"then": {
|
|
410
|
+
"$ref": "#",
|
|
411
|
+
"description": "Schema to apply when 'if' condition is met"
|
|
412
|
+
},
|
|
413
|
+
"else": {
|
|
414
|
+
"$ref": "#",
|
|
415
|
+
"description": "Schema to apply when 'if' condition is not met"
|
|
416
|
+
},
|
|
417
|
+
"allOf": {
|
|
418
|
+
"$ref": "#/definitions/schemaArray",
|
|
419
|
+
"description": "Value must match all of these schemas"
|
|
420
|
+
},
|
|
421
|
+
"anyOf": {
|
|
422
|
+
"$ref": "#/definitions/schemaArray",
|
|
423
|
+
"description": "Value must match at least one of these schemas"
|
|
424
|
+
},
|
|
425
|
+
"oneOf": {
|
|
426
|
+
"$ref": "#/definitions/schemaArray",
|
|
427
|
+
"description": "Value must match exactly one of these schemas"
|
|
428
|
+
},
|
|
429
|
+
"not": {
|
|
430
|
+
"$ref": "#",
|
|
431
|
+
"description": "Value must not match this schema"
|
|
432
|
+
}
|
|
433
|
+
},
|
|
434
|
+
"default": true
|
|
435
|
+
}
|