Info
Introduction
Welcome to the Workstack API reference.
The Workstack API is organized around REST. Our API has predictable, resource-oriented URLs, and uses HTTP response codes to indicate API errors. We use built-in HTTP features, like HTTP authentication and HTTP verbs, which are understood by off-the-shelf HTTP clients. JSON is returned by all API responses, including errors.
API Token
Every API Request must include the api_token
parameter to authenticate the user. Without it the server will return a 401 Unathorized
message.
You can generate a new API Token in the Personal Settings page inside the Workstack app.
Data Structure
Users and Teams
Each User is linked to at least one Team. By calling the /api/team
route, you will receive the currently selected Team.
If you want to switch to a different Team, you can use the /api/teams/{id}/switch
route, and after that all the future API Request will be using the selected Team for each query.
Projects and Todo Lists
Every Team can have many Projects that can be assigned to a list of Users to give them write permission (not needed for Admin Users). Every Project can have many Todo Lists and within these there can be many Todos.
Todos and Tasks
A Todo is not linked to anyone and it's representing just the abstract plan of something that needs to be done. You then assign the Todo to a User by creating a Task. You can create multiple Tasks for each Todo and each one can be assigned to a different person and can have different durations. Each Task can be set to start on a specific date and time or it can be left unscheduled and be organized as a sortable stack in the Workstack UI.
Meetings
Meetings can be assigned to multiple Users and can optionally be linked to a specific Project.
Holidays
Holidays are divided in two groups: Users Holidays and Team Holidays. The first one will apply only to one User, while the second will be set across the whole Team.
Comments
Comments can be linked to a Todo and will always be assigned to the authenticated User.
Webhooks
Available Events
ProjectCreated
ProjectUpdated
ProjectDeleted
TodolistCreated
TodolistUpdated
TodolistDeleted
TodoCreated
TodoUpdated
TodoDeleted
TaskCreated
TaskUpdated
TaskDeleted
CommentCreated
CommentUpdated
CommentDeleted
GroupCreated
GroupUpdated
GroupDeleted
HolidayTeamCreated
HolidayTeamUpdated
HolidayTeamDeleted
HolidayUserCreated
HolidayUserUpdated
HolidayUserDeleted
MeetingCreated
MeetingUpdated
MeetingDeleted
UserCreated
UserUpdated
UserDeleted
TeamUpdated
You can create, update and delete Webhooks to be notified by any change of your Workstack data. We will call the provided URL every time a specific Event happens and we will include the data of the modified item in JSON format just like in every other API call.
Rate Limit
The usage of the API is limited to 60 Requestes every 1 Minute. With every HTTP Response we send the following Header that will inform you of the remaining count.
X-RateLimit-Remaining:59
Available routes
Get Current Team
Example request:
curl "https://app.workstack.io/api/team" \
-H "Accept: application/json"
var settings = {
"async": true,
"crossDomain": true,
"url": "https://app.workstack.io/api/team",
"method": "GET",
"headers": {
"accept": "application/json"
}
}
$.ajax(settings).done(function (response) {
console.log(response);
});
Example response:
{
"data": {
"id": 1,
"name": "A-Team",
"currency": "USD",
"working_days": "1-1-1-1-1-0-0",
"date_format": "dd/mm/yy",
"working_hours": 10,
"working_start_hour": 9,
"timezone": "Europe/Uzhgorod",
"created_at": "2016-05-18 12:39:07",
"updated_at": "2016-05-18 12:39:07"
},
"code": 200
}
HTTP Request
GET api/team
HEAD api/team
Switch Current Team
Example request:
curl "https://app.workstack.io/api/teams/34/switch" \
-H "Accept: application/json"
var settings = {
"async": true,
"crossDomain": true,
"url": "https://app.workstack.io/api/teams/34/switch",
"method": "PUT",
"headers": {
"accept": "application/json"
}
}
$.ajax(settings).done(function (response) {
console.log(response);
});
Example response:
{
"data": {
"id": 34,
"name": "New Team",
"currency": "USD",
"working_days": "1-1-1-1-1-0-0",
"date_format": "dd/mm/yy",
"working_hours": 10,
"working_start_hour": 9,
"timezone": "Europe/Uzhgorod",
"created_at": "2016-05-18 12:39:07",
"updated_at": "2016-05-18 12:39:07"
},
"code": 200
}
HTTP Request
PUT api/teams/{id}/switch
Get all Users
Example request:
curl "https://app.workstack.io/api/users" \
-H "Accept: application/json"
var settings = {
"async": true,
"crossDomain": true,
"url": "https://app.workstack.io/api/users",
"method": "GET",
"headers": {
"accept": "application/json"
}
}
$.ajax(settings).done(function (response) {
console.log(response);
});
Example response:
{
"data": [
{
"id": 42,
"email": "[email protected]",
"name": "John Doe",
"type": "admin",
"photo_url": "https://app.workstack.io/storage/profiles/041ef214a20f5f0ee5308ecf7ea40f7b0fc.png",
"created_at": "2016-05-18 12:39:37",
"updated_at": "2016-06-08 17:31:38",
"uri": "/users/42",
"preference": {
"id": 42,
"zoom": 3,
"working_hours": 8,
"working_start_hour": 9,
"timezone": "UTC",
"css": "",
"column_width": 200,
"font_size": 5,
"date_format": "dd/mm/yy",
"cost_hours": 10,
"working_days": "1-1-1-1-1-0-0"
}
},
{
"id": 43,
"email": "[email protected]",
"name": "Marcus Brown",
"type": "owner",
"photo_url": "https://www.gravatar.com/avatar/cfd4bb97209fw5e8f9cddb5f10376e25.jpg?s=200&d=blank",
"created_at": "2016-05-18 13:42:29",
"updated_at": "2016-05-18 13:44:19",
"uri": "/users/43",
"preference": {
"id": 43,
"zoom": 3,
"working_hours": 4,
"working_start_hour": 14,
"timezone": "UTC",
"css": "",
"column_width": 200,
"font_size": 5,
"date_format": "dd/mm/yy",
"cost_hours": 20,
"working_days": "1-1-0-1-1-0-0"
}
}
],
"code": 200
}
HTTP Request
GET api/users
HEAD api/users
Get a User
Example request:
curl "https://app.workstack.io/api/users/43" \
-H "Accept: application/json"
var settings = {
"async": true,
"crossDomain": true,
"url": "https://app.workstack.io/api/users/43",
"method": "GET",
"headers": {
"accept": "application/json"
}
}
$.ajax(settings).done(function (response) {
console.log(response);
});
Example response:
{
"data": {
"id": 43,
"email": "[email protected]",
"name": "Marcus Brown",
"type": "owner",
"photo_url": "https://www.gravatar.com/avatar/cfd4bb97209fw5e8f9cddb5f10376e25.jpg?s=200&d=blank",
"created_at": "2016-05-18 13:42:29",
"updated_at": "2016-05-18 13:44:19",
"uri": "/users/43",
"preference": {
"id": 43,
"zoom": 3,
"working_hours": 4,
"working_start_hour": 14,
"timezone": "UTC",
"css": "",
"column_width": 200,
"font_size": 5,
"date_format": "dd/mm/yy",
"cost_hours": 20,
"working_days": "1-1-0-1-1-0-0"
},
"code": 200
}
HTTP Request
GET api/users/{id}
HEAD api/users/{id}
Get all Projects
Example request:
curl "https://app.workstack.io/api/projects" \
-H "Accept: application/json"
var settings = {
"async": true,
"crossDomain": true,
"url": "https://app.workstack.io/api/projects",
"method": "GET",
"headers": {
"accept": "application/json"
}
}
$.ajax(settings).done(function (response) {
console.log(response);
});
Example response:
{
"data": [
{
"id": 11,
"name": "Secret Project",
"note": "Don't tell anyone about this!",
"color": "#8c85cd",
"minutes": 3060,
"start": "2016-03-24",
"end": "2016-03-23",
"completed": true,
"completed_at": "2016-03-24 05:19:09",
"position": 7,
"created_at": "2016-04-08 13:41:35",
"updated_at": "2016-04-08 13:41:35",
"hidden": false,
"uri": "/projects/11"
},
{
"id": 21,
"name": "New Website",
"note": "Let's do some great work!.",
"color": "#ab578d",
"minutes": 6660,
"start": "2016-03-12",
"end": "2016-04-05",
"completed": true,
"completed_at": "2016-03-24 01:21:49",
"position": 9,
"created_at": "2016-04-08 13:41:35",
"updated_at": "2016-04-08 13:41:35",
"hidden": false,
"uri": "/projects/21"
}
],
"code": 200
}
HTTP Request
GET api/projects
HEAD api/projects
Get a Project
Example request:
curl "https://app.workstack.io/api/projects/21" \
-H "Accept: application/json"
var settings = {
"async": true,
"crossDomain": true,
"url": "https://app.workstack.io/api/projects/21",
"method": "GET",
"headers": {
"accept": "application/json"
}
}
$.ajax(settings).done(function (response) {
console.log(response);
});
Example response:
{
"data": {
"id": 21,
"name": "New Website",
"note": "Let's do some great work!.",
"color": "#ab578d",
"minutes": 6660,
"start": "2016-03-12",
"end": "2016-04-05",
"completed": true,
"completed_at": "2016-03-24 01:21:49",
"position": 9,
"created_at": "2016-04-08 13:41:35",
"updated_at": "2016-04-08 13:41:35",
"hidden": false,
"uri": "/projects/21",
"todolists": [
{
"id": 205,
"project_id": 22,
"name": "Design Stage",
"note": null,
"minutes": 600,
"start": "2016-06-07",
"end": null,
"completed": false,
"completed_at": null,
"position": 0,
"created_at": "2016-06-07 18:33:43",
"updated_at": "2016-06-07 18:33:43",
"hidden": false,
"uri": "/todolists/205",
"todos": []
},
{
"id": 206,
"project_id": 22,
"name": "Developing Stage",
"note": null,
"minutes": 1000,
"start": "2016-06-07",
"end": null,
"completed": false,
"completed_at": null,
"position": 0,
"created_at": "2016-06-07 18:33:48",
"updated_at": "2016-06-07 18:33:48",
"hidden": false,
"uri": "/todolists/206",
"todos": [
{
"id": 2006,
"project_id": 22,
"todolist_id": 206,
"name": "Create Template",
"note": null,
"minutes": 120,
"start": "2016-06-07",
"end": null,
"completed": false,
"completed_at": null,
"position": 0,
"created_at": "2016-06-07 18:34:08",
"updated_at": "2016-06-07 18:34:08",
"hidden": false,
"uri": "/todos/2006",
"tasks": [
{
"id": 2004,
"user_id": 43,
"project_id": 22,
"todo_id": 2006,
"note": "",
"minutes": 60,
"start": "2016-06-07 13:20:00",
"end": null,
"completed": false,
"completed_at": null,
"position": 0,
"on_hold": false,
"billable": true,
"cost_hours": 0,
"cost_extra": 0,
"created_at": "2016-06-07 18:34:13",
"updated_at": "2016-06-07 18:48:38",
"hidden": false,
"uri": "/tasks/2004"
}
]
}
]
}
],
"users": [
{
"id": 43,
"email": "[email protected]",
"name": "Marcus Brown",
"type": "owner",
"photo_url": "https://www.gravatar.com/avatar/cfd4bb97209fw5e8f9cddb5f10376e25.jpg?s=200&d=blank",
"created_at": "2016-05-18 13:42:29",
"updated_at": "2016-05-18 13:44:19",
"uri": "/users/43"
}
]
},
"code": 200
}
HTTP Request
GET api/projects/{id}
HEAD api/projects/{id}
Create a Project
Example request:
curl "https://app.workstack.io/api/projects" \
-H "Accept: application/json" \
-d "name"="Vacation Project" \
-d "note"="Let's have some fun!" \
-d "color"="#f82937" \
-d "minutes"="2200" \
-d "start"="2016-12-13" \
-d "end"="2016-12-26" \
-d "user_ids[]"="42" \
-d "user_ids[]"="43" \
var settings = {
"async": true,
"crossDomain": true,
"url": "https://app.workstack.io/api/projects",
"method": "POST",
"data": {
"name": "Vacation Project",
"note": "Let's have some fun!",
"color": "#f82937",
"minutes": 2200,
"start": "2016-12-13",
"end": "2016-12-26",
"user_ids[]": "42",
"user_ids[]": "43"
},
"headers": {
"accept": "application/json"
}
}
$.ajax(settings).done(function (response) {
console.log(response);
});
Example response:
{
"data": {
"id": 24,
"name": "Vacation Project",
"note": "Let's have some fun!",
"color": "#f82937",
"minutes": 2200,
"start": "2016-12-13",
"end": "2016-12-26",
"completed": false,
"completed_at": null,
"position": 0,
"created_at": "2016-06-08 22:31:47",
"updated_at": "2016-06-08 22:31:47",
"hidden": false,
"uri": "/projects/24",
"todolists": [],
"users": [
{
"id": 42,
"email": "[email protected]",
"name": "John Doe",
"type": "admin",
"photo_url": "https://app.workstack.io/storage/profiles/041ef214a20f5f0ee5308ecf7ea40f7b0fc.png",
"created_at": "2016-05-18 12:39:37",
"updated_at": "2016-06-08 17:31:38",
"uri": "/users/42"
},
{
"id": 43,
"email": "[email protected]",
"name": "Marcus Brown",
"type": "owner",
"photo_url": "https://www.gravatar.com/avatar/cfd4bb97209fw5e8f9cddb5f10376e25.jpg?s=200&d=blank",
"created_at": "2016-05-18 13:42:29",
"updated_at": "2016-05-18 13:44:19",
"uri": "/users/43"
}
]
},
"code": 200
}
HTTP Request
POST api/projects
Parameters
Parameter | Type | Status | Description |
---|---|---|---|
name | string | required | Maximum: 250 |
note | string | optional | Maximum: 5000 |
color | string | optional | Must match this regular expression: /^#[a-fA-F0-9]+$/ Must have the size of 7 |
minutes | integer | optional | |
start | date | optional | |
end | date | optional | |
completed | boolean | optional | |
completed_at | date | optional | |
position | integer | optional | Minimum: 0 |
user_ids | array | optional |
Update a Project
Example request:
curl "https://app.workstack.io/api/projects/24" \
-H "Accept: application/json" \
-d "name"="Vacation Project New" \
-d "note"="Even more fun!" \
-d "color"="#f82937" \
-d "minutes"="2200" \
-d "start"="2016-12-13" \
-d "end"="2016-12-29" \
-d "user_ids[]"="42" \
-d "user_ids[]"="43" \
var settings = {
"async": true,
"crossDomain": true,
"url": "https://app.workstack.io/api/projects/24",
"method": "PUT",
"data": {
"name": "Vacation Project New",
"note": "Even more fun!",
"color": "#f82937",
"minutes": 2200,
"start": "2016-12-13",
"end": "2016-12-29",
"user_ids[]": "42",
"user_ids[]": "43"
},
"headers": {
"accept": "application/json"
}
}
$.ajax(settings).done(function (response) {
console.log(response);
});
Example response:
{
"data": {
"id": 24,
"name": "Vacation Project New",
"note": "Even more fun!",
"color": "#f82937",
"minutes": 2200,
"start": "2016-12-13",
"end": "2016-12-29",
"completed": false,
"completed_at": null,
"position": 0,
"created_at": "2016-06-08 22:31:47",
"updated_at": "2016-06-08 22:31:47",
"hidden": false,
"uri": "/projects/24",
"todolists": [],
"users": [
{
"id": 42,
"email": "[email protected]",
"name": "John Doe",
"type": "admin",
"photo_url": "https://app.workstack.io/storage/profiles/041ef214a20f5f0ee5308ecf7ea40f7b0fc.png",
"created_at": "2016-05-18 12:39:37",
"updated_at": "2016-06-08 17:31:38",
"uri": "/users/42"
},
{
"id": 43,
"email": "[email protected]",
"name": "Marcus Brown",
"type": "owner",
"photo_url": "https://www.gravatar.com/avatar/cfd4bb97209fw5e8f9cddb5f10376e25.jpg?s=200&d=blank",
"created_at": "2016-05-18 13:42:29",
"updated_at": "2016-05-18 13:44:19",
"uri": "/users/43"
}
]
},
"code": 200
}
HTTP Request
PUT api/projects/{id}
Parameters
Parameter | Type | Status | Description |
---|---|---|---|
name | string | required | Maximum: 250 |
note | string | optional | Maximum: 5000 |
color | string | optional | Must match this regular expression: /^#[a-zA-Z0-9]+/ Must have the size of 7 |
minutes | integer | optional | |
start | date | optional | |
end | date | optional | |
completed | boolean | optional | |
completed_at | date | optional | |
position | integer | optional | Minimum: 0 |
user_ids | array | optional |
Delete a Project
Example request:
curl "https://app.workstack.io/api/projects/24" \
-H "Accept: application/json"
var settings = {
"async": true,
"crossDomain": true,
"url": "https://app.workstack.io/api/projects/24",
"method": "DELETE",
"headers": {
"accept": "application/json"
}
}
$.ajax(settings).done(function (response) {
console.log(response);
});
Example response:
{
"data": {
"message": "Item deleted",
"id": 24
},
"code": 200
}
HTTP Request
DELETE api/projects/{id}
Get a Todo List
Example request:
curl "https://app.workstack.io/api/todolists/{id}" \
-H "Accept: application/json"
var settings = {
"async": true,
"crossDomain": true,
"url": "https://app.workstack.io/api/todolists/{id}",
"method": "GET",
"headers": {
"accept": "application/json"
}
}
$.ajax(settings).done(function (response) {
console.log(response);
});
Example response:
{
"data": {
"id": 206,
"project_id": 22,
"name": "Developing Phase",
"note": null,
"minutes": 1000,
"start": "2016-06-07",
"end": null,
"completed": false,
"completed_at": null,
"position": 0,
"created_at": "2016-06-07 18:33:48",
"updated_at": "2016-06-07 18:33:48",
"hidden": false,
"uri": "/todolists/206"
},
"code": 200
}
HTTP Request
GET api/todolists/{id}
HEAD api/todolists/{id}
Create a Todo List
Example request:
curl "https://app.workstack.io/api/todolists" \
-H "Accept: application/json" \
-d "project_id"="24" \
-d "name"="Shopping List" \
-d "note"="All the things we need" \
-d "minutes"="500" \
-d "start"="2016-09-21" \
-d "end"="" \
-d "completed"="0" \
-d "completed_at"="" \
var settings = {
"async": true,
"crossDomain": true,
"url": "https://app.workstack.io/api/todolists",
"method": "POST",
"data": {
"project_id": 24,
"name": "Shopping List",
"note": "All the things we need",
"minutes": 500,
"start": "2016-09-21",
"end": "",
"completed": false,
"completed_at": "",
},
"headers": {
"accept": "application/json"
}
}
$.ajax(settings).done(function (response) {
console.log(response);
});
Example response:
{
"data": {
"id": 33,
"project_id": 24,
"name": "Shopping List",
"note": "All the things we need",
"minutes": 500,
"start": "2016-09-21",
"end": null,
"completed": false,
"completed_at": null,
"position": 0,
"created_at": "2016-06-08 22:33:47",
"updated_at": "2016-06-08 22:33:47",
"hidden": false,
"uri": "/todolists/33",
"todos": []
},
"code": 200
}
HTTP Request
POST api/todolists
Parameters
Parameter | Type | Status | Description |
---|---|---|---|
project_id | integer | required | Minimum: 1 |
name | string | required | Maximum: 250 |
note | string | optional | Maximum: 5000 |
minutes | integer | optional | |
start | date | optional | |
end | date | optional | |
completed | boolean | optional | |
completed_at | date | optional | |
position | integer | optional | Minimum: 0 |
Update a Todo List
Example request:
curl "https://app.workstack.io/api/todolists/{id}" \
-H "Accept: application/json" \
-d "name"="Shopping List New" \
-d "note"="All the things we need" \
-d "minutes"="588" \
var settings = {
"async": true,
"crossDomain": true,
"url": "https://app.workstack.io/api/todolists/{id}",
"method": "PUT",
"data": {
"name": "Shopping List New",
"note": "All the things we need",
"minutes": 588
},
"headers": {
"accept": "application/json"
}
}
$.ajax(settings).done(function (response) {
console.log(response);
});
Example response:
{
"data": {
"id": 33,
"project_id": 24,
"name": "Shopping List New",
"note": "All the things we need",
"minutes": 588,
"start": "2016-09-21",
"end": null,
"completed": false,
"completed_at": null,
"position": 0,
"created_at": "2016-06-08 22:33:47",
"updated_at": "2016-06-08 22:33:47",
"hidden": false,
"uri": "/todolists/33",
"todos": []
},
"code": 200
}
HTTP Request
PUT api/todolists/{id}
Parameters
Parameter | Type | Status | Description |
---|---|---|---|
name | string | required | Maximum: 250 |
note | string | optional | Maximum: 5000 |
minutes | integer | optional | |
start | date | optional | |
end | date | optional | |
completed | boolean | optional | |
completed_at | date | optional | |
position | integer | optional | Minimum: 0 |
Delete a Todo List
Example request:
curl "https://app.workstack.io/api/todolists/33" \
-H "Accept: application/json"
var settings = {
"async": true,
"crossDomain": true,
"url": "https://app.workstack.io/api/todolists/33",
"method": "DELETE",
"headers": {
"accept": "application/json"
}
}
$.ajax(settings).done(function (response) {
console.log(response);
});
Example response:
{
"data": {
"message": "Item deleted",
"id": 33
},
"code": 200
}
HTTP Request
DELETE api/todolists/{id}
Get all Todos without a Project
Example request:
curl "https://app.workstack.io/api/todos/noproject" \
-H "Accept: application/json"
var settings = {
"async": true,
"crossDomain": true,
"url": "https://app.workstack.io/api/todos/noproject",
"method": "GET",
"headers": {
"accept": "application/json"
}
}
$.ajax(settings).done(function (response) {
console.log(response);
});
Example response:
{
"data": [
{
"id": 2007,
"project_id": 0,
"todolist_id": 0,
"name": "Buy Groceries",
"note": "",
"minutes": 475,
"start": "2016-06-10",
"end": "2016-06-13",
"completed": false,
"completed_at": null,
"position": 0,
"created_at": "2016-06-08 21:24:48",
"updated_at": "2016-06-08 21:25:47",
"hidden": false,
"uri": "/todos/2007",
"tasks": [
{
"id": 2008,
"user_id": 43,
"project_id": 0,
"todo_id": 2007,
"note": "",
"minutes": 475,
"start": "2016-06-10 09:00:00",
"end": "2016-06-13",
"completed": false,
"completed_at": null,
"position": 0,
"on_hold": false,
"billable": true,
"cost_hours": 0,
"cost_extra": 0,
"created_at": "2016-06-08 21:24:48",
"updated_at": "2016-06-08 21:24:48",
"hidden": false,
"uri": "/tasks/2008"
}
]
},
{
"id": 2008,
"project_id": 0,
"todolist_id": 0,
"name": "Quick demo",
"note": null,
"minutes": 385,
"start": "2016-06-14",
"end": "2016-06-15",
"completed": false,
"completed_at": null,
"position": 0,
"created_at": "2016-06-08 21:25:08",
"updated_at": "2016-06-08 21:25:08",
"hidden": false,
"uri": "/todos/2008",
"tasks": [
{
"id": 2009,
"user_id": 43,
"project_id": 0,
"todo_id": 2008,
"note": "",
"minutes": 385,
"start": "2016-06-14 09:00:00",
"end": "2016-06-15",
"completed": false,
"completed_at": null,
"position": 0,
"on_hold": false,
"billable": true,
"cost_hours": 0,
"cost_extra": 0,
"created_at": "2016-06-08 21:25:08",
"updated_at": "2016-06-08 21:25:08",
"hidden": false,
"uri": "/tasks/2009"
}
]
}
],
"code": 200
}
HTTP Request
GET api/todos/noproject
HEAD api/todos/noproject
Get a Todo
Example request:
curl "https://app.workstack.io/api/todos/2006" \
-H "Accept: application/json"
var settings = {
"async": true,
"crossDomain": true,
"url": "https://app.workstack.io/api/todos/2006",
"method": "GET",
"headers": {
"accept": "application/json"
}
}
$.ajax(settings).done(function (response) {
console.log(response);
});
Example response:
{
"data": {
"id": 2006,
"project_id": 22,
"todolist_id": 206,
"name": "General check of the Systems",
"note": null,
"minutes": 60,
"start": "2016-06-07",
"end": null,
"completed": false,
"completed_at": null,
"position": 0,
"created_at": "2016-06-07 18:34:08",
"updated_at": "2016-06-07 18:34:08",
"hidden": false,
"uri": "/todos/2006",
"tasks": [
{
"id": 2004,
"user_id": 43,
"project_id": 22,
"todo_id": 2006,
"note": "",
"minutes": 60,
"start": "2016-06-07 13:20:00",
"end": null,
"completed": false,
"completed_at": null,
"position": 0,
"on_hold": false,
"billable": true,
"cost_hours": 0,
"cost_extra": 0,
"created_at": "2016-06-07 18:34:13",
"updated_at": "2016-06-07 18:48:38",
"hidden": false,
"uri": "/tasks/2004"
}
]
},
"code": 200
}
HTTP Request
GET api/todos/{id}
HEAD api/todos/{id}
Create a Todo
Example request:
curl "https://app.workstack.io/api/todos" \
-H "Accept: application/json" \
-d "project_id"="24" \
-d "todolist_id"="33" \
-d "name"="Buy some bread" \
-d "note"="" \
-d "minutes"="30" \
-d "start"="2016-06-01" \
-d "end"="" \
-d "completed"="0" \
-d "completed_at"="" \
var settings = {
"async": true,
"crossDomain": true,
"url": "https://app.workstack.io/api/todos",
"method": "POST",
"data": {
"project_id": 24,
"todolist_id": 33,
"name": "Buy some bread",
"note": "",
"minutes": 30,
"start": "2016-06-01",
"end": "",
"completed": false,
"completed_at": ""
},
"headers": {
"accept": "application/json"
}
}
$.ajax(settings).done(function (response) {
console.log(response);
});
Example response:
{
"data": {
"id": 343,
"project_id": 24,
"todolist_id": 33,
"name": "Buy some bread",
"note": "",
"minutes": 30,
"start": "2016-06-01",
"end": null,
"completed": false,
"completed_at": null,
"position": 0,
"created_at": "2016-06-08 22:36:47",
"updated_at": "2016-06-08 22:36:47",
"hidden": false,
"uri": "/todos/33",
"tasks": [],
"comments": []
},
"code": 200
}
HTTP Request
POST api/todos
Parameters
Parameter | Type | Status | Description |
---|---|---|---|
project_id | integer | optional | Required if the parameters todolist_id are present. Minimum: 1 |
todolist_id | integer | optional | Required if the parameters project_id are present. Minimum: 1 |
name | string | required | Maximum: 250 |
note | string | optional | Maximum: 5000 |
minutes | integer | optional | |
start | date | optional | |
end | date | optional | |
completed | boolean | optional | |
completed_at | date | optional | |
position | integer | optional | Minimum: 0 |
Update a Todo
Example request:
curl "https://app.workstack.io/api/todos/343" \
-H "Accept: application/json" \
-d "project_id"="24" \
-d "todolist_id"="33" \
-d "name"="Buy some bread and milk" \
-d "note"="" \
-d "minutes"="30" \
-d "start"="2016-06-01" \
-d "end"="" \
-d "completed"="0" \
-d "completed_at"="" \
var settings = {
"async": true,
"crossDomain": true,
"url": "https://app.workstack.io/api/todos/343",
"method": "PUT",
"data": {
"project_id": 24,
"todolist_id": 33,
"name": "Buy some bread and milk",
"note": "",
"minutes": 30,
"start": "2016-06-01",
"end": "",
"completed": false,
"completed_at": ""
},
"headers": {
"accept": "application/json"
}
}
$.ajax(settings).done(function (response) {
console.log(response);
});
Example response:
{
"data": {
"id": 343,
"project_id": 24,
"todolist_id": 33,
"name": "Buy some bread and milk",
"note": "",
"minutes": 30,
"start": "2016-06-01",
"end": null,
"completed": false,
"completed_at": null,
"position": 0,
"created_at": "2016-06-08 22:36:47",
"updated_at": "2016-06-08 22:39:32",
"hidden": false,
"uri": "/todos/33",
"tasks": [],
"comments": []
},
"code": 200
}
HTTP Request
PUT api/todos/{id}
Parameters
Parameter | Type | Status | Description |
---|---|---|---|
project_id | integer | optional | Required if the parameters todolist_id are present. Minimum: 1 |
todolist_id | integer | optional | Required if the parameters project_id are present. Minimum: 1 |
name | string | required | Maximum: 250 |
note | string | optional | Maximum: 5000 |
minutes | integer | optional | |
start | date | optional | |
end | date | optional | |
completed | boolean | optional | |
completed_at | date | optional | |
position | integer | optional | Minimum: 0 |
Delete a Todo
Example request:
curl "https://app.workstack.io/api/todos/343" \
-H "Accept: application/json"
var settings = {
"async": true,
"crossDomain": true,
"url": "https://app.workstack.io/api/todos/343",
"method": "DELETE",
"headers": {
"accept": "application/json"
}
}
$.ajax(settings).done(function (response) {
console.log(response);
});
Example response:
{
"data": {
"message": "Item deleted",
"id": 343
},
"code": 200
}
HTTP Request
DELETE api/todos/{id}
Get a Task
Example request:
curl "https://app.workstack.io/api/tasks/2008" \
-H "Accept: application/json"
var settings = {
"async": true,
"crossDomain": true,
"url": "https://app.workstack.io/api/tasks/2008",
"method": "GET",
"headers": {
"accept": "application/json"
}
}
$.ajax(settings).done(function (response) {
console.log(response);
});
Example response:
{
"data": {
"id": 2008,
"user_id": 43,
"project_id": 0,
"todo_id": 2007,
"note": "",
"minutes": 475,
"start": "2016-06-10 09:00:00",
"end": "2016-06-13",
"completed": false,
"completed_at": null,
"position": 0,
"on_hold": false,
"billable": true,
"cost_hours": 0,
"cost_extra": 0,
"created_at": "2016-06-08 21:24:48",
"updated_at": "2016-06-08 21:24:48",
"hidden": false,
"uri": "/tasks/2008",
"todo": {
"id": 2007,
"project_id": 0,
"todolist_id": 0,
"name": "Buy Groceries",
"note": "",
"minutes": 475,
"start": "2016-06-10",
"end": "2016-06-13",
"completed": false,
"completed_at": null,
"position": 0,
"created_at": "2016-06-08 21:24:48",
"updated_at": "2016-06-08 21:25:47",
"hidden": false,
"uri": "/todos/2007",
"tasks": []
}
},
"code": 200
}
HTTP Request
GET api/tasks/{id}
HEAD api/tasks/{id}
Get all Tasks for a User
Example request:
curl "https://app.workstack.io/api/users/43/tasks" \
-H "Accept: application/json"
var settings = {
"async": true,
"crossDomain": true,
"url": "https://app.workstack.io/api/users/43/tasks",
"method": "GET",
"headers": {
"accept": "application/json"
}
}
$.ajax(settings).done(function (response) {
console.log(response);
});
Example response:
{
"data": [
{
"id": 2004,
"user_id": 43,
"project_id": 22,
"todo_id": 2006,
"note": "",
"minutes": 60,
"start": "2016-06-07 13:20:00",
"end": null,
"completed": false,
"completed_at": null,
"position": 0,
"on_hold": false,
"billable": true,
"cost_hours": 0,
"cost_extra": 0,
"created_at": "2016-06-07 18:34:13",
"updated_at": "2016-06-07 18:48:38",
"hidden": false,
"uri": "/tasks/2004"
},
{
"id": 2008,
"user_id": 43,
"project_id": 0,
"todo_id": 2007,
"note": "",
"minutes": 475,
"start": "2016-06-10 09:00:00",
"end": "2016-06-13",
"completed": false,
"completed_at": null,
"position": 0,
"on_hold": false,
"billable": true,
"cost_hours": 0,
"cost_extra": 0,
"created_at": "2016-06-08 21:24:48",
"updated_at": "2016-06-08 21:24:48",
"hidden": false,
"uri": "/tasks/2008"
},
{
"id": 2009,
"user_id": 43,
"project_id": 0,
"todo_id": 2008,
"note": "",
"minutes": 385,
"start": "2016-06-14 09:00:00",
"end": "2016-06-15",
"completed": false,
"completed_at": null,
"position": 0,
"on_hold": false,
"billable": true,
"cost_hours": 0,
"cost_extra": 0,
"created_at": "2016-06-08 21:25:08",
"updated_at": "2016-06-08 21:25:08",
"hidden": false,
"uri": "/tasks/2009"
}
],
"code": 200
}
HTTP Request
GET api/users/{id}/tasks
HEAD api/users/{id}/tasks
Create a Task
Example request:
curl "https://app.workstack.io/api/tasks" \
-H "Accept: application/json" \
-d "user_id"="43" \
-d "project_id"="24" \
-d "todo_id"="343" \
-d "note"="Shop run out of bread" \
-d "minutes"="30" \
-d "start"="2016-06-18 12:00" \
-d "end"="" \
-d "completed"="0" \
-d "completed_at"="" \
-d "on_hold"="0" \
-d "billable"="0" \
-d "cost_hours"="" \
-d "cost_extra"="" \
var settings = {
"async": true,
"crossDomain": true,
"url": "https://app.workstack.io/api/tasks",
"method": "POST",
"data": {
"user_id": 43,
"project_id": 24,
"todo_id": 343,
"note": "Shop run out of bread",
"minutes": 30,
"start": "2016-06-18 12:00",
"end": "",
"completed": false,
"completed_at": "",
"on_hold": false,
"billable": false,
"cost_hours": 0,
"cost_extra": 0
},
"headers": {
"accept": "application/json"
}
}
$.ajax(settings).done(function (response) {
console.log(response);
});
Example response:
{
"data": {
"id": 739,
"project_id": 24,
"todo_id": 343,
"note": "Shop run out of bread",
"minutes": 30,
"start": "2016-06-18 12:00",
"end": null,
"completed": false,
"completed_at": null,
"on_hold": false,
"billable": false,
"cost_hours": 0,
"cost_extra": 0,
"position": 0,
"created_at": "2016-06-08 22:36:47",
"updated_at": "2016-06-08 22:39:32",
"hidden": false,
"uri": "/tasks/739"
},
"code": 200
}
HTTP Request
POST api/tasks
Parameters
Parameter | Type | Status | Description |
---|---|---|---|
user_id | integer | optional | Minimum: 1 |
project_id | integer | optional | Minimum: 0 |
todo_id | integer | required | Minimum: 1 |
note | string | optional | Maximum: 250 |
minutes | integer | optional | Minimum: 5 Maximum: 60000 |
start | date | optional | |
end | date | optional | |
completed | boolean | optional | |
completed_at | date | optional | |
on_hold | boolean | optional | |
billable | boolean | optional | |
position | integer | optional | Minimum: 0 |
cost_hours | integer | optional | Minimum: 0 |
cost_extra | integer | optional | Minimum: 0 |
Update a Task
Example request:
curl "https://app.workstack.io/api/tasks/739" \
-H "Accept: application/json" \
-d "user_id"="43" \
-d "note"="Forgot the milk" \
-d "minutes"="30" \
-d "start"="2016-06-18 12:00" \
-d "end"="" \
-d "completed"="0" \
-d "completed_at"="" \
-d "on_hold"="1" \
-d "billable"="0" \
-d "cost_hours"="" \
-d "cost_extra"="" \
var settings = {
"async": true,
"crossDomain": true,
"url": "https://app.workstack.io/api/tasks/739",
"method": "PUT",
"data": {
"user_id": 43,
"note": "Forgot the milk",
"minutes": 30,
"start": "2016-06-18 12:00",
"end": "",
"completed": false,
"completed_at": "",
"on_hold": true,
"billable": false,
"cost_hours": 0,
"cost_extra": 0
},
"headers": {
"accept": "application/json"
}
}
$.ajax(settings).done(function (response) {
console.log(response);
});
Example response:
{
"data": {
"id": 739,
"project_id": 24,
"todo_id": 343,
"note": "Forgot the milk",
"minutes": 30,
"start": "2016-06-18 12:00",
"end": null,
"completed": false,
"completed_at": null,
"on_hold": true,
"billable": false,
"cost_hours": 0,
"cost_extra": 0,
"position": 0,
"created_at": "2016-06-08 22:36:47",
"updated_at": "2016-06-08 22:39:32",
"hidden": false,
"uri": "/tasks/739"
},
"code": 200
}
HTTP Request
PUT api/tasks/{id}
Parameters
Parameter | Type | Status | Description |
---|---|---|---|
user_id | integer | optional | Minimum: 1 |
note | string | optional | Maximum: 250 |
minutes | integer | optional | Minimum: 5 Maximum: 60000 |
start | date | optional | |
end | date | optional | |
completed | boolean | optional | |
completed_at | date | optional | |
on_hold | boolean | optional | |
billable | boolean | optional | |
position | integer | optional | Minimum: 0 |
cost_hours | integer | optional | Minimum: 0 |
cost_extra | integer | optional | Minimum: 0 |
Delete a Task
Example request:
curl "https://app.workstack.io/api/tasks/739" \
-H "Accept: application/json"
var settings = {
"async": true,
"crossDomain": true,
"url": "https://app.workstack.io/api/tasks/739",
"method": "DELETE",
"headers": {
"accept": "application/json"
}
}
$.ajax(settings).done(function (response) {
console.log(response);
});
Example response:
{
"data": {
"message": "Item deleted",
"id": 739
},
"code": 200
}
HTTP Request
DELETE api/tasks/{id}
Get a Comment
Example request:
curl "https://app.workstack.io/api/comments/4003" \
-H "Accept: application/json"
var settings = {
"async": true,
"crossDomain": true,
"url": "https://app.workstack.io/api/comments/4003",
"method": "GET",
"headers": {
"accept": "application/json"
}
}
$.ajax(settings).done(function (response) {
console.log(response);
});
Example response:
{
"data": {
"id": 4003,
"note": "Need to clarify the position of the elements",
"project_id": 22,
"todo_id": 2006,
"user_id": 42,
"created_at": "2016-06-08 22:05:46",
"updated_at": "2016-06-08 22:05:46",
"hidden": false,
"uri": "/comments/4003"
},
"code": 200
}
HTTP Request
GET api/comments/{id}
HEAD api/comments/{id}
Get all Comments for a User
Example request:
curl "https://app.workstack.io/api/users/42/comments" \
-H "Accept: application/json"
var settings = {
"async": true,
"crossDomain": true,
"url": "https://app.workstack.io/api/users/42/comments",
"method": "GET",
"headers": {
"accept": "application/json"
}
}
$.ajax(settings).done(function (response) {
console.log(response);
});
Example response:
{
"data": [
{
"id": 4003,
"note": "Need to clarify the position of the elements",
"project_id": 22,
"todo_id": 2006,
"user_id": 42,
"created_at": "2016-06-08 22:05:46",
"updated_at": "2016-06-08 22:05:46",
"hidden": false,
"uri": "/comments/4003"
}
],
"code": 200
}
HTTP Request
GET api/users/{id}/comments
HEAD api/users/{id}/comments
Get all Comments for a Project
Example request:
curl "https://app.workstack.io/api/projects/22/comments" \
-H "Accept: application/json"
var settings = {
"async": true,
"crossDomain": true,
"url": "https://app.workstack.io/api/projects/22/comments",
"method": "GET",
"headers": {
"accept": "application/json"
}
}
$.ajax(settings).done(function (response) {
console.log(response);
});
Example response:
{
"data": [
{
"id": 4003,
"note": "Need to clarify the position of the elements",
"project_id": 22,
"todo_id": 2006,
"user_id": 42,
"created_at": "2016-06-08 22:05:46",
"updated_at": "2016-06-08 22:05:46",
"hidden": false,
"uri": "/comments/4003"
}
],
"code": 200
}
HTTP Request
GET api/projects/{id}/comments
HEAD api/projects/{id}/comments
Get all Comments for a Todo
Example request:
curl "https://app.workstack.io/api/todos/{id}/comments" \
-H "Accept: application/json"
var settings = {
"async": true,
"crossDomain": true,
"url": "https://app.workstack.io/api/todos/{id}/comments",
"method": "GET",
"headers": {
"accept": "application/json"
}
}
$.ajax(settings).done(function (response) {
console.log(response);
});
Example response:
{
"data": [
{
"id": 4003,
"note": "Need to clarify the position of the elements",
"project_id": 22,
"todo_id": 2006,
"user_id": 42,
"created_at": "2016-06-08 22:05:46",
"updated_at": "2016-06-08 22:05:46",
"hidden": false,
"uri": "/comments/4003"
}
],
"code": 200
}
HTTP Request
GET api/todos/{id}/comments
HEAD api/todos/{id}/comments
Create a Comment
Example request:
curl "https://app.workstack.io/api/comments" \
-H "Accept: application/json" \
-d "project_id"="24" \
-d "todo_id"="343" \
-d "note"="Can you send me some driving directions to reach the shop?" \
-d "user_ids[]"="42" \
-d "user_ids[]"="43" \
var settings = {
"async": true,
"crossDomain": true,
"url": "https://app.workstack.io/api/comments",
"method": "POST",
"data": {
"project_id": 24,
"todo_id": 343,
"note": "Can you send me some driving directions to reach the shop?",
"user_ids[]": "42",
"user_ids[]": "43"
},
"headers": {
"accept": "application/json"
}
}
$.ajax(settings).done(function (response) {
console.log(response);
});
Example response:
{
"data": {
"id": 1487,
"project_id": 24,
"todo_id": 343,
"note": "Can you send me some driving directions to reach the shop?",
"created_at": "2016-06-08 22:36:47",
"updated_at": "2016-06-08 22:39:32",
"hidden": false,
"uri": "/comments/1487"
},
"code": 200
}
HTTP Request
POST api/comments
Parameters
Parameter | Type | Status | Description |
---|---|---|---|
project_id | integer | required | Minimum: 0 |
todo_id | integer | required | Minimum: 1 |
note | string | required | Maximum: 5000 |
user_ids | array | required |
Update a Comment
Example request:
curl "https://app.workstack.io/api/comments/1487" \
-H "Accept: application/json" \
-d "note"="Can you send me some driving directions to reach the shop in Brooklyn?" \
var settings = {
"async": true,
"crossDomain": true,
"url": "https://app.workstack.io/api/comments/1487",
"method": "PUT",
"data": {
"note": "Can you send me some driving directions to reach the shop in Brooklyn?"
},
"headers": {
"accept": "application/json"
}
}
$.ajax(settings).done(function (response) {
console.log(response);
});
Example response:
{
"data": {
"id": 1487,
"project_id": 24,
"todo_id": 343,
"note": "Can you send me some driving directions to reach the shop in Brooklyn?",
"created_at": "2016-06-08 22:36:47",
"updated_at": "2016-06-08 22:39:32",
"hidden": false,
"uri": "/comments/1487"
},
"code": 200
}
HTTP Request
PUT api/comments/{id}
Parameters
Parameter | Type | Status | Description |
---|---|---|---|
note | string | required | Maximum: 5000 |
Delete a Comment
Example request:
curl "https://app.workstack.io/api/comments/1487" \
-H "Accept: application/json"
var settings = {
"async": true,
"crossDomain": true,
"url": "https://app.workstack.io/api/comments/1487",
"method": "DELETE",
"headers": {
"accept": "application/json"
}
}
$.ajax(settings).done(function (response) {
console.log(response);
});
Example response:
{
"data": {
"message": "Item deleted",
"id": 1487
},
"code": 200
}
HTTP Request
DELETE api/comments/{id}
Get all Meetings
Example request:
curl "https://app.workstack.io/api/meetings" \
-H "Accept: application/json"
var settings = {
"async": true,
"crossDomain": true,
"url": "https://app.workstack.io/api/meetings",
"method": "GET",
"headers": {
"accept": "application/json"
}
}
$.ajax(settings).done(function (response) {
console.log(response);
});
Example response:
{
"data": [
{
"id": 11,
"name": "Board Meeting",
"minutes": 60,
"date": "2016-06-15 13:00:00",
"project_id": null,
"created_at": "2016-06-08 22:14:29",
"updated_at": "2016-06-08 22:14:29",
"hidden": false,
"uri": "/meetings/11"
},
{
"id": 12,
"name": "Dev Meeting",
"minutes": 60,
"date": "2016-06-16 12:45:00",
"project_id": null,
"created_at": "2016-06-08 22:14:43",
"updated_at": "2016-06-08 22:14:43",
"hidden": false,
"uri": "/meetings/12"
}
],
"code": 200
}
HTTP Request
GET api/meetings
HEAD api/meetings
Get a Meeting
Example request:
curl "https://app.workstack.io/api/meetings/11" \
-H "Accept: application/json"
var settings = {
"async": true,
"crossDomain": true,
"url": "https://app.workstack.io/api/meetings/11",
"method": "GET",
"headers": {
"accept": "application/json"
}
}
$.ajax(settings).done(function (response) {
console.log(response);
});
Example response:
{
"data": {
"id": 11,
"name": "Board Meeting",
"minutes": 60,
"date": "2016-06-15 13:00:00",
"project_id": null,
"created_at": "2016-06-08 22:14:29",
"updated_at": "2016-06-08 22:14:29",
"hidden": false,
"uri": "/meetings/11",
"users": [
{
"id": 42,
"email": "[email protected]",
"name": "John Doe",
"type": "admin",
"photo_url": "https://app.workstack.io/storage/profiles/041ef214a20f5f0ee5308ecf7ea40f7b0fc.png",
"created_at": "2016-05-18 12:39:37",
"updated_at": "2016-06-08 17:31:38",
"uri": "/users/42"
},
{
"id": 43,
"email": "[email protected]",
"name": "Marcus Brown",
"type": "owner",
"photo_url": "https://www.gravatar.com/avatar/cfd4bb97209fw5e8f9cddb5f10376e25.jpg?s=200&d=blank",
"created_at": "2016-05-18 13:42:29",
"updated_at": "2016-05-18 13:44:19",
"uri": "/users/43"
}
]
},
"code": 200
}
HTTP Request
GET api/meetings/{id}
HEAD api/meetings/{id}
Get all Meetings for a User
Example request:
curl "https://app.workstack.io/api/users/42/meetings" \
-H "Accept: application/json"
var settings = {
"async": true,
"crossDomain": true,
"url": "https://app.workstack.io/api/users/42/meetings",
"method": "GET",
"headers": {
"accept": "application/json"
}
}
$.ajax(settings).done(function (response) {
console.log(response);
});
Example response:
{
"data": [
{
"id": 11,
"name": "Board Meeting",
"minutes": 60,
"date": "2016-06-15 13:00:00",
"project_id": null,
"created_at": "2016-06-08 22:14:29",
"updated_at": "2016-06-08 22:14:29",
"hidden": false,
"uri": "/meetings/11"
},
{
"id": 12,
"name": "Dev Meeting",
"minutes": 60,
"date": "2016-06-16 12:45:00",
"project_id": null,
"created_at": "2016-06-08 22:14:43",
"updated_at": "2016-06-08 22:14:43",
"hidden": false,
"uri": "/meetings/12"
}
],
"code": 200
}
HTTP Request
GET api/users/{id}/meetings
HEAD api/users/{id}/meetings
Create a Meeting
Example request:
curl "https://app.workstack.io/api/meetings" \
-H "Accept: application/json" \
-d "project_id"="24" \
-d "name"="Dev Meeting" \
-d "minutes"="60" \
-d "date"="2016-07-13 10:30" \
-d "user_ids[]"="42" \
-d "user_ids[]"="43" \
var settings = {
"async": true,
"crossDomain": true,
"url": "https://app.workstack.io/api/meetings",
"method": "POST",
"data": {
"project_id": 24,
"name": "Dev Meeting",
"minutes": 60,
"date": "2016-07-13 10:30",
"user_ids[]": 42,
"user_ids[]": 43
},
"headers": {
"accept": "application/json"
}
}
$.ajax(settings).done(function (response) {
console.log(response);
});
Example response:
{
"data": {
"id": 182,
"project_id": 24,
"name": "Dev Meeting",
"minutes": 60,
"date": "2016-07-13 10:30",
"created_at": "2016-06-08 22:36:47",
"updated_at": "2016-06-08 22:39:32",
"hidden": false,
"users": [
{
"id": 42,
"email": "[email protected]",
"name": "John Doe",
"type": "admin",
"photo_url": "https://app.workstack.io/storage/profiles/041ef214a20f5f0ee5308ecf7ea40f7b0fc.png",
"created_at": "2016-05-18 12:39:37",
"updated_at": "2016-06-08 17:31:38",
"uri": "/users/42"
},
{
"id": 43,
"email": "[email protected]",
"name": "Marcus Brown",
"type": "owner",
"photo_url": "https://www.gravatar.com/avatar/cfd4bb97209fw5e8f9cddb5f10376e25.jpg?s=200&d=blank",
"created_at": "2016-05-18 13:42:29",
"updated_at": "2016-05-18 13:44:19",
"uri": "/users/43"
}
],
"uri": "/meetings/182"
},
"code": 200
}
HTTP Request
POST api/meetings
Parameters
Parameter | Type | Status | Description |
---|---|---|---|
project_id | integer | optional | Minimum: 1 |
name | string | required | Maximum: 250 |
minutes | integer | required | Minimum: 5 Maximum: 60000 |
date | date | required | |
user_ids | array | required |
Update a Meeting
Example request:
curl "https://app.workstack.io/api/meetings/182" \
-H "Accept: application/json" \
-d "project_id"="24" \
-d "name"="Dev Meeting" \
-d "minutes"="60" \
-d "date"="2016-07-13 15:30" \
-d "user_ids[]"="42" \
-d "user_ids[]"="43" \
var settings = {
"async": true,
"crossDomain": true,
"url": "https://app.workstack.io/api/meetings/182",
"method": "PUT",
"data": {
"project_id": 24,
"name": "Dev Meeting",
"minutes": 60,
"date": "2016-07-13 15:30",
"user_ids[]": 42,
"user_ids[]": 43
},
"headers": {
"accept": "application/json"
}
}
$.ajax(settings).done(function (response) {
console.log(response);
});
Example response:
{
"data": {
"id": 182,
"project_id": 24,
"name": "Dev Meeting",
"minutes": 60,
"date": "2016-07-13 15:30",
"created_at": "2016-06-08 22:36:47",
"updated_at": "2016-06-08 22:39:32",
"hidden": false,
"users": [
{
"id": 42,
"email": "[email protected]",
"name": "John Doe",
"type": "admin",
"photo_url": "https://app.workstack.io/storage/profiles/041ef214a20f5f0ee5308ecf7ea40f7b0fc.png",
"created_at": "2016-05-18 12:39:37",
"updated_at": "2016-06-08 17:31:38",
"uri": "/users/42"
},
{
"id": 43,
"email": "[email protected]",
"name": "Marcus Brown",
"type": "owner",
"photo_url": "https://www.gravatar.com/avatar/cfd4bb97209fw5e8f9cddb5f10376e25.jpg?s=200&d=blank",
"created_at": "2016-05-18 13:42:29",
"updated_at": "2016-05-18 13:44:19",
"uri": "/users/43"
}
],
"uri": "/meetings/182"
},
"code": 200
}
HTTP Request
PUT api/meetings/{id}
Parameters
Parameter | Type | Status | Description |
---|---|---|---|
project_id | integer | optional | |
name | string | required | Maximum: 250 |
minutes | integer | required | Minimum: 5 Maximum: 60000 |
date | date | optional | |
user_ids | array | optional |
Delete a Meeting
Example request:
curl "https://app.workstack.io/api/meetings/182" \
-H "Accept: application/json"
var settings = {
"async": true,
"crossDomain": true,
"url": "https://app.workstack.io/api/meetings/182",
"method": "DELETE",
"headers": {
"accept": "application/json"
}
}
$.ajax(settings).done(function (response) {
console.log(response);
});
Example response:
{
"data": {
"message": "Item deleted",
"id": 182
},
"code": 200
}
HTTP Request
DELETE api/meetings/{id}
Get all Holidays for the Team
Example request:
curl "https://app.workstack.io/api/holidays/team" \
-H "Accept: application/json"
var settings = {
"async": true,
"crossDomain": true,
"url": "https://app.workstack.io/api/holidays/team",
"method": "GET",
"headers": {
"accept": "application/json"
}
}
$.ajax(settings).done(function (response) {
console.log(response);
});
Example response:
{
"data": [
{
"id": 1,
"half_days": 2,
"date": "2016-04-03",
"created_at": "2016-04-08 13:41:34",
"updated_at": "2016-04-08 13:41:34",
"uri": "/holidays/team/1"
},
{
"id": 2,
"half_days": 4,
"date": "2016-03-21",
"created_at": "2016-04-08 13:41:34",
"updated_at": "2016-04-08 13:41:34",
"uri": "/holidays/team/2"
},
{
"id": 3,
"half_days": 5,
"date": "2016-04-07",
"created_at": "2016-04-08 13:41:34",
"updated_at": "2016-04-08 13:41:34",
"uri": "/holidays/team/3"
}
],
"code": 200
}
HTTP Request
GET api/holidays/team
HEAD api/holidays/team
Add a Holiday for the Team
Example request:
curl "https://app.workstack.io/api/holidays/team" \
-H "Accept: application/json" \
-d "half_days"="4" \
-d "date"="2016-07-10" \
var settings = {
"async": true,
"crossDomain": true,
"url": "https://app.workstack.io/api/holidays/team",
"method": "POST",
"data": {
"half_days": 4,
"date": "2016-07-10"
},
"headers": {
"accept": "application/json"
}
}
$.ajax(settings).done(function (response) {
console.log(response);
});
Example response:
{
"data": {
"id": 13,
"half_days": 4,
"date": "2016-07-10",
"created_at": "2016-04-08 13:41:34",
"updated_at": "2016-04-08 13:41:34",
"uri": "/holidays/team/13"
},
"code": 200
}
HTTP Request
POST api/holidays/team
Parameters
Parameter | Type | Status | Description |
---|---|---|---|
half_days | integer | required | Maximum: 200 Minimum: 1 |
date | date | required |
Update a Holiday for the Team
Example request:
curl "https://app.workstack.io/api/holidays/team/13" \
-H "Accept: application/json" \
-d "half_days"="6" \
-d "date"="2016-09-17" \
var settings = {
"async": true,
"crossDomain": true,
"url": "https://app.workstack.io/api/holidays/team/13",
"method": "PUT",
"data": {
"half_days": 6,
"date": "2016-09-17"
},
"headers": {
"accept": "application/json"
}
}
$.ajax(settings).done(function (response) {
console.log(response);
});
Example response:
{
"data": {
"id": 13,
"half_days": 6,
"date": "2016-09-17",
"created_at": "2016-04-08 13:41:34",
"updated_at": "2016-04-08 13:41:34",
"uri": "/holidays/team/13"
},
"code": 200
}
HTTP Request
PUT api/holidays/team/{id}
Parameters
Parameter | Type | Status | Description |
---|---|---|---|
half_days | integer | required | Maximum: 200 Minimum: 1 |
date | date | optional |
Delete a Holiday for the Team
Example request:
curl "https://app.workstack.io/api/holidays/team/13" \
-H "Accept: application/json"
var settings = {
"async": true,
"crossDomain": true,
"url": "https://app.workstack.io/api/holidays/team/13",
"method": "DELETE",
"headers": {
"accept": "application/json"
}
}
$.ajax(settings).done(function (response) {
console.log(response);
});
Example response:
{
"data": {
"message": "Item deleted",
"id": 13
},
"code": 200
}
HTTP Request
DELETE api/holidays/team/{id}
Get all Holidays for a User
Example request:
curl "https://app.workstack.io/api/users/43/holidays" \
-H "Accept: application/json"
var settings = {
"async": true,
"crossDomain": true,
"url": "https://app.workstack.io/api/users/43/holidays",
"method": "GET",
"headers": {
"accept": "application/json"
}
}
$.ajax(settings).done(function (response) {
console.log(response);
});
Example response:
{
"data": [
{
"id": 402,
"half_days": 2,
"date": "2016-06-10",
"user_id": 43,
"created_at": "2016-06-08 20:11:07",
"updated_at": "2016-06-08 20:11:07",
"uri": "/holidays/users/402"
}
],
"code": 200
}
HTTP Request
GET api/users/{id}/holidays
HEAD api/users/{id}/holidays
Create a new Holiday for a User
Example request:
curl "https://app.workstack.io/api/holidays/users" \
-H "Accept: application/json" \
-d "user_id"="43" \
-d "half_days"="5" \
-d "date"="2016-05-18" \
var settings = {
"async": true,
"crossDomain": true,
"url": "https://app.workstack.io/api/holidays/users",
"method": "POST",
"data": {
"user_id": 43,
"half_days": 5,
"date": "2016-05-18"
},
"headers": {
"accept": "application/json"
}
}
$.ajax(settings).done(function (response) {
console.log(response);
});
Example response:
{
"data": [
{
"id": 417,
"half_days": 5,
"date": "2016-05-18",
"user_id": 43,
"created_at": "2016-06-08 20:11:07",
"updated_at": "2016-06-08 20:11:07",
"uri": "/holidays/users/402"
}
],
"code": 200
}
HTTP Request
POST api/holidays/users
Parameters
Parameter | Type | Status | Description |
---|---|---|---|
user_id | integer | required | Minimum: 1 |
half_days | integer | required | Maximum: 200 Minimum: 1 |
date | date | required |
Update a Holiday for a User
Example request:
curl "https://app.workstack.io/api/holidays/users/417" \
-H "Accept: application/json" \
-d "half_days"="7" \
-d "date"="2016-05-19" \
var settings = {
"async": true,
"crossDomain": true,
"url": "https://app.workstack.io/api/holidays/users/417",
"method": "PUT",
"data": {
"half_days": 7,
"date": "2016-05-19"
},
"headers": {
"accept": "application/json"
}
}
$.ajax(settings).done(function (response) {
console.log(response);
});
Example response:
{
"data": [
{
"id": 417,
"half_days": 7,
"date": "2016-05-19",
"user_id": 43,
"created_at": "2016-06-08 20:11:07",
"updated_at": "2016-06-08 20:11:07",
"uri": "/holidays/users/417"
}
],
"code": 200
}
HTTP Request
PUT api/holidays/users/{id}
Parameters
Parameter | Type | Status | Description |
---|---|---|---|
half_days | integer | required | Maximum: 200 Minimum: 1 |
date | date | optional |
Delete a Holiday for a User
Example request:
curl "https://app.workstack.io/api/holidays/users/417" \
-H "Accept: application/json"
var settings = {
"async": true,
"crossDomain": true,
"url": "https://app.workstack.io/api/holidays/users/417",
"method": "DELETE",
"headers": {
"accept": "application/json"
}
}
$.ajax(settings).done(function (response) {
console.log(response);
});
Example response:
{
"data": {
"message": "Item deleted",
"id": 417
},
"code": 200
}
HTTP Request
DELETE api/holidays/users/{id}
Create a Webhook
Example request:
curl "https://app.workstack.io/api/webhook" \
-H "Accept: application/json" \
-d "url"="http://mydomain.com/workstack-webhook" \
-d "event"="MeetingCreated" \
var settings = {
"async": true,
"crossDomain": true,
"url": "https://app.workstack.io/api/webhook",
"method": "POST",
"data": {
"url": "http://mydomain.com/workstack-webhook",
"event": "MeetingCreated"
},
"headers": {
"accept": "application/json"
}
}
$.ajax(settings).done(function (response) {
console.log(response);
});
Example response:
{
id: 18,
event: "Workstack\Events\MeetingCreated",
tenant_id: 42,
created_at: "2016-06-21 22:51:31",
updated_at: "2016-06-21 22:51:31",
url: "http://mydomain.com/workstack-webhook"
}
HTTP Request
POST api/webhook
Parameters
Parameter | Type | Status | Description |
---|---|---|---|
url | url | required | |
event | string | required |
Update a Webhook
Example request:
curl "https://app.workstack.io/api/webhook/18" \
-H "Accept: application/json" \
-d "url"="http://mydomain.com/workstack-webhook-new" \
-d "event"="MeetingCreated" \
var settings = {
"async": true,
"crossDomain": true,
"url": "https://app.workstack.io/api/webhook/18",
"method": "PUT",
"data": {
"url": "http://mydomain.com/workstack-webhook-new",
"event": "MeetingCreated"
},
"headers": {
"accept": "application/json"
}
}
$.ajax(settings).done(function (response) {
console.log(response);
});
HTTP Request
PUT api/webhook/{webhook_id}
Parameters
Parameter | Type | Status | Description |
---|---|---|---|
url | url | required | |
event | string | required |
Delete a Webhook
Example request:
curl "https://app.workstack.io/api/webhook/18" \
-H "Accept: application/json"
var settings = {
"async": true,
"crossDomain": true,
"url": "https://app.workstack.io/api/webhook/18",
"method": "DELETE",
"headers": {
"accept": "application/json"
}
}
$.ajax(settings).done(function (response) {
console.log(response);
});
HTTP Request
DELETE api/webhook/{webhook_id}