{
"type": "object",
"properties": {
"city": {
"type": "string",
"description": "City or port name, e.g. 'Giżycko', 'Mikołajki'"
},
"from": {
"type": "string",
"format": "date",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Charter start date, format YYYY-MM-DD"
},
"to": {
"type": "string",
"format": "date",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Charter end date, format YYYY-MM-DD"
},
"category": {
"type": "string",
"enum": [
"sailing",
"motor",
"houseboat",
"scooter"
],
"description": "Yacht category"
},
"minPeople": {
"type": "integer",
"minimum": 1,
"description": "Minimum berths/people required"
},
"priceMax": {
"type": "number",
"minimum": 0,
"description": "Maximum price per day (PLN)"
},
"page": {
"type": "integer",
"minimum": 0,
"description": "Result page, 0-based"
}
},
"required": [],
"additionalProperties": false
}{
"type": "object",
"properties": {
"slug": {
"type": "string",
"pattern": "^[a-z0-9-]+$",
"minLength": 1,
"description": "Yacht slug from search_charters"
},
"from": {
"type": "string",
"format": "date",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Start date YYYY-MM-DD"
},
"to": {
"type": "string",
"format": "date",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "End date YYYY-MM-DD"
},
"oneWay": {
"type": "boolean",
"description": "Return the yacht at a different port (adds the one-way fee)"
}
},
"required": [
"slug",
"from",
"to"
],
"additionalProperties": false
}{
"type": "object",
"properties": {
"slug": {
"type": "string",
"pattern": "^[a-z0-9-]+$",
"minLength": 1,
"description": "Yacht slug from search_charters"
}
},
"required": [
"slug"
],
"additionalProperties": false
}{
"type": "object",
"properties": {
"slug": {
"type": "string",
"pattern": "^[a-z0-9-]+$",
"minLength": 1,
"description": "Yacht slug from search_charters"
},
"from": {
"type": "string",
"format": "date",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Start date YYYY-MM-DD"
},
"to": {
"type": "string",
"format": "date",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "End date YYYY-MM-DD"
},
"firstName": {
"type": "string",
"minLength": 2
},
"lastName": {
"type": "string",
"minLength": 2
},
"email": {
"type": "string",
"format": "email",
"description": "Customer email (booking confirmation + payment link)"
},
"phone": {
"type": "string",
"pattern": "^[+()0-9 .\\-]{9,}$",
"minLength": 9,
"description": "Customer phone, at least 9 digits"
},
"agreementAccepted": {
"type": "boolean",
"const": true,
"description": "Must be true — the customer accepts the booking & cancellation terms"
},
"oneWay": {
"type": "boolean"
},
"paymentProvider": {
"type": "string",
"enum": [
"payu",
"stripe"
],
"description": "Payment gateway (default payu)"
}
},
"required": [
"slug",
"from",
"to",
"firstName",
"lastName",
"email",
"phone",
"agreementAccepted"
],
"additionalProperties": false
}