REST API · v1

Todo4you REST API
Ontwikkelaarsreferentie

Een JSON REST API om tickets te beheren, reacties te plaatsen, tickets te verplaatsen en te archiveren, projectgegevens te lezen en tags op te vragen. Authenticeer met een persoonlijke Bearer token - geen OAuth, geen SDK's nodig.

Postman Collectie downloaden

Authenticatie

Elk verzoek moet uw persoonlijke API token bevatten als Bearer token in de Authorization header. Er zijn geen andere authenticatiemethoden.

1 - Uw token ophalen

Log in op Todo4you, ga naar Profiel - API-toegang en klik op Token genereren. Uw token is een hexadecimale reeks van 64 tekens. Kopieer deze direct - het wordt slechts een keer getoond.

Profiel → API-toegang
2 - Voeg de header toe
Authorization: Bearer YOUR_64_CHAR_TOKEN
3 - Test uw token

Plak uw token hieronder om te verifieren dat het werkt en bekijk uw projectlijst:

API token

            

Fouten

Alle fouten retourneren JSON met een error-veld dat het probleem beschrijft. Succesvolle antwoorden bevatten nooit een error-veld.

// 422 example { "error": "title is required." }
StatusBetekenis
401Missing or invalid API token
403Token valid but role insufficient for this action (viewer trying to create/move)
404Project or ticket not found, or not accessible with your token
422Validation failed - read the error message for the exact field
Projecten

Projecten weergeven

GET /api/v1/projects

Geeft alle projecten terug waarvan de geauthenticeerde gebruiker eigenaar of lid is, alfabetisch gesorteerd. Gebruik het id-veld voor alle volgende verzoeken die een project-ID nodig hebben.

Antwoord
200 OK200
{ "projects": [ { "id": 12, "name": "My Project", "prefix": "TDL", "description": "Main development board" } ] }
Voorbeeld
curl https://api.todo4you.com/api/v1/projects \ -H "Authorization: Bearer YOUR_TOKEN"

Project aanmaken

POST /api/v1/projects

Maakt een nieuw project aan. U wordt automatisch de projecteigenaar met de rol manager.

Request body (JSON)
VeldTypeBeschrijving
name string verplicht Project name (min 2 characters)
prefix string optioneel Ticket prefix, e.g. TDL. Alphanumeric only, auto-uppercased
description string optioneel Short project description
Antwoord
201 Created201
{ "project": { "id": 25, "name": "My New Project", "prefix": "MNP", "description": "A fresh project" } }
Voorbeeld
curl -X POST https://api.todo4you.com/api/v1/projects \ -H "Authorization: Bearer YOUR_TOKEN" \ -H "Content-Type: application/json" \ -d '{"name":"My New Project","prefix":"MNP","description":"A fresh project"}'

Projectstatistieken

GET /api/v1/projects/{id}/stats

Geeft het aantal open tickets in een project terug (alle statussen behalve done). Handig voor conditiecontroles en dashboards.

Padparameters
ParameterTypeBeschrijving
idintegerProject ID - from List projects
Antwoord
200 OK200
{ "open_tickets": 14 }
Voorbeeld
curl https://api.todo4you.com/api/v1/projects/12/stats \ -H "Authorization: Bearer YOUR_TOKEN"

Projectstatussen

GET /api/v1/projects/{id}/statuses

Geeft de geldige statuswaarden voor een project terug. Geef een van deze door aan Ticket verplaatsen.

Padparameters
ParameterTypeBeschrijving
idintegerProject ID
Antwoord
200 OK200
{ "statuses": [ { "slug": "backlog", "label": "Backlog", "color": "#6c757d", "icon": "fa-inbox", "category": "backlog" }, { "slug": "todo", "label": "To Do", "color": "#0dcaf0", "icon": "fa-list-ul", "category": "todo" }, { "slug": "in_progress", "label": "In Progress", "color": "#ffc107", "icon": "fa-tasks", "category": "active" }, { "slug": "review", "label": "Review", "color": "#0d6efd", "icon": "fa-eye", "category": "review" }, { "slug": "done", "label": "Done", "color": "#198754", "icon": "fa-check-circle", "category": "done" } ] }
Voorbeeld
curl https://api.todo4you.com/api/v1/projects/12/statuses \ -H "Authorization: Bearer YOUR_TOKEN"

Leden weergeven

GET /api/v1/projects/{id}/members

Geeft alle leden van een project terug met hun rollen. Gebruik de id-waarden bij het toewijzen van tickets via Lid toewijzen.

