API V1 Reference β No Authentication
The simplest API version. No login or tokens required β perfect for learning the basics of REST API testing.
Base URL
https://api.testauto.app/api/v1All endpoints listed below are relative to this base URL.
Task Endpoints
GET /tasks
Retrieve a paginated list of tasks with optional filtering and sorting. Search matches title, description, and labels.
Query Parameters
page(integer, optional) β Page number, 0-indexed. Default:0size(integer, optional) β Items per page. Default:20, Max:100status(string, optional) β Filter:TODO|IN_PROGRESS|DONEsearch(string, optional) β Search in title, description, and labelssort(string, optional) βid|title|status|createdAt|updatedAt|dueDate|sortOrderdirection(string, optional) βasc|desc. Default:asc
createdAt and updatedAt are generated by the API. Every successful PUT update refreshes updatedAt.
Example
curl "https://api.testauto.app/api/v1/tasks?page=0&size=10&status=TODO&search=api&sort=updatedAt&direction=desc"Response 200 OK
{
"content": [
{
"id": 1,
"title": "Fix login bug",
"description": "Users unable to login with special characters",
"status": "TODO",
"priority": "HIGH",
"dueDate": "2026-02-05",
"sortOrder": 0,
"labels": ["backend", "login"],
"checklistItems": [
{
"id": 201,
"text": "Reproduce issue in production-like environment",
"done": false
}
],
"comments": [],
"attachments": [
{
"id": 401,
"fileName": "release-notes.txt",
"contentType": "text/plain",
"fileSizeBytes": 128,
"uploadedAt": "2026-02-01T10:35:00Z"
}
],
"createdAt": "2026-02-01T10:30:00Z",
"updatedAt": "2026-02-01T10:30:00Z"
}
],
"totalElements": 42,
"totalPages": 5,
"currentPage": 0,
"pageSize": 10
}GET /tasks/{id}
Retrieve a single task by its ID.
Example
curl "https://api.testauto.app/api/v1/tasks/1"Response 200 OK
{
"id": 1,
"title": "Fix login bug",
"description": "Users unable to login with special characters",
"status": "TODO",
"priority": "HIGH",
"dueDate": "2026-02-05",
"sortOrder": 0,
"labels": ["backend", "login"],
"checklistItems": [
{
"id": 201,
"text": "Reproduce issue in production-like environment",
"done": false
},
{
"id": 202,
"text": "Capture failing request payload",
"done": true
}
],
"comments": [
{
"id": 7,
"text": "Reproduced in production.",
"createdAt": "2026-02-01T10:45:00Z",
"updatedAt": "2026-02-01T10:45:00Z"
}
],
"attachments": [
{
"id": 401,
"fileName": "release-notes.txt",
"contentType": "text/plain",
"fileSizeBytes": 128,
"uploadedAt": "2026-02-01T10:35:00Z"
}
],
"createdAt": "2026-02-01T10:30:00Z",
"updatedAt": "2026-02-01T10:30:00Z"
}Response 404 Not Found
{
"timestamp": "2026-02-02T14:30:00Z",
"status": 404,
"error": "Not Found",
"message": "Task not found with id: 999",
"path": "/api/v1/tasks/999"
}POST /tasks
Create a new task. Direct API clients should send status; priority is optional and defaults to MEDIUM when omitted.
Request Body
{
"title": "string (required, 1β100 chars)",
"description": "string (optional, max 500 chars)",
"status": "TODO | IN_PROGRESS | DONE (required)",
"priority": "LOW | MEDIUM | HIGH | URGENT (optional, default: MEDIUM)",
"dueDate": "YYYY-MM-DD (optional)",
"labels": ["optional", "string", "array"],
"checklistItems": [
{
"text": "string (required, 1β200 chars)",
"done": false
}
]
}Example
curl -X POST "https://api.testauto.app/api/v1/tasks" \
-H "Content-Type: application/json" \
-d '{
"title": "Write API tests",
"description": "Create comprehensive test suite",
"status": "TODO",
"priority": "URGENT",
"dueDate": "2026-02-10",
"labels": ["api", "reference"],
"checklistItems": [
{ "text": "Cover checklist payloads", "done": false },
{ "text": "Add reorder smoke test", "done": true }
]
}'Response 201 Created
{
"id": 43,
"title": "Write API tests",
"description": "Create comprehensive test suite",
"status": "TODO",
"priority": "URGENT",
"dueDate": "2026-02-10",
"sortOrder": 0,
"labels": ["api", "reference"],
"checklistItems": [
{
"id": 301,
"text": "Cover checklist payloads",
"done": false
},
{
"id": 302,
"text": "Add reorder smoke test",
"done": true
}
],
"comments": [],
"attachments": [],
"createdAt": "2026-02-02T15:00:00Z",
"updatedAt": "2026-02-02T15:00:00Z"
}Response 400 Bad Request (validation error)
{
"timestamp": "2026-02-02T15:00:00Z",
"status": 400,
"error": "Bad Request",
"message": "Validation failed",
"errors": {
"title": "Title is required and must be between 1 and 100 characters"
}
}PUT /tasks/{id}
Replace a task completely. The API preserves createdAt and refreshes updatedAt.
Example
curl -X PUT "https://api.testauto.app/api/v1/tasks/43" \
-H "Content-Type: application/json" \
-d '{
"title": "Write API tests",
"description": "Complete test suite with edge cases",
"status": "IN_PROGRESS",
"priority": "HIGH",
"dueDate": "2026-02-12",
"labels": ["api", "reference", "updated"],
"checklistItems": [
{ "text": "Cover checklist payloads", "done": true },
{ "text": "Verify admin-only delete all", "done": false }
]
}'Response 200 OK
{
"id": 43,
"title": "Write API tests",
"description": "Complete test suite with edge cases",
"status": "IN_PROGRESS",
"priority": "HIGH",
"dueDate": "2026-02-12",
"sortOrder": 1,
"labels": ["api", "reference", "updated"],
"checklistItems": [
{
"id": 301,
"text": "Cover checklist payloads",
"done": true
},
{
"id": 303,
"text": "Verify admin-only delete all",
"done": false
}
],
"comments": [],
"attachments": [
{
"id": 401,
"fileName": "release-notes.txt",
"contentType": "text/plain",
"fileSizeBytes": 128,
"uploadedAt": "2026-02-02T15:05:00Z"
}
],
"createdAt": "2026-02-02T15:00:00Z",
"updatedAt": "2026-02-02T15:30:00Z"
}POST /tasks/{id}/reorder
Move a task within the same board column or into a different status column.
Request Body
{
"targetStatus": "TODO | IN_PROGRESS | DONE",
"targetIndex": 0
}Example
curl -X POST "https://api.testauto.app/api/v1/tasks/43/reorder" -H "Content-Type: application/json" -d '{
"targetStatus": "DONE",
"targetIndex": 0
}'Response 200 OK
{
"id": 43,
"title": "Write API tests",
"description": "Complete test suite with edge cases",
"status": "DONE",
"priority": "HIGH",
"dueDate": "2026-02-12",
"sortOrder": 0,
"labels": ["api", "reference", "updated"],
"checklistItems": [],
"comments": [],
"createdAt": "2026-02-02T15:00:00Z",
"updatedAt": "2026-02-02T16:10:00Z"
}Comment Sub-Resources
Comments are nested under tasks and use a text request field.
POST /tasks/{id}/comments
curl -X POST "https://api.testauto.app/api/v1/tasks/43/comments" \
-H "Content-Type: application/json" \
-d '{
"text": "Verified against V1 controller tests"
}'PUT /tasks/{id}/comments/{commentId}
curl -X PUT "https://api.testauto.app/api/v1/tasks/43/comments/7" \
-H "Content-Type: application/json" \
-d '{
"text": "Verified against V1 and V2 controller tests"
}'DELETE /tasks/{id}/comments/{commentId}
curl -X DELETE "https://api.testauto.app/api/v1/tasks/43/comments/7"Attachment Sub-Resources
Attachment binaries are uploaded separately from JSON task create/update payloads. Each task supports up to 3 files with a maximum size of 1 MB per file.
POST /tasks/{id}/attachments
curl -X POST "https://api.testauto.app/api/v1/tasks/43/attachments" \
-F "files=@./release-notes.txt" \
-F "files=@./diagram.png"Response 201 Created
[
{
"id": 401,
"fileName": "release-notes.txt",
"contentType": "text/plain",
"fileSizeBytes": 128,
"uploadedAt": "2026-02-02T16:20:00Z"
},
{
"id": 402,
"fileName": "diagram.png",
"contentType": "image/png",
"fileSizeBytes": 20480,
"uploadedAt": "2026-02-02T16:20:01Z"
}
]Response 400 Bad Request (oversized file)
{
"timestamp": "2026-02-02T16:20:00Z",
"status": 400,
"error": "Bad Request",
"message": "File 'too-large.bin' exceeds the 1 MB limit",
"path": "/api/v1/tasks/43/attachments"
}DELETE /tasks/{id}/attachments/{attachmentId}
curl -X DELETE "https://api.testauto.app/api/v1/tasks/43/attachments/401"DELETE /tasks/{id}
Permanently delete a task.
Example
curl -X DELETE "https://api.testauto.app/api/v1/tasks/43"Response 204 No Content
Empty body on success.
Response 404 Not Found
{
"status": 404,
"error": "Not Found",
"message": "Task not found with id: 43"
}DELETE /tasks
Delete all tasks. This is useful for resetting the demo environment during testing.
Example
curl -X DELETE "https://api.testauto.app/api/v1/tasks"Response 204 No Content
Empty body on success.
GET /tasks/summary
Aggregate statistics about all tasks.
Example
curl "https://api.testauto.app/api/v1/tasks/summary"Response 200 OK
{
"totalTasks": 42,
"todoTasks": 15,
"inProgressTasks": 12,
"doneTasks": 15
}Data Types & Enums
Status
TODOβ Task not startedIN_PROGRESSβ Currently being worked onDONEβ Completed
Priority
LOWMEDIUMHIGHURGENT
Dates
dueDate uses the date-only format YYYY-MM-DD. createdAt and updatedAt are ISO 8601 timestamps and should be treated as read-only fields.
HTTP Status Codes
- 200 OK β Request succeeded
- 201 Created β Resource created
- 204 No Content β Succeeded, no body
- 400 Bad Request β Validation error
- 404 Not Found β Resource does not exist
- 500 Internal Server Error β Server error