{
	"id": "ProgramMembership.json",
	"title": "Program Membership",
	"description": "Used to describe membership in a loyalty programs (e.g. \"StarAliance\"), traveler clubs (e.g. \"AAA\"), purchase clubs (\"Safeway Club\"), etc.",
	"media": {"type": "application/json;profile=http://schema.org/ProgramMembership"},
	"allOf": [{"$ref": "Thing.json"}, {"$ref": "Intangible.json"}],
	"type": "object",
	"properties": {
		"hostingOrganization": {"$ref": "Organization.json#/definitions/possibleRef"},
		"member": {
			"oneOf": [
				{
					"type": "array",
					"items": {"$ref": "#/definitions/member"}
				},
				{"$ref": "#/definitions/member"}
			]
		},
		"membershipNumber": {
			"oneOf": [
				{
					"type": "array",
					"items": {"$ref": "#/definitions/membershipNumber"}
				},
				{"$ref": "#/definitions/membershipNumber"}
			]
		},
		"membershipPointsEarned": {"$ref": "#/definitions/membershipPointsEarned"},
		"programName": {"$ref": "#/definitions/programName"}
	},
	"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": "{+$}"
					}]
				}
			]
		},
		"member": {
			"title": "Member",
			"description": "A member of an Organization or a ProgramMembership. Organizations can be members of organizations; ProgramMembership is typically for individuals. Supersedes members, musicGroupMember. Inverse property: memberOf.",
			"anyOf": [{"$ref": "Organization.json#/definitions/possibleRef"}, {"$ref": "Person.json#/definitions/possibleRef"}]
		},
		"membershipNumber": {
			"title": "Membership Number",
			"description": "A unique identifier for the membership.",
			"type": "string"
		},
		"membershipPointsEarned": {
			"title": "Membership Points Earned",
			"description": "The number of membership points earned by the member. If necessary, the unitText can be used to express the units the points are issued in. (e.g. stars, miles, etc.)",
			"anyOf": [{"type": "number"}, {"$ref": "QuantitativeValue.json#/definitions/possibleRef"}]
		},
		"programName": {
			"title": "Program Name",
			"description": "The program providing the membership.",
			"type": "string"
		}
	}
}