Files
test_bellis/docs/task.md
2026-02-18 19:54:52 +07:00

323 lines
8.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
## Создание задачи
```http
POST /api/tasks
Content-Type: application/json
Accept: application/json****
```
Запрос
```bash
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"]
}'
```
Ответ
```json
{
"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."]}}` |
## Получение списка задач
### Запрос
```http
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 см конфиг |
Пример
```bash
curl -X GET "http://localhost:8000/api/tasks?q=Tenetur" \
-H "Accept: application/json"
```
Ответ
```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
```http
PATCH /api/tasks/{id}
Content-Type: application/json
Accept: application/json
```
Запрос
```bash
curl -X PATCH "http://localhost:8000/api/tasks/26" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{
"is_done": true
}'
```
Ответ
```json
{
"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
### Запрос
```http
GET /api/tasks/{id}
Accept: application/json
```
Пример
```bash
curl -X GET "http://localhost:8000/api/tasks/1" \
-H "Accept: application/json"
```
Ответ
```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"
}
]
}
}
```
## Удаление задачи
### Запрос
```http
DELETE /api/tasks/{id}
Accept: application/json
```
Запрос\Ответ
```bash
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
```
## Несуществующая задача
```bash
curl -X PATCH "http://localhost:8000/api/tasks/99999" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{
"is_done": true
}'
```
Ответ
```json
{
"message": "Record not found"
}
```