8.4 KiB
8.4 KiB
Создание задачи
POST /api/tasks
Content-Type: application/json
Accept: application/json****
Запрос
curl -X POST "http://localhost:8000/api/tasks" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{
"title": "Tenetur earum.",
"is_done": false,
"due_at": "2026-02-18T15:00:00Z",
"tags": ["work", "backend"]
}'
Ответ
{
"data": {
"id": 26,
"title": "Tenetur earum.",
"is_done": false,
"due_at": "2026-02-18T15:00:00.000000Z",
"created_at": "2026-02-18T12:23:26.000000Z",
"updated_at": "2026-02-18T12:23:26.000000Z",
"tags": [
{
"id": 16,
"name": "work"
},
{
"id": 17,
"name": "backend"
}
]
}
}
Возможные ошибки
422 Unprocessable Entity
| Поле | Ошибка | Пример ответа |
|---|---|---|
title |
Обязательное поле | {"message":"The title field is required.","errors":{"title":["The title field is required."]}} |
title |
Максимум 200 символов | {"message":"The title field must not be greater than 200 characters.","errors":{"title":["The title field must not be greater than 200 characters."]}} |
due_at |
Неверный формат даты | {"message": "The due at field must match the format Y-m-d\\TH:i:s\\Z.","errors":{"due_at":["The due at field must match the format Y-m-d\\TH:i:s\\Z."]}} |
due_at |
Некорректная дата | {"message":"The due at field must be a valid date. (and 1 more error)","errors":{"due_at":["The due at field must be a valid date.","The due at field must match the format Y-m-d\\TH:i:s\\Z."]}} |
tags |
Не массив | {"message":"The tags field must be an array.","errors":{"tags":["The tags field must be an array."]}} |
tags.* |
Максимум 50 символов | {"message":"The tags.0 field must not be greater than 50 characters.","errors":{"tags.0":["The tags.0 field must not be greater than 50 characters."]}} |
is_done |
Не boolean | {"message":"The is done field must be true or false.","errors":{"is_done":["The is done field must be true or false."]}} |
Получение списка задач
Запрос
GET /api/tasks
Accept: application/json
Параметры запроса
| Параметр | Тип | Обязательный | Описание |
|---|---|---|---|
| q | string | нет | Поиск по названию задачи длина 200 символов |
| is_done | boolean | нет | Фильтр по статусу выполнения |
| tag | string | нет | Фильтр по тегу длина 50 символов |
| sort | string | нет | Допустимые значения: created_at, due_at |
| order | string | нет | Направление сортировки. Допустимые значения: asc, desc |
| page | integer | нет | Номер страницы |
| per_page | integer | нет | Количество элементов на странице. Min: 1, Max: 50 см конфиг |
Пример
curl -X GET "http://localhost:8000/api/tasks?q=Tenetur" \
-H "Accept: application/json"
Ответ
{
"data": [
{
"id": 18,
"title": "Tenetur aspernatur ipsa.",
"is_done": false,
"due_at": null,
"created_at": "2026-02-18T12:06:06.000000Z",
"updated_at": "2026-02-18T12:06:06.000000Z",
"tags": [
{
"id": 9,
"name": "animi"
},
{
"id": 13,
"name": "dolorum"
}
]
},
{
"id": 19,
"title": "Tenetur earum.",
"is_done": false,
"due_at": null,
"created_at": "2026-02-18T12:06:06.000000Z",
"updated_at": "2026-02-18T12:06:06.000000Z",
"tags": [
{
"id": 7,
"name": "itaque"
},
{
"id": 12,
"name": "perferendis"
}
]
},
{
"id": 26,
"title": "Tenetur earum.",
"is_done": false,
"due_at": "2026-02-18T15:00:00.000000Z",
"created_at": "2026-02-18T12:23:26.000000Z",
"updated_at": "2026-02-18T12:23:26.000000Z",
"tags": [
{
"id": 16,
"name": "work"
},
{
"id": 17,
"name": "backend"
}
]
}
],
"links": {
"first": "http://localhost:8000/api/tasks?page=1",
"last": "http://localhost:8000/api/tasks?page=1",
"prev": null,
"next": null
},
"meta": {
"current_page": 1,
"from": 1,
"last_page": 1,
"links": [
{
"url": null,
"label": "« Previous",
"page": null,
"active": false
},
{
"url": "http://localhost:8000/api/tasks?page=1",
"label": "1",
"page": 1,
"active": true
},
{
"url": null,
"label": "Next »",
"page": null,
"active": false
}
],
"path": "http://localhost:8000/api/tasks",
"per_page": 15,
"to": 3,
"total": 3
}
}
Обновление задачи
Запрос PATCH|PUT
PATCH /api/tasks/{id}
Content-Type: application/json
Accept: application/json
Запрос
curl -X PATCH "http://localhost:8000/api/tasks/26" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{
"is_done": true
}'
Ответ
{
"data": {
"id": 26,
"title": "Tenetur earum.",
"is_done": true,
"due_at": "2026-02-18T15:00:00.000000Z",
"created_at": "2026-02-18T12:23:26.000000Z",
"updated_at": "2026-02-18T12:44:01.000000Z",
"tags": [
{
"id": 16,
"name": "work"
},
{
"id": 17,
"name": "backend"
}
]
}
}
Получение задачи по ID
Запрос
GET /api/tasks/{id}
Accept: application/json
Пример
curl -X GET "http://localhost:8000/api/tasks/1" \
-H "Accept: application/json"
Ответ
{
"data": {
"id": 1,
"title": "Ut sequi deserunt est deserunt.",
"is_done": false,
"due_at": null,
"created_at": "2026-02-18T12:06:06.000000Z",
"updated_at": "2026-02-18T12:06:06.000000Z",
"tags": [
{
"id": 1,
"name": "ut"
},
{
"id": 3,
"name": "quo"
},
{
"id": 9,
"name": "animi"
},
{
"id": 13,
"name": "dolorum"
}
]
}
}
Удаление задачи
Запрос
DELETE /api/tasks/{id}
Accept: application/json
Запрос\Ответ
curl -i -X DELETE "http://localhost:8000/api/tasks/1" \
-H "Accept: application/json"
HTTP/1.1 204 No Content
Access-Control-Allow-Origin: *
Cache-Control: no-cache, private
Date: Wed, 18 Feb 2026 12:50:54 GMT
Server: FrankenPHP Caddy
X-Powered-By: PHP/8.5.3
Несуществующая задача
curl -X PATCH "http://localhost:8000/api/tasks/99999" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{
"is_done": true
}'
Ответ
{
"message": "Record not found"
}