Padparameters
ParameterTypeBeschrijving
idintegerProject ID
Antwoord
200 OK200
{ "members": [ { "id": 3, "name": "Alice", "avatar": null, "role": "manager" }, { "id": 8, "name": "Bob", "avatar": null, "role": "developer" } ] }
Voorbeeld
curl https://api.todo4you.com/api/v1/projects/12/members \ -H "Authorization: Bearer YOUR_TOKEN"
Tickets

Tickets weergeven

GET /api/v1/projects/{id}/tickets

Geeft alle niet-gearchiveerde tickets in een project terug. Optioneel filteren op statuskolom. Elk ticket bevat de tags en een prefix_ref-veld (bijv. TDL-47).

Padparameters
ParameterTypeBeschrijving
idintegerProject ID
Queryparameters
ParameterTypeBeschrijving
status string optioneel Filter by status slug (use GET /projects/{id}/statuses to get valid slugs)
Antwoord
200 OK200
{ "tickets": [ { "id": 301, "project_ticket_number": 47, "prefix_ref": "TDL-47", "title": "Fix login bug", "status": "in_progress", "type": "bug", "priority": "high", "deadline": "2026-03-15", "tags": [ { "id": 5, "name": "frontend", "color": "#e74c3c" } ], "created_at": "2026-03-01 14:22:00" } ] }
Voorbeeld
curl https://api.todo4you.com/api/v1/projects/12/tickets?status=in_progress \ -H "Authorization: Bearer YOUR_TOKEN"

Ticket ophalen

GET /api/v1/projects/{id}/tickets/{number}

Geeft volledige ticketdetails terug inclusief reacties, checklist-items, tags, toegewezen personen en maker. Het number is het ticketnummer binnen het project - het numerieke deel van een referentie zoals TDL-47.

Padparameters
ParameterTypeBeschrijving
idintegerProject ID
numberintegerTicket number within the project (e.g. 47 for TDL-47)
Antwoord
200 OK200
{ "ticket": { "id": 301, "prefix_ref": "TDL-47", "title": "Fix login bug", "status": "in_progress", "type": "bug", "priority": "high", "deadline": "2026-03-15", "tags": [ { "id": 5, "name": "frontend", "color": "#e74c3c" } ], "comments": [ { "id": 291, "message": "Found the root cause", "user_id": 8, "user_name": "Alice", "created_at": "2026-03-02 09:15:00" } ], "checklist": [ { "id": 10, "text": "Write tests", "done": 0 }, { "id": 11, "text": "Update docs", "done": 1 } ], "assignees": [ { "id": 8, "name": "Alice" } ], "creator": { "id": 3, "name": "Bob" } } }
Voorbeeld
curl https://api.todo4you.com/api/v1/projects/12/tickets/47 \ -H "Authorization: Bearer YOUR_TOKEN"

Tickets zoeken

GET /api/v1/projects/{id}/tickets/search?q={query}

Zoekt niet-gearchiveerde tickets op trefwoord. Vergelijkt met de tickettitel en beschrijving (niet hoofdlettergevoelig). Geeft resultaten terug gesorteerd op meest recent bijgewerkt.

Padparameters
ParameterTypeBeschrijving
idintegerProject ID
Queryparameters
ParameterTypeBeschrijving
q string verplicht Search keyword(s) to match against title and description
Antwoord
200 OK200
{ "tickets": [ { "id": 301, "project_ticket_number": 47, "prefix_ref": "TDL-47", "title": "Fix login bug", "status": "in_progress", "type": "bug", "tags": [ { "id": 5, "name": "frontend", "color": "#e74c3c" } ] } ] }
Voorbeeld
curl "https://api.todo4you.com/api/v1/projects/12/tickets/search?q=login" \ -H "Authorization: Bearer YOUR_TOKEN"
Tickets

Ticket aanmaken

POST /api/v1/projects/{id}/tickets

Maakt een nieuw ticket aan in een project en retourneert de referentie (bijv. TDL-47). Standaard in de backlog-kolom, tenzij een status is opgegeven. Vereist de rol editor of manager in het project.

Padparameters
ParameterTypeBeschrijving
idintegerProject ID
Request body (JSON)
VeldTypeBeschrijving
title string verplicht Ticket title
type string optioneel bug - feature - release
Default: feature
priority string optioneel urgent - high - medium - low
Default: none
status string optioneel Status slug (use Project statuses to get valid slugs)
Default: first status in project
deadline string optioneel Date in YYYY-MM-DD format
story_points integer optioneel 0 - 3. Only accepted when the project uses story points estimation
estimated_hours number optioneel Estimated hours (e.g. 4.5). Only accepted when the project uses hours estimation
checklist string[] optioneel Array of checklist item texts, e.g. ["Write tests", "Update docs"]
tags integer[] optioneel Array of tag IDs from List tags
Antwoord
201 Created201
{ "ticket_ref": "TDL-47" }
Voorbeeld
curl -X POST https://api.todo4you.com/api/v1/projects/12/tickets \ -H "Authorization: Bearer YOUR_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "title": "Fix login bug", "type": "bug", "priority": "high", "status": "todo", "deadline": "2026-03-15", "checklist": ["Write tests", "Update docs"], "tags": [5, 12] }'

