Частично заполняет или изменяет салон текущего пользователя.
Салон определяется backend по текущему JWT-пользователю. Если переданные значения совпадают с уже сохраненными, backend возвращает changed = false и сообщение No changes were made to the salon.
Правила валидации:
- должен быть заполнен хотя бы один корректный field
name, если передан, не должен быть пустым и не должен быть длиннее 100 символовcover_photo_id, если передан, должен быть положительным ID файлаcover_photo_idдолжен принадлежать текущему пользователю и иметь purposeCARDcity, если передан, не должен быть пустым и не должен быть длиннее 30 символов- если передан
city, обязательно должна быть переданаgeolocation;geolocationбезcityразрешена address, если передан, не должен быть пустым и не должен быть длиннее 1000 символовgeolocation, если передан, должен содержатьlatиlongeolocation.latдолжен быть в диапазоне[-90, 90],geolocation.lon- в диапазоне[-180, 180]- если переданы
addressиgeolocation, backend сохраняет оба значения напрямую без повторного геокодирования - если передан
addressбезgeolocation, backend геокодирует адрес; при неуспешном геокодировании возвращается422 geocoding_failed - если передана
geolocationбезaddressи безcity, backend выполняет обратное геокодирование и сохраняет найденный адрес - если переданы
cityиgeolocationбезaddress, backend сохраняет координаты напрямую, аaddressустанавливает равнымcity contact_phone, если передан, должен быть валидным телефоном и не должен быть длиннее 32 символовdescription, если передан, не должен быть пустым и не должен быть длиннее 1000 символовinterior_description, если передан, не должен быть пустым и не должен быть длиннее 1000 символовcategory_ids, если передан, должен быть массивом уникальных положительных ID существующих категорийadvantages, если передан, должен содержать уникальные непустые строки, не больше 5 элементов, каждый элемент не длиннее 50 символовinterior_images, если передан, должен содержать уникальные положительные ID файлов и не больше 10 элементов- все файлы из
interior_imagesдолжны принадлежать текущему пользователю и иметь purposeCARD amenities, если передан, должен содержать уникальные значения enum и не больше 4 элементовworking_days, если передан, должен содержать ровно 7 элементов отMONDAYдоSUNDAYпо порядку- для рабочего дня
working = trueобязательныstart_timeиend_time - для выходного дня
working = falsestart_timeиend_timeдолжны бытьnull end_timeдолжен быть позжеstart_time, длительность рабочего интервала не меньше 30 минут
Требования:
- требуется JWT
- текущий пользователь должен быть участником салона
Security
bearerAuth or jwtCookie
ID файла обложки. Файл должен принадлежать пользователю и иметь purpose CARD.
Преимущества салона. Каждый элемент должен быть непустой строкой длиной до 50 символов.
ID фотографий интерьера. Все файлы должны принадлежать пользователю и иметь purpose CARD.
- https://felmee.comhttps://felmee.com/api/salon
- http://localhost:8080http://localhost:8080/api/salon
curl -i -X PATCH \
https://felmee.com/api/salon \
-H 'Authorization: Bearer <YOUR_JWT_HERE>' \
-H 'Content-Type: application/json' \
-d '{
"name": "Persona",
"cover_photo_id": 42,
"city": "Minsk",
"address": "Minsk, Nezavisimosti 1",
"geolocation": {
"lat": 53.9,
"lon": 27.56
},
"contact_phone": "+375291112233",
"description": "Beauty salon in the city center.",
"interior_description": "Bright studio with separate manicure rooms.",
"category_ids": [
1,
2
],
"advantages": [
"Parking",
"Wi-Fi"
],
"interior_images": [
201,
202
],
"amenities": [
"PARKING",
"TEA_COFFEE"
],
"working_days": [
{
"day_of_week": "MONDAY",
"working": true,
"start_time": "09:00",
"end_time": "18:00"
},
{
"day_of_week": "TUESDAY",
"working": true,
"start_time": "09:00",
"end_time": "18:00"
},
{
"day_of_week": "WEDNESDAY",
"working": true,
"start_time": "09:00",
"end_time": "18:00"
},
{
"day_of_week": "THURSDAY",
"working": true,
"start_time": "09:00",
"end_time": "18:00"
},
{
"day_of_week": "FRIDAY",
"working": true,
"start_time": "09:00",
"end_time": "18:00"
},
{
"day_of_week": "SATURDAY",
"working": false,
"start_time": null,
"end_time": null
},
{
"day_of_week": "SUNDAY",
"working": false,
"start_time": null,
"end_time": null
}
]
}'Салон успешно обработан
Устаревший camelCase-alias поля error_code; при ошибке оба поля содержат одинаковое значение.
Код ошибки. Для успешных ответов всегда null.
Enum:"invalid_body""unauthorized""not_found""conflict""object_modified_by_another_thread""action_too_late""too_many_request""code_is_gone""forbidden""user_blocked"
Response
{ "success": true, "message": "Salon updated successfully", "error_code": null, "data": { "changed": true, "name": "Persona", "description": "Beauty salon in the city center.", "interior_description": "Bright studio with separate manicure rooms.", "city": "Minsk", "address": "Minsk, Nezavisimosti 1", "geolocation": { … }, "contact_phone": "+375291112233", "cover_photo_id": 42, "category_ids": [ … ], "advantages": [ … ], "interior_images": [ … ], "amenities": [ … ], "working_days": [ … ], "rating": 4.27 } }