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
Copy Authorization: Bearer YOUR_64_CHAR_TOKEN
3 - Test uw token
Plak uw token hieronder om te verifieren dat het werkt en bekijk uw projectlijst:
Fouten
Alle fouten retourneren JSON met een error-veld dat het probleem beschrijft. Succesvolle antwoorden bevatten nooit een error-veld.
Copy // 422 example
{ "error" : "title is required." }
Status Betekenis
401 Missing or invalid API token
403 Token valid but role insufficient for this action (viewer trying to create/move)
404 Project or ticket not found, or not accessible with your token
422 Validation failed - read the error message for the exact field
Projecten
Projecten weergeven
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 OK 200
Copy {
"projects" : [
{
"id" : 12 ,
"name" : "My Project" ,
"prefix" : "TDL" ,
"description" : "Main development board"
}
]
}
Voorbeeld
cURL
JavaScript
PHP
Python
Copy curl https://api.todo4you.com/api/v1/projects \
-H "Authorization: Bearer YOUR_TOKEN"
Copy const res = await fetch('https://api.todo4you.com/api/v1/projects' , {
headers: { Authorization : `Bearer ${TOKEN}` } ,
} );
const { projects } = await res.json();
Copy $ch = curl_init ('https://api.todo4you.com/api/v1/projects' );
curl_setopt_array ($ch, [
CURLOPT_RETURNTRANSFER => true ,
CURLOPT_HTTPHEADER => ['Authorization: Bearer YOUR_TOKEN' ],
]);
$data = json_decode (curl_exec ($ch), true );
curl_close ($ch);
$projects = $data['projects' ];
Copy import requests
data = requests.get(
'https://api.todo4you.com/api/v1/projects' ,
headers={ 'Authorization' : f'Bearer {TOKEN}' } ,
).json()
Project aanmaken
Maakt een nieuw project aan. U wordt automatisch de projecteigenaar met de rol manager .
Request body (JSON)
Veld Type Beschrijving
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 Created 201
Copy {
"project" : {
"id" : 25 ,
"name" : "My New Project" ,
"prefix" : "MNP" ,
"description" : "A fresh project"
}
}
Voorbeeld
cURL
JavaScript
PHP
Python
Copy 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"}'
Copy const { project } = await (await fetch(
'https://api.todo4you.com/api/v1/projects' ,
{
method: 'POST' ,
headers: { Authorization : `Bearer ${TOKEN}` , 'Content-Type' : 'application/json' } ,
body: JSON.stringify({ name: 'My New Project' , prefix: 'MNP' } ),
} ,
)).json();
Copy $payload = json_encode (['name' => 'My New Project' , 'prefix' => 'MNP' ]);
$ch = curl_init ('https://api.todo4you.com/api/v1/projects' );
curl_setopt_array ($ch, [
CURLOPT_RETURNTRANSFER => true ,
CURLOPT_POST => true ,
CURLOPT_POSTFIELDS => $payload,
CURLOPT_HTTPHEADER => [
'Authorization: Bearer YOUR_TOKEN' ,
'Content-Type: application/json' ,
],
]);
$data = json_decode (curl_exec ($ch), true );
curl_close ($ch);
$project = $data['project' ];
Copy import requests
resp = requests.post(
'https://api.todo4you.com/api/v1/projects' ,
headers={ 'Authorization' : f'Bearer {TOKEN}' } ,
json={ 'name' : 'My New Project' , 'prefix' : 'MNP' } ,
)
project = resp.json()['project' ]
Projectstatistieken
Geeft het aantal open tickets in een project terug (alle statussen behalve done). Handig voor conditiecontroles en dashboards.
Padparameters
Parameter Type Beschrijving
id integer Project ID - from List projects
Antwoord
200 OK 200
Copy { "open_tickets" : 14 }
Voorbeeld
cURL
JavaScript
PHP
Python
Copy curl https://api.todo4you.com/api/v1/projects/12/stats \
-H "Authorization: Bearer YOUR_TOKEN"
Copy const { open_tickets } = await (await fetch(
'https://api.todo4you.com/api/v1/projects/12/stats' ,
{ headers: { Authorization : `Bearer ${TOKEN}` } } ,
)).json();
Copy $ch = curl_init ('https://api.todo4you.com/api/v1/projects/12/stats' );
curl_setopt_array ($ch, [
CURLOPT_RETURNTRANSFER => true ,
CURLOPT_HTTPHEADER => ['Authorization: Bearer YOUR_TOKEN' ],
]);
$data = json_decode (curl_exec ($ch), true );
curl_close ($ch);
$openTickets = $data['open_tickets' ];
Copy import requests
data = requests.get(
'https://api.todo4you.com/api/v1/projects/12/stats' ,
headers={ 'Authorization' : f'Bearer {TOKEN}' } ,
).json()
open_tickets = data['open_tickets' ]
Projectstatussen
Geeft de geldige statuswaarden voor een project terug. Geef een van deze door aan Ticket verplaatsen .
Padparameters
Parameter Type Beschrijving
id integer Project ID
Antwoord
200 OK 200
Copy {
"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
JavaScript
PHP
Python
Copy curl https://api.todo4you.com/api/v1/projects/12/statuses \
-H "Authorization: Bearer YOUR_TOKEN"
Copy const { statuses } = await (await fetch(
'https://api.todo4you.com/api/v1/projects/12/statuses' ,
{ headers: { Authorization : `Bearer ${TOKEN}` } } ,
)).json();
Copy $ch = curl_init ('https://api.todo4you.com/api/v1/projects/12/statuses' );
curl_setopt_array ($ch, [
CURLOPT_RETURNTRANSFER => true ,
CURLOPT_HTTPHEADER => ['Authorization: Bearer YOUR_TOKEN' ],
]);
$data = json_decode (curl_exec ($ch), true );
curl_close ($ch);
$statuses = $data['statuses' ];
Copy import requests
data = requests.get(
'https://api.todo4you.com/api/v1/projects/12/statuses' ,
headers={ 'Authorization' : f'Bearer {TOKEN}' } ,
).json()
statuses = data['statuses' ]
Leden weergeven
Geeft alle leden van een project terug met hun rollen. Gebruik de id-waarden bij het toewijzen van tickets via Lid toewijzen .
Padparameters
Parameter Type Beschrijving
id integer Project ID
Antwoord
200 OK 200
Copy {
"members" : [
{ "id" : 3 , "name" : "Alice" , "avatar" : null , "role" : "manager" } ,
{ "id" : 8 , "name" : "Bob" , "avatar" : null , "role" : "developer" }
]
}
Voorbeeld
cURL
JavaScript
PHP
Python
Copy curl https://api.todo4you.com/api/v1/projects/12/members \
-H "Authorization: Bearer YOUR_TOKEN"
Copy const { members } = await (await fetch(
'https://api.todo4you.com/api/v1/projects/12/members' ,
{ headers: { Authorization : `Bearer ${TOKEN}` } } ,
)).json();
Copy $ch = curl_init ('https://api.todo4you.com/api/v1/projects/12/members' );
curl_setopt_array ($ch, [
CURLOPT_RETURNTRANSFER => true ,
CURLOPT_HTTPHEADER => ['Authorization: Bearer YOUR_TOKEN' ],
]);
$data = json_decode (curl_exec ($ch), true );
curl_close ($ch);
$members = $data['members' ];
Copy import requests
data = requests.get(
'https://api.todo4you.com/api/v1/projects/12/members' ,
headers={ 'Authorization' : f'Bearer {TOKEN}' } ,
).json()
members = data['members' ]
Tickets
Tickets weergeven
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
Parameter Type Beschrijving
id integer Project ID
Queryparameters
Parameter Type Beschrijving
status
string
optioneel
Filter by status slug (use GET /projects/{id}/statuses to get valid slugs)
Antwoord
200 OK 200
Copy {
"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
JavaScript
PHP
Python
Copy curl https://api.todo4you.com/api/v1/projects/12/tickets?status=in_progress \
-H "Authorization: Bearer YOUR_TOKEN"
Copy const { tickets } = await (await fetch(
'https://api.todo4you.com/api/v1/projects/12/tickets?status=in_progress' ,
{ headers: { Authorization : `Bearer ${TOKEN}` } } ,
)).json();
Copy $ch = curl_init ('https://api.todo4you.com/api/v1/projects/12/tickets?status=in_progress' );
curl_setopt_array ($ch, [
CURLOPT_RETURNTRANSFER => true ,
CURLOPT_HTTPHEADER => ['Authorization: Bearer YOUR_TOKEN' ],
]);
$data = json_decode (curl_exec ($ch), true );
curl_close ($ch);
$tickets = $data['tickets' ];
Copy import requests
data = requests.get(
'https://api.todo4you.com/api/v1/projects/12/tickets' ,
headers={ 'Authorization' : f'Bearer {TOKEN}' } ,
params={ 'status' : 'in_progress' } ,
).json()
tickets = data['tickets' ]
Ticket ophalen
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
Parameter Type Beschrijving
id integer Project ID
number integer Ticket number within the project (e.g. 47 for TDL-47)
Antwoord
200 OK 200
Copy {
"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
JavaScript
PHP
Python
Copy curl https://api.todo4you.com/api/v1/projects/12/tickets/47 \
-H "Authorization: Bearer YOUR_TOKEN"
Copy const { ticket } = await (await fetch(
'https://api.todo4you.com/api/v1/projects/12/tickets/47' ,
{ headers: { Authorization : `Bearer ${TOKEN}` } } ,
)).json();
Copy $ch = curl_init ('https://api.todo4you.com/api/v1/projects/12/tickets/47' );
curl_setopt_array ($ch, [
CURLOPT_RETURNTRANSFER => true ,
CURLOPT_HTTPHEADER => ['Authorization: Bearer YOUR_TOKEN' ],
]);
$data = json_decode (curl_exec ($ch), true );
curl_close ($ch);
$ticket = $data['ticket' ];
Copy import requests
data = requests.get(
'https://api.todo4you.com/api/v1/projects/12/tickets/47' ,
headers={ 'Authorization' : f'Bearer {TOKEN}' } ,
).json()
ticket = data['ticket' ]
Tickets zoeken
Zoekt niet-gearchiveerde tickets op trefwoord. Vergelijkt met de tickettitel en beschrijving (niet hoofdlettergevoelig). Geeft resultaten terug gesorteerd op meest recent bijgewerkt.
Padparameters
Parameter Type Beschrijving
id integer Project ID
Queryparameters
Parameter Type Beschrijving
q
string
verplicht
Search keyword(s) to match against title and description
Antwoord
200 OK 200
Copy {
"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
JavaScript
PHP
Python
Copy curl "https://api.todo4you.com/api/v1/projects/12/tickets/search?q=login" \
-H "Authorization: Bearer YOUR_TOKEN"
Copy const { tickets } = await (await fetch(
`https://api.todo4you.com/api/v1/projects/12/tickets/search?q=${encodeURIComponent('login')}` ,
{ headers: { Authorization : `Bearer ${TOKEN}` } } ,
)).json();
Copy $q = urlencode ('login' );
$ch = curl_init ("https://api.todo4you.com/api/v1/projects/12/tickets/search?q={$q}" );
curl_setopt_array ($ch, [
CURLOPT_RETURNTRANSFER => true ,
CURLOPT_HTTPHEADER => ['Authorization: Bearer YOUR_TOKEN' ],
]);
$data = json_decode (curl_exec ($ch), true );
curl_close ($ch);
$tickets = $data['tickets' ];
Copy import requests
data = requests.get(
'https://api.todo4you.com/api/v1/projects/12/tickets/search' ,
headers={ 'Authorization' : f'Bearer {TOKEN}' } ,
params={ 'q' : 'login' } ,
).json()
tickets = data['tickets' ]
Tickets
Ticket aanmaken
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
Parameter Type Beschrijving
id integer Project ID
Request body (JSON)
Veld Type Beschrijving
title
string
verplicht
Ticket title
type
string
optioneel
bug - feature - releaseDefault: feature
priority
string
optioneel
urgent - high - medium - lowDefault: 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 Created 201
Copy { "ticket_ref" : "TDL-47" }
Voorbeeld
cURL
JavaScript
PHP
Python
Copy 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]
}'
Copy const { ticket_ref } = await (await fetch(
'https://api.todo4you.com/api/v1/projects/12/tickets' ,
{
method: 'POST' ,
headers: { Authorization : `Bearer ${TOKEN}` , 'Content-Type' : 'application/json' } ,
body: JSON.stringify({
title: 'Fix login bug' ,
type: 'bug' ,
priority: 'high' ,
status: 'todo' ,
deadline: '2026-03-15' ,
checklist: ['Write tests' , 'Update docs' ],
tags: [5 , 12 ],
} ),
} ,
)).json();
// ticket_ref -> "TDL-47"
Copy $payload = json_encode ([
'title' => 'Fix login bug' ,
'type' => 'bug' ,
'priority' => 'high' ,
'status' => 'todo' ,
'deadline' => '2026-03-15' ,
'checklist' => ['Write tests' , 'Update docs' ],
'tags' => [5 , 12 ],
]);
$ch = curl_init ('https://api.todo4you.com/api/v1/projects/12/tickets' );
curl_setopt_array ($ch, [
CURLOPT_RETURNTRANSFER => true ,
CURLOPT_POST => true ,
CURLOPT_POSTFIELDS => $payload,
CURLOPT_HTTPHEADER => [
'Authorization: Bearer YOUR_TOKEN' ,
'Content-Type: application/json' ,
],
]);
$data = json_decode (curl_exec ($ch), true );
curl_close ($ch);
$ticketRef = $data['ticket_ref' ]; // "TDL-47"
Copy import requests
resp = requests.post(
'https://api.todo4you.com/api/v1/projects/12/tickets' ,
headers={ 'Authorization' : f'Bearer {TOKEN}' } ,
json={
'title' : 'Fix login bug' ,
'type' : 'bug' ,
'priority' : 'high' ,
'status' : 'todo' ,
'deadline' : '2026-03-15' ,
'checklist' : ['Write tests' , 'Update docs' ],
'tags' : [5 , 12 ],
} ,
)
ticket_ref = resp.json()['ticket_ref' ] # "TDL-47"
Ticket bijwerken
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
Parameter Type Beschrijving
id integer Project ID
number integer Ticket number within the project
Request body (JSON)
Veld Type Beschrijving
title string optioneel New title (cannot be empty)
description string optioneel New description (empty string to clear)
type string optioneel bug - feature - release
priority string|null optioneel urgent - high - medium - low - null to clear
deadline string|null optioneel YYYY-MM-DD or null to clear
story_points integer|null optioneel 0-3 or null to clear (story points mode only)
estimated_hours number|null optioneel Hours or null to clear (hours mode only)
tags integer[] optioneel Replace all tags with this list of tag IDs
Antwoord
200 OK 200
Copy { "ok" : true }
Voorbeeld
cURL
JavaScript
PHP
Python
Copy 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]}'
Copy await fetch('https://api.todo4you.com/api/v1/projects/12/tickets/47/update' , {
method: 'POST' ,
headers: { Authorization : `Bearer ${TOKEN}` , 'Content-Type' : 'application/json' } ,
body: JSON.stringify({ title: 'Updated title' , priority: 'urgent' , tags: [5 , 12 ] } ),
} );
Copy $payload = json_encode (['title' => 'Updated title' , 'priority' => 'urgent' ]);
$ch = curl_init ('https://api.todo4you.com/api/v1/projects/12/tickets/47/update' );
curl_setopt_array ($ch, [
CURLOPT_RETURNTRANSFER => true ,
CURLOPT_POST => true ,
CURLOPT_POSTFIELDS => $payload,
CURLOPT_HTTPHEADER => [
'Authorization: Bearer YOUR_TOKEN' ,
'Content-Type: application/json' ,
],
]);
$data = json_decode (curl_exec ($ch), true );
curl_close ($ch);
Copy import requests
requests.post(
'https://api.todo4you.com/api/v1/projects/12/tickets/47/update' ,
headers={ 'Authorization' : f'Bearer {TOKEN}' } ,
json={ 'title' : 'Updated title' , 'priority' : 'urgent' } ,
)
Ticket verplaatsen
Verplaatst een ticket naar een andere statuskolom. Triggert een realtime boardupdate voor alle actieve kijkers. Vereist de rol editor of manager .
Padparameters
Parameter Type Beschrijving
id integer Project ID
number integer Ticket number within the project
Request body (JSON)
Veld Type Beschrijving
status
string
verplicht
Status slug (use Project statuses to get valid slugs)
Antwoord
200 OK 200
Copy { "ok" : true }
Voorbeeld
cURL
JavaScript
PHP
Python
Copy 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"}'
Copy await fetch('https://api.todo4you.com/api/v1/projects/12/tickets/47/move' , {
method: 'POST' ,
headers: { Authorization : `Bearer ${TOKEN}` , 'Content-Type' : 'application/json' } ,
body: JSON.stringify({ status: 'done' } ),
} );
Copy $payload = json_encode (['status' => 'done' ]);
$ch = curl_init ('https://api.todo4you.com/api/v1/projects/12/tickets/47/move' );
curl_setopt_array ($ch, [
CURLOPT_RETURNTRANSFER => true ,
CURLOPT_POST => true ,
CURLOPT_POSTFIELDS => $payload,
CURLOPT_HTTPHEADER => [
'Authorization: Bearer YOUR_TOKEN' ,
'Content-Type: application/json' ,
],
]);
$data = json_decode (curl_exec ($ch), true ); // ['ok' => true]
curl_close ($ch);
Copy import requests
requests.post(
'https://api.todo4you.com/api/v1/projects/12/tickets/47/move' ,
headers={ 'Authorization' : f'Bearer {TOKEN}' } ,
json={ 'status' : 'done' } ,
)
Ticket archiveren
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
Parameter Type Beschrijving
id integer Project ID
number integer Ticket number within the project
Antwoord
200 OK 200
Copy { "ok" : true }
Voorbeeld
cURL
JavaScript
PHP
Python
Copy curl -X POST https://api.todo4you.com/api/v1/projects/12/tickets/47/archive \
-H "Authorization: Bearer YOUR_TOKEN"
Copy await fetch('https://api.todo4you.com/api/v1/projects/12/tickets/47/archive' , {
method: 'POST' ,
headers: { Authorization : `Bearer ${TOKEN}` } ,
} );
Copy $ch = curl_init ('https://api.todo4you.com/api/v1/projects/12/tickets/47/archive' );
curl_setopt_array ($ch, [
CURLOPT_RETURNTRANSFER => true ,
CURLOPT_POST => true ,
CURLOPT_HTTPHEADER => ['Authorization: Bearer YOUR_TOKEN' ],
]);
$data = json_decode (curl_exec ($ch), true ); // ['ok' => true]
curl_close ($ch);
Copy import requests
requests.post(
'https://api.todo4you.com/api/v1/projects/12/tickets/47/archive' ,
headers={ 'Authorization' : f'Bearer {TOKEN}' } ,
)
Ticket verwijderen
Verwijdert een ticket permanent (soft delete). De maker van het ticket kan eigen tickets verwijderen; anders is de manager -rol vereist.
Padparameters
Parameter Type Beschrijving
id integer Project ID
number integer Ticket number within the project
Antwoord
200 OK 200
Copy { "ok" : true }
Voorbeeld
cURL
JavaScript
PHP
Python
Copy curl -X POST https://api.todo4you.com/api/v1/projects/12/tickets/47/delete \
-H "Authorization: Bearer YOUR_TOKEN"
Copy await fetch('https://api.todo4you.com/api/v1/projects/12/tickets/47/delete' , {
method: 'POST' ,
headers: { Authorization : `Bearer ${TOKEN}` } ,
} );
Copy $ch = curl_init ('https://api.todo4you.com/api/v1/projects/12/tickets/47/delete' );
curl_setopt_array ($ch, [
CURLOPT_RETURNTRANSFER => true ,
CURLOPT_POST => true ,
CURLOPT_HTTPHEADER => ['Authorization: Bearer YOUR_TOKEN' ],
]);
$data = json_decode (curl_exec ($ch), true );
curl_close ($ch);
Copy import requests
requests.post(
'https://api.todo4you.com/api/v1/projects/12/tickets/47/delete' ,
headers={ 'Authorization' : f'Bearer {TOKEN}' } ,
)
Lid toewijzen
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
Parameter Type Beschrijving
id integer Project ID
number integer Ticket number within the project
Request body (JSON)
Veld Type Beschrijving
user_id integer verplicht The project member's user ID
Antwoord
201 Created 201
Copy { "ok" : true }
Voorbeeld
cURL
JavaScript
PHP
Python
Copy 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}'
Copy await fetch('https://api.todo4you.com/api/v1/projects/12/tickets/47/assign' , {
method: 'POST' ,
headers: { Authorization : `Bearer ${TOKEN}` , 'Content-Type' : 'application/json' } ,
body: JSON.stringify({ user_id: 8 } ),
} );
Copy $ch = curl_init ('https://api.todo4you.com/api/v1/projects/12/tickets/47/assign' );
curl_setopt_array ($ch, [
CURLOPT_RETURNTRANSFER => true ,
CURLOPT_POST => true ,
CURLOPT_POSTFIELDS => json_encode (['user_id' => 8 ]),
CURLOPT_HTTPHEADER => [
'Authorization: Bearer YOUR_TOKEN' ,
'Content-Type: application/json' ,
],
]);
$data = json_decode (curl_exec ($ch), true );
curl_close ($ch);
Copy import requests
requests.post(
'https://api.todo4you.com/api/v1/projects/12/tickets/47/assign' ,
headers={ 'Authorization' : f'Bearer {TOKEN}' } ,
json={ 'user_id' : 8 } ,
)
Lid verwijderen
Verwijdert een lid van de toegewezen-lijst. Vereist de rol editor of manager
Padparameters
Parameter Type Beschrijving
id integer Project ID
number integer Ticket number within the project
Request body (JSON)
Veld Type Beschrijving
user_id integer verplicht The user ID to unassign
Antwoord
200 OK 200
Copy { "ok" : true }
Voorbeeld
cURL
JavaScript
PHP
Python
Copy 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}'
Copy await fetch('https://api.todo4you.com/api/v1/projects/12/tickets/47/unassign' , {
method: 'POST' ,
headers: { Authorization : `Bearer ${TOKEN}` , 'Content-Type' : 'application/json' } ,
body: JSON.stringify({ user_id: 8 } ),
} );
Copy $ch = curl_init ('https://api.todo4you.com/api/v1/projects/12/tickets/47/unassign' );
curl_setopt_array ($ch, [
CURLOPT_RETURNTRANSFER => true ,
CURLOPT_POST => true ,
CURLOPT_POSTFIELDS => json_encode (['user_id' => 8 ]),
CURLOPT_HTTPHEADER => [
'Authorization: Bearer YOUR_TOKEN' ,
'Content-Type: application/json' ,
],
]);
$data = json_decode (curl_exec ($ch), true );
curl_close ($ch);
Copy import requests
requests.post(
'https://api.todo4you.com/api/v1/projects/12/tickets/47/unassign' ,
headers={ 'Authorization' : f'Bearer {TOKEN}' } ,
json={ 'user_id' : 8 } ,
)
Board
Boardgegevens
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
Parameter Type Beschrijving
id integer Project ID
Antwoord
200 OK 200
Copy {
"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
JavaScript
PHP
Python
Copy curl https://api.todo4you.com/api/v1/projects/12/board \
-H "Authorization: Bearer YOUR_TOKEN"
Copy const board = await (await fetch(
'https://api.todo4you.com/api/v1/projects/12/board' ,
{ headers: { Authorization : `Bearer ${TOKEN}` } } ,
)).json();
Copy $ch = curl_init ('https://api.todo4you.com/api/v1/projects/12/board' );
curl_setopt_array ($ch, [
CURLOPT_RETURNTRANSFER => true ,
CURLOPT_HTTPHEADER => ['Authorization: Bearer YOUR_TOKEN' ],
]);
$data = json_decode (curl_exec ($ch), true );
curl_close ($ch);
$board = $data;
Copy import requests
board = requests.get(
'https://api.todo4you.com/api/v1/projects/12/board' ,
headers={ 'Authorization' : f'Bearer {TOKEN}' } ,
).json()
Tickets sorteren
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
Parameter Type Beschrijving
id integer Project ID
Request body (JSON)
Veld Type Beschrijving
status string verplicht Column status being reordered
ticket_ids integer[] verplicht Ordered array of ticket IDs
Antwoord
200 OK 200
Copy { "ok" : true }
Voorbeeld
cURL
JavaScript
PHP
Python
Copy 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]}'
Copy await fetch('https://api.todo4you.com/api/v1/projects/12/tickets/sort' , {
method: 'POST' ,
headers: { Authorization : `Bearer ${TOKEN}` , 'Content-Type' : 'application/json' } ,
body: JSON.stringify({ status: 'todo' , ticket_ids: [45 , 12 , 78 ] } ),
} );
Copy $payload = json_encode (['status' => 'todo' , 'ticket_ids' => [45 , 12 , 78 ]]);
$ch = curl_init ('https://api.todo4you.com/api/v1/projects/12/tickets/sort' );
curl_setopt_array ($ch, [
CURLOPT_RETURNTRANSFER => true ,
CURLOPT_POST => true ,
CURLOPT_POSTFIELDS => $payload,
CURLOPT_HTTPHEADER => [
'Authorization: Bearer YOUR_TOKEN' ,
'Content-Type: application/json' ,
],
]);
$data = json_decode (curl_exec ($ch), true );
curl_close ($ch);
Copy import requests
data = requests.post(
'https://api.todo4you.com/api/v1/projects/12/tickets/sort' ,
headers={ 'Authorization' : f'Bearer {TOKEN}' } ,
json={ 'status' : 'todo' , 'ticket_ids' : [45 , 12 , 78 ]} ,
).json()
Checklist
Checklist-item toevoegen
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
Parameter Type Beschrijving
ticketId integer Ticket ID (not the project ticket number)
Request body (JSON)
Veld Type Beschrijving
text string verplicht Item text (max 500 characters)
Antwoord
201 Created 201
Copy {
"ok" : true ,
"item" : {
"id" : 42 , "ticket_id" : 101 ,
"text" : "Write tests" , "done" : 0 , "sort_order" : 3
}
}
Voorbeeld
cURL
JavaScript
PHP
Python
Copy 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"}'
Copy await fetch('https://api.todo4you.com/api/v1/tickets/101/checklist' , {
method: 'POST' ,
headers: { Authorization : `Bearer ${TOKEN}` , 'Content-Type' : 'application/json' } ,
body: JSON.stringify({ text: 'Write tests' } ),
} );
Copy $payload = json_encode (['text' => 'Write tests' ]);
$ch = curl_init ('https://api.todo4you.com/api/v1/tickets/101/checklist' );
curl_setopt_array ($ch, [
CURLOPT_RETURNTRANSFER => true ,
CURLOPT_POST => true ,
CURLOPT_POSTFIELDS => $payload,
CURLOPT_HTTPHEADER => [
'Authorization: Bearer YOUR_TOKEN' ,
'Content-Type: application/json' ,
],
]);
$data = json_decode (curl_exec ($ch), true );
curl_close ($ch);
$item = $data['item' ];
Copy import requests
data = requests.post(
'https://api.todo4you.com/api/v1/tickets/101/checklist' ,
headers={ 'Authorization' : f'Bearer {TOKEN}' } ,
json={ 'text' : 'Write tests' } ,
).json()
item = data['item' ]
Checklist-item aan/uit zetten
Schakelt een checklist-item tussen afgerond en niet afgerond. Vereist de rol editor of manager .
Padparameters
Parameter Type Beschrijving
itemId integer Checklist item ID
Antwoord
200 OK 200
Copy { "ok" : true , "done" : 1 }
Voorbeeld
cURL
JavaScript
PHP
Python
Copy curl -X POST https://api.todo4you.com/api/v1/checklist/42/toggle \
-H "Authorization: Bearer YOUR_TOKEN"
Copy await fetch('https://api.todo4you.com/api/v1/checklist/42/toggle' , {
method: 'POST' ,
headers: { Authorization : `Bearer ${TOKEN}` } ,
} );
Copy $ch = curl_init ('https://api.todo4you.com/api/v1/checklist/42/toggle' );
curl_setopt_array ($ch, [
CURLOPT_RETURNTRANSFER => true ,
CURLOPT_POST => true ,
CURLOPT_HTTPHEADER => ['Authorization: Bearer YOUR_TOKEN' ],
]);
$data = json_decode (curl_exec ($ch), true );
curl_close ($ch);
Copy import requests
data = requests.post(
'https://api.todo4you.com/api/v1/checklist/42/toggle' ,
headers={ 'Authorization' : f'Bearer {TOKEN}' } ,
).json()
Checklist-item bijwerken
Werkt de tekst van een checklist-item bij. Vereist de rol editor of manager .
Padparameters
Parameter Type Beschrijving
itemId integer Checklist item ID
Request body (JSON)
Veld Type Beschrijving
text string verplicht New item text (max 500 characters)
Antwoord
200 OK 200
Copy { "ok" : true }
Voorbeeld
cURL
JavaScript
PHP
Python
Copy 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"}'
Copy await fetch('https://api.todo4you.com/api/v1/checklist/42/update' , {
method: 'POST' ,
headers: { Authorization : `Bearer ${TOKEN}` , 'Content-Type' : 'application/json' } ,
body: JSON.stringify({ text: 'Write integration tests' } ),
} );
Copy $payload = json_encode (['text' => 'Write integration tests' ]);
$ch = curl_init ('https://api.todo4you.com/api/v1/checklist/42/update' );
curl_setopt_array ($ch, [
CURLOPT_RETURNTRANSFER => true ,
CURLOPT_POST => true ,
CURLOPT_POSTFIELDS => $payload,
CURLOPT_HTTPHEADER => [
'Authorization: Bearer YOUR_TOKEN' ,
'Content-Type: application/json' ,
],
]);
$data = json_decode (curl_exec ($ch), true );
curl_close ($ch);
Copy import requests
data = requests.post(
'https://api.todo4you.com/api/v1/checklist/42/update' ,
headers={ 'Authorization' : f'Bearer {TOKEN}' } ,
json={ 'text' : 'Write integration tests' } ,
).json()
Checklist-item verwijderen
Verwijdert een checklist-item van een ticket. Vereist de editor - of manager -rol.
Padparameters
Parameter Type Beschrijving
itemId integer Checklist item ID
Antwoord
200 OK 200
Copy { "ok" : true }
Voorbeeld
cURL
JavaScript
PHP
Python
Copy curl -X POST https://api.todo4you.com/api/v1/checklist/42/delete \
-H "Authorization: Bearer YOUR_TOKEN"
Copy await fetch('https://api.todo4you.com/api/v1/checklist/42/delete' , {
method: 'POST' ,
headers: { Authorization : `Bearer ${TOKEN}` } ,
} );
Copy $ch = curl_init ('https://api.todo4you.com/api/v1/checklist/42/delete' );
curl_setopt_array ($ch, [
CURLOPT_RETURNTRANSFER => true ,
CURLOPT_POST => true ,
CURLOPT_HTTPHEADER => ['Authorization: Bearer YOUR_TOKEN' ],
]);
$data = json_decode (curl_exec ($ch), true );
curl_close ($ch);
Copy import requests
data = requests.post(
'https://api.todo4you.com/api/v1/checklist/42/delete' ,
headers={ 'Authorization' : f'Bearer {TOKEN}' } ,
).json()
Checklist-items sorteren
Herordent alle checklist-items voor een ticket. Geef de volledige geordende lijst van item-ID's door. Vereist de editor - of manager -rol.
Padparameters
Parameter Type Beschrijving
ticketId integer Ticket ID
Request body (JSON)
Veld Type Beschrijving
item_ids integer[] verplicht Ordered array of checklist item IDs
Antwoord
200 OK 200
Copy { "ok" : true }
Voorbeeld
cURL
JavaScript
PHP
Python
Copy 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]}'
Copy await fetch('https://api.todo4you.com/api/v1/tickets/101/checklist/sort' , {
method: 'POST' ,
headers: { Authorization : `Bearer ${TOKEN}` , 'Content-Type' : 'application/json' } ,
body: JSON.stringify({ item_ids: [42 , 43 , 41 ] } ),
} );
Copy $payload = json_encode (['item_ids' => [42 , 43 , 41 ]]);
$ch = curl_init ('https://api.todo4you.com/api/v1/tickets/101/checklist/sort' );
curl_setopt_array ($ch, [
CURLOPT_RETURNTRANSFER => true ,
CURLOPT_POST => true ,
CURLOPT_POSTFIELDS => $payload,
CURLOPT_HTTPHEADER => [
'Authorization: Bearer YOUR_TOKEN' ,
'Content-Type: application/json' ,
],
]);
$data = json_decode (curl_exec ($ch), true );
curl_close ($ch);
Copy import requests
data = requests.post(
'https://api.todo4you.com/api/v1/tickets/101/checklist/sort' ,
headers={ 'Authorization' : f'Bearer {TOKEN}' } ,
json={ 'item_ids' : [42 , 43 , 41 ]} ,
).json()
Blokkades
Blokkade toevoegen
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
Parameter Type Beschrijving
ticketId integer Ticket ID of the blocked ticket
Request body (JSON)
Veld Type Beschrijving
blocker_ticket_id integer verplicht Ticket ID of the blocking ticket (must be in the same project)
Antwoord
201 Created 201
Copy {
"ok" : true ,
"blockers" : [
{ "id" : 55 , "title" : "Setup database" , "status" : "in_progress" , "project_ticket_number" : 3 }
]
}
Voorbeeld
cURL
JavaScript
PHP
Python
Copy 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}'
Copy await fetch('https://api.todo4you.com/api/v1/tickets/101/blockers' , {
method: 'POST' ,
headers: { Authorization : `Bearer ${TOKEN}` , 'Content-Type' : 'application/json' } ,
body: JSON.stringify({ blocker_ticket_id: 55 } ),
} );
Copy $payload = json_encode (['blocker_ticket_id' => 55 ]);
$ch = curl_init ('https://api.todo4you.com/api/v1/tickets/101/blockers' );
curl_setopt_array ($ch, [
CURLOPT_RETURNTRANSFER => true ,
CURLOPT_POST => true ,
CURLOPT_POSTFIELDS => $payload,
CURLOPT_HTTPHEADER => [
'Authorization: Bearer YOUR_TOKEN' ,
'Content-Type: application/json' ,
],
]);
$data = json_decode (curl_exec ($ch), true );
curl_close ($ch);
Copy import requests
data = requests.post(
'https://api.todo4you.com/api/v1/tickets/101/blockers' ,
headers={ 'Authorization' : f'Bearer {TOKEN}' } ,
json={ 'blocker_ticket_id' : 55 } ,
).json()
Blocker verwijderen
Verwijdert een blocker-relatie van een ticket. Geeft de bijgewerkte blockerlijst terug. Vereist de editor - of manager -rol.
Padparameters
Parameter Type Beschrijving
ticketId integer Ticket ID of the blocked ticket
blockerTicketId integer Ticket ID of the blocker to remove
Antwoord
200 OK 200
Copy { "ok" : true , "blockers" : [] }
Voorbeeld
cURL
JavaScript
PHP
Python
Copy curl -X POST https://api.todo4you.com/api/v1/tickets/101/blockers/55/delete \
-H "Authorization: Bearer YOUR_TOKEN"
Copy await fetch('https://api.todo4you.com/api/v1/tickets/101/blockers/55/delete' , {
method: 'POST' ,
headers: { Authorization : `Bearer ${TOKEN}` } ,
} );
Copy $ch = curl_init ('https://api.todo4you.com/api/v1/tickets/101/blockers/55/delete' );
curl_setopt_array ($ch, [
CURLOPT_RETURNTRANSFER => true ,
CURLOPT_POST => true ,
CURLOPT_HTTPHEADER => ['Authorization: Bearer YOUR_TOKEN' ],
]);
$data = json_decode (curl_exec ($ch), true );
curl_close ($ch);
Copy import requests
data = requests.post(
'https://api.todo4you.com/api/v1/tickets/101/blockers/55/delete' ,
headers={ 'Authorization' : f'Bearer {TOKEN}' } ,
).json()
Bijlagen
Bestanden uploaden
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
Parameter Type Beschrijving
ticketId integer Ticket ID
Request body (multipart/form-data)
Veld Type Beschrijving
files[] file verplicht One or more files to upload
Antwoord
200 OK 200
Copy {
"ok" : true ,
"attachments" : [
{
"id" : 7 , "ticket_id" : 101 ,
"original_name" : "screenshot.png" ,
"filesize" : 48210 , "mime_type" : "image/png"
}
]
}
Voorbeeld
cURL
JavaScript
PHP
Python
Copy 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"
Copy const form = new FormData();
form.append('files[]' , fileInput.files[0 ]);
await fetch('https://api.todo4you.com/api/v1/tickets/101/attachments' , {
method: 'POST' ,
headers: { Authorization : `Bearer ${TOKEN}` } ,
body: form,
} );
Copy $ch = curl_init ('https://api.todo4you.com/api/v1/tickets/101/attachments' );
curl_setopt_array ($ch, [
CURLOPT_RETURNTRANSFER => true ,
CURLOPT_POST => true ,
CURLOPT_POSTFIELDS => [
'files[0]' => new \CURLFile('screenshot.png' ),
'files[1]' => new \CURLFile('report.pdf' ),
],
CURLOPT_HTTPHEADER => ['Authorization: Bearer YOUR_TOKEN' ],
]);
$data = json_decode (curl_exec ($ch), true );
curl_close ($ch);
Copy import requests
data = requests.post(
'https://api.todo4you.com/api/v1/tickets/101/attachments' ,
headers={ 'Authorization' : f'Bearer {TOKEN}' } ,
files=[
('files[]' , open ('screenshot.png' , 'rb' )),
('files[]' , open ('report.pdf' , 'rb' )),
],
).json()
Bestand ophalen
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
Parameter Type Beschrijving
id integer Attachment ID
Antwoord
Geeft het binaire bestand terug met de juiste Content-Type- en Content-Disposition-headers.
Voorbeeld
cURL
JavaScript
PHP
Python
Copy curl https://api.todo4you.com/api/v1/attachments/7 \
-H "Authorization: Bearer YOUR_TOKEN" \
--output screenshot.png
Copy const res = await fetch('https://api.todo4you.com/api/v1/attachments/7' , {
headers: { Authorization : `Bearer ${TOKEN}` } ,
} );
const blob = await res.blob();
Copy $ch = curl_init ('https://api.todo4you.com/api/v1/attachments/7' );
curl_setopt_array ($ch, [
CURLOPT_RETURNTRANSFER => true ,
CURLOPT_HTTPHEADER => ['Authorization: Bearer YOUR_TOKEN' ],
]);
$fileData = curl_exec ($ch);
curl_close ($ch);
file_put_contents ('screenshot.png' , $fileData);
Copy import requests
resp = requests.get(
'https://api.todo4you.com/api/v1/attachments/7' ,
headers={ 'Authorization' : f'Bearer {TOKEN}' } ,
)
with open ('screenshot.png' , 'wb' ) as f:
f.write(resp.content)
Bestand verwijderen
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
Parameter Type Beschrijving
id integer Attachment ID
Antwoord
200 OK 200
Copy { "ok" : true }
Voorbeeld
cURL
JavaScript
PHP
Python
Copy curl -X POST https://api.todo4you.com/api/v1/attachments/7/delete \
-H "Authorization: Bearer YOUR_TOKEN"
Copy await fetch('https://api.todo4you.com/api/v1/attachments/7/delete' , {
method: 'POST' ,
headers: { Authorization : `Bearer ${TOKEN}` } ,
} );
Copy $ch = curl_init ('https://api.todo4you.com/api/v1/attachments/7/delete' );
curl_setopt_array ($ch, [
CURLOPT_RETURNTRANSFER => true ,
CURLOPT_POST => true ,
CURLOPT_HTTPHEADER => ['Authorization: Bearer YOUR_TOKEN' ],
]);
$data = json_decode (curl_exec ($ch), true );
curl_close ($ch);
Copy import requests
data = requests.post(
'https://api.todo4you.com/api/v1/attachments/7/delete' ,
headers={ 'Authorization' : f'Bearer {TOKEN}' } ,
).json()
Tag aanmaken
Maakt een nieuwe tag aan in een project. Vereist de rol manager .
Padparameters
Parameter Type Beschrijving
id integer Project ID
Request body (JSON)
Veld Type Beschrijving
name string verplicht Tag name (max 100 characters)
color string optioneel Hex color, e.g. #e74c3cDefault: #6c757d
Antwoord
201 Created 201
Copy {
"tag" : {
"id" : 18 ,
"name" : "frontend" ,
"color" : "#e74c3c" ,
"sort_order" : 3
}
}
Voorbeeld
cURL
JavaScript
PHP
Python
Copy 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"}'
Copy const { tag } = await (await fetch(
'https://api.todo4you.com/api/v1/projects/12/tags' ,
{
method: 'POST' ,
headers: { Authorization : `Bearer ${TOKEN}` , 'Content-Type' : 'application/json' } ,
body: JSON.stringify({ name: 'frontend' , color: '#e74c3c' } ),
} ,
)).json();
Copy $payload = json_encode (['name' => 'frontend' , 'color' => '#e74c3c' ]);
$ch = curl_init ('https://api.todo4you.com/api/v1/projects/12/tags' );
curl_setopt_array ($ch, [
CURLOPT_RETURNTRANSFER => true ,
CURLOPT_POST => true ,
CURLOPT_POSTFIELDS => $payload,
CURLOPT_HTTPHEADER => [
'Authorization: Bearer YOUR_TOKEN' ,
'Content-Type: application/json' ,
],
]);
$data = json_decode (curl_exec ($ch), true );
curl_close ($ch);
$tag = $data['tag' ];
Copy import requests
resp = requests.post(
'https://api.todo4you.com/api/v1/projects/12/tags' ,
headers={ 'Authorization' : f'Bearer {TOKEN}' } ,
json={ 'name' : 'frontend' , 'color' : '#e74c3c' } ,
)
tag = resp.json()['tag' ]
Tag verwijderen
Verwijdert een tag uit een project. De tag wordt automatisch verwijderd van alle tickets die deze gebruiken. Vereist de rol manager .
Padparameters
Parameter Type Beschrijving
id integer Project ID
tagId integer Tag ID from List tags
Antwoord
200 OK 200
Copy { "ok" : true }
Voorbeeld
cURL
JavaScript
PHP
Python
Copy curl -X POST https://api.todo4you.com/api/v1/projects/12/tags/5/delete \
-H "Authorization: Bearer YOUR_TOKEN"
Copy await fetch('https://api.todo4you.com/api/v1/projects/12/tags/5/delete' , {
method: 'POST' ,
headers: { Authorization : `Bearer ${TOKEN}` } ,
} );
Copy $ch = curl_init ('https://api.todo4you.com/api/v1/projects/12/tags/5/delete' );
curl_setopt_array ($ch, [
CURLOPT_RETURNTRANSFER => true ,
CURLOPT_POST => true ,
CURLOPT_HTTPHEADER => ['Authorization: Bearer YOUR_TOKEN' ],
]);
$data = json_decode (curl_exec ($ch), true );
curl_close ($ch);
Copy import requests
requests.post(
'https://api.todo4you.com/api/v1/projects/12/tags/5/delete' ,
headers={ 'Authorization' : f'Bearer {TOKEN}' } ,
)
Tijdregistratie
Tijdregistraties weergeven
Geeft alle tijdregistraties voor een ticket terug.
Padparameters
Parameter Type Beschrijving
ticketId integer The ticket ID
Antwoord
200 OK 200
Copy {
"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
JavaScript
PHP
Python
Copy curl https://api.todo4you.com/api/v1/tickets/42/time-entries \
-H "Authorization: Bearer YOUR_TOKEN"
Copy const res = await fetch ("https://api.todo4you.com/api/v1/tickets/42/time-entries" , {
headers: { "Authorization" : "Bearer YOUR_TOKEN" }
} );
const data = await res.json ();
Copy $ch = curl_init ("https://api.todo4you.com/api/v1/tickets/42/time-entries" );
curl_setopt ($ch, CURLOPT_HTTPHEADER, ["Authorization: Bearer YOUR_TOKEN" ]);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, true );
$res = json_decode (curl_exec ($ch), true );
Copy import requests
res = requests.get ("https://api.todo4you.com/api/v1/tickets/42/time-entries" ,
headers={"Authorization" : "Bearer YOUR_TOKEN" })
data = res.json ()
Handmatige registratie toevoegen
Voegt een handmatige tijdsregistratie toe (geen lopende timer).
Padparameters
Parameter Type Beschrijving
ticketId integer The ticket ID
Request body (JSON)
Veld Type Beschrijving
minutes integer verplicht Duration in minutes (min 1)
Antwoord
200 OK 200
Copy {
"success" : true ,
"entry" : {
"id" : 2 ,
"ticket_id" : 42 ,
"minutes" : 30 ,
"is_running" : 0 ,
"started_at" : null ,
"stopped_at" : null
}
}
Voorbeeld
cURL
JavaScript
PHP
Python
Copy 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}'
Copy const res = await fetch ("https://api.todo4you.com/api/v1/tickets/42/time-entries" , {
method: "POST" ,
headers: {
"Authorization" : "Bearer YOUR_TOKEN" ,
"Content-Type" : "application/json"
} ,
body: JSON.stringify ({ minutes: 30 } )
} );
const data = await res.json ();
Copy $ch = curl_init ("https://api.todo4you.com/api/v1/tickets/42/time-entries" );
curl_setopt ($ch, CURLOPT_POST, true );
curl_setopt ($ch, CURLOPT_HTTPHEADER, [
"Authorization: Bearer YOUR_TOKEN" ,
"Content-Type: application/json"
]);
curl_setopt ($ch, CURLOPT_POSTFIELDS, json_encode ([
"minutes" => 30 ,
]));
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, true );
$res = json_decode (curl_exec ($ch), true );
Copy import requests
res = requests.post ("https://api.todo4you.com/api/v1/tickets/42/time-entries" ,
headers={"Authorization" : "Bearer YOUR_TOKEN" },
json={"minutes" : 30 })
data = res.json ()
Timer starten
Start een lopende timer op een ticket. Er kan maar een timer per gebruiker tegelijk lopen.
Padparameters
Parameter Type Beschrijving
ticketId integer The ticket ID
Antwoord
200 OK 200
Copy {
"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 Entity 422
Copy {
"error" : "You already have a running timer." ,
"running_ticket_id" : 55
}
Voorbeeld
cURL
JavaScript
PHP
Python
Copy curl -X POST https://api.todo4you.com/api/v1/tickets/42/time-entries/start \
-H "Authorization: Bearer YOUR_TOKEN"
Copy const res = await fetch ("https://api.todo4you.com/api/v1/tickets/42/time-entries/start" , {
method: "POST" ,
headers: { "Authorization" : "Bearer YOUR_TOKEN" }
} );
const data = await res.json ();
Copy $ch = curl_init ("https://api.todo4you.com/api/v1/tickets/42/time-entries/start" );
curl_setopt ($ch, CURLOPT_POST, true );
curl_setopt ($ch, CURLOPT_HTTPHEADER, ["Authorization: Bearer YOUR_TOKEN" ]);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, true );
$res = json_decode (curl_exec ($ch), true );
Copy import requests
res = requests.post ("https://api.todo4you.com/api/v1/tickets/42/time-entries/start" ,
headers={"Authorization" : "Bearer YOUR_TOKEN" })
data = res.json ()
Timer stoppen
Stopt een lopende of gepauzeerde timer en berekent de uiteindelijke duur.
Padparameters
Parameter Type Beschrijving
entryId integer The time entry ID
Antwoord
200 OK 200
Copy {
"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
JavaScript
PHP
Python
Copy curl -X POST https://api.todo4you.com/api/v1/time-entries/3/stop \
-H "Authorization: Bearer YOUR_TOKEN"
Copy const res = await fetch ("https://api.todo4you.com/api/v1/time-entries/3/stop" , {
method: "POST" ,
headers: { "Authorization" : "Bearer YOUR_TOKEN" }
} );
const data = await res.json ();
Copy $ch = curl_init ("https://api.todo4you.com/api/v1/time-entries/3/stop" );
curl_setopt ($ch, CURLOPT_POST, true );
curl_setopt ($ch, CURLOPT_HTTPHEADER, ["Authorization: Bearer YOUR_TOKEN" ]);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, true );
$res = json_decode (curl_exec ($ch), true );
Copy import requests
res = requests.post ("https://api.todo4you.com/api/v1/time-entries/3/stop" ,
headers={"Authorization" : "Bearer YOUR_TOKEN" })
data = res.json ()
Timer pauzeren
Pauzeert een lopende timer. Opgebouwde tijd wordt bewaard in het minutenveld.
Padparameters
Parameter Type Beschrijving
entryId integer The time entry ID
Antwoord
200 OK 200
Copy {
"success" : true ,
"entry" : {
"id" : 3 ,
"ticket_id" : 42 ,
"minutes" : 15 ,
"is_running" : 0 ,
"started_at" : null ,
"stopped_at" : null
}
}
Voorbeeld
cURL
JavaScript
PHP
Python
Copy curl -X POST https://api.todo4you.com/api/v1/time-entries/3/pause \
-H "Authorization: Bearer YOUR_TOKEN"
Copy const res = await fetch ("https://api.todo4you.com/api/v1/time-entries/3/pause" , {
method: "POST" ,
headers: { "Authorization" : "Bearer YOUR_TOKEN" }
} );
const data = await res.json ();
Copy $ch = curl_init ("https://api.todo4you.com/api/v1/time-entries/3/pause" );
curl_setopt ($ch, CURLOPT_POST, true );
curl_setopt ($ch, CURLOPT_HTTPHEADER, ["Authorization: Bearer YOUR_TOKEN" ]);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, true );
$res = json_decode (curl_exec ($ch), true );
Copy import requests
res = requests.post ("https://api.todo4you.com/api/v1/time-entries/3/pause" ,
headers={"Authorization" : "Bearer YOUR_TOKEN" })
data = res.json ()
Timer hervatten
Hervat een gepauzeerde timer. Kan niet hervatten als er al een andere timer loopt.
Padparameters
Parameter Type Beschrijving
entryId integer The time entry ID
Antwoord
200 OK 200
Copy {
"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
JavaScript
PHP
Python
Copy curl -X POST https://api.todo4you.com/api/v1/time-entries/3/resume \
-H "Authorization: Bearer YOUR_TOKEN"
Copy const res = await fetch ("https://api.todo4you.com/api/v1/time-entries/3/resume" , {
method: "POST" ,
headers: { "Authorization" : "Bearer YOUR_TOKEN" }
} );
const data = await res.json ();
Copy $ch = curl_init ("https://api.todo4you.com/api/v1/time-entries/3/resume" );
curl_setopt ($ch, CURLOPT_POST, true );
curl_setopt ($ch, CURLOPT_HTTPHEADER, ["Authorization: Bearer YOUR_TOKEN" ]);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, true );
$res = json_decode (curl_exec ($ch), true );
Copy import requests
res = requests.post ("https://api.todo4you.com/api/v1/time-entries/3/resume" ,
headers={"Authorization" : "Bearer YOUR_TOKEN" })
data = res.json ()
Invoer bijwerken
Werkt de minuten van een gestopte tijdinvoer bij. Eigenaar of projectmanager kan bijwerken.
Padparameters
Parameter Type Beschrijving
entryId integer The time entry ID
Request body (JSON)
Veld Type Beschrijving
minutes integer verplicht New duration in minutes (min 1)
Antwoord
200 OK 200
Copy {
"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
JavaScript
PHP
Python
Copy 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}'
Copy const res = await fetch ("https://api.todo4you.com/api/v1/time-entries/3/update" , {
method: "POST" ,
headers: {
"Authorization" : "Bearer YOUR_TOKEN" ,
"Content-Type" : "application/json"
} ,
body: JSON.stringify ({ minutes: 60 } )
} );
const data = await res.json ();
Copy $ch = curl_init ("https://api.todo4you.com/api/v1/time-entries/3/update" );
curl_setopt ($ch, CURLOPT_POST, true );
curl_setopt ($ch, CURLOPT_HTTPHEADER, [
"Authorization: Bearer YOUR_TOKEN" ,
"Content-Type: application/json"
]);
curl_setopt ($ch, CURLOPT_POSTFIELDS, json_encode (["minutes" => 60 ]));
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, true );
$res = json_decode (curl_exec ($ch), true );
Copy import requests
res = requests.post ("https://api.todo4you.com/api/v1/time-entries/3/update" ,
headers={"Authorization" : "Bearer YOUR_TOKEN" },
json={"minutes" : 60 })
data = res.json ()
Item verwijderen
Verwijdert een tijdregistratie. De eigenaar of projectmanager kan verwijderen.
Padparameters
Parameter Type Beschrijving
entryId integer The time entry ID
Antwoord
200 OK 200
Copy {
"success" : true
}
Voorbeeld
cURL
JavaScript
PHP
Python
Copy curl -X POST https://api.todo4you.com/api/v1/time-entries/3/delete \
-H "Authorization: Bearer YOUR_TOKEN"
Copy const res = await fetch ("https://api.todo4you.com/api/v1/time-entries/3/delete" , {
method: "POST" ,
headers: { "Authorization" : "Bearer YOUR_TOKEN" }
} );
const data = await res.json ();
Copy $ch = curl_init ("https://api.todo4you.com/api/v1/time-entries/3/delete" );
curl_setopt ($ch, CURLOPT_POST, true );
curl_setopt ($ch, CURLOPT_HTTPHEADER, ["Authorization: Bearer YOUR_TOKEN" ]);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, true );
$res = json_decode (curl_exec ($ch), true );
Copy import requests
res = requests.post ("https://api.todo4you.com/api/v1/time-entries/3/delete" ,
headers={"Authorization" : "Bearer YOUR_TOKEN" })
data = res.json ()
Lopende timer
Geeft de momenteel lopende of gepauzeerde timer terug voor de geauthenticeerde gebruiker, met ticket- en projectdetails.
Antwoord
200 OK 200
Copy {
"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
JavaScript
PHP
Python
Copy curl https://api.todo4you.com/api/v1/time-entries/running \
-H "Authorization: Bearer YOUR_TOKEN"
Copy const res = await fetch ("https://api.todo4you.com/api/v1/time-entries/running" , {
headers: { "Authorization" : "Bearer YOUR_TOKEN" }
} );
const data = await res.json ();
Copy $ch = curl_init ("https://api.todo4you.com/api/v1/time-entries/running" );
curl_setopt ($ch, CURLOPT_HTTPHEADER, ["Authorization: Bearer YOUR_TOKEN" ]);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, true );
$res = json_decode (curl_exec ($ch), true );
Copy import requests
res = requests.get ("https://api.todo4you.com/api/v1/time-entries/running" ,
headers={"Authorization" : "Bearer YOUR_TOKEN" })
data = res.json ()
Actieve timers
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 OK 200
Copy {
"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
JavaScript
PHP
Python
Copy curl https://api.todo4you.com/api/v1/time-entries/active \
-H "Authorization: Bearer YOUR_TOKEN"
Copy const res = await fetch ("https://api.todo4you.com/api/v1/time-entries/active" , {
headers: { "Authorization" : "Bearer YOUR_TOKEN" }
} );
const data = await res.json ();
Copy $ch = curl_init ("https://api.todo4you.com/api/v1/time-entries/active" );
curl_setopt ($ch, CURLOPT_HTTPHEADER, ["Authorization: Bearer YOUR_TOKEN" ]);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, true );
$res = json_decode (curl_exec ($ch), true );
Copy import requests
res = requests.get ("https://api.todo4you.com/api/v1/time-entries/active" ,
headers={"Authorization" : "Bearer YOUR_TOKEN" })
data = res.json ()
Notificaties
Notificaties weergeven
Geeft de laatste 20 meldingen terug en markeert alles als gelezen.
Antwoord
200 OK 200
Copy {
"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
JavaScript
PHP
Python
Copy curl https://api.todo4you.com/api/v1/notifications \
-H "Authorization: Bearer YOUR_TOKEN"
Copy const res = await fetch ("https://api.todo4you.com/api/v1/notifications" , {
headers: { "Authorization" : "Bearer YOUR_TOKEN" }
} );
const data = await res.json ();
Copy $ch = curl_init ("https://api.todo4you.com/api/v1/notifications" );
curl_setopt ($ch, CURLOPT_HTTPHEADER, ["Authorization: Bearer YOUR_TOKEN" ]);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, true );
$res = json_decode (curl_exec ($ch), true );
Copy import requests
res = requests.get ("https://api.todo4you.com/api/v1/notifications" ,
headers={"Authorization" : "Bearer YOUR_TOKEN" })
data = res.json ()
Aantal ongelezen
Geeft het aantal ongelezen meldingen terug.
Antwoord
200 OK 200
Copy {
"count" : 3
}
Voorbeeld
cURL
JavaScript
PHP
Python
Copy curl https://api.todo4you.com/api/v1/notifications/unread-count \
-H "Authorization: Bearer YOUR_TOKEN"
Copy const res = await fetch ("https://api.todo4you.com/api/v1/notifications/unread-count" , {
headers: { "Authorization" : "Bearer YOUR_TOKEN" }
} );
const data = await res.json ();
Copy $ch = curl_init ("https://api.todo4you.com/api/v1/notifications/unread-count" );
curl_setopt ($ch, CURLOPT_HTTPHEADER, ["Authorization: Bearer YOUR_TOKEN" ]);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, true );
$res = json_decode (curl_exec ($ch), true );
Copy import requests
res = requests.get ("https://api.todo4you.com/api/v1/notifications/unread-count" ,
headers={"Authorization" : "Bearer YOUR_TOKEN" })
data = res.json ()
Als gelezen markeren voor ticket
Markeert alle ongelezen notificaties voor een specifiek ticket als gelezen.
Request body (JSON)
Veld Type Beschrijving
ticket_id integer verplicht The ticket ID to mark notifications as read for
Antwoord
200 OK 200
Copy {
"success" : true
}
Voorbeeld
cURL
JavaScript
PHP
Python
Copy 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}'
Copy const res = await fetch ("https://api.todo4you.com/api/v1/notifications/mark-read-for-ticket" , {
method: "POST" ,
headers: {
"Authorization" : "Bearer YOUR_TOKEN" ,
"Content-Type" : "application/json"
} ,
body: JSON.stringify ({ ticket_id: 42 } )
} );
const data = await res.json ();
Copy $ch = curl_init ("https://api.todo4you.com/api/v1/notifications/mark-read-for-ticket" );
curl_setopt ($ch, CURLOPT_POST, true );
curl_setopt ($ch, CURLOPT_HTTPHEADER, [
"Authorization: Bearer YOUR_TOKEN" ,
"Content-Type: application/json"
]);
curl_setopt ($ch, CURLOPT_POSTFIELDS, json_encode (["ticket_id" => 42 ]));
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, true );
$res = json_decode (curl_exec ($ch), true );
Copy import requests
res = requests.post ("https://api.todo4you.com/api/v1/notifications/mark-read-for-ticket" ,
headers={"Authorization" : "Bearer YOUR_TOKEN" },
json={"ticket_id" : 42 })
data = res.json ()