Ticket bijwerken

POST /api/v1/projects/{id}/tickets/{number}/update

Werkt een of meer velden van een ticket bij. Stuur alleen de velden die u wilt wijzigen. Vereist de rol editor of manager. Om de statuskolom te wijzigen, gebruik Ticket verplaatsen in plaats daarvan.

Padparameters
ParameterTypeBeschrijving
idintegerProject ID
numberintegerTicket number within the project
Request body (JSON)
VeldTypeBeschrijving
titlestringoptioneelNew title (cannot be empty)
descriptionstringoptioneelNew description (empty string to clear)
typestringoptioneelbug - feature - release
prioritystring|nulloptioneelurgent - high - medium - low - null to clear
deadlinestring|nulloptioneelYYYY-MM-DD or null to clear
story_pointsinteger|nulloptioneel0-3 or null to clear (story points mode only)
estimated_hoursnumber|nulloptioneelHours or null to clear (hours mode only)
tagsinteger[]optioneelReplace all tags with this list of tag IDs
Antwoord
200 OK200
{ "ok": true }
Voorbeeld
curl -X POST https://api.todo4you.com/api/v1/projects/12/tickets/47/update \ -H "Authorization: Bearer YOUR_TOKEN" \ -H "Content-Type: application/json" \ -d '{"title":"Updated title","priority":"urgent","tags":[5,12]}'

Reactie toevoegen

POST /api/v1/projects/{id}/tickets/{number}/comments

Plaatst een reactie op een ticket. Elk projectlid kan reageren. Het number is het ticketnummer binnen het project - het numerieke deel van een referentie zoals TDL-47.

Padparameters
ParameterTypeBeschrijving
idintegerProject ID
numberintegerTicket number within the project (e.g. 47 for TDL-47)
Request body (JSON)
VeldTypeBeschrijving
commentstringverplichtComment text
Antwoord
201 Created201
{ "ok": true, "reaction_id": 291 }
Voorbeeld
curl -X POST https://api.todo4you.com/api/v1/projects/12/tickets/47/comments \ -H "Authorization: Bearer YOUR_TOKEN" \ -H "Content-Type: application/json" \ -d '{"comment":"Triggered by Homey at 08:32"}'

Ticket verplaatsen

POST /api/v1/projects/{id}/tickets/{number}/move

Verplaatst een ticket naar een andere statuskolom. Triggert een realtime boardupdate voor alle actieve kijkers. Vereist de rol editor of manager.

Padparameters
ParameterTypeBeschrijving
idintegerProject ID
numberintegerTicket number within the project
Request body (JSON)
VeldTypeBeschrijving
status string verplicht Status slug (use Project statuses to get valid slugs)
Antwoord
200 OK200
{ "ok": true }
Voorbeeld
curl -X POST https://api.todo4you.com/api/v1/projects/12/tickets/47/move \ -H "Authorization: Bearer YOUR_TOKEN" \ -H "Content-Type: application/json" \ -d '{"status":"done"}'

Ticket archiveren

POST /api/v1/projects/{id}/tickets/{number}/archive

Archiveert een ticket en verwijdert het van het actieve board. Gearchiveerde tickets kunnen worden hersteld vanaf de projectarchiefpagina. Vereist de rol editor of beheerder.

Padparameters
ParameterTypeBeschrijving
idintegerProject ID
numberintegerTicket number within the project
Antwoord
200 OK200
{ "ok": true }
Voorbeeld
curl -X POST https://api.todo4you.com/api/v1/projects/12/tickets/47/archive \ -H "Authorization: Bearer YOUR_TOKEN"

Ticket verwijderen

POST /api/v1/projects/{id}/tickets/{number}/delete

Verwijdert een ticket permanent (soft delete). De maker van het ticket kan eigen tickets verwijderen; anders is de manager-rol vereist.

Padparameters
ParameterTypeBeschrijving
idintegerProject ID
numberintegerTicket number within the project
Antwoord
200 OK200
{ "ok": true }
Voorbeeld
curl -X POST https://api.todo4you.com/api/v1/projects/12/tickets/47/delete \ -H "Authorization: Bearer YOUR_TOKEN"

Lid toewijzen

POST /api/v1/projects/{id}/tickets/{number}/assign

