NAV
bash javascript

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}