Timeline API
Timeline API can be used for reading timeline data and it works on all server versions.
The bottom part of the document, Create, Update and Delete actions, are meant for modifying tags on the server, so the actions only work on Tag timelines. This is supported in MT server version 4.1 and later. It allows one user to change tags of all other users on the server. This user needs to have Content editor permission. Tagging API is useful, when you want to transfer tags from another system and create them in ManicTime. Service, which is responsible for transferring tags can log on as this user, then create tags for other users on the server.
How to use it
Get home
Returns all available links.
GET http://localhost:8080/api
Accept: application/vnd.manictime.v3+json
Content-Type: application/vnd.manictime.v3+json; charset=utf-8HTTP/1.1 200 OK
{
"links": [
{
"rel": "self",
"href": "http://localhost:8080/api/"
},
{
"rel": "manictime/timelines",
"href": "http://localhost:8080/api/timelines"
},
{
"rel": "manictime/environments",
"href": "http://localhost:8080/api/environments"
},
{
"rel": "manictime/screenshots",
"href": "http://localhost:8080/api/screenshots"
},
{
"rel": "manictime/clientState",
"href": "http://localhost:8080/api/clientState"
},
{
"rel": "manictime/tagcombinationlist",
"href": "http://localhost:8080/api/tagcombinationlist"
},
{
"rel": "manictime/clientsettings",
"href": "http://localhost:8080/api/clientSettings"
}
]
}
Get timelines
Returns all timelines visible to current user. Follow link “manictime/timelines” from home response.GET http://localhost:8080/api/timelines
Accept: application/vnd.manictime.v3+json
HTTP/1.1 200 OK
Content-Type: application/vnd.manictime.v3+json; charset=utf-8
{
"timelines": [
{
"timelineKey": "ae35ba85-ed33-462d-8338-3ace1d77ba7b",
"publishKey": "01d4e456-df48-4b7f-a47d-4ff1b8f607cd",
"owner": {
"username": "admin@manictime.com",
"displayName": "Admin"
},
"schema": {
"name": "ManicTime/Tags",
"version": "1.0.0.0",
"baseSchema": {
"name": "ManicTime/Generic/GroupList",
"version": "1.0.0.0"
}
},
"homeEnvironment": {
"environmentId": "eebf80c0-5e42-4874-ae65-34b6c65a48ea",
"deviceName": "LOCAL"
},
"deviceDisplayName": "LOCAL",
"lastUpdate": {
"updatedUtcTime": "2020-09-21T12:25:03.76+00:00",
"environment": {
"environmentId": "eebf80c0-5e42-4874-ae65-34b6c65a48ea",
"deviceName": "LOCAL"
}
},
"lastChangeId": "53,1029250202",
"updateProtocol": "Changes",
"timestamp": "9,1461934769",
"links": [
{
"rel": "self",
"href": "http://localhost:8080/api/timelines/ae35ba85-ed33-462d-8338-3ace1d77ba7b"
},
{
"rel": "manictime/getchanges",
"href": "http://localhost:8080/api/timelines/ae35ba85-ed33-462d-8338-3ace1d77ba7b/changes"
},
{
"rel": "manictime/activities",
"href": "http://localhost:8080/api/timelines/ae35ba85-ed33-462d-8338-3ace1d77ba7b/activities"
},
{
"rel": "manictime/addchanges",
"href": "http://localhost:8080/api/timelines/ae35ba85-ed33-462d-8338-3ace1d77ba7b/changes"
},
{
"rel": "manictime/editactivities",
"href": "http://localhost:8080/api/timelines/ae35ba85-ed33-462d-8338-3ace1d77ba7b/activities"
}
]
}
]
}
Get activities
Returns all timeline activities for specified time range. Follow link “manictime/activities” from timeline and add “fromTime” and “toTime” url parameters.GET http://localhost:8080/api/timelines/ae35ba85-ed33-462d-8338-3ace1d77ba7b/activities?fromTime=2020-09-21&toTime=2020-09-22
Accept: application/vnd.manictime.v3+json
HTTP/1.1 200 OK
Content-Type: application/vnd.manictime.v3+json; charset=utf-8
{
"timelineKey": "ae35ba85-ed33-462d-8338-3ace1d77ba7b",
"publishKey": "01d4e456-df48-4b7f-a47d-4ff1b8f607cd",
"owner": {
"username": "admin@manictime.com",
"displayName": "Admin"
},
"schema": {
"name": "ManicTime/Tags",
"version": "1.0.0.0",
"baseSchema": {
"name": "ManicTime/Generic/GroupList",
"version": "1.0.0.0"
}
},
"homeEnvironment": {
"environmentId": "eebf80c0-5e42-4874-ae65-34b6c65a48ea",
"deviceName": "LOCAL"
},
"deviceDisplayName": "LOCAL",
"lastUpdate": {
"updatedUtcTime": "2020-09-21T12:40:29.64+00:00",
"environment": {
"environmentId": "943f2ca3-120f-40a3-9e21-40071f5421a7",
"deviceName": "LOCAL"
}
},
"lastChangeId": "58,864659224",
"updateProtocol": "Changes",
"timestamp": "13,2001671361",
"links": [
{
"rel": "self",
"href": "http://localhost:8080/api/timelines/ae35ba85-ed33-462d-8338-3ace1d77ba7b"
},
{
"rel": "manictime/getchanges",
"href": "http://localhost:8080/api/timelines/ae35ba85-ed33-462d-8338-3ace1d77ba7b/changes"
},
{
"rel": "manictime/activities",
"href": "http://localhost:8080/api/timelines/ae35ba85-ed33-462d-8338-3ace1d77ba7b/activities"
},
{
"rel": "manictime/addchanges",
"href": "http://localhost:8080/api/timelines/ae35ba85-ed33-462d-8338-3ace1d77ba7b/changes"
},
{
"rel": "manictime/editactivities",
"href": "http://localhost:8080/api/timelines/ae35ba85-ed33-462d-8338-3ace1d77ba7b/activities"
},
{
"rel": "manictime/updatedactivities",
"href": "http://localhost:8080/api/timelines/ae35ba85-ed33-462d-8338- 3ace1d77ba7b/activities?fromTime=2020-09-21T00:00:00&toTime=2020-09- 22T00:00:00&updatedAfterTimestamp=58,864659224"
}
],
"entities": [
{
"entityType": "activity",
"entityId": 41,
"values": {
"groupListId": 40,
"isActive": true,
"name": "tag1, tag2",
"timeInterval": {
"start": "2020-09-21T09:18:47+02:00",
"duration": 2258
}
}
},
{
"entityType": "groupList",
"entityId": 40,
"values": {
"groupIds": [
38,
39
]
}
},
{
"entityType": "group",
"entityId": 38,
"values": {
"color": "73A3D0",
"key": "tag1",
"name": "tag1",
"skipColor": false
}
},
{
"entityType": "group",
"entityId": 39,
"values": {
"color": "EA81D8",
"key": "tag2",
"name": "tag2",
"skipColor": false
}
}
]
}
Create activity
Creates activity. Follow link “manictime/editactivities” from timeline. “expectedLastChangeId“ in request body isoptional and is used for concurrency control. If present, must be the same as timeline “lastChangeId”.
POST http://localhost:8080/api/timelines/ae35ba85-ed33-462d-8338-3ace1d77ba7b/activities Accept: application/vnd.manictime.v3+json
Content-Type: application/vnd.manictime.v3+json
{
"expectedLastChangeId": "53,1029250202",
"values": {
"name": "tag1, tag2",
"notes": "my notes",
"timeInterval": {
"start": "2020-09-21T10:00:00+02:00",
"duration": 600
}
}
}
HTTP/1.1 200 OK
Content-Type: application/vnd.manictime.v3+json; charset=utf-8
{
"timelineKey": "ae35ba85-ed33-462d-8338-3ace1d77ba7b",
"publishKey": "01d4e456-df48-4b7f-a47d-4ff1b8f607cd",
"owner": {
"username": "admin@manictime.com",
"displayName": "Admin"
},
"schema": {
"name": "ManicTime/Tags",
"version": "1.0.0.0",
"baseSchema": {
"name": "ManicTime/Generic/GroupList",
"version": "1.0.0.0"
}
},
"homeEnvironment": {
"environmentId": "eebf80c0-5e42-4874-ae65-34b6c65a48ea",
"deviceName": "LOCAL"
},
"deviceDisplayName": "LOCAL",
"lastUpdate": {
"updatedUtcTime": "2020-09-21T12:35:47.59+00:00",
"environment": {
"environmentId": "eebf80c0-5e42-4874-ae65-34b6c65a48ea",
"deviceName": "LOCAL"
}
},
"lastChangeId": "54,1726677341",
"updateProtocol": "Changes",
"timestamp": "10,1048516227",
"links": [
{
"rel": "self",
"href": "http://localhost:8080/api/timelines/ae35ba85-ed33-462d-8338-3ace1d77ba7b"
},
{
"rel": "manictime/getchanges",
"href": "http://localhost:8080/api/timelines/ae35ba85-ed33-462d-8338-3ace1d77ba7b/changes"
},
{
"rel": "manictime/activities",
"href": "http://localhost:8080/api/timelines/ae35ba85-ed33-462d-8338-3ace1d77ba7b/activities"
},
{
"rel": "manictime/addchanges",
"href": "http://localhost:8080/api/timelines/ae35ba85-ed33-462d-8338-3ace1d77ba7b/changes"
},
{
"rel": "manictime/editactivities",
"href": "http://localhost:8080/api/timelines/ae35ba85-ed33-462d-8338-3ace1d77ba7b/activities"
}
],
"entities": [
{
"entityType": "activity",
"entityId": 49,
"values": {
"groupListId": 40,
"isActive": true,
"name": "tag1, tag2",
"notes": "my notes",
"timeInterval": {
"start": "2020-09-21T10:00:00+02:00",
"duration": 600
}
}
},
{
"entityType": "groupList",
"entityId": 40,
"values": {
"groupIds": [
38,
39
]
}
},
{
"entityType": "group",
"entityId": 38,
"values": {
"color": "73A3D0",
"key": "tag1",
"name": "tag1",
"skipColor": false
}
},
{
"entityType": "group",
"entityId": 39,
"values": {
"color": "EA81D8",
"key": "tag2",
"name": "tag2",
"skipColor": false
}
}
]
}
Update activity
Updates activity. Follow link “manictime/editactivities” from timeline and add activity “entityId” to the end of theurl. “expectedLastChangeId“ in request body is optional and is used for concurrency control. If present, must be the
same as timeline “lastChangeId”.
PUT http://localhost:8080/api/timelines/ae35ba85-ed33-462d-8338-3ace1d77ba7b/activities/49 Accept: application/vnd.manictime.v3+json
Content-Type: application/vnd.manictime.v3+json
{
"expectedLastChangeId": "54,1726677341",
"values": {
"name": "tag1, tag2, :billable",
"notes": "my other notes",
"timeInterval": {
"start": "2020-09-21T10:00:00+02:00",
"duration": 900
}
}
}
HTTP/1.1 200 OK
Content-Type: application/vnd.manictime.v3+json; charset=utf-8
{
"timelineKey": "ae35ba85-ed33-462d-8338-3ace1d77ba7b",
"publishKey": "01d4e456-df48-4b7f-a47d-4ff1b8f607cd",
"owner": {
"username": "admin@manictime.com",
"displayName": "Admin"
},
"schema": {
"name": "ManicTime/Tags",
"version": "1.0.0.0",
"baseSchema": {
"name": "ManicTime/Generic/GroupList",
"version": "1.0.0.0"
}
},
"homeEnvironment": {
"environmentId": "eebf80c0-5e42-4874-ae65-34b6c65a48ea",
"deviceName": "LOCAL"
},
"deviceDisplayName": "LOCAL",
"lastUpdate": {
"updatedUtcTime": "2020-09-21T12:37:10.72+00:00",
"environment": {
"environmentId": "eebf80c0-5e42-4874-ae65-34b6c65a48ea",
"deviceName": "LOCAL"
}
},
"lastChangeId": "56,323071752",
"updateProtocol": "Changes",
"timestamp": "11,519433731",
"links": [
{
"rel": "self",
"href": "http://localhost:8080/api/timelines/ae35ba85-ed33-462d-8338-3ace1d77ba7b"
},
{
"rel": "manictime/getchanges",
"href": "http://localhost:8080/api/timelines/ae35ba85-ed33-462d-8338-3ace1d77ba7b/changes"
},
{
"rel": "manictime/activities",
"href": "http://localhost:8080/api/timelines/ae35ba85-ed33-462d-8338-3ace1d77ba7b/activities"
},
{
"rel": "manictime/addchanges",
"href": "http://localhost:8080/api/timelines/ae35ba85-ed33-462d-8338-3ace1d77ba7b/changes"
},
{
"rel": "manictime/editactivities",
"href": "http://localhost:8080/api/timelines/ae35ba85-ed33-462d-8338-3ace1d77ba7b/activities"
}
],
"entities": [
{
"entityType": "activity",
"entityId": 49,
"values": {
"groupListId": 50,
"isActive": true,
"name": "tag1, tag2, :billable",
"notes": "my other notes",
"timeInterval": {
"start": "2020-09-21T10:00:00+02:00",
"duration": 900
}
}
},
{
"entityType": "groupList",
"entityId": 50,
"values": {
"groupIds": [
38,
39,
3
]
}
},
{
"entityType": "group",
"entityId": 38,
"values": {
"color": "73A3D0",
"key": "tag1",
"name": "tag1",
"skipColor": false
}
},
{
"entityType": "group",
"entityId": 39,
"values": {
"color": "EA81D8",
"key": "tag2",
"name": "tag2",
"skipColor": false
}
},
{
"entityType": "group",
"entityId": 3,
"values": {
"color": "5846FC",
"key": ":billable",
"name": ":billable",
"skipColor": false
}
}
]
}
Delete activity
Deletes activity. Follow link “manictime/editactivities” from timeline and add activity “entityId” to the end of the url.“expectedLastChangeId“ in request body is optional and is used for concurrency control. If present, must be the
same as timeline “lastChangeId”.
DELETE http://localhost:8080/api/timelines/ae35ba85-ed33-462d-8338-3ace1d77ba7b/activities/49 Accept: application/vnd.manictime.v3+json
Content-Type: application/vnd.manictime.v3+json
{
"expectedLastChangeId": "56,323071752"
}
HTTP/1.1 200 OK
Content-Type: application/vnd.manictime.v3+json; charset=utf-8
{
"timelineKey": "ae35ba85-ed33-462d-8338-3ace1d77ba7b",
"publishKey": "01d4e456-df48-4b7f-a47d-4ff1b8f607cd",
"owner": {
"username": "admin@manictime.com",
"displayName": "Admin"
},
"schema": {
"name": "ManicTime/Tags",
"version": "1.0.0.0",
"baseSchema": {
"name": "ManicTime/Generic/GroupList",
"version": "1.0.0.0"
}
},
"homeEnvironment": {
"environmentId": "eebf80c0-5e42-4874-ae65-34b6c65a48ea",
"deviceName": "LOCAL"
},
"deviceDisplayName": "LOCAL",
"lastUpdate": {
"updatedUtcTime": "2020-09-21T12:39:31.55+00:00",
"environment": {
"environmentId": "eebf80c0-5e42-4874-ae65-34b6c65a48ea",
"deviceName": "LOCAL"
}
},
"lastChangeId": "57,1907424414",
"updateProtocol": "Changes",
"timestamp": "12,279785520",
"links": [
{
"rel": "self",
"href": "http://localhost:8080/api/timelines/ae35ba85-ed33-462d-8338-3ace1d77ba7b"
},
{
"rel": "manictime/getchanges",
"href": "http://localhost:8080/api/timelines/ae35ba85-ed33-462d-8338-3ace1d77ba7b/changes"
},
{
"rel": "manictime/activities",
"href": "http://localhost:8080/api/timelines/ae35ba85-ed33-462d-8338-3ace1d77ba7b/activities"
},
{
"rel": "manictime/addchanges",
"href": "http://localhost:8080/api/timelines/ae35ba85-ed33-462d-8338-3ace1d77ba7b/changes"
},
{
"rel": "manictime/editactivities",
"href": "http://localhost:8080/api/timelines/ae35ba85-ed33-462d-8338-3ace1d77ba7b/activities"
}
],
"entities": []
}