Wijst een projectlid toe aan een ticket. De gebruiker moet lid zijn van het project. Gebruik Leden weergeven om geldige gebruikers-ID's te vinden. Vereist de rol editor of manager.

Padparameters
ParameterTypeBeschrijving
idintegerProject ID
numberintegerTicket number within the project
Request body (JSON)
VeldTypeBeschrijving
user_idintegerverplichtThe project member's user ID
Antwoord
201 Created201
{ "ok": true }
Voorbeeld
curl -X POST https://api.todo4you.com/api/v1/projects/12/tickets/47/assign \ -H "Authorization: Bearer YOUR_TOKEN" \ -H "Content-Type: application/json" \ -d '{"user_id":8}'

Lid verwijderen

POST /api/v1/projects/{id}/tickets/{number}/unassign

Verwijdert een lid van de toegewezen-lijst. Vereist de rol editor of manager

Padparameters
ParameterTypeBeschrijving
idintegerProject ID
numberintegerTicket number within the project
Request body (JSON)
VeldTypeBeschrijving
user_idintegerverplichtThe user ID to unassign
Antwoord
200 OK200
{ "ok": true }
Voorbeeld
curl -X POST https://api.todo4you.com/api/v1/projects/12/tickets/47/unassign \ -H "Authorization: Bearer YOUR_TOKEN" \ -H "Content-Type: application/json" \ -d '{"user_id":8}'
Board

Boardgegevens

GET /api/v1/projects/{id}/board

Geeft in één keer het volledige kanbanbord voor een project terug: alle kolommen met de bijbehorende tickets, projecttags, leden, snelheid (tickets die in de afgelopen 7 dagen zijn afgehandeld) en de rol van de ingelogde gebruiker. Elk ticket bevat tags, een lijst met toegewezen personen, het aantal reacties, de voortgang van de checklist en informatie over de maker.

Padparameters
ParameterTypeBeschrijving
idintegerProject ID
Antwoord
200 OK200
{ "project": { "id": 12, "name": "My Project", "prefix": "TDL", "estimation_mode": "story_points", "role": "manager" }, "columns": [ { "status": "backlog", "hidden": false, "tickets": [ { "id": 101, "title": "Fix bug", "prefix_ref": "TDL-1", "tags": [...], "assignees": [...], "creator": {...}, "reaction_count": 3, "checklist_total": 5, "checklist_done": 2 } ] }, ... ], "tags": [...], "members": [...], "velocity": 8 }
Voorbeeld
curl https://api.todo4you.com/api/v1/projects/12/board \ -H "Authorization: Bearer YOUR_TOKEN"

Tickets sorteren

POST /api/v1/projects/{id}/tickets/sort

Herordent tickets binnen een kolom. Geef de status en de volledige geordende lijst van ticket-ID's door. Vereist de contributor-rol of hoger.

Padparameters
ParameterTypeBeschrijving
idintegerProject ID
Request body (JSON)
VeldTypeBeschrijving
statusstringverplichtColumn status being reordered
ticket_idsinteger[]verplichtOrdered array of ticket IDs
Antwoord
200 OK200
{ "ok": true }
Voorbeeld
curl -X POST https://api.todo4you.com/api/v1/projects/12/tickets/sort \ -H "Authorization: Bearer YOUR_TOKEN" \ -H "Content-Type: application/json" \ -d '{"status":"todo","ticket_ids":[45,12,78]}'
Checklist

Checklist-item toevoegen

POST /api/v1/tickets/{ticketId}/checklist

Voegt een checklist-item toe aan een ticket. Het item begint als niet-aangevinkt en wordt aan het einde toegevoegd. Vereist de rol editor of beheerder.

Padparameters
ParameterTypeBeschrijving
ticketIdintegerTicket ID (not the project ticket number)
Request body (JSON)
VeldTypeBeschrijving
textstringverplichtItem text (max 500 characters)
Antwoord
201 Created201
{ "ok": true, "item": { "id": 42, "ticket_id": 101, "text": "Write tests", "done": 0, "sort_order": 3 } }
Voorbeeld
curl -X POST https://api.todo4you.com/api/v1/tickets/101/checklist \ -H "Authorization: Bearer YOUR_TOKEN" \ -H "Content-Type: application/json" \ -d '{"text":"Write tests"}'

Checklist-item aan/uit zetten

POST /api/v1/checklist/{itemId}/toggle

Schakelt een checklist-item tussen afgerond en niet afgerond. Vereist de rol editor of manager.

Padparameters
ParameterTypeBeschrijving
itemIdintegerChecklist item ID
Antwoord
200 OK200
{ "ok": true, "done": 1 }
Voorbeeld
curl -X POST https://api.todo4you.com/api/v1/checklist/42/toggle \ -H "Authorization: Bearer YOUR_TOKEN"

