{
	"id": "EducationalOccupationalProgram.json",
	"title": "Educational Occupational Program",
	"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).",
	"media": {"type": "application/json;profile=http://schema.org/EducationalOccupationalProgram"},
	"allOf": [{"$ref": "Thing.json"}, {"$ref": "Intangible.json"}],
	"type": "object",
	"properties": {
		"educationalCredentialAwarded": {
			"oneOf": [
				{
					"type": "array",
					"items": {"$ref": "#/definitions/educationalCredentialAwarded"}
				},
				{"$ref": "#/definitions/educationalCredentialAwarded"}
			]
		},
		"occupationalCredentialAwarded": {
			"oneOf": [
				{
					"type": "array",
					"items": {"$ref": "#/definitions/occupationalCredentialAwarded"}
				},
				{"$ref": "#/definitions/occupationalCredentialAwarded"}
			]
		},
		"offers": {"$ref": "Offer.json#/definitions/possibleRefArray"},
		"programPrerequisites": {
			"oneOf": [
				{"$ref": "#/definitions/programPrerequisites"},
				{
					"type": "array",
					"items": {"$ref": "#/definitions/programPrerequisites"}
				}
			]
		},
		"provider": {"$ref": "#/definitions/provider"},
		"salaryUponCompletion": {"$ref": "MonetaryAmountDistribution.json#/definitions/possibleRef"},
		"timeToComplete": {"$ref": "Duration.json#/definitions/possibleRef"}
	},
	"definitions": {
		"array": {
			"type": "array",
			"items": {"$ref": "#"}
		},
		"possibleRef": {
			"oneOf": [
				{"$ref": "#"},
				{
					"type": "string",
					"format": "uri",
					"links": [{
						"rel": "full",
						"href": "{+$}"
					}]
				}
			]
		},
		"possibleRefArray": {
			"oneOf": [
				{
					"type": "array",
					"items": {"$ref": "#/definitions/possibleRef"}
				},
				{
					"type": "string",
					"format": "uri",
					"links": [{
						"rel": "full",
						"href": "{+$}"
					}]
				}
			]
		},
		"educationalCredentialAwarded": {
			"title": "Educational Credential Awarded",
			"description": "A description of the qualification, award, certificate, diploma or other educational credential awarded as a consequence of successful completion of this course or program.",
			"anyOf": [
				{
					"type": "string",
					"format": "uri"
				},
				{"type": "string"},
				{"$ref": "EducationalOccupationalCredential.json#/definitions/possibleRef"}
			]
		},
		"occupationalCredentialAwarded": {
			"title": "Occupational Credential Awarded",
			"description": "A description of the qualification, award, certificate, diploma or other occupational credential awarded as a consequence of successful completion of this course or program.",
			"anyOf": [
				{
					"type": "string",
					"format": "uri"
				},
				{"type": "string"},
				{"$ref": "EducationalOccupationalCredential.json#/definitions/possibleRef"}
			]
		},
		"programPrerequisites": {
			"title": "Program Prerequisites",
			"description": "Prerequisites for enrolling in the program.",
			"anyOf": [{"$ref": "AlignmentObject.json#/definitions/possibleRef"}, {"$ref": "Course.json#/definitions/possibleRef"}, {"$ref": "EducationalOccupationalCredential.json#/definitions/possibleRef"}, {"type": "string"}]
		},
		"provider": {
			"title": "Provider",
			"description": "The service provider, service operator, or service performer; the goods producer. Another party (a seller) may offer those services or goods on behalf of the provider. A provider may also serve as the seller. Supersedes carrier.",
			"anyOf": [{"$ref": "Organization.json#/definitions/possibleRef"}, {"$ref": "Person.json#/definitions/possibleRef"}]
		}
	}
}