Тестовое задание для JS разработчика

Необходимо сверстать и "оживить" интерефейс, макет которого расположен тут: https://www.figma.com/design/IGQeCdz8lHMRz5m5xteLCr/AFS---Test-Assignment

В процессе выполнения тестового задания нужно использовать тестовый API, описание работы с которым см. ниже.

Требования

API

Особенности

API возвращает информацию по одной организации GET /companies/12 и одному контакту организации GET /contacts/16.

API не выполняет реальных действий сохранения данных.

API временно сохраняет загруженные изображения.

Адрес

https://test-task-api.allfuneral.com/

Доступ

Работа с API возможна после получения авторизационного токена

Методы API

Авторизация

GET /auth

Параметры запроса

user=USERNAME

Ответ:

HTTP 200 OK
Authorization: Bearer _token_

Пример:

$ curl -v -X GET https://test-task-api.allfuneral.com/auth?user=USERNAME

Получениие инфо об организации

GET /companies/ID

Ответ:

HTTP 200 OK

{
   "id": "12",
   "contactId": "16",
   "name": "Eternal Rest Funeral Home",
   "shortName": "ERFH",
   "businessEntity": "Partnership",
   "contract": {
      "no": "1624/2-24",
      "issue_date": "2024-03-12T00:00:00Z"
   },
   "type":  ["funeral_home", "logistics_services", "burial_care_contractor"],
   "status": "active",
   "photos": [
      {
         "name":"0b8fc462dcabf7610a91.jpg",
         "filepath": "https://test-task-api.allfuneral.com/0b8fc462dcabf7610a91.jpg",
         "thumbpath": "https://test-task-api.allfuneral.com/0b8fc462dcabf7610a91_thumb.jpg",
         "createdAt": "2024-12-17T08:00:00Z",
      }
   ],
   "createdAt": "2020-11-21T08:03:00Z",
   "updatedAt": "2020-11-23T09:30:00Z"
}

Пример:

$ curl -X GET https://test-task-api.allfuneral.com/companies/12  -H "Content-Type: application/json"  -H "Authorization: Bearer _token_"

Обновление данных организации

PATCH /companies/ID

Параметры запроса

Content-Type: application/json
Authorization: Bearer _token_

{
    "name": _UPDATED_NAME_STR_,
    "shortName": _UPDATED_SHORTNAME_STR_,
    "businessEntity": _UPDATED_BUSINESS_ENTITY_STR_,
    "contract": {
        no: _UPDATED_CONTRACT_NO_STR_,
        issue_date: _UPDATED_CONTRACT_ISSUE_DATE_DATE_,
    },
    type: _UPDATED_TYPES_ARRAY_
}

Пример:

$ curl -X PATCH https://test-task-api.allfuneral.com/companies/12  -H "Content-Type: application/json"  -H "Authorization: Bearer _token_" -d '{"name":"Eternal Sun Funeral Home»", "shortName":"ESFH"}'

Удаление организации

DELETE /companies/ID

Ответ:

HTTP 200 OK

Добавление изображения

POST /companies/ID/image

Параметры запроса

Content-Type: multipart/form-data
Authorization: Bearer _token_

file=FILE

Ответ:

HTTP 200 OK

{
   "name": "24a7b93b9adc015fdb06.jpg",
   "filepath": "https://test-task-api.allfuneral.com/images/24a7b93b9adc015fdb06.jpg",
   "thumbpath": "https://test-task-api.allfuneral.com/images/24a7b93b9adc015fdb06_thumb.jpg",
   "createdAt": "2020-11-21T08:03:26.589Z"
}

Пример:

 curl -v -X POST https://test-task-api.allfuneral.com/companies/12/image  -H "Content-Type: multipart/form-data"  -H "Authorization: Bearer _token_" -F "file=@/path/to/file.jpg"

Удаление изображения

DELETE /companies/ID/image/IMAGE_NAME

Ответ:

HTTP 200 OK

Пример:

 curl -v -X DELETE https://test-task-api.allfuneral.com/companies/12/image/6387dd7ab672f0acedc9.jpg -H "Authorization: Bearer _token_"

Получение контакта организации

GET /contacts/ID

Ответ:

HTTP 200 OK

{
   "id":"16",
   "lastname": "Rosenberg",
   "firstname": "David",
   "phone": "17025552345",
   "email": "david_rosenberg88@gmail.com",
   "createdAt": "2020-11-21T08:03:26.589Z",
   "updatedAt": "2020-11-23T09:30:00Z"
}

Пример:

curl -v -X GET https://test-task-api.allfuneral.com/contacts/16  -H "Content-Type: application/json"  -H "Authorization: Bearer _token_"

Обновление контакта организации

PATCH /contacts/ID

Параметры запроса

Content-Type: application/json
Authorization: Bearer _token_

{
   "lastname": _UPDATED_LASTNAME_STR_,
   "firstname": _UPDATED_FIRSTNAME_STR_,
   "phone": _UPDATED_PHONE_STR_,
   "email": _UPDATED_EMAIL_STR_,
}

Пример:

curl -v -X PATCH https://test-task-api.allfuneral.com/contacts/16  -H "Content-Type: application/json"  -H "Authorization: Bearer _token" -d '{"phone":"17025552346"}'