Checklist-item bijwerken

POST /api/v1/checklist/{itemId}/update

Werkt de tekst van een checklist-item bij. Vereist de rol editor of manager.

Padparameters
ParameterTypeBeschrijving
itemIdintegerChecklist item ID
Request body (JSON)
VeldTypeBeschrijving
textstringverplichtNew item text (max 500 characters)
Antwoord
200 OK200
{ "ok": true }
Voorbeeld
curl -X POST https://api.todo4you.com/api/v1/checklist/42/update \ -H "Authorization: Bearer YOUR_TOKEN" \ -H "Content-Type: application/json" \ -d '{"text":"Write integration tests"}'

Checklist-item verwijderen

POST /api/v1/checklist/{itemId}/delete

Verwijdert een checklist-item van een ticket. Vereist de editor- of manager-rol.

Padparameters
ParameterTypeBeschrijving
itemIdintegerChecklist item ID
Antwoord
200 OK200
{ "ok": true }
Voorbeeld
curl -X POST https://api.todo4you.com/api/v1/checklist/42/delete \ -H "Authorization: Bearer YOUR_TOKEN"

Checklist-items sorteren

POST /api/v1/tickets/{ticketId}/checklist/sort

Herordent alle checklist-items voor een ticket. Geef de volledige geordende lijst van item-ID's door. Vereist de editor- of manager-rol.

Padparameters
ParameterTypeBeschrijving
ticketIdintegerTicket ID
Request body (JSON)
VeldTypeBeschrijving
item_idsinteger[]verplichtOrdered array of checklist item IDs
Antwoord
200 OK200
{ "ok": true }
Voorbeeld
curl -X POST https://api.todo4you.com/api/v1/tickets/101/checklist/sort \ -H "Authorization: Bearer YOUR_TOKEN" \ -H "Content-Type: application/json" \ -d '{"item_ids":[42,43,41]}'
Blokkades

Blokkade toevoegen

POST /api/v1/tickets/{ticketId}/blockers

Markeert een ander ticket in hetzelfde project als blocker voor dit ticket. Een ticket kan zichzelf niet blokkeren. Vereist de rol editor of manager.

Padparameters
ParameterTypeBeschrijving
ticketIdintegerTicket ID of the blocked ticket
Request body (JSON)
VeldTypeBeschrijving
blocker_ticket_idintegerverplichtTicket ID of the blocking ticket (must be in the same project)
Antwoord
201 Created201
{ "ok": true, "blockers": [ { "id": 55, "title": "Setup database", "status": "in_progress", "project_ticket_number": 3 } ] }
Voorbeeld
curl -X POST https://api.todo4you.com/api/v1/tickets/101/blockers \ -H "Authorization: Bearer YOUR_TOKEN" \ -H "Content-Type: application/json" \ -d '{"blocker_ticket_id":55}'

Blocker verwijderen

POST /api/v1/tickets/{ticketId}/blockers/{blockerTicketId}/delete

Verwijdert een blocker-relatie van een ticket. Geeft de bijgewerkte blockerlijst terug. Vereist de editor- of manager-rol.

Padparameters
ParameterTypeBeschrijving
ticketIdintegerTicket ID of the blocked ticket
blockerTicketIdintegerTicket ID of the blocker to remove
Antwoord
200 OK200
{ "ok": true, "blockers": [] }
Voorbeeld
curl -X POST https://api.todo4you.com/api/v1/tickets/101/blockers/55/delete \ -H "Authorization: Bearer YOUR_TOKEN"
Bijlagen

Bestanden uploaden

POST /api/v1/tickets/{ticketId}/attachments

Uploadt een of meer bestanden naar een ticket. Verstuur als multipart/form-data met bestanden in het files[]-veld. Maximale bestandsgrootte is 10 MB per bestand. Geaccepteerde typen: afbeeldingen, PDF, Office-documenten, CSV, platte tekst en archieven. Vereist de rol editor of manager.

Padparameters
ParameterTypeBeschrijving
ticketIdintegerTicket ID
Request body (multipart/form-data)
VeldTypeBeschrijving
files[]fileverplichtOne or more files to upload
Antwoord
200 OK200
{ "ok": true, "attachments": [ { "id": 7, "ticket_id": 101, "original_name": "screenshot.png", "filesize": 48210, "mime_type": "image/png" } ] }
Voorbeeld
curl -X POST https://api.todo4you.com/api/v1/tickets/101/attachments \ -H "Authorization: Bearer YOUR_TOKEN" \ -F "files[]=@screenshot.png" \ -F "files[]=@report.pdf"

Bestand ophalen

GET /api/v1/attachments/{id}

