{
	"info": {
		"name": "Todo4you API v1",
		"description": "Official Postman collection for the Todo4you REST API.\n\nAuthenticate with a personal Bearer token from Profile > API Access.\n\nBase URL: https://api.todo4you.com/api/v1",
		"schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json"
	},
	"auth": {
		"type": "bearer",
		"bearer": [
			{
				"key": "token",
				"value": "{{api_token}}",
				"type": "string"
			}
		]
	},
	"variable": [
		{
			"key": "base_url",
			"value": "https://api.todo4you.com/api/v1"
		},
		{
			"key": "api_token",
			"value": "YOUR_TOKEN_HERE"
		},
		{
			"key": "project_id",
			"value": "1"
		},
		{
			"key": "ticket_number",
			"value": "1"
		},
		{
			"key": "ticket_id",
			"value": "1"
		}
	],
	"item": [
		{
			"name": "Projects",
			"item": [
				{
					"name": "List projects",
					"request": {
						"method": "GET",
						"url": {
							"raw": "{{base_url}}/projects",
							"host": ["{{base_url}}"],
							"path": ["projects"]
						}
					}
				},
				{
					"name": "Create project",
					"request": {
						"method": "POST",
						"url": {
							"raw": "{{base_url}}/projects",
							"host": ["{{base_url}}"],
							"path": ["projects"]
						},
						"header": [
							{ "key": "Content-Type", "value": "application/json" }
						],
						"body": {
							"mode": "raw",
							"raw": "{\n  \"name\": \"My Project\",\n  \"prefix\": \"MP\",\n  \"description\": \"\"\n}"
						}
					}
				},
				{
					"name": "Project stats",
					"request": {
						"method": "GET",
						"url": {
							"raw": "{{base_url}}/projects/{{project_id}}/stats",
							"host": ["{{base_url}}"],
							"path": ["projects", "{{project_id}}", "stats"]
						}
					}
				},
				{
					"name": "Project statuses",
					"request": {
						"method": "GET",
						"url": {
							"raw": "{{base_url}}/projects/{{project_id}}/statuses",
							"host": ["{{base_url}}"],
							"path": ["projects", "{{project_id}}", "statuses"]
						}
					}
				},
				{
					"name": "List members",
					"request": {
						"method": "GET",
						"url": {
							"raw": "{{base_url}}/projects/{{project_id}}/members",
							"host": ["{{base_url}}"],
							"path": ["projects", "{{project_id}}", "members"]
						}
					}
				}
			]
		},
		{
			"name": "Tickets",
			"item": [
				{
					"name": "List tickets",
					"request": {
						"method": "GET",
						"url": {
							"raw": "{{base_url}}/projects/{{project_id}}/tickets",
							"host": ["{{base_url}}"],
							"path": ["projects", "{{project_id}}", "tickets"],
							"query": [
								{ "key": "status", "value": "", "disabled": true }
							]
						}
					}
				},
				{
					"name": "Get ticket",
					"request": {
						"method": "GET",
						"url": {
							"raw": "{{base_url}}/projects/{{project_id}}/tickets/{{ticket_number}}",
							"host": ["{{base_url}}"],
							"path": ["projects", "{{project_id}}", "tickets", "{{ticket_number}}"]
						}
					}
				},
				{
					"name": "Search tickets",
					"request": {
						"method": "GET",
						"url": {
							"raw": "{{base_url}}/projects/{{project_id}}/tickets/search?q=keyword",
							"host": ["{{base_url}}"],
							"path": ["projects", "{{project_id}}", "tickets", "search"],
							"query": [
								{ "key": "q", "value": "keyword" }
							]
						}
					}
				},
				{
					"name": "Create ticket",
					"request": {
						"method": "POST",
						"url": {
							"raw": "{{base_url}}/projects/{{project_id}}/tickets",
							"host": ["{{base_url}}"],
							"path": ["projects", "{{project_id}}", "tickets"]
						},
						"header": [
							{ "key": "Content-Type", "value": "application/json" }
						],
						"body": {
							"mode": "raw",
							"raw": "{\n  \"title\": \"New ticket\",\n  \"type\": \"task\",\n  \"priority\": \"medium\",\n  \"status\": \"todo\",\n  \"deadline\": \"2026-12-31\",\n  \"story_points\": 3,\n  \"estimated_hours\": 2.5,\n  \"checklist\": [\"Step 1\", \"Step 2\"],\n  \"tags\": [1, 2]\n}"
						}
					}
				},
				{
					"name": "Update ticket",
					"request": {
						"method": "POST",
						"url": {
							"raw": "{{base_url}}/projects/{{project_id}}/tickets/{{ticket_number}}/update",
							"host": ["{{base_url}}"],
							"path": ["projects", "{{project_id}}", "tickets", "{{ticket_number}}", "update"]
						},
						"header": [
							{ "key": "Content-Type", "value": "application/json" }
						],
						"body": {
							"mode": "raw",
							"raw": "{\n  \"title\": \"Updated title\",\n  \"description\": \"Updated description\",\n  \"type\": \"task\",\n  \"priority\": \"high\",\n  \"deadline\": \"2026-12-31\",\n  \"story_points\": 5,\n  \"estimated_hours\": 4,\n  \"tags\": [1, 2]\n}"
						}
					}
				},
				{
					"name": "Add comment",
					"request": {
						"method": "POST",
						"url": {
							"raw": "{{base_url}}/projects/{{project_id}}/tickets/{{ticket_number}}/comments",
							"host": ["{{base_url}}"],
							"path": ["projects", "{{project_id}}", "tickets", "{{ticket_number}}", "comments"]
						},
						"header": [
							{ "key": "Content-Type", "value": "application/json" }
						],
						"body": {
							"mode": "raw",
							"raw": "{\n  \"comment\": \"This is a comment\"\n}"
						}
					}
				},
				{
					"name": "Move ticket",
					"request": {
						"method": "POST",
						"url": {
							"raw": "{{base_url}}/projects/{{project_id}}/tickets/{{ticket_number}}/move",
							"host": ["{{base_url}}"],
							"path": ["projects", "{{project_id}}", "tickets", "{{ticket_number}}", "move"]
						},
						"header": [
							{ "key": "Content-Type", "value": "application/json" }
						],
						"body": {
							"mode": "raw",
							"raw": "{\n  \"status\": \"in_progress\"\n}"
						}
					}
				},
				{
					"name": "Archive ticket",
					"request": {
						"method": "POST",
						"url": {
							"raw": "{{base_url}}/projects/{{project_id}}/tickets/{{ticket_number}}/archive",
							"host": ["{{base_url}}"],
							"path": ["projects", "{{project_id}}", "tickets", "{{ticket_number}}", "archive"]
						}
					}
				},
				{
					"name": "Delete ticket",
					"request": {
						"method": "POST",
						"url": {
							"raw": "{{base_url}}/projects/{{project_id}}/tickets/{{ticket_number}}/delete",
							"host": ["{{base_url}}"],
							"path": ["projects", "{{project_id}}", "tickets", "{{ticket_number}}", "delete"]
						}
					}
				},
				{
					"name": "Assign member",
					"request": {
						"method": "POST",
						"url": {
							"raw": "{{base_url}}/projects/{{project_id}}/tickets/{{ticket_number}}/assign",
							"host": ["{{base_url}}"],
							"path": ["projects", "{{project_id}}", "tickets", "{{ticket_number}}", "assign"]
						},
						"header": [
							{ "key": "Content-Type", "value": "application/json" }
						],
						"body": {
							"mode": "raw",
							"raw": "{\n  \"user_id\": 1\n}"
						}
					}
				},
				{
					"name": "Unassign member",
					"request": {
						"method": "POST",
						"url": {
							"raw": "{{base_url}}/projects/{{project_id}}/tickets/{{ticket_number}}/unassign",
							"host": ["{{base_url}}"],
							"path": ["projects", "{{project_id}}", "tickets", "{{ticket_number}}", "unassign"]
						},
						"header": [
							{ "key": "Content-Type", "value": "application/json" }
						],
						"body": {
							"mode": "raw",
							"raw": "{\n  \"user_id\": 1\n}"
						}
					}
				}
			]
		},
		{
			"name": "Board",
			"item": [
				{
					"name": "Board data",
					"request": {
						"method": "GET",
						"url": {
							"raw": "{{base_url}}/projects/{{project_id}}/board",
							"host": ["{{base_url}}"],
							"path": ["projects", "{{project_id}}", "board"]
						}
					}
				},
				{
					"name": "Sort tickets",
					"request": {
						"method": "POST",
						"url": {
							"raw": "{{base_url}}/projects/{{project_id}}/tickets/sort",
							"host": ["{{base_url}}"],
							"path": ["projects", "{{project_id}}", "tickets", "sort"]
						},
						"header": [
							{ "key": "Content-Type", "value": "application/json" }
						],
						"body": {
							"mode": "raw",
							"raw": "{\n  \"status\": \"todo\",\n  \"ticket_ids\": [3, 1, 2]\n}"
						}
					}
				}
			]
		},
		{
			"name": "Checklist",
			"item": [
				{
					"name": "Add checklist item",
					"request": {
						"method": "POST",
						"url": {
							"raw": "{{base_url}}/tickets/{{ticket_id}}/checklist",
							"host": ["{{base_url}}"],
							"path": ["tickets", "{{ticket_id}}", "checklist"]
						},
						"header": [
							{ "key": "Content-Type", "value": "application/json" }
						],
						"body": {
							"mode": "raw",
							"raw": "{\n  \"text\": \"Checklist item\"\n}"
						}
					}
				},
				{
					"name": "Toggle checklist item",
					"request": {
						"method": "POST",
						"url": {
							"raw": "{{base_url}}/checklist/1/toggle",
							"host": ["{{base_url}}"],
							"path": ["checklist", "1", "toggle"]
						}
					}
				},
				{
					"name": "Update checklist item",
					"request": {
						"method": "POST",
						"url": {
							"raw": "{{base_url}}/checklist/1/update",
							"host": ["{{base_url}}"],
							"path": ["checklist", "1", "update"]
						},
						"header": [
							{ "key": "Content-Type", "value": "application/json" }
						],
						"body": {
							"mode": "raw",
							"raw": "{\n  \"text\": \"Updated item text\"\n}"
						}
					}
				},
				{
					"name": "Delete checklist item",
					"request": {
						"method": "POST",
						"url": {
							"raw": "{{base_url}}/checklist/1/delete",
							"host": ["{{base_url}}"],
							"path": ["checklist", "1", "delete"]
						}
					}
				},
				{
					"name": "Sort checklist items",
					"request": {
						"method": "POST",
						"url": {
							"raw": "{{base_url}}/tickets/{{ticket_id}}/checklist/sort",
							"host": ["{{base_url}}"],
							"path": ["tickets", "{{ticket_id}}", "checklist", "sort"]
						},
						"header": [
							{ "key": "Content-Type", "value": "application/json" }
						],
						"body": {
							"mode": "raw",
							"raw": "{\n  \"item_ids\": [3, 1, 2]\n}"
						}
					}
				}
			]
		},
		{
			"name": "Blockers",
			"item": [
				{
					"name": "Add blocker",
					"request": {
						"method": "POST",
						"url": {
							"raw": "{{base_url}}/tickets/{{ticket_id}}/blockers",
							"host": ["{{base_url}}"],
							"path": ["tickets", "{{ticket_id}}", "blockers"]
						},
						"header": [
							{ "key": "Content-Type", "value": "application/json" }
						],
						"body": {
							"mode": "raw",
							"raw": "{\n  \"blocker_ticket_id\": 2\n}"
						}
					}
				},
				{
					"name": "Remove blocker",
					"request": {
						"method": "POST",
						"url": {
							"raw": "{{base_url}}/tickets/{{ticket_id}}/blockers/2/delete",
							"host": ["{{base_url}}"],
							"path": ["tickets", "{{ticket_id}}", "blockers", "2", "delete"]
						}
					}
				}
			]
		},
		{
			"name": "Attachments",
			"item": [
				{
					"name": "Upload attachments",
					"request": {
						"method": "POST",
						"url": {
							"raw": "{{base_url}}/tickets/{{ticket_id}}/attachments",
							"host": ["{{base_url}}"],
							"path": ["tickets", "{{ticket_id}}", "attachments"]
						},
						"body": {
							"mode": "formdata",
							"formdata": [
								{ "key": "files[]", "type": "file", "src": "" }
							]
						}
					}
				},
				{
					"name": "Get attachment",
					"request": {
						"method": "GET",
						"url": {
							"raw": "{{base_url}}/attachments/1",
							"host": ["{{base_url}}"],
							"path": ["attachments", "1"]
						}
					}
				},
				{
					"name": "Delete attachment",
					"request": {
						"method": "POST",
						"url": {
							"raw": "{{base_url}}/attachments/1/delete",
							"host": ["{{base_url}}"],
							"path": ["attachments", "1", "delete"]
						}
					}
				}
			]
		},
		{
			"name": "Comments",
			"item": [
				{
					"name": "Edit comment",
					"request": {
						"method": "POST",
						"url": {
							"raw": "{{base_url}}/reactions/1/update",
							"host": ["{{base_url}}"],
							"path": ["reactions", "1", "update"]
						},
						"header": [
							{ "key": "Content-Type", "value": "application/json" }
						],
						"body": {
							"mode": "raw",
							"raw": "{\n  \"message\": \"Updated comment\"\n}"
						}
					}
				},
				{
					"name": "Delete comment",
					"request": {
						"method": "POST",
						"url": {
							"raw": "{{base_url}}/reactions/1/delete",
							"host": ["{{base_url}}"],
							"path": ["reactions", "1", "delete"]
						}
					}
				},
				{
					"name": "Upload comment attachments",
					"request": {
						"method": "POST",
						"url": {
							"raw": "{{base_url}}/reactions/1/attachments",
							"host": ["{{base_url}}"],
							"path": ["reactions", "1", "attachments"]
						},
						"body": {
							"mode": "formdata",
							"formdata": [
								{ "key": "files[]", "type": "file", "src": "" }
							]
						}
					}
				}
			]
		},
		{
			"name": "Tags",
			"item": [
				{
					"name": "List tags",
					"request": {
						"method": "GET",
						"url": {
							"raw": "{{base_url}}/projects/{{project_id}}/tags",
							"host": ["{{base_url}}"],
							"path": ["projects", "{{project_id}}", "tags"]
						}
					}
				},
				{
					"name": "Create tag",
					"request": {
						"method": "POST",
						"url": {
							"raw": "{{base_url}}/projects/{{project_id}}/tags",
							"host": ["{{base_url}}"],
							"path": ["projects", "{{project_id}}", "tags"]
						},
						"header": [
							{ "key": "Content-Type", "value": "application/json" }
						],
						"body": {
							"mode": "raw",
							"raw": "{\n  \"name\": \"Bug\",\n  \"color\": \"#ef4444\"\n}"
						}
					}
				},
				{
					"name": "Delete tag",
					"request": {
						"method": "POST",
						"url": {
							"raw": "{{base_url}}/projects/{{project_id}}/tags/1/delete",
							"host": ["{{base_url}}"],
							"path": ["projects", "{{project_id}}", "tags", "1", "delete"]
						}
					}
				}
			]
		},
		{
			"name": "Time Tracking",
			"item": [
				{
					"name": "List time entries",
					"request": {
						"method": "GET",
						"url": {
							"raw": "{{base_url}}/tickets/{{ticket_id}}/time-entries",
							"host": ["{{base_url}}"],
							"path": ["tickets", "{{ticket_id}}", "time-entries"]
						}
					}
				},
				{
					"name": "Add manual entry",
					"request": {
						"method": "POST",
						"url": {
							"raw": "{{base_url}}/tickets/{{ticket_id}}/time-entries",
							"host": ["{{base_url}}"],
							"path": ["tickets", "{{ticket_id}}", "time-entries"]
						},
						"header": [
							{ "key": "Content-Type", "value": "application/json" }
						],
						"body": {
							"mode": "raw",
							"raw": "{\n  \"minutes\": 90\n}"
						}
					}
				},
				{
					"name": "Start timer",
					"request": {
						"method": "POST",
						"url": {
							"raw": "{{base_url}}/tickets/{{ticket_id}}/time-entries/start",
							"host": ["{{base_url}}"],
							"path": ["tickets", "{{ticket_id}}", "time-entries", "start"]
						}
					}
				},
				{
					"name": "Stop timer",
					"request": {
						"method": "POST",
						"url": {
							"raw": "{{base_url}}/time-entries/1/stop",
							"host": ["{{base_url}}"],
							"path": ["time-entries", "1", "stop"]
						}
					}
				},
				{
					"name": "Pause timer",
					"request": {
						"method": "POST",
						"url": {
							"raw": "{{base_url}}/time-entries/1/pause",
							"host": ["{{base_url}}"],
							"path": ["time-entries", "1", "pause"]
						}
					}
				},
				{
					"name": "Resume timer",
					"request": {
						"method": "POST",
						"url": {
							"raw": "{{base_url}}/time-entries/1/resume",
							"host": ["{{base_url}}"],
							"path": ["time-entries", "1", "resume"]
						}
					}
				},
				{
					"name": "Update time entry",
					"request": {
						"method": "POST",
						"url": {
							"raw": "{{base_url}}/time-entries/1/update",
							"host": ["{{base_url}}"],
							"path": ["time-entries", "1", "update"]
						},
						"header": [
							{ "key": "Content-Type", "value": "application/json" }
						],
						"body": {
							"mode": "raw",
							"raw": "{\n  \"minutes\": 120\n}"
						}
					}
				},
				{
					"name": "Delete time entry",
					"request": {
						"method": "POST",
						"url": {
							"raw": "{{base_url}}/time-entries/1/delete",
							"host": ["{{base_url}}"],
							"path": ["time-entries", "1", "delete"]
						}
					}
				},
				{
					"name": "Running timer",
					"request": {
						"method": "GET",
						"url": {
							"raw": "{{base_url}}/time-entries/running",
							"host": ["{{base_url}}"],
							"path": ["time-entries", "running"]
						}
					}
				},
				{
					"name": "Active timers",
					"request": {
						"method": "GET",
						"url": {
							"raw": "{{base_url}}/time-entries/active",
							"host": ["{{base_url}}"],
							"path": ["time-entries", "active"]
						}
					}
				}
			]
		},
		{
			"name": "Notifications",
			"item": [
				{
					"name": "List notifications",
					"request": {
						"method": "GET",
						"url": {
							"raw": "{{base_url}}/notifications",
							"host": ["{{base_url}}"],
							"path": ["notifications"]
						}
					}
				},
				{
					"name": "Unread count",
					"request": {
						"method": "GET",
						"url": {
							"raw": "{{base_url}}/notifications/unread-count",
							"host": ["{{base_url}}"],
							"path": ["notifications", "unread-count"]
						}
					}
				},
				{
					"name": "Mark read for ticket",
					"request": {
						"method": "POST",
						"url": {
							"raw": "{{base_url}}/notifications/mark-read-for-ticket",
							"host": ["{{base_url}}"],
							"path": ["notifications", "mark-read-for-ticket"]
						},
						"header": [
							{ "key": "Content-Type", "value": "application/json" }
						],
						"body": {
							"mode": "raw",
							"raw": "{\n  \"ticket_id\": 1\n}"
						}
					}
				}
			]
		}
	]
}
