# findfreelancer.ru API - `POST /profile` - [регистрация (создать профиль)](#`POST-/profile`---регистрация) - `POST /login` - [авторизация (логин)](#`POST-/login`---авторизация) - `DELETE /logout` - [выйти из профиля](#`DELETE-/logout---выйти-из-профиля`) - `PUT /profile/id:[0-9]+` - [изменить профиль](#`PUT-/profile/id:[0-9]+`---изменить-профиль) - `POST /profile/avatar` - [загрузить фотку (аватарку)](#`POST-/profile/avatar`---загрузить-фотку) - `POST /profile/id[0-9]+/specialize` - [добавить специализацию](#`POST-/profile/id[0-9]+/specialize`---добавить-специализацию) - `DELETE /profile/id[0-9]+/specialize` - [удалить специализацию](#`DELETE-/profile/id[0-9]+/specialize`---удалить-специализацию) - `GET /profile/id:[0-9]+` - [получить всю информацию о юзере](#`GET-/profile/id:[0-9]+`---получить-всю-информацию-о-юзере) - `GET profile/authorized` - [проверить аторизован ли пользователь](#`GET-profile/authorized`---проверить-аторизован-ли-пользователь) - `POST /order` - [создать заказ](#`POST-/order`---создать-заказ) - `GET /order/id:[0-9]+` - [получить всю информация о заказе](#`GET-/order/id:[0-9]+`---получить-всю-информация-о-заказе) - `POST /order/id:[0-9]+/response` - [добавить отклик](#`POST-/order/id:[0-9]+/response`---добавить-отклик) - `GET /order/id:[0-9]+/response` - [получить все отклики на текущий заказ](#`GET-/order/id:[0-9]+/response`---получить-все-отклики-на-текущий-заказ`) - `PUT /order/id:[0-9]+/response` - [изменить отклик](#`PUT-/order/id:[0-9]+/response`---изменить-отклик) - `DELETE /order/id:[0-9]+/response` - [удалить отклик](#`DELETE-/order/id:[0-9]+/response`---удалить-отклик) - `GET /order` - [получить все актуальные заказы](#`GET-/order`---получить-все-актуальные-заказы) - `GET /order/profile/id:[0-9]` - [получить все заказы пользователя](#`GET-/order/profile/id:[0-9]`---получить-все-заказы-пользователя) - `PUT /order/id:[0-9]` - [изменить заказ](#`PUT-/order/id:[0-9]`---изменить-заказ) - `POST /vacancy` - [создать вакансию](#`POST-/vacancy`---создать-вакансию) - `GET /vacancy/id:[0-9]+` - [получить всю информацию о вакансии](#`GET-/vacancy/id:[0-9]+`---получить-всю-информацию-о-вакансии) - `POST /vacancy/id:[0-9]+/response` - [добавить отклик](#`POST-/order/id:[0-9]+/response`---добавить-отклик) - `GET /vacancy/id:[0-9]+/response` - [получить отклик](#`GET-/order/id:[0-9]+/response`---получить-отклик) 1. ### `POST /profile` - регистрация - Тело запроса: ```json { "email": "kek@mem.ru", "password": "2283221488", // не менее 6ти символов "login": "AleXDarkstalker98", "name_surname": "Глад Валакас", "about": "Я пожилой шалунишка, я стесняшка, я улыбашка. Я енотик полоскун, полоскаю свой ", "specializes": [ "Фронтенд", "Бекенд", "Кашеварение" ] // для исполнителя } ``` - Ответы: - 201 created ```json { "id": 322, "email": "kek@mem.ru", "login": "AleXDarkstalker98", "name_surname": "Глад Валакас", "about": "Я пожилой шалунишка, я стесняшка, я улыбашка. Я енотик полоскун, полоскаю свой ", "executor": true/false, "specializes": ["Фронтенд", "Бекенд", "Кашеварение"] // для исполнителя } ``` - 400 Ошибка в json ```json { "error": "Bad json" } ``` - 400 Невалидные данные в запросе ```json { "error": "Invalid data" } ``` - 400 Пользователь с таким имейлом уже существует ```json { "error": "Email duplicate" } ``` - 500 Ошибка на стороне сервера ```json { "error": "Internal server error" } ``` 2. ### `POST /login` - авторизация - Тело запроса: ```json { "email": "kek@mem.ru", "password": "2283221488" } ``` - Ответы: - 201 Created ```json { "id": 1488, "email": "kek@mem.ru", "login": "AleXDarkstalker98", "name_surname": "Глад Валакас", "executor": true/false, "about": "Я пожилой шалунишка, я стесняшка, я улыбашка. Я енотик полоскун, полоскаю свой " "specializes": ["Фронтенд", "Бекенд", "Кашеварение"] // для исполнителя } ``` - 400 Ошибка в json ```json { "error": "Bad json" } ``` - 401 Пользователь с таким имейлом не найден ```json { "error": "Unauthorized" } ``` - 401 Неверный пароль ```json { "error": "Bad password" } ``` - 500 Ошибка на стороне сервера ```json { "error": "Internal server error" } ``` 3. ### `DELETE /logout` - выйти из профиля - Ответы: - 200 OK - 401 - неавторизованный пользователь ```json { "error": "Unauthorized" } ``` - 404 - профиль не найден ```json { "error": "user not found" } ``` - 500 Ошибка на стороне сервера ```json { "error": "Internal server error" } ``` 4. ### `PUT /profile/id:[0-9]+` - изменить профиль - Тело запроса: ```json Все поля опциональны! Имейл не меняется! Заказчика исполнителем тоже сделать пока нельзя, если будет надо напишите мне { "old_password": "2283221488", // не менее 6ти символов "login": "AleXDarkstalker98", "name_surname": "Глад Валакас", "about": "Я старая няшка, пожилая я стесняшка. Я енотик полоскун, полоскаю свой ", "new-password": "alex1488" } ``` - Ответы: - 200 OK ```json { "id": 228, "email": "kek@mem.ru", "login": "AleXDarkstalker98", "name_surname": "Глад Валакас", "executor": true, // для заказчика поле не вернется "specializes": [ "Фронтенд", "Бекенд", "Кашеварение" ], // для исполнителя "about": "Я старая няшка, пожилая я стесняшка. Я енотик полоскун, полоскаю свой " } ``` - 400 Ошибка в json ```json { "error": "Bad json" } ``` - 400 Некорректные данные о пользователе ```json { "error": "Incorrect user data" } ``` - 400 - некорректный айди в урле ```json { "error": "Bad id" } ``` - 400 - айди в урле и в куках не совпали ```json { "error": "No right to modify" } ``` - 401 - неавторизованный пользователь ```json { "error": "Unauthorized" } ``` - 404 - профиль не найден ```json { "error": "user not found" } ``` - 500 Ошибка на стороне сервера ```json { "error": "Internal server error" } ``` 5. ### `POST /profile/id[0-9]+/specialize` - добавить специализацию - Тело запроса: ```json { "specialize": "Бекенд" } ``` - Ответы: - 201 Created ```json { "id": 322, "email": "kek@mem.ru", "login": "AleXDarkstalker98", "name_surname": "Глад Валакас", "executor": true/false, "about": "Я старая няшка, пожилая я стесняшка. Я енотик полоскун, полоскаю свой ", "specializes": ["Бекенд"], "img": "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEASABIAAD/" } ``` - 400 - нет тела запроса ```json { "error": "No body" } ``` - 400 - ошибка в json ```json { "error": "Bad json" } ``` - 400 - неправильное название специализации ```json { "error": "Bad specialize name" } ``` - 401 - неавторизованный пользователь ```json { "error": "Unauthorized" } ``` - 500 - ошибка на стороне сервера ```json { "error": "Internal server error" } ``` 6. ### `DELETE /profile/id[0-9]+/specialize` - удалить специализацию - Тело запроса: ```json { "specialize": "Бекенд" } ``` - Ответы: - 200 Ok ```json {} ``` - 400 - нет тела запроса ```json { "error": "No body" } ``` - 400 - ошибка в json ```json { "error": "Bad json" } ``` - 400 - неправильное название специализации ```json { "error": "Bad specialize name" } ``` - 401 - неавторизованный пользователь ```json { "error": "Unauthorized" } ``` - 403 - видимо что-то с куками ```json { "error": "Bad id" } ``` - 500 - ошибка на стороне сервера ```json { "error": "Internal server error" } ``` 8. ### `POST /profile/avatar` - загрузить фотку - Тело запроса: ```json { "img": "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEASABIAAD/" } ``` - Ответы: - 201 Created ```json { "id": 322, "email": "kek@mem.ru", "login": "AleXDarkstalker98", "name_surname": "Глад Валакас", "executor": true/false, "about": "Я старая няшка, пожилая я стесняшка. Я енотик полоскун, полоскаю свой ", "specializes": ["Бекенд разработчик"], //только для исполнителей "img":"data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEASABIAAD/" } ``` - 400 - нет тела запроса ```json { "error": "No body" } ``` - 400 - ошибка в json ```json { "error": "Bad json" } ``` - 401 - неавторизованный пользователь ```json { "error": "Unauthorized" } ``` - 403 - видимо что-то с куками ```json { "error": "Bad id" } ``` - 500 - ошибка на стороне сервера ```json { "error": "Internal server error" } ``` 6. ### `GET /profile/id:[0-9]+` - получить всю информацию о юзере - Ответы: - 200 ОК ```json { "id": 228, "login": "AleXDarkstalker98", "name_surname": "Глад Валакас", "executor": true, // для заказчика поле не вернется "specializes": [ // только для исполнителей "Фронтенд", "Бекенд" ] "img": "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEASABIAAD/" "about": "Я старая няшка, пожилая я стесняшка. Я енотик полоскун, полоскаю свой ", } ``` - 400 - некорректный айди в урле ```json { "error": "Bad id" } ``` - 404 - пользователя не существует ``` json { "error": "user not found" } ``` - 500 - ошибка на стороне сервера ```json { "error": "Internal server error" } ``` 7. ### `GET profile/authorized` - проверить аторизован ли пользователь - Ответы: - 200 ОК ```json { "id": 228, "executor": true/false } ``` - 401 - неавторизованный пользователь ```json { "error": "Unauthorized" } ``` - 403 - видимо что-то с куками ```json { "error": "Bad id" } ``` - 500 - ошибка на стороне сервера ```json { "error": "Internal server error" } ``` 8. ### `POST /order` - создать заказ - Тело запроса: ```json { "order_name": "Сверстать профиль", "category": "Верстка", "description": "Нужен профиль, чтобы в нем была вся необходимая информация, ничего не уезжало, и все было красиво и аккуратно", "budget": 1488, "deadline": 1617004533, //unix-time } ``` - Ответы: - 201 Created ```json { "id": 228, //id заказа "order_name": "сверстать профиль", "category": "Верстка" "customer_id": 322, //id создателя "budget": 1488, "deadline": 1617004533, //unix-time "description": "Нужен профиль, чтобы в нем была вся необходимая информация, ничего не уезжало, и все было красиво и аккуратно", } ```` - 400 Ошибка в json ```json { "error": "Bad json" } ``` - 400 Невалидные данные в запросе ```json { "error": "Invalid data" } ``` - 401 - неавторизованный пользователь ```json { "error": "Unauthorized" } ``` - 403 - видимо что-то с куками ```json { "error": "Bad id" } ``` - 500 Ошибка на стороне сервера ```json { "error": "Internal server error" } ``` 9. ### `GET /order/id:[0-9]+` - получить всю информация о заказе - Ответы: - 200 OK ```json { "id": 228, //id заказа "category": "Верстка", "order_name": "сверстать профиль", "customer_id": 322, //id создателя "budget": 1488, "deadline": 1617004533, //unix-time "description": "Нужен профиль, чтобы в нем была вся необходимая информация, ничего не уезжало, и все было красиво и аккуратно", "login": "AlexDarkStalker", "img": "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEASABIAAD/" } ``` - 400 - некорретный айди в урле ```json { "error": "Bad id" } ``` - 404 - заказа не существует ``` json { "error": "order not found" } ``` - 500 - ошибка на стороне сервера ```json { "error": "Internal server error" } ``` 10. ### `POST /order/id:[0-9]+/response` - добавить отклик - Тело запроса: ```json { "user_id": 322, "rate": 1488, "time": 1617952689, // время отклика } ``` - Ответы: - 201 Created ```json { "id": 1, "order_id": 228, "user_id": 322, "rate": 1488, "user_login": "AlexDarkStalker98", "user_img": "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEASABIAAD/", "time": 1617952689, // время отклика } ``` - 400 - нет тела запроса ```json { "error": "No body" } ``` - 400 - ошибка в json ```json { "error": "Bad json" } ``` - 401 - неавторизованный пользователь ```json { "error": "Unauthorized" } ``` - 404 - заказ не найден ```json { "error": "Order not found" } ``` - 500 - ошибка на стороне сервера ```json { "error": "Internal server error" } ``` 11. ### `GET /order/id:[0-9]+/response` - получить все отклики на текущий заказ - Ответы: - 200 OK ```json { [ { "id": 1, "order_id": 228, "user_id": 322, "rate": 1488, "user_login": "AlexDarkStalker98", "user_img": "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEASABIAAD/", "time": 1617952689 // время отклика }, { "id": 1, "order_id": 228, "user_id": 322, "rate": 1488, "user_login": "AlexDarkStalker98", "user_img": "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEASABIAAD/" "time": 1617952689 // время отклика }, ] } ``` - 404 - заказ не найден ```json { "error": "Order not found" } ``` - 500 - ошибка на стороне сервера ```json { "error": "Internal server error" } ``` 12. ### `PUT /order/id:[0-9]+/response` - изменить отклик - Тело запроса: ```json { "user_id": 322, "rate": 1488, "time": 1617952689, // время отклика } ``` - Ответы: - 200 OK ```json { "id": 1, "order_id": 228, "user_id": 322, "rate": 1488, "user_login": "AlexDarkStalker98", "user_img": "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEASABIAAD/", "time": 1617952689, // время отклика } ``` - 400 - нет тела запроса ```json { "error": "No body" } ``` - 400 - ошибка в json ```json { "error": "Bad json" } ``` - 401 - неавторизованный пользователь ```json { "error": "Unauthorized" } ``` - 404 - заказ не найден ```json { "error": "Order not found" } ``` - 500 - ошибка на стороне сервера ```json { "error": "Internal server error" } ``` 13. ### `DELETE /order/id:[0-9]+/response` - удалить отклик - Ответы: - 200 OK - 401 - неавторизованный пользователь ```json { "error": "Unauthorized" } ``` - 404 - отклик не найден ```json { "error": "response not found" } ``` - 404 - заказ не найден ```json { "error": "order not found" } ``` - 500 Ошибка на стороне сервера ```json { "error": "Internal server error" } ``` 12. ### `GET /order` - получить все актуальные заказы - Ответы: - 200 OK ```json { [ { "id": 228, //id заказа "category": "Верстка", "order_name": "сверстать профиль", "customer_id": 322, //id создателя "budget": 1488, "deadline": 1617004533, //unix-time "description": "Нужен профиль, чтобы в нем была вся необходимая информация, ничего не уезжало, и все было красиво и аккуратно", "login": "AlexDarkStalker", "img": "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEASABIAAD/" } { "id": 322, //id заказа "category": "Программирование", "order_name": "сделать наконец нормальный апи", "customer_id": 228, //id создателя "budget": 3228, "deadline": 1617004533, //unix-time "description": "Сделать нормальное апи для сайта поиска фрилансеров", "login": "AlexDarkStalker", "img": "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEASABIAAD/" }, ] } ``` - 500 - ошибка на стороне сервера ```json { "error": "Internal server error" } ``` 13. ### `GET /order/profile/id:[0-9]` - получить все заказы пользователя - Ответы: - 200 OK ```json { [ { "id": 228, //id заказа "category": "Верстка", "order_name": "сверстать профиль", "customer_id": 322, //id создателя "budget": 1488, "deadline": 1617004533, //unix-time "description": "Нужен профиль, чтобы в нем была вся необходимая информация, ничего не уезжало, и все было красиво и аккуратно", "login": "AlexDarkStalker", "img": "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEASABIAAD/" } { "id": 322, //id заказа "category": "Программирование", "order_name": "сделать наконец нормальный апи", "customer_id": 228, //id создателя "budget": 3228, "deadline": 1617004533, //unix-time "description": "Сделать нормальное апи для сайта поиска фрилансеров", "login": "AlexDarkStalker", "img": "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEASABIAAD/" }, ] } ``` - 400 - плохой айди в урле ```json { "error": "Bad id" } ``` - 404 - пользователь не найден не найден ```json { "error": "User not found" } ``` - 500 - ошибка на стороне сервера ```json { "error": "Internal server error" } ``` 11. ### `PUT /order/id:[0-9]` - изменить заказ - Тело запроса: ```json Все поля опциональны! { "id": 228, "category": "Верстка", "order_name": "Сверстать профиль", "description": "Нужен профиль, чтобы в нем была вся необходимая информация, ничего не уезжало, и все было красиво и аккуратно", "budget": 1488, "deadline": 1617004533, //unix-time } ``` - Ответы: - 200 OK ```json { "id": 228, //id заказа "category": "Верстка", "order_name": "сверстать профиль", "customer_id": 322, //id создателя "budget": 1488, "deadline": 1617004533, //unix-time "description": "Нужен профиль, чтобы в нем была вся необходимая информация, ничего не уезжало, и все было красиво и аккуратно" } ``` - 400 Ошибка в json ```json { "error": "Bad json" } ``` - 400 Некорректные данные о заказе ```json { "error": "Incorrect order data" } ``` - 400 Недостаточно прав для изменения ```json { "error": "Operation not permitted" } ``` - 401 - неавторизованный пользователь ```json { "error": "Unauthorized" } ``` - 404 - заказ не найден ```json { "error": "order not found" } ``` - 500 Ошибка на стороне сервера ```json { "error": "Internal server error" } ``` 12. ### `POST /vacancy` - создать вакансию - Тело запроса: ```json { "category": "Фронтенд", "vacancy_name": "Junior фронтенд разработчик", "description": "В супер компанию требуется джун фронтенд разработчик", "salary": 228322, } ``` - Ответы: - 201 Created ```json { "id": 228, "category": "Фронтенд", "vacancy_name": "Junior фронтенд разработчик", "description": "В супер компанию требуется джун фронтенд разработчик", "salary": 228322, } ``` - 400 Ошибка в json ```json { "error": "Bad json" } ``` - 400 Невалидные данные в запросе ```json { "error": "Invalid data" } ``` - 401 - неавторизованный пользователь ```json { "error": "Unauthorized" } ``` - 403 - видимо что-то с куками ```json { "error": "Bad id" } ``` - 500 Ошибка на стороне сервера ```json { "error": "Internal server error" } ``` 13. ### `GET /vacancy/id:[0-9]+` - получить всю информацию о вакансии - Ответы: - 200 OK ```json { "id": 228, "category": "Фронтенд", "vacancy_name": "Junior фронтенд разработчик", "description": "В супер компанию требуется джун фронтенд разработчик", "salary": 228322, "login": "AlexDarkStalker", "img": "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEASABIAAD/" } ``` - 404 - вакансии не существует ``` json { "error": "vacancy not found" } ``` - 500 - ошибка на стороне сервера ```json { "error": "Internal server error" } ```