Downloadt of toont een bijlage. Afbeeldingen en PDF's worden inline weergegeven; andere bestandstypen starten een download. De gebruiker moet minimaal viewer-toegang hebben tot het project.

Padparameters
ParameterTypeBeschrijving
idintegerAttachment ID
Antwoord

Geeft het binaire bestand terug met de juiste Content-Type- en Content-Disposition-headers.

Voorbeeld
curl https://api.todo4you.com/api/v1/attachments/7 \ -H "Authorization: Bearer YOUR_TOKEN" \ --output screenshot.png

Bestand verwijderen

POST /api/v1/attachments/{id}/delete

Verwijdert een bijlage. U kunt bestanden verwijderen die u hebt ge-upload, bestanden op tickets die u hebt aangemaakt, of elk bestand als u manager bent.

Padparameters
ParameterTypeBeschrijving
idintegerAttachment ID
Antwoord
200 OK200
{ "ok": true }
Voorbeeld
curl -X POST https://api.todo4you.com/api/v1/attachments/7/delete \ -H "Authorization: Bearer YOUR_TOKEN"
Reacties

Opmerking bewerken

POST /api/v1/reactions/{id}/update

Werkt de tekst van een reactie bij. U kunt alleen uw eigen reacties bewerken.

Padparameters
ParameterTypeBeschrijving
idintegerReaction (comment) ID
Request body (JSON)
VeldTypeBeschrijving
messagestringverplichtNew comment text
Antwoord
200 OK200
{ "ok": true }
Voorbeeld
curl -X POST https://api.todo4you.com/api/v1/reactions/15/update \ -H "Authorization: Bearer YOUR_TOKEN" \ -H "Content-Type: application/json" \ -d '{"message":"Updated comment text"}'

Opmerking verwijderen

POST /api/v1/reactions/{id}/delete

Verwijdert een reactie met soft-delete. U kunt uw eigen reacties verwijderen; managers kunnen elke reactie verwijderen.

Padparameters
ParameterTypeBeschrijving
idintegerReaction (comment) ID
Antwoord
200 OK200
{ "ok": true }
Voorbeeld
curl -X POST https://api.todo4you.com/api/v1/reactions/15/delete \ -H "Authorization: Bearer YOUR_TOKEN"

Reactiebestanden uploaden

POST /api/v1/reactions/{id}/attachments

Uploadt bestanden gekoppeld aan een specifieke reactie. Werkt hetzelfde als ticketbijlagen maar de bestanden zijn gekoppeld aan de reactie. Verstuur als multipart/form-data met files[].

Padparameters
ParameterTypeBeschrijving
idintegerReaction (comment) ID
Request body (multipart/form-data)
VeldTypeBeschrijving
files[]fileverplichtOne or more files to upload
Antwoord
200 OK200
{ "ok": true, "attachments": [...] }
Voorbeeld
curl -X POST https://api.todo4you.com/api/v1/reactions/15/attachments \ -H "Authorization: Bearer YOUR_TOKEN" \ -F "files[]=@image.png"
Tags

Tags weergeven

GET /api/v1/projects/{id}/tags

Geeft alle tags terug die in een project zijn gedefinieerd. Gebruik de id-waarden bij het aanmaken van tickets met het tags-veld.

Padparameters
ParameterTypeBeschrijving
idintegerProject ID
Antwoord
200 OK200
{ "tags": [ { "id": 5, "name": "frontend", "color": "#e74c3c", "sort_order": 1 }, { "id": 12, "name": "backend", "color": "#3498db", "sort_order": 2 } ] }
Voorbeeld
curl https://api.todo4you.com/api/v1/projects/12/tags \ -H "Authorization: Bearer YOUR_TOKEN"

Tag aanmaken

POST /api/v1/projects/{id}/tags

Maakt een nieuwe tag aan in een project. Vereist de rol manager.

Padparameters
ParameterTypeBeschrijving
idintegerProject ID
Request body (JSON)
VeldTypeBeschrijving
namestringverplichtTag name (max 100 characters)
colorstringoptioneelHex color, e.g. #e74c3c
Default: #6c757d
Antwoord
201 Created201
{ "tag": { "id": 18, "name": "frontend", "color": "#e74c3c", "sort_order": 3 } }
Voorbeeld
curl -X POST https://api.todo4you.com/api/v1/projects/12/tags \ -H "Authorization: Bearer YOUR_TOKEN" \ -H "Content-Type: application/json" \ -d '{"name":"frontend","color":"#e74c3c"}'

Tag verwijderen

POST /api/v1/projects/{id}/tags/{tagId}/delete

Verwijdert een tag uit een project. De tag wordt automatisch verwijderd van alle tickets die deze gebruiken. Vereist de rol manager.

