{
    "openapi": "3.1.0",
    "info": {
        "title": "Grand Hotel Pomorie: stay quote",
        "version": "1.0",
        "description": "Read-only. Returns the exact price and online availability of a stay, calculated by the same rules as the booking form on the website. Nothing is reserved: the guest books and pays on book_url. Facts about the hotel: https://grandhotelpomorie.com/llms.txt",
        "contact": {
            "email": "reservations@grandhotelpomorie.com"
        }
    },
    "servers": [
        {
            "url": "https://grandhotelpomorie.com"
        }
    ],
    "paths": {
        "/wp-json/ghp/v1/quote": {
            "get": {
                "operationId": "getStayQuote",
                "summary": "Price and availability of a stay",
                "parameters": [
                    {
                        "name": "room",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string",
                            "enum": [
                                "double",
                                "junior",
                                "family",
                                "premium"
                            ]
                        },
                        "description": "double = Double Deluxe Room, junior = Junior Suite, family = Family Apartment, premium = Premium Apartment."
                    },
                    {
                        "name": "checkin",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string",
                            "format": "date"
                        }
                    },
                    {
                        "name": "checkout",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string",
                            "format": "date"
                        }
                    },
                    {
                        "name": "adults",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "integer",
                            "minimum": 1,
                            "maximum": 3
                        }
                    },
                    {
                        "name": "children_ages",
                        "in": "query",
                        "schema": {
                            "type": "string"
                        },
                        "description": "Comma-separated age group per child, up to 2: 0-2, 2-12, 12-18."
                    },
                    {
                        "name": "board",
                        "in": "query",
                        "schema": {
                            "type": "string",
                            "enum": [
                                "bb",
                                "hb"
                            ],
                            "default": "bb"
                        },
                        "description": "bb = bed and breakfast, hb = half board."
                    },
                    {
                        "name": "offer",
                        "in": "query",
                        "schema": {
                            "type": "string",
                            "enum": [
                                "none",
                                "package-3-4",
                                "grand-romance",
                                "golden-age-55"
                            ],
                            "default": "none"
                        }
                    },
                    {
                        "name": "lang",
                        "in": "query",
                        "schema": {
                            "type": "string",
                            "enum": [
                                "bg",
                                "en",
                                "ru",
                                "de"
                            ],
                            "default": "en"
                        },
                        "description": "Language of book_url."
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Quote. available=false comes with reason and message.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "available": {
                                            "type": "boolean"
                                        },
                                        "reason": {
                                            "type": "string"
                                        },
                                        "message": {
                                            "type": "string"
                                        },
                                        "nights": {
                                            "type": "integer"
                                        },
                                        "total_eur": {
                                            "type": "number"
                                        },
                                        "currency": {
                                            "type": "string"
                                        },
                                        "room_name": {
                                            "type": "string"
                                        },
                                        "board": {
                                            "type": "string"
                                        },
                                        "offer": {
                                            "type": "string"
                                        },
                                        "book_url": {
                                            "type": "string",
                                            "format": "uri"
                                        },
                                        "reservations": {
                                            "type": "object"
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Invalid parameters."
                    },
                    "429": {
                        "description": "Too many requests (60 per 10 minutes)."
                    }
                }
            }
        }
    }
}