{
	"id": "Reservation.json",
	"title": "Reservation",
	"description": "Describes a reservation for travel, dining or an event. Some reservations require tickets. \n\nNote: This type is for information about actual reservations, e.g. in confirmation emails or HTML pages with individual confirmations of reservations. For offers of tickets, restaurant reservations, flights, or rental cars, use Offer.",
	"media": {"type": "application/json;profile=http://schema.org/Reservation"},
	"allOf": [{"$ref": "Thing.json"}, {"$ref": "Intangible.json"}],
	"type": "object",
	"properties": {
		"bookingTime": {"$ref": "#/definitions/bookingTime"},
		"broker": {
			"oneOf": [
				{
					"type": "array",
					"items": {"$ref": "#/definitions/broker"}
				},
				{"$ref": "#/definitions/broker"}
			]
		},
		"modifiedTime": {"$ref": "#/definitions/modifiedTime"},
		"priceCurrency": {"$ref": "#/definitions/priceCurrency"},
		"programMembershipUsed": {
			"oneOf": [
				{"$ref": "ProgramMembership.json#/definitions/possibleRef"},
				{
					"type": "array",
					"items": {"$ref": "ProgramMembership.json#/definitions/possibleRef"}
				}
			]
		},
		"provider": {"$ref": "#/definitions/provider"},
		"reservationFor": {"$ref": "Thing.json#/definitions/possibleRef"},
		"reservationId": {
			"oneOf": [
				{
					"type": "array",
					"items": {"$ref": "#/definitions/reservationId"}
				},
				{"$ref": "#/definitions/reservationId"}
			]
		},
		"reservationStatus": {"$ref": "ReservationStatusType.json#/definitions/possibleRef"},
		"reservedTicket": {"$ref": "Ticket.json#/definitions/possibleRefArray"},
		"totalPrice": {"$ref": "#/definitions/totalPrice"},
		"underName": {"$ref": "#/definitions/underName"}
	},
	"definitions": {
		"array": {
			"type": "array",
			"items": {"$ref": "#"}
		},
		"bookingTime": {
			"title": "Booking Time",
			"description": "The date and time the reservation was booked.",
			"type": "string",
			"format": "date-time"
		},
		"broker": {
			"title": "Broker",
			"description": "An entity that arranges for an exchange between a buyer and a seller.  In most cases a broker never acquires or releases ownership of a product or service involved in an exchange.  If it is not clear whether an entity is a broker, seller, or buyer, the latter two terms are preferred. Supersedes bookingAgent.",
			"anyOf": [{"$ref": "Organization.json#/definitions/possibleRef"}, {"$ref": "Person.json#/definitions/possibleRef"}]
		},
		"modifiedTime": {
			"title": "Modified Time",
			"description": "The date and time the reservation was modified.",
			"type": "string",
			"format": "date-time"
		},
		"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": "{+$}"
					}]
				}
			]
		},
		"priceCurrency": {
			"title": "Price Currency",
			"description": "The currency of the price, or a price component when attached to PriceSpecification and its subtypes.\n\nUse standard formats: ISO 4217 currency format e.g. \"USD\"; Ticker symbol for cryptocurrencies e.g. \"BTC\"; well known names for Local Exchange Tradings Systems (LETS) and other currency types e.g. \"Ithaca HOUR\".",
			"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"}]
		},
		"reservationId": {
			"title": "Reservation Id",
			"description": "A unique identifier for the reservation.",
			"type": "string"
		},
		"totalPrice": {
			"title": "Total Price",
			"description": "The total price for the reservation or ticket, including applicable taxes, shipping, etc.\n\nUsage guidelines:\n\n\nUse values from 0123456789 (Unicode 'DIGIT ZERO' (U+0030) to 'DIGIT NINE' (U+0039)) rather than superficially similiar Unicode symbols.\nUse '.' (Unicode 'FULL STOP' (U+002E)) rather than ',' to indicate a decimal point. Avoid using these symbols as a readability separator.",
			"anyOf": [{"type": "string"}, {"$ref": "PriceSpecification.json#/definitions/possibleRef"}, {"type": "number"}]
		},
		"underName": {
			"title": "Under Name",
			"description": "The person or organization the reservation or ticket is for.",
			"anyOf": [{"$ref": "Organization.json#/definitions/possibleRef"}, {"$ref": "Person.json#/definitions/possibleRef"}]
		}
	}
}