Padparameters
ParameterTypeBeschrijving
idintegerProject ID
tagIdintegerTag ID from List tags
Antwoord
200 OK200
{ "ok": true }
Voorbeeld
curl -X POST https://api.todo4you.com/api/v1/projects/12/tags/5/delete \ -H "Authorization: Bearer YOUR_TOKEN"
Tijdregistratie

Tijdregistraties weergeven

GET /api/v1/tickets/{ticketId}/time-entries

Geeft alle tijdregistraties voor een ticket terug.

Padparameters
ParameterTypeBeschrijving
ticketIdintegerThe ticket ID
Antwoord
200 OK200
{ "success": true, "entries": [ { "id": 1, "ticket_id": 42, "user_id": 3, "project_id": 5, "minutes": 30, "is_running": 0, "started_at": "2025-01-15 09:00:00", "stopped_at": "2025-01-15 09:30:00", "user_name": "Alice", "user_avatar": "avatar.jpg" } ], "total_minutes": 45 }
Voorbeeld
curl https://api.todo4you.com/api/v1/tickets/42/time-entries \ -H "Authorization: Bearer YOUR_TOKEN"

Handmatige registratie toevoegen

POST /api/v1/tickets/{ticketId}/time-entries

Voegt een handmatige tijdsregistratie toe (geen lopende timer).

Padparameters
ParameterTypeBeschrijving
ticketIdintegerThe ticket ID
Request body (JSON)
VeldTypeBeschrijving
minutesintegerverplichtDuration in minutes (min 1)
Antwoord
200 OK200
{ "success": true, "entry": { "id": 2, "ticket_id": 42, "minutes": 30, "is_running": 0, "started_at": null, "stopped_at": null } }
Voorbeeld
curl -X POST https://api.todo4you.com/api/v1/tickets/42/time-entries \ -H "Authorization: Bearer YOUR_TOKEN" \ -H "Content-Type: application/json" \ -d '{"minutes": 30}'

Timer starten

POST /api/v1/tickets/{ticketId}/time-entries/start

Start een lopende timer op een ticket. Er kan maar een timer per gebruiker tegelijk lopen.

Padparameters
ParameterTypeBeschrijving
ticketIdintegerThe ticket ID
Antwoord
200 OK200
{ "success": true, "entry": { "id": 3, "ticket_id": 42, "minutes": 0, "is_running": 1, "started_at": "2025-01-15 09:00:00", "stopped_at": null } }
422 Unprocessable Entity422
{ "error": "You already have a running timer.", "running_ticket_id": 55 }
Voorbeeld
curl -X POST https://api.todo4you.com/api/v1/tickets/42/time-entries/start \ -H "Authorization: Bearer YOUR_TOKEN"

Timer stoppen

POST /api/v1/time-entries/{entryId}/stop

Stopt een lopende of gepauzeerde timer en berekent de uiteindelijke duur.

Padparameters
ParameterTypeBeschrijving
entryIdintegerThe time entry ID
Antwoord
200 OK200
{ "success": true, "entry": { "id": 3, "ticket_id": 42, "minutes": 45, "is_running": 0, "started_at": "2025-01-15 09:00:00", "stopped_at": "2025-01-15 09:45:00" } }
Voorbeeld
curl -X POST https://api.todo4you.com/api/v1/time-entries/3/stop \ -H "Authorization: Bearer YOUR_TOKEN"

Timer pauzeren

POST /api/v1/time-entries/{entryId}/pause

Pauzeert een lopende timer. Opgebouwde tijd wordt bewaard in het minutenveld.

Padparameters
ParameterTypeBeschrijving
entryIdintegerThe time entry ID
Antwoord
200 OK200
{ "success": true, "entry": { "id": 3, "ticket_id": 42, "minutes": 15, "is_running": 0, "started_at": null, "stopped_at": null } }
Voorbeeld
curl -X POST https://api.todo4you.com/api/v1/time-entries/3/pause \ -H "Authorization: Bearer YOUR_TOKEN"

Timer hervatten

POST /api/v1/time-entries/{entryId}/resume

Hervat een gepauzeerde timer. Kan niet hervatten als er al een andere timer loopt.

Padparameters
ParameterTypeBeschrijving
entryIdintegerThe time entry ID
Antwoord
200 OK200
{ "success": true, "entry": { "id": 3, "ticket_id": 42, "minutes": 15, "is_running": 1, "started_at": "2025-01-15 10:00:00", "stopped_at": null } }
Voorbeeld
curl -X POST https://api.todo4you.com/api/v1/time-entries/3/resume \ -H "Authorization: Bearer YOUR_TOKEN"

Invoer bijwerken

POST /api/v1/time-entries/{entryId}/update

