{
	"openapi": "3.0.1",
	"info": {
		"version": "1.0.0",
		"title": "R Guest API",
		"description": "R Guest API is use for obtaining RGuest information. All operations use encoding utf-8.",
		"termsOfService": "https://lvsc-developer.venetianlasvegas.com/terms/",
		"contact": {
			"email": "api-team@venetianlasvegas.com"
		},
		"license": {
			"name": "LVSC Developer 1.0",
			"url": "https://lvsc-developer.venetianlasvegas.com/licenses/LICENSE-1.0.html"
		}
	},
	"servers": [
		{
			"url": "https://vlv-proxy-api-tst.venetianlasvegasdev.com/api/v1",
			"description": "Test environment v1"
		},
		{
			"url": "https://vlv-proxy-api-dev.venetianlasvegasdev.com/api/v1",
			"description": "Dev environment v1"
		},
		{
			"url": "https://vlv-proxy-api-prd.venetianlasvegas.com/api/v1",
			"description": "Prod environment v1"
		},
		{
			"url": "https://vlv-proxy-api-mock.venetianlasvegasdev.com/api/v1",
			"description": "Mock environment v1"
		}
	],

	"tags": [
		{
			"name": "Ping",
			"description": "Ping operation to test api responsiveness."
		},
		{
			"name": "Suite Dining",
			"description": "Generates URL for suite dining"
		}
	],
	"paths": {
		"/rguest/ping": {
			"get": {
				"tags": [
					"Ping"
				],
				"operationId": "ping",
				"summary": "Ping",
				"responses": {
					"200": {
						"description": "pings internal api",
						"content": {
							"text/html": {}
						}
					}
				}
			}
		},

		"/rguest/getinsuitediningurl": {
			"post": {
				"tags": [
					"Suite Dining"
				],
				"operationId": "getinsuitediningurl",
				"summary": "Generates URL for suite dining",
				"description": "Generates and returns a secure In-Suite Dining launch URL for the guest. The URL enables access to the dining experience using guest information.",
				"security": [
					{
						"bearerAuth": []
					}
				],
				"requestBody": {
					"required": true,
					"content": {
						"application/json": {
							"schema": {
								"$ref": "#/components/schemas/suiteDiningUrlRequest"
							}
						},
						"application/xml": {
							"schema": {
								"$ref": "#/components/schemas/suiteDiningUrlRequest"
							}
						}
					}
				},
				"responses": {
					"200": {
						"description": "Success",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/suiteDiningUrlResponse"
								}
							},
							"application/xml": {
								"schema": {
									"$ref": "#/components/schemas/suiteDiningUrlResponse"
								}
							}
						}
					}
				}
			}
		}
	},

	"components": {
		"schemas": {

			"suiteDiningUrlRequest": {
				"xml": {
					"name": "suiteDiningUrlRequest"
				},
				"type": "object",
				"required": [
					"firstName",
					"lastName",
					"emailAddress"
				],
				"properties": {
					"firstName": {
						"xml": {
							"name": "firstName"
						},
						"type": "string",
						"example": "John",
						"description": "Patron's first name."
					},
					"lastName": {
						"xml": {
							"name": "lastName"
						},
						"type": "string",
						"example": "Smith",
						"description": "Patron's last name."
					},
					"emailAddress": {
						"xml": {
							"name": "emailAddress"
						},
						"type": "string",
						"example": "john.smith@vlv.com",
						"description": "Patron's email address."
					},
					"wingId": {
						"xml": {
							"name": "wingId"
						},
						"type": "string",
						"example": "PA",
						"description": "Suite wing ID."
					},
					"suiteNumber": {
						"xml": {
							"name": "suiteNumber"
						},
						"type": "string",
						"example": "3001",
						"description": "Suite number."
					}
				}
			},
			"suiteDiningUrlResponse": {
				"xml": { "name": "suiteDiningUrlResponse" },
				"type": "object",
				"properties": {
					"url": {
						"xml": { "name": "url" },
						"type": "string",
						"example": "https://orders.venetianlasvegasdev.com/x-session-token=eyJhbGciOiJIUzUxMiJ9.eyJmaXJzdE5hbWUiOiJSQUpLVU1BUiIsImxhc3ROYW1lIjoiSkFNQlVOQVRIQU4iLCJlbWFpbEFkZHJlc3MiOiJyYWprdW1hci50ZXN0QGNvbnRyYWN0b3IudmVuZXRpYW5sYXN2ZWdhcy5jb20iLCJza2lwQmFzZTY0Ijp0cnVlLCJza2lwQmFzZTY0a2V5RW5jcnlwdGlvbiI6dHJ1ZSwibm9uY2UiOiJ2ZW5Nb2JpbGUiLCJhY2Nlc3NUb2tlbiI6ImV5SmhiR2Np",
						"description": "Suite dining URL."
					}
				}
			},

			"apiResponses": {
				"xml": {
					"name": "ArrayOfApiResponse",
					"wrapped": true
				},
				"type": "array",
				"items": {
					"$ref": "#/components/schemas/apiResponse"
				}
			},
			"apiResponse": {
				"xml": {
					"name": "ApiResponse"
				},
				"type": "object",
				"properties": {
					"code": {
						"xml": {
							"name": "Code"
						},
						"type": "integer",
						"format": "int32",
						"example": 123,
						"description": "Response code."
					},
					"responseType": {
						"xml": {
							"name": "ResponseType"
						},
						"type": "string",
						"enum": [
							"Success",
							"Fail",
							"Warning"
						],
						"example": "Fail",
						"description": "Type of response."
					},
					"message": {
						"xml": {
							"name": "Message"
						},
						"type": "string",
						"example": "Operation Failed Response Message",
						"description": "Operation Failed Response Message"
					}
				}
			}
		},
		"securitySchemes": {
			"bearerAuth": {
				"type": "http",
				"scheme": "bearer",
				"bearerFormat": "JWT"
			}
		}
	}
}