{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "schema:WorkBasedProgram",
  "title": "WorkBasedProgram",
  "description": "A program with both an educational and employment component. Typically based at a workplace and structured around work-based learning, with the aim of instilling competencies related to an occupation. WorkBasedProgram is used to distinguish programs such as apprenticeships from school, college or other classroom based educational programs.",
  "type": "object",
  "allOf": [
    {
      "description": "A program offered by an institution which determines the learning progress to achieve an outcome, usually a credential like a degree or certificate. This would define a discrete set of opportunities (e.g., job, courses) that together constitute a program with a clear start, end, set of requirements, and transition to a new occupational opportunity (e.g., a job), or sometimes a higher educational opportunity (e.g., an advanced degree).",
      "$ref": "schema:EducationalOccupationalProgram"
    }
  ],
  "properties": {
    "occupationalCategory": {
      "description": "A category describing the job, preferably using a term from a taxonomy such as [BLS O*NET-SOC](http://www.onetcenter.org/taxonomy.html), [ISCO-08](https://www.ilo.org/public/english/bureau/stat/isco/isco08/) or similar, with the property repeated for each applicable value. Ideally the taxonomy should be identified, and both the textual label and formal code for the category should be provided.\\n\nNote: for historical reasons, any textual label and formal code provided as a literal may be assumed to be from O*NET-SOC.",
      "oneOf": [
        { "anyOf": [{ "type": "string" }, { "$ref": "schema:CategoryCode" }] },
        {
          "type": "array",
          "items": {
            "anyOf": [{ "type": "string" }, { "$ref": "schema:CategoryCode" }]
          }
        }
      ]
    },
    "trainingSalary": {
      "description": "The estimated salary earned while in the program.",
      "$ref": "schema:MonetaryAmountDistribution"
    }
  }
}