Werkt de minuten van een gestopte tijdinvoer bij. Eigenaar of projectmanager kan bijwerken.

Padparameters
ParameterTypeBeschrijving
entryIdintegerThe time entry ID
Request body (JSON)
VeldTypeBeschrijving
minutesintegerverplichtNew duration in minutes (min 1)
Antwoord
200 OK200
{ "success": true, "entry": { "id": 3, "ticket_id": 42, "minutes": 60, "is_running": 0, "started_at": "2025-01-15 09:00:00", "stopped_at": "2025-01-15 09:45:00" } }
Voorbeeld
curl -X POST https://api.todo4you.com/api/v1/time-entries/3/update \ -H "Authorization: Bearer YOUR_TOKEN" \ -H "Content-Type: application/json" \ -d '{"minutes": 60}'

Item verwijderen

POST /api/v1/time-entries/{entryId}/delete

Verwijdert een tijdregistratie. De eigenaar of projectmanager kan verwijderen.

Padparameters
ParameterTypeBeschrijving
entryIdintegerThe time entry ID
Antwoord
200 OK200
{ "success": true }
Voorbeeld
curl -X POST https://api.todo4you.com/api/v1/time-entries/3/delete \ -H "Authorization: Bearer YOUR_TOKEN"

Lopende timer

GET /api/v1/time-entries/running

Geeft de momenteel lopende of gepauzeerde timer terug voor de geauthenticeerde gebruiker, met ticket- en projectdetails.

Antwoord
200 OK200
{ "success": true, "entry": { "id": 1, "ticket_id": 42, "minutes": 15, "is_running": 1, "started_at": "2025-01-15 09:00:00", "ticket_title": "Fix login bug", "project_name": "My App", "ticket_ref": "APP-5" } }

Wanneer er geen timer loopt, is entry null.

Voorbeeld
curl https://api.todo4you.com/api/v1/time-entries/running \ -H "Authorization: Bearer YOUR_TOKEN"

Actieve timers

GET /api/v1/time-entries/active

Geeft alle lopende en gepauzeerde timers terug voor de geauthenticeerde gebruiker, met ticket- en projectdetails. Anders dan /time-entries/running dat slechts een item teruggeeft, geeft dit endpoint alle actieve timers terug.

Antwoord
200 OK200
{ "success": true, "entries": [ { "id": 1, "ticket_id": 42, "minutes": 15, "is_running": 1, "started_at": "2025-01-15 09:00:00", "ticket_title": "Fix login bug", "project_name": "My App", "ticket_ref": "APP-5" }, { "id": 2, "ticket_id": 18, "minutes": 45, "is_running": 2, "started_at": "2025-01-15 08:00:00", "ticket_title": "Update dashboard", "project_name": "My App", "ticket_ref": "APP-18" } ] }

Wanneer er geen timers actief zijn, is entries een lege array. is_running is 1 voor lopend en 2 voor gepauzeerd.

Voorbeeld
curl https://api.todo4you.com/api/v1/time-entries/active \ -H "Authorization: Bearer YOUR_TOKEN"
Notificaties

Notificaties weergeven

GET /api/v1/notifications

Geeft de laatste 20 meldingen terug en markeert alles als gelezen.

Antwoord
200 OK200
{ "notifications": [ { "id": 1, "type": "reaction", "message": "commented on APP-5: Fix login bug", "ticket_id": 42, "project_id": 5, "read_at": null, "created_at": "2025-01-15 10:00:00" } ] }
Voorbeeld
curl https://api.todo4you.com/api/v1/notifications \ -H "Authorization: Bearer YOUR_TOKEN"

Aantal ongelezen

GET /api/v1/notifications/unread-count

Geeft het aantal ongelezen meldingen terug.

Antwoord
200 OK200
{ "count": 3 }
Voorbeeld
curl https://api.todo4you.com/api/v1/notifications/unread-count \ -H "Authorization: Bearer YOUR_TOKEN"

Als gelezen markeren voor ticket

POST /api/v1/notifications/mark-read-for-ticket

Markeert alle ongelezen notificaties voor een specifiek ticket als gelezen.

Request body (JSON)
VeldTypeBeschrijving
ticket_idintegerverplichtThe ticket ID to mark notifications as read for
Antwoord
200 OK200
{ "success": true }
Voorbeeld
curl -X POST https://api.todo4you.com/api/v1/notifications/mark-read-for-ticket \ -H "Authorization: Bearer YOUR_TOKEN" \ -H "Content-Type: application/json" \ -d '{"ticket_id": 42}'

Binnenkort beschikbaar

Onze native apps voor iOS, macOS en Android zijn in ontwikkeling en zijn binnenkort beschikbaar in de App Store en Google Play.