Dan Anglin
8a530551c2
Create separate types for education and employment to fix the issue where unnecessary fields are created under both education and employment when a new CV is created.
216 lines
5.8 KiB
JSON
216 lines
5.8 KiB
JSON
{
|
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
"$id": "https://codeflow.dananglin.me.uk/apollo/spruce/raw/branch/main/schema/cv.schema.json",
|
|
|
|
"title": "CV",
|
|
"description": "A short written summary of your skills, achievements and experiences in relation to your role.",
|
|
"type": "object",
|
|
"properties": {
|
|
"firstName": {
|
|
"description": "Your first name(s).",
|
|
"type": "string"
|
|
},
|
|
"lastName": {
|
|
"description": "Your last name.",
|
|
"type": "string"
|
|
},
|
|
"jobTitle": {
|
|
"description": "Your current job title.",
|
|
"type": "string"
|
|
},
|
|
"contact": {
|
|
"additionalProperties": {
|
|
"type": "string"
|
|
},
|
|
"description": "Your contact information. You can use any key/value pairs here.",
|
|
"type": "object"
|
|
},
|
|
"links": {
|
|
"additionalProperties": {
|
|
"type": "string"
|
|
},
|
|
"description": "URLs to your online presence such as GitHub or your website. You can use any key/value pairs here.",
|
|
"type": "object"
|
|
},
|
|
"summary": {
|
|
"description": "A list of sentences summarising your skills, experiences and what you'd like to achieve in the near future.",
|
|
"items": { "type": "string" },
|
|
"type": "array"
|
|
},
|
|
"skills": {
|
|
"description": "A categorised list of your skills.",
|
|
"items": { "$ref": "#/$defs/skills" },
|
|
"type": "array"
|
|
},
|
|
"employment": {
|
|
"description": "A list of your employment history.",
|
|
"items": { "$ref": "#/$defs/employment" },
|
|
"type": "array"
|
|
},
|
|
"education": {
|
|
"description": "A list of your education experiences.",
|
|
"items": { "$ref": "#/$defs/education" },
|
|
"type": "array"
|
|
},
|
|
"interests": {
|
|
"description": "A list of sentences summarising your interests and hobbies.",
|
|
"items": { "type": "string" },
|
|
"type": "array"
|
|
}
|
|
},
|
|
"required": [
|
|
"firstName",
|
|
"lastName",
|
|
"jobTitle",
|
|
"summary",
|
|
"skills",
|
|
"employment",
|
|
"education",
|
|
"interests"
|
|
],
|
|
"additionalProperties": false,
|
|
|
|
"$defs": {
|
|
"skills": {
|
|
"properties": {
|
|
"category": {
|
|
"description": "The skills category.",
|
|
"type": "string"
|
|
},
|
|
"values": {
|
|
"items": {
|
|
"type": "string"
|
|
},
|
|
"description": "The skills listed in this category.",
|
|
"type": "array"
|
|
}
|
|
},
|
|
"required": [
|
|
"category",
|
|
"values"
|
|
],
|
|
"additionalProperties": false,
|
|
"type": "object"
|
|
},
|
|
"employment": {
|
|
"properties": {
|
|
"company": {
|
|
"description": "The company where your work experience took place.",
|
|
"type": "string"
|
|
},
|
|
"duration": {
|
|
"description": "The duration of the experience.",
|
|
"$ref": "#/$defs/duration"
|
|
},
|
|
"jobTitle": {
|
|
"description": "The job title of your experience.",
|
|
"type": "string"
|
|
},
|
|
"location": {
|
|
"description": "The location where the experience was based.",
|
|
"type": "string"
|
|
},
|
|
"locationType": {
|
|
"description": "The location type of your work experience (e.g. Remote, Hybrid, On-site).",
|
|
"type": "string"
|
|
},
|
|
"details": {
|
|
"description": "Further details of the experience (e.g. achievements, daily responsibilities, etc).",
|
|
"items": {
|
|
"type": "string"
|
|
},
|
|
"type": "array"
|
|
}
|
|
},
|
|
"required": [
|
|
"company",
|
|
"duration",
|
|
"jobTitle",
|
|
"location"
|
|
],
|
|
"additionalProperties": false,
|
|
"type": "object"
|
|
},
|
|
"education": {
|
|
"properties": {
|
|
"qualification": {
|
|
"description": "The qualifications gained from this educational experience.",
|
|
"type": "string"
|
|
},
|
|
"school": {
|
|
"description": "The school or university where you have studied.",
|
|
"type": "string"
|
|
},
|
|
"location": {
|
|
"description": "The location where the experience was based.",
|
|
"type": "string"
|
|
},
|
|
"duration": {
|
|
"description": "The duration of the experience.",
|
|
"$ref": "#/$defs/duration"
|
|
},
|
|
"details": {
|
|
"description": "Further details of the experience.",
|
|
"items": {
|
|
"type": "string"
|
|
},
|
|
"type": "array"
|
|
}
|
|
},
|
|
"required": [
|
|
"qualification",
|
|
"school",
|
|
"location",
|
|
"duration"
|
|
],
|
|
"additionalProperties": false,
|
|
"type": "object"
|
|
},
|
|
"duration": {
|
|
"properties": {
|
|
"start": {
|
|
"description": "The start date of the experience.",
|
|
"$ref": "#/$defs/date"
|
|
},
|
|
"end": {
|
|
"description": "The end date of the experience.",
|
|
"$ref": "#/$defs/date"
|
|
},
|
|
"present": {
|
|
"description": "Specifies whether you are currently employed or studying at the specified company or educational institute.",
|
|
"type": "boolean"
|
|
}
|
|
},
|
|
"additionalProperties": false,
|
|
"required": [ "start" ],
|
|
"type": "object"
|
|
},
|
|
"date": {
|
|
"properties": {
|
|
"year": {
|
|
"description": "The year (e.g. 2023).",
|
|
"type": "integer"
|
|
},
|
|
"month": {
|
|
"description": "The numerical value of the month (e.g. 5 for May).",
|
|
"minimum": 1,
|
|
"maximum": 12,
|
|
"type": "integer"
|
|
},
|
|
"day": {
|
|
"description": "The day of the month.",
|
|
"minimum": 1,
|
|
"maximum": 31,
|
|
"type": "integer"
|
|
}
|
|
},
|
|
"additionalProperties": false,
|
|
"required": [
|
|
"year",
|
|
"month",
|
|
"day"
|
|
],
|
|
"type": "object"
|
|
}
|
|
}
|
|
}
|