Quire API API Reference

Introduction

Welcome to the reference for the Quire REST API!

The Quire REST API provides a broad set of operations and resources that:

  • Consistently do repetitive or tedious tasks.
  • Chain a process together for your team’s process and workflow.
    • Pull information from other locations such as email and Evernote into Quire.
    • Push information from Quire to other locations such as email and Zapier.

Want to share your thoughts on how Quire API works for you? Tell us how you feel about using our API and what we can do to make it better.

REST is a web-service protocol for rapid development by using HTTP and JSON technology.

API Changelog

You can find the Changelog of the API Reference in the Quire Community.

Authentication

OAuth v2.0

Quire uses OAuth v2.0 to authenticate your app to access the Quire REST API on behalf of users without getting their password.

Authenticating via OAuth2 requires the following steps:

  1. Register Your Application on Quire
  2. Ask a Quire User to Grant Access to Your Application
  3. Retrieve an Access Token
  4. Make Authenticated Requests

Register Your Application on Quire

Quire API

1. Give your app a cool name

Your app deserves a cool name that lives up to its wide broad of great features.

All of the app users will see this name in public, so think carefully!

2. Choose the Quire Organization that your app belongs to

You can choose an organization in Quire that your app belongs to.

If one day you decide to leave the organization, you will lose the authority to manage the app.

3. Redirect URL

When users grant your app authorization request, users will be directed to the configured URL that you’ve set.

4. Choose permission scopes

You can set permission on what your app can do with Quire. There are several options for you to choose from.

Note: If none of the options is selected, the app can only read user’s data.

5. Development Client ID and Client Secret

Quire Open API

The Client ID and Client secret will be automatically generated as you create an app.

The Client ID is a unique ID to identify your app.

You should keep your client secret safe, which means you should never share your client secret with anyone. If you choose to regenerate the client secret, the old one will immediately become invalid.

6. Update your App

If your app hasn’t been published to Quire App Directory, it will remain as unpublished status. You can still use the configured shareable link in the Developer App Console Distribution to share the app with other users for testing or integration.

When you make changes to the app, you can use the shareable link to access the development copy as well. Working on your development copy will not affect your live App Directory app. When your updated app is ready to be published and replaced the old version on Quire App Directory, your published app will have a different Client ID to the unpublished one.

There are two sets of Client ID and Client Secret.

  • Development set - should be used during developing and testing internally of the app.
  • Production set - should be used once your app is ready and published on Quire App Directory.

Fulfill Authorization Request

Ask a Quire User to Grant Access to Your Application

Once registering your application, you can ask your user to grant access to your application.

The authorization endpoint lets users grant your app access to the requested permissions.

The authorization endpoint should look like this:

https://quire.io/oauth?client_id=your-client-ID&redirect_uri=your-redirect-uri

Quire Grant Access

After your user clicks Allow, the access will be granted, and he will be redirected to the URL you specified in the redirect_uri parameter with an authorization code provided as a query parameter called code.

After your app is granted, you can have an authorization code to exchange access token for access Quire API. The redirect_uri is optional. If not being specified, we will automatically use the one that is previously detected in the app. If specified, the redirect URL must start with the prefix of the one that was previously detected in the app.

Retrieve Access Token

To retrieve the access token, you have to post a request to https://quire.io/oauth/token with the following data:

Parameter Value
grant_type authorization_code
code {your-authorization-code}
client_id {your-client-ID}
client_secret {your-client-secret}

Then, the access token will be returned in the response's body.

{
  "access_token":"ACCESS_TOKEN",
  "token_type": "bearer",
  "expires_in":2592000,
  "refresh_token":"REFRESH_TOKEN"
}

The token should be kept carefully and permanently since you need it to access every Quire API.

Use Access Token to Access Quire API

In each request, the access token must be put in the header. The header name is Authorization and the value is Bearer your_token.

After you exchange the access token, your app can make requests to Quire API on behalf of the authorized users.

curl -H 'Authorization: Bearer {access_token}' \
https://quire.io/api/user/id/me
{
  "email": "john@gmail.cc",
  "website": "https://coolwebsites.com",
  "id": "My_ID",
  "description": "This is *cool*!",
  "url": "https://quire.io/u/My_ID",
  "nameText": "My Name",
  "nameHtml": "My Name",
  "descriptionText": "This is cool!",
  "descriptionHtml": "This is <i>cool</i>!",
  "image": "https://quire.s3.amazonaws.com/oid/image.jpg",
  "iconColor": "37",
  "name": "My Name",
  "oid": "Dyh2YkFcu9uLgLFIeN1kB4Ld"
}

Token Expiration

A refresh token might stop working for one of these reasons:

  • The user has revoked your app's access.
  • The refresh token has not been used for 6 months.

Publish App

Quire Publish App

By default, your app will be set as Private. You can change the app distribution to Public so that other Quire users can install your app to their workspace as well.

If your app is made available on Quire App Directory and you want to delete the app, you should communicate with your users first before depreciating the app.

WebHook

When one event on Quire is triggered, the system will send a payload to the webhook's configured URL.

A webhook is used by Quire to call an app, while Quire API is used by an app to call Quire.

Notifications

A notification is the information about a update (aka., an activity). Here is an example:

{
  "type": "notification",
  "token": "a-token-defined-by-you",
  "data": {
    "type": 0, //activity's type
    "when": "2019-09-30T08:20:12.000Z",
    "what": {
      "oid": "YxjapXXRCOYxoaiCT4tT3OQm", //OID of a task, project, or organization depending on type
      "id": 101,
      "name": "Brand new start"
    },
    "user": {
      "oid": "1AbDEFed2A5031BEDDweqmde", //OID of the user
      "id": "john.doer",
      "name": "John Doer"
    },
    "message": "<a href=\"https://quire.io/u/john.doer\">John Doer</a> added <a href=\"https://quire.io/w/MyProjects/101\">Brand new start</a>",
    "text": "John Doer added Brand new start",
    "url": "https://quire.io/w/MyProjects/101"
  } 
}

Registration for notifications

If the app wants to receive notifications of a specific projects or tasks, it can follow the projects or apps by sending a PUT request to the URL. To add a follower, the body of the request can be:

{
  "addFollowers": ["app"]
}

Where app is a keyword. It indicates that the app would like to add to its followers.

In additions, you can specify additional information that will be passed as part of a notification int the following syntaxes.

Syntax 1

"app|team|channel"

where app is a keyword while team and channel are application specific. That is, you can pass any value to team and channel. For example,

{
  "addFollowers": ["app|extra101"]
}

Then, the notification will carry additional field called team with the value "extra101":

{
  "type": "notification"
  "team": "extra101"
  "data": {
    //refer the Notifications section for details
  }
}

Syntax 2

"app|/path"

where app is a keyword, and /path is application specific. The path will be appended to the app's hook URL. For example, assume the app's hook URL is "https://super.app/hooks/standard", and the follower "app|/soc/id279/channel51". Then, the notification will be posted the following URL: "https://super.app/hooks/standard/soc/id279/channel51".

If you'd like to pass additional information in this syntax, you can append it as follows.

"app|/path|channel"

For example, app|/soc/id8|box51. Then, box51 will be part of the JON object sent to the hook URL.

{
  "type": "notification"
  "channel": "box51"
  "data": {
    //refer the Notifications section for details
  }
}

Rate limits

To protect the stability of the API and keep it available to all users, Quire enforces multiple kinds of rate limiting. Requests that hit any of our rate limits will receive a 429 Too Many Requests response. We may change these quotas or add new quotas in the future.

Plan Maximum requests per organization, per minute Maximum requests per organization, per hour
Free 60 600

Note: the limit is per-organization. It sums up the total number of all accesses from all applications for each organization.

Size limits

The size of each request can't be larger than 2MB. Requests that hit this limit will receive a 413 Payload too large response.

Status codes

Code Meaning Description
200 Success Request successful
400 Bad Request You're using a wrong parameter, or passing incorrect data.
401 Unauthorized Your API key is wrong.
403 Forbidden Not authorized to access the resource.
404 Not Found The specified resource could not be found.
405 Method not Allowed Method not allowed or supported.
409 Conflict There is already a resource with the same criteria.
429 Too Many Requests Exceeded the rate limit for API calls
500 Internal Server Error There is an unexpected error.
503 Service Unavailable Server is down for maintenance.

Error responses

The following JSON data is returned in the response body when an error occurs.

{
    "code": a_number,
  "message": "an error message here"
}
Error Code Meaning
100 General authentication error.
400 Bad request including wrong request body, wrong parameter and so on.
401 Invalid or expired token.
403 Forbidden.
404 Resource not found.
405 Method not allowed.
413 Request too large.
429 Too many invocations.
469 Quota exceeded.
500 General invocation error. Most likely, an internal error.
API Endpoint
https://quire.io/api
Terms of Service: https://quire.io/terms
Contact: info@quire.io
Schemes: https
Version: 1.0.0

board

A board is a group of columns that an user can visualize the progress of tasks.

Add a new board.

POST /board/{projectOid}

Add a new board into a project.

projectOid: string
in path

OID of project that this new board to be added to.

name: string

The name of the board.

id: string

(Optional) ID of the board. If omitted, Quire will generate one automatically. It must be unquie in the whole project if specified

description: string

(Optional) An optional description about this task.

columns: CreateColumnBody

(Optional) The column defintions of this board. If omitted, the default column defintions will be generated. If specified, it must have at least one column whose status is 100.

partner: string

(Optional) OID of the external team that this board belongs to.

due: string

(Optional) When this board was aimed to complete.

Request Example
{
  "name": "Board 101",
  "id": "Board101",
  "description": "**Great** board to start with.",
  "columns": [
    {
      "name": "TODO",
      "color": "35",
      "value": 0
    }
  ],
  "partner": "rcBHBYXZSiyDRrHrWPutatfF",
  "due": "2020-01-22T02:06:58.158Z"
}
200 OK

successful operation

Response Content-Types: application/json
Response Example (200 OK)
{
  "id": "My_ID",
  "description": "This is *cool*!",
  "url": "https://quire.io/w/my_project",
  "nameText": "My Name",
  "nameHtml": "My Name",
  "descriptionText": "This is cool!",
  "descriptionHtml": "This is <i>cool</i>!",
  "iconColor": "37",
  "image": "https://quire.s3.amazonaws.com/oid/image.jpg",
  "name": "My Name",
  "oid": "Dyh2YkFcu9uLgLFIeN1kB4Ld",
  "columns": [
    {
      "name": "TODO",
      "color": "35",
      "value": 0
    }
  ],
  "partner": "rcBHBYXZSiyDRrHrWPutatfF",
  "archivedAt": "2020-02-22T02:06:58.158Z",
  "due": "2020-01-22T02:06:58.158Z",
  "project": "Dyh2YkFcu9uLgLFIeN1kB4Ld",
  "createdAt": "2018-12-22T02:06:58.158Z",
  "createdBy": "Dyh2YkFcu9uLgLFIeN1kB4Ld"
}

Add a new board.

POST /board/id/{projectId}

Add a new board into a project.

projectId: string
in path

ID of project that this new board to be added to.

name: string

The name of the board.

id: string

(Optional) ID of the board. If omitted, Quire will generate one automatically. It must be unquie in the whole project if specified

description: string

(Optional) An optional description about this task.

columns: CreateColumnBody

(Optional) The column defintions of this board. If omitted, the default column defintions will be generated. If specified, it must have at least one column whose status is 100.

partner: string

(Optional) OID of the external team that this board belongs to.

due: string

(Optional) When this board was aimed to complete.

Request Example
{
  "name": "Board 101",
  "id": "Board101",
  "description": "**Great** board to start with.",
  "columns": [
    {
      "name": "TODO",
      "color": "35",
      "value": 0
    }
  ],
  "partner": "rcBHBYXZSiyDRrHrWPutatfF",
  "due": "2020-01-22T02:06:58.158Z"
}
200 OK

successful operation

Response Content-Types: application/json
Response Example (200 OK)
{
  "id": "My_ID",
  "description": "This is *cool*!",
  "url": "https://quire.io/w/my_project",
  "nameText": "My Name",
  "nameHtml": "My Name",
  "descriptionText": "This is cool!",
  "descriptionHtml": "This is <i>cool</i>!",
  "iconColor": "37",
  "image": "https://quire.s3.amazonaws.com/oid/image.jpg",
  "name": "My Name",
  "oid": "Dyh2YkFcu9uLgLFIeN1kB4Ld",
  "columns": [
    {
      "name": "TODO",
      "color": "35",
      "value": 0
    }
  ],
  "partner": "rcBHBYXZSiyDRrHrWPutatfF",
  "archivedAt": "2020-02-22T02:06:58.158Z",
  "due": "2020-01-22T02:06:58.158Z",
  "project": "Dyh2YkFcu9uLgLFIeN1kB4Ld",
  "createdAt": "2018-12-22T02:06:58.158Z",
  "createdBy": "Dyh2YkFcu9uLgLFIeN1kB4Ld"
}

Get an existing board by its ID.

GET /board/id/{projectId}/{id}

Returns the full board record of the given ID.

projectId: integer
in path

ID of the project that the board belongs to.

id: string
in path

ID of the board that needs to be fetched

200 OK

successful operation

Response Content-Types: application/json
Response Example (200 OK)
{
  "id": "My_ID",
  "description": "This is *cool*!",
  "url": "https://quire.io/w/my_project",
  "nameText": "My Name",
  "nameHtml": "My Name",
  "descriptionText": "This is cool!",
  "descriptionHtml": "This is <i>cool</i>!",
  "iconColor": "37",
  "image": "https://quire.s3.amazonaws.com/oid/image.jpg",
  "name": "My Name",
  "oid": "Dyh2YkFcu9uLgLFIeN1kB4Ld",
  "columns": [
    {
      "name": "TODO",
      "color": "35",
      "value": 0
    }
  ],
  "partner": "rcBHBYXZSiyDRrHrWPutatfF",
  "archivedAt": "2020-02-22T02:06:58.158Z",
  "due": "2020-01-22T02:06:58.158Z",
  "project": "Dyh2YkFcu9uLgLFIeN1kB4Ld",
  "createdAt": "2018-12-22T02:06:58.158Z",
  "createdBy": "Dyh2YkFcu9uLgLFIeN1kB4Ld"
}

Get an existing board by its OID

GET /board/{oid}

Returns the full board record of the given OID.

oid: string
in path

OID of board that needs to be fetched.

200 OK

successful operation

Response Content-Types: application/json
Response Example (200 OK)
{
  "id": "My_ID",
  "description": "This is *cool*!",
  "url": "https://quire.io/w/my_project",
  "nameText": "My Name",
  "nameHtml": "My Name",
  "descriptionText": "This is cool!",
  "descriptionHtml": "This is <i>cool</i>!",
  "iconColor": "37",
  "image": "https://quire.s3.amazonaws.com/oid/image.jpg",
  "name": "My Name",
  "oid": "Dyh2YkFcu9uLgLFIeN1kB4Ld",
  "columns": [
    {
      "name": "TODO",
      "color": "35",
      "value": 0
    }
  ],
  "partner": "rcBHBYXZSiyDRrHrWPutatfF",
  "archivedAt": "2020-02-22T02:06:58.158Z",
  "due": "2020-01-22T02:06:58.158Z",
  "project": "Dyh2YkFcu9uLgLFIeN1kB4Ld",
  "createdAt": "2018-12-22T02:06:58.158Z",
  "createdBy": "Dyh2YkFcu9uLgLFIeN1kB4Ld"
}

Get all boards of the given project by its ID.

GET /board/list/id/{projectId}

Returns all board records of the given project by its ID.

projectId: string
in path

ID of project.

200 OK

successful operation

Response Content-Types: application/json
Response Example (200 OK)
[
  {
    "id": "My_ID",
    "description": "This is *cool*!",
    "url": "https://quire.io/w/my_project",
    "nameText": "My Name",
    "nameHtml": "My Name",
    "descriptionText": "This is cool!",
    "descriptionHtml": "This is <i>cool</i>!",
    "iconColor": "37",
    "image": "https://quire.s3.amazonaws.com/oid/image.jpg",
    "name": "My Name",
    "oid": "Dyh2YkFcu9uLgLFIeN1kB4Ld",
    "columns": [
      {
        "name": "TODO",
        "color": "35",
        "value": 0
      }
    ],
    "partner": "rcBHBYXZSiyDRrHrWPutatfF",
    "archivedAt": "2020-02-22T02:06:58.158Z",
    "due": "2020-01-22T02:06:58.158Z",
    "project": "Dyh2YkFcu9uLgLFIeN1kB4Ld",
    "createdAt": "2018-12-22T02:06:58.158Z",
    "createdBy": "Dyh2YkFcu9uLgLFIeN1kB4Ld"
  }
]

Get all boards of the given project by its OID.

GET /board/list/{projectOid}

Returns all board records of the given project by its OID.

projectOid: string
in path

OID of the project.

200 OK

successful operation

Response Content-Types: application/json
Response Example (200 OK)
[
  {
    "id": "My_ID",
    "description": "This is *cool*!",
    "url": "https://quire.io/w/my_project",
    "nameText": "My Name",
    "nameHtml": "My Name",
    "descriptionText": "This is cool!",
    "descriptionHtml": "This is <i>cool</i>!",
    "iconColor": "37",
    "image": "https://quire.s3.amazonaws.com/oid/image.jpg",
    "name": "My Name",
    "oid": "Dyh2YkFcu9uLgLFIeN1kB4Ld",
    "columns": [
      {
        "name": "TODO",
        "color": "35",
        "value": 0
      }
    ],
    "partner": "rcBHBYXZSiyDRrHrWPutatfF",
    "archivedAt": "2020-02-22T02:06:58.158Z",
    "due": "2020-01-22T02:06:58.158Z",
    "project": "Dyh2YkFcu9uLgLFIeN1kB4Ld",
    "createdAt": "2018-12-22T02:06:58.158Z",
    "createdBy": "Dyh2YkFcu9uLgLFIeN1kB4Ld"
  }
]

Update a board.

PUT /board/{oid}

Updates an existing board, and returns the complete updated record.

oid: string
in path

OID of board that needs to be updated

name: string

(Optional) The name of the board.

id: string

(Optional) ID of the board.

description: string

(Optional) An optional description about this task.

due: string

(Optional) When this board was aimed to complete.

column: UpdateColumnBody

(Optional) Updates an existing column with a new content.

addColumn: AddColumnBody

(Optional) The new column defintion to be added to this board.

removeColumn: integer

(Optional) The status of the column that needs to be deleted.

archived: boolean

(Optional) Specify true to archive this board. Or, specify false to undo the previous archiving if any.

Request Example
{
  "name": "Board 101",
  "id": "Board101",
  "description": "**Great** board to start with.",
  "due": "2020-01-22T02:06:58.158Z",
  "column": {
    "name": "TODO",
    "color": "35",
    "value": 0,
    "target": 0
  },
  "addColumn": {
    "before": 75,
    "name": "TODO",
    "color": "35",
    "value": 0
  },
  "removeColumn": 75,
  "archived": true
}
200 OK

successful operation

Response Content-Types: application/json
Response Example (200 OK)
{
  "id": "My_ID",
  "description": "This is *cool*!",
  "url": "https://quire.io/w/my_project",
  "nameText": "My Name",
  "nameHtml": "My Name",
  "descriptionText": "This is cool!",
  "descriptionHtml": "This is <i>cool</i>!",
  "iconColor": "37",
  "image": "https://quire.s3.amazonaws.com/oid/image.jpg",
  "name": "My Name",
  "oid": "Dyh2YkFcu9uLgLFIeN1kB4Ld",
  "columns": [
    {
      "name": "TODO",
      "color": "35",
      "value": 0
    }
  ],
  "partner": "rcBHBYXZSiyDRrHrWPutatfF",
  "archivedAt": "2020-02-22T02:06:58.158Z",
  "due": "2020-01-22T02:06:58.158Z",
  "project": "Dyh2YkFcu9uLgLFIeN1kB4Ld",
  "createdAt": "2018-12-22T02:06:58.158Z",
  "createdBy": "Dyh2YkFcu9uLgLFIeN1kB4Ld"
}

Delete a board

DELETE /board/{oid}

Delete an existing board of the given OID.

oid: string
in path

OID of board that needs to be deleted

200 OK

ok

Response Content-Types: application/json

comment

A comment that an user can put to a task or project.

Add a new comment to a project.

POST /comment/id/{projectId}

Add a new comment to a project.

projectId: string
in path

ID of a project that new comment will be added to

description: string

The content of the new comment.

pinned: boolean

(Optional) Whether to pin this comment. Default: false

asUser: boolean

(Optional) Specify true if you'd like to make this new comment as created by the app. Default: false -- the comment is marked as created by the user authorizing the app.

Request Example
{
  "description": "Adjust style",
  "pinned": false,
  "asUser": true
}
200 OK

successful operation

Response Content-Types: application/json
Response Example (200 OK)
{
  "oid": "Dyh2YkFcu9uLgLFIeN1kB4Ld",
  "description": "It is *cool*!",
  "descriptionText": "It is cool!",
  "descriptionHtml": "It is <i>cool</i>!",
  "attachments": [
    {
      "length": 2048,
      "name": "file.zip",
      "type": 2048,
      "url": "https://quire.io/att/Ta/sdcQOGgeUtyaFFzb9p0IwAgi/qfqVmUtC/image.png",
      "createdAt": "2018-12-22T02:06:58.158Z",
      "createdBy": "Dyh2YkFcu9uLgLFIeN1kB4Ld"
    }
  ],
  "url": "https://quire.io/w/my_project70/Cello_and_voilin#comment-iDsPd.QP_qM.hN.Trymukn8b",
  "editedAt": "2018-12-22T02:06:58.158Z",
  "pinBy": "rcBHBYXZSiyDRrHrWPutatfF",
  "pinAt": "2018-12-22T02:06:58.158Z",
  "editedBy": "rcBHBYXZSiyDRrHrWPutatfF",
  "owner": "Dyh2YkFcu9uLgLFIeN1kB4Ld",
  "ownerType": "Task",
  "createdAt": "2018-12-22T02:06:58.158Z",
  "createdBy": "Dyh2YkFcu9uLgLFIeN1kB4Ld"
}

Add a new comment to a task or a project.

POST /comment/{oid}

Add a new comment to a task or a project. If the given OID is a project, the comment will be added to a project. If a task, the comment will be added to a task.

oid: string
in path

OID of a project or a task that new comment will be added to

description: string

The content of the new comment.

pinned: boolean

(Optional) Whether to pin this comment. Default: false

asUser: boolean

(Optional) Specify true if you'd like to make this new comment as created by the app. Default: false -- the comment is marked as created by the user authorizing the app.

Request Example
{
  "description": "Adjust style",
  "pinned": false,
  "asUser": true
}
200 OK

successful operation

Response Content-Types: application/json
Response Example (200 OK)
{
  "oid": "Dyh2YkFcu9uLgLFIeN1kB4Ld",
  "description": "It is *cool*!",
  "descriptionText": "It is cool!",
  "descriptionHtml": "It is <i>cool</i>!",
  "attachments": [
    {
      "length": 2048,
      "name": "file.zip",
      "type": 2048,
      "url": "https://quire.io/att/Ta/sdcQOGgeUtyaFFzb9p0IwAgi/qfqVmUtC/image.png",
      "createdAt": "2018-12-22T02:06:58.158Z",
      "createdBy": "Dyh2YkFcu9uLgLFIeN1kB4Ld"
    }
  ],
  "url": "https://quire.io/w/my_project70/Cello_and_voilin#comment-iDsPd.QP_qM.hN.Trymukn8b",
  "editedAt": "2018-12-22T02:06:58.158Z",
  "pinBy": "rcBHBYXZSiyDRrHrWPutatfF",
  "pinAt": "2018-12-22T02:06:58.158Z",
  "editedBy": "rcBHBYXZSiyDRrHrWPutatfF",
  "owner": "Dyh2YkFcu9uLgLFIeN1kB4Ld",
  "ownerType": "Task",
  "createdAt": "2018-12-22T02:06:58.158Z",
  "createdBy": "Dyh2YkFcu9uLgLFIeN1kB4Ld"
}

Get a comment

GET /comment/{oid}

Returns the full comment record of the given OID.

oid: string
in path

OID of comment that needs to be feteched.

200 OK

successful operation

Response Content-Types: application/json
Response Example (200 OK)
{
  "oid": "Dyh2YkFcu9uLgLFIeN1kB4Ld",
  "description": "It is *cool*!",
  "descriptionText": "It is cool!",
  "descriptionHtml": "It is <i>cool</i>!",
  "attachments": [
    {
      "length": 2048,
      "name": "file.zip",
      "type": 2048,
      "url": "https://quire.io/att/Ta/sdcQOGgeUtyaFFzb9p0IwAgi/qfqVmUtC/image.png",
      "createdAt": "2018-12-22T02:06:58.158Z",
      "createdBy": "Dyh2YkFcu9uLgLFIeN1kB4Ld"
    }
  ],
  "url": "https://quire.io/w/my_project70/Cello_and_voilin#comment-iDsPd.QP_qM.hN.Trymukn8b",
  "editedAt": "2018-12-22T02:06:58.158Z",
  "pinBy": "rcBHBYXZSiyDRrHrWPutatfF",
  "pinAt": "2018-12-22T02:06:58.158Z",
  "editedBy": "rcBHBYXZSiyDRrHrWPutatfF",
  "owner": "Dyh2YkFcu9uLgLFIeN1kB4Ld",
  "ownerType": "Task",
  "createdAt": "2018-12-22T02:06:58.158Z",
  "createdBy": "Dyh2YkFcu9uLgLFIeN1kB4Ld"
}

Get all comments of the given project.

GET /comment/list/id/{projectId}

Returns all comment records of the given project by its ID.

projectId: string
in path

ID of project.

200 OK

successful operation

Response Content-Types: application/json
Response Example (200 OK)
[
  {
    "oid": "Dyh2YkFcu9uLgLFIeN1kB4Ld",
    "description": "It is *cool*!",
    "descriptionText": "It is cool!",
    "descriptionHtml": "It is <i>cool</i>!",
    "attachments": [
      {
        "length": 2048,
        "name": "file.zip",
        "type": 2048,
        "url": "https://quire.io/att/Ta/sdcQOGgeUtyaFFzb9p0IwAgi/qfqVmUtC/image.png",
        "createdAt": "2018-12-22T02:06:58.158Z",
        "createdBy": "Dyh2YkFcu9uLgLFIeN1kB4Ld"
      }
    ],
    "url": "https://quire.io/w/my_project70/Cello_and_voilin#comment-iDsPd.QP_qM.hN.Trymukn8b",
    "editedAt": "2018-12-22T02:06:58.158Z",
    "pinBy": "rcBHBYXZSiyDRrHrWPutatfF",
    "pinAt": "2018-12-22T02:06:58.158Z",
    "editedBy": "rcBHBYXZSiyDRrHrWPutatfF",
    "owner": "Dyh2YkFcu9uLgLFIeN1kB4Ld",
    "ownerType": "Task",
    "createdAt": "2018-12-22T02:06:58.158Z",
    "createdBy": "Dyh2YkFcu9uLgLFIeN1kB4Ld"
  }
]

Get all comments of the given task.

GET /comment/list/id/{projectId}/{taskId}

Returns all comment records of the given task by its ID.

projectId: string
in path

ID of the project.

taskId: integer
in path

ID of the task

200 OK

successful operation

Response Content-Types: application/json
Response Example (200 OK)
[
  {
    "oid": "Dyh2YkFcu9uLgLFIeN1kB4Ld",
    "description": "It is *cool*!",
    "descriptionText": "It is cool!",
    "descriptionHtml": "It is <i>cool</i>!",
    "attachments": [
      {
        "length": 2048,
        "name": "file.zip",
        "type": 2048,
        "url": "https://quire.io/att/Ta/sdcQOGgeUtyaFFzb9p0IwAgi/qfqVmUtC/image.png",
        "createdAt": "2018-12-22T02:06:58.158Z",
        "createdBy": "Dyh2YkFcu9uLgLFIeN1kB4Ld"
      }
    ],
    "url": "https://quire.io/w/my_project70/Cello_and_voilin#comment-iDsPd.QP_qM.hN.Trymukn8b",
    "editedAt": "2018-12-22T02:06:58.158Z",
    "pinBy": "rcBHBYXZSiyDRrHrWPutatfF",
    "pinAt": "2018-12-22T02:06:58.158Z",
    "editedBy": "rcBHBYXZSiyDRrHrWPutatfF",
    "owner": "Dyh2YkFcu9uLgLFIeN1kB4Ld",
    "ownerType": "Task",
    "createdAt": "2018-12-22T02:06:58.158Z",
    "createdBy": "Dyh2YkFcu9uLgLFIeN1kB4Ld"
  }
]

Get comments added to the given object.

GET /comment/list/{oid}

Returns all comment records of the given object that can be a project or a task.

oid: string
in path

OID of project or task that comments will be be fetched from.

200 OK

successful operation

Response Content-Types: application/json
Response Example (200 OK)
[
  {
    "oid": "Dyh2YkFcu9uLgLFIeN1kB4Ld",
    "description": "It is *cool*!",
    "descriptionText": "It is cool!",
    "descriptionHtml": "It is <i>cool</i>!",
    "attachments": [
      {
        "length": 2048,
        "name": "file.zip",
        "type": 2048,
        "url": "https://quire.io/att/Ta/sdcQOGgeUtyaFFzb9p0IwAgi/qfqVmUtC/image.png",
        "createdAt": "2018-12-22T02:06:58.158Z",
        "createdBy": "Dyh2YkFcu9uLgLFIeN1kB4Ld"
      }
    ],
    "url": "https://quire.io/w/my_project70/Cello_and_voilin#comment-iDsPd.QP_qM.hN.Trymukn8b",
    "editedAt": "2018-12-22T02:06:58.158Z",
    "pinBy": "rcBHBYXZSiyDRrHrWPutatfF",
    "pinAt": "2018-12-22T02:06:58.158Z",
    "editedBy": "rcBHBYXZSiyDRrHrWPutatfF",
    "owner": "Dyh2YkFcu9uLgLFIeN1kB4Ld",
    "ownerType": "Task",
    "createdAt": "2018-12-22T02:06:58.158Z",
    "createdBy": "Dyh2YkFcu9uLgLFIeN1kB4Ld"
  }
]

Update an existing comment

PUT /comment/{oid}

Updates an existing comment, and returns the complete updated comment record.

oid: string
in path

OID of comment that needs to be updated.

description: string

(Optional) The new content of the comment.

pinned: boolean

(Optional) Whether to pin this comment.

Request Example
{
  "description": "Adjust style",
  "pinned": false
}
200 OK

successful operation

Response Content-Types: application/json
Response Example (200 OK)
{
  "oid": "Dyh2YkFcu9uLgLFIeN1kB4Ld",
  "description": "It is *cool*!",
  "descriptionText": "It is cool!",
  "descriptionHtml": "It is <i>cool</i>!",
  "attachments": [
    {
      "length": 2048,
      "name": "file.zip",
      "type": 2048,
      "url": "https://quire.io/att/Ta/sdcQOGgeUtyaFFzb9p0IwAgi/qfqVmUtC/image.png",
      "createdAt": "2018-12-22T02:06:58.158Z",
      "createdBy": "Dyh2YkFcu9uLgLFIeN1kB4Ld"
    }
  ],
  "url": "https://quire.io/w/my_project70/Cello_and_voilin#comment-iDsPd.QP_qM.hN.Trymukn8b",
  "editedAt": "2018-12-22T02:06:58.158Z",
  "pinBy": "rcBHBYXZSiyDRrHrWPutatfF",
  "pinAt": "2018-12-22T02:06:58.158Z",
  "editedBy": "rcBHBYXZSiyDRrHrWPutatfF",
  "owner": "Dyh2YkFcu9uLgLFIeN1kB4Ld",
  "ownerType": "Task",
  "createdAt": "2018-12-22T02:06:58.158Z",
  "createdBy": "Dyh2YkFcu9uLgLFIeN1kB4Ld"
}

Delete an existing comment

DELETE /comment/{oid}

Delete an existing comment.

oid: string
in path

OID of comment that needs to be deleted

200 OK

ok

Response Content-Types: application/json

organization

An organization is a group of projects where members collaborate at once.

Get an organization by its ID.

GET /organization/id/{id}

Returns the complete organization record of the given OID.

id: string
in path

ID of organization that needs to be fetched

200 OK

successful operation

Response Content-Types: application/json
Response Example (200 OK)
{
  "email": "john@gmail.cc",
  "website": "https://coolwebsites.com",
  "id": "My_ID",
  "description": "This is *cool*!",
  "url": "https://quire.io/w/my_project",
  "nameText": "My Name",
  "nameHtml": "My Name",
  "descriptionText": "This is cool!",
  "descriptionHtml": "This is <i>cool</i>!",
  "iconColor": "37",
  "image": "https://quire.s3.amazonaws.com/oid/image.jpg",
  "name": "My Name",
  "oid": "Dyh2YkFcu9uLgLFIeN1kB4Ld",
  "createdAt": "2018-12-22T02:06:58.158Z",
  "createdBy": "Dyh2YkFcu9uLgLFIeN1kB4Ld"
}

Get an organization by its OID.

GET /organization/{oid}

returns the complete organization record.

oid: string
in path

OID of organization that needs to be fetched

200 OK

successful operation

Response Content-Types: application/json
Response Example (200 OK)
{
  "email": "john@gmail.cc",
  "website": "https://coolwebsites.com",
  "id": "My_ID",
  "description": "This is *cool*!",
  "url": "https://quire.io/w/my_project",
  "nameText": "My Name",
  "nameHtml": "My Name",
  "descriptionText": "This is cool!",
  "descriptionHtml": "This is <i>cool</i>!",
  "iconColor": "37",
  "image": "https://quire.s3.amazonaws.com/oid/image.jpg",
  "name": "My Name",
  "oid": "Dyh2YkFcu9uLgLFIeN1kB4Ld",
  "createdAt": "2018-12-22T02:06:58.158Z",
  "createdBy": "Dyh2YkFcu9uLgLFIeN1kB4Ld"
}

Get all organizations.

GET /organization/list

Returns the organization records for all organizations that the current user can grant to this application.

200 OK

successful operation

Response Content-Types: application/json
Response Example (200 OK)
[
  {
    "email": "john@gmail.cc",
    "website": "https://coolwebsites.com",
    "id": "My_ID",
    "description": "This is *cool*!",
    "url": "https://quire.io/w/my_project",
    "nameText": "My Name",
    "nameHtml": "My Name",
    "descriptionText": "This is cool!",
    "descriptionHtml": "This is <i>cool</i>!",
    "iconColor": "37",
    "image": "https://quire.s3.amazonaws.com/oid/image.jpg",
    "name": "My Name",
    "oid": "Dyh2YkFcu9uLgLFIeN1kB4Ld",
    "createdAt": "2018-12-22T02:06:58.158Z",
    "createdBy": "Dyh2YkFcu9uLgLFIeN1kB4Ld"
  }
]

partner

An external team (aka., a parnter) is a group of users that can access only tasks that are assigned to this team.

Get an external team (aka., a partner).

GET /partner/{oid}

Returns the full external team record of the given OID.

oid: string
in path

OID of external team that needs to be fetched.

200 OK

successful operation

Response Content-Types: application/json
Response Example (200 OK)
{
  "name": "Later",
  "color": "35",
  "oid": "Dyh2YkFcu9uLgLFIeN1kB4Ld",
  "image": "https://quire.s3.amazonaws.com/oid/image.jpg",
  "project": "Dyh2YkFcu9uLgLFIeN1kB4Ld",
  "createdAt": "2018-12-22T02:06:58.158Z",
  "createdBy": "Dyh2YkFcu9uLgLFIeN1kB4Ld"
}

Get all external teams of the given project by its ID.

GET /partner/list/id/{projectId}

Returns all external team records of the given project by its ID.

projectId: string
in path

ID of project to look for

200 OK

successful operation

Response Content-Types: application/json
Response Example (200 OK)
[
  {
    "name": "Later",
    "color": "35",
    "oid": "Dyh2YkFcu9uLgLFIeN1kB4Ld",
    "image": "https://quire.s3.amazonaws.com/oid/image.jpg",
    "project": "Dyh2YkFcu9uLgLFIeN1kB4Ld",
    "createdAt": "2018-12-22T02:06:58.158Z",
    "createdBy": "Dyh2YkFcu9uLgLFIeN1kB4Ld"
  }
]

Get all external teams of the given project by its OID.

GET /partner/list/{projectOid}

Returns all external team records of the given project by its OID.

projectOid: string
in path

OID of the project to look for

200 OK

successful operation

Response Content-Types: application/json
Response Example (200 OK)
[
  {
    "name": "Later",
    "color": "35",
    "oid": "Dyh2YkFcu9uLgLFIeN1kB4Ld",
    "image": "https://quire.s3.amazonaws.com/oid/image.jpg",
    "project": "Dyh2YkFcu9uLgLFIeN1kB4Ld",
    "createdAt": "2018-12-22T02:06:58.158Z",
    "createdBy": "Dyh2YkFcu9uLgLFIeN1kB4Ld"
  }
]

project

A project represents a prioritized list of tasks in Quire. It exists in a single organization and is accessible to a subset of users in that organization, depending on its permissions.

Get a project by its ID.

GET /project/id/{id}

Returns the complete project record of the given ID.

id: string
in path

ID of project that needs to be fetched

200 OK

successful operation

Response Content-Types: application/json
Response Example (200 OK)
{
  "organization": "Dyh2YkFcu9uLgLFIeN1kB4Ld",
  "activeCount": 20,
  "taskCount": 30,
  "rootCount": 5,
  "id": "My_ID",
  "description": "This is *cool*!",
  "url": "https://quire.io/w/my_project",
  "nameText": "My Name",
  "nameHtml": "My Name",
  "descriptionText": "This is cool!",
  "descriptionHtml": "This is <i>cool</i>!",
  "iconColor": "37",
  "image": "https://quire.s3.amazonaws.com/oid/image.jpg",
  "name": "My Name",
  "oid": "Dyh2YkFcu9uLgLFIeN1kB4Ld",
  "editedAt": "2018-12-22T02:06:58.158Z",
  "archivedAt": "2018-12-22T02:06:58.158Z",
  "followers": [
    "6QMKkEPBVWETLWrXqws94ALU"
  ],
  "createdAt": "2018-12-22T02:06:58.158Z",
  "createdBy": "Dyh2YkFcu9uLgLFIeN1kB4Ld"
}

Get a project by its OID.

GET /project/{oid}

Returns the complete project record of the given OID.

oid: string
in path

OID of project that needs to be fetched

200 OK

successful operation

Response Content-Types: application/json
Response Example (200 OK)
{
  "organization": "Dyh2YkFcu9uLgLFIeN1kB4Ld",
  "activeCount": 20,
  "taskCount": 30,
  "rootCount": 5,
  "id": "My_ID",
  "description": "This is *cool*!",
  "url": "https://quire.io/w/my_project",
  "nameText": "My Name",
  "nameHtml": "My Name",
  "descriptionText": "This is cool!",
  "descriptionHtml": "This is <i>cool</i>!",
  "iconColor": "37",
  "image": "https://quire.s3.amazonaws.com/oid/image.jpg",
  "name": "My Name",
  "oid": "Dyh2YkFcu9uLgLFIeN1kB4Ld",
  "editedAt": "2018-12-22T02:06:58.158Z",
  "archivedAt": "2018-12-22T02:06:58.158Z",
  "followers": [
    "6QMKkEPBVWETLWrXqws94ALU"
  ],
  "createdAt": "2018-12-22T02:06:58.158Z",
  "createdBy": "Dyh2YkFcu9uLgLFIeN1kB4Ld"
}

Get all granted projects of the organization by its ID.

GET /project/list/id/{organizationId}

Returns all project records of the given organization. Only granted projects will be returned.

organizationId: string
in path

ID of the organization

200 OK

successful operation

Response Content-Types: application/json
Response Example (200 OK)
[
  {
    "organization": "Dyh2YkFcu9uLgLFIeN1kB4Ld",
    "activeCount": 20,
    "taskCount": 30,
    "rootCount": 5,
    "id": "My_ID",
    "description": "This is *cool*!",
    "url": "https://quire.io/w/my_project",
    "nameText": "My Name",
    "nameHtml": "My Name",
    "descriptionText": "This is cool!",
    "descriptionHtml": "This is <i>cool</i>!",
    "iconColor": "37",
    "image": "https://quire.s3.amazonaws.com/oid/image.jpg",
    "name": "My Name",
    "oid": "Dyh2YkFcu9uLgLFIeN1kB4Ld",
    "editedAt": "2018-12-22T02:06:58.158Z",
    "archivedAt": "2018-12-22T02:06:58.158Z",
    "followers": [
      "6QMKkEPBVWETLWrXqws94ALU"
    ],
    "createdAt": "2018-12-22T02:06:58.158Z",
    "createdBy": "Dyh2YkFcu9uLgLFIeN1kB4Ld"
  }
]

Get all granted projects of the organization by its OID.

GET /project/list/{organizationOid}

Returns all project records of the given organization. Only granted projects will be returned. Note: the "organizationOid" is optinal. If omitted, all granted project records will be returned.

organizationOid: string
in path

(Optional) OID of the organization.

200 OK

successful operation

Response Content-Types: application/json
Response Example (200 OK)
[
  {
    "organization": "Dyh2YkFcu9uLgLFIeN1kB4Ld",
    "activeCount": 20,
    "taskCount": 30,
    "rootCount": 5,
    "id": "My_ID",
    "description": "This is *cool*!",
    "url": "https://quire.io/w/my_project",
    "nameText": "My Name",
    "nameHtml": "My Name",
    "descriptionText": "This is cool!",
    "descriptionHtml": "This is <i>cool</i>!",
    "iconColor": "37",
    "image": "https://quire.s3.amazonaws.com/oid/image.jpg",
    "name": "My Name",
    "oid": "Dyh2YkFcu9uLgLFIeN1kB4Ld",
    "editedAt": "2018-12-22T02:06:58.158Z",
    "archivedAt": "2018-12-22T02:06:58.158Z",
    "followers": [
      "6QMKkEPBVWETLWrXqws94ALU"
    ],
    "createdAt": "2018-12-22T02:06:58.158Z",
    "createdBy": "Dyh2YkFcu9uLgLFIeN1kB4Ld"
  }
]

Update a project.

PUT /project/{oid}

Updates an existing project, and returns the complete updated project record.

oid: string
in path

OID of project that needs to be updated

followers: string[]

(Optional) OID of the users to replace the followers of this project. Please refer to addFollowers() for more details.

addFollowers: string[]

(Optional) OID of the followers to be added to this project.If "me" is specified, it means the current user will follow this task. If the application would like to follow (i.e., receive notifications), it can pass "app" as one of OIDs. In additions, it can pass additional information in one of the following syntaxes.

Syntax 1: "app|team" or "app|team|channel" where team and channel can be any value.

Syntax 2: "app|/path" where "/path" can be any URL path. It will be appended to the hook's URL when calling the registered hook. For example, if the hook URL is " https://super.app/hooks/standard" and the follower is "app|/soc1/33456/a7", then the notification will be sent to " https://super.app/hooks/standard/soc1/33456/a7".

removeFollowers: string[]

(Optional) OID of the followers to be removed from this project. Please refer to addFollowers() for more details.

Request Example
{
  "followers": [
    "tzufRLqCnud74dARyDSvjWDl",
    "app"
  ],
  "addFollowers": [
    "sfsvLbDVPvi1QMf2GkDn7VSy"
  ],
  "removeFollowers": [
    "aBuz4MwfZ5CasOae6stnFa2f"
  ]
}
200 OK

successful operation

Response Content-Types: application/json
Response Example (200 OK)
{
  "organization": "Dyh2YkFcu9uLgLFIeN1kB4Ld",
  "activeCount": 20,
  "taskCount": 30,
  "rootCount": 5,
  "id": "My_ID",
  "description": "This is *cool*!",
  "url": "https://quire.io/w/my_project",
  "nameText": "My Name",
  "nameHtml": "My Name",
  "descriptionText": "This is cool!",
  "descriptionHtml": "This is <i>cool</i>!",
  "iconColor": "37",
  "image": "https://quire.s3.amazonaws.com/oid/image.jpg",
  "name": "My Name",
  "oid": "Dyh2YkFcu9uLgLFIeN1kB4Ld",
  "editedAt": "2018-12-22T02:06:58.158Z",
  "archivedAt": "2018-12-22T02:06:58.158Z",
  "followers": [
    "6QMKkEPBVWETLWrXqws94ALU"
  ],
  "createdAt": "2018-12-22T02:06:58.158Z",
  "createdBy": "Dyh2YkFcu9uLgLFIeN1kB4Ld"
}

tag

A tag is a label that can be attached to any task in Quire.

tag

Add a new tag.

POST /tag/{projectOid}

Add a new tag into a project.

projectOid: string
in path

OID of project that this new tag to be added to.

name: string

The name of the tag

global: boolean

(Optional) Whether this tag is global. If omitted, it is not glboal.

color: string

(Optional) The color of the tag.If not omitted, a color will be generated automatially.

Request Example
{
  "name": "Later",
  "global": true,
  "color": "35"
}
200 OK

successful operation

Response Content-Types: application/json
Response Example (200 OK)
{
  "global": true,
  "name": "Later",
  "color": "35",
  "oid": "Dyh2YkFcu9uLgLFIeN1kB4Ld",
  "project": "Dyh2YkFcu9uLgLFIeN1kB4Ld",
  "createdAt": "2018-12-22T02:06:58.158Z",
  "createdBy": "Dyh2YkFcu9uLgLFIeN1kB4Ld"
}
tag

Add a new tag.

POST /tag/id/{projectId}

Add a new tag into a project.

projectId: string
in path

ID of project that this new tag to be added to.

name: string

The name of the tag

global: boolean

(Optional) Whether this tag is global. If omitted, it is not glboal.

color: string

(Optional) The color of the tag.If not omitted, a color will be generated automatially.

Request Example
{
  "name": "Later",
  "global": true,
  "color": "35"
}
200 OK

successful operation

Response Content-Types: application/json
Response Example (200 OK)
{
  "global": true,
  "name": "Later",
  "color": "35",
  "oid": "Dyh2YkFcu9uLgLFIeN1kB4Ld",
  "project": "Dyh2YkFcu9uLgLFIeN1kB4Ld",
  "createdAt": "2018-12-22T02:06:58.158Z",
  "createdBy": "Dyh2YkFcu9uLgLFIeN1kB4Ld"
}
tag

Get a tag.

GET /tag/{oid}

Returns the full tag record of the given OID.

oid: string
in path

OID of tag that needs to be fetched.

200 OK

successful operation

Response Content-Types: application/json
Response Example (200 OK)
{
  "global": true,
  "name": "Later",
  "color": "35",
  "oid": "Dyh2YkFcu9uLgLFIeN1kB4Ld",
  "project": "Dyh2YkFcu9uLgLFIeN1kB4Ld",
  "createdAt": "2018-12-22T02:06:58.158Z",
  "createdBy": "Dyh2YkFcu9uLgLFIeN1kB4Ld"
}
tag

Get all tags of the given project by its ID.

GET /tag/list/id/{projectId}

Returns all tag records of the given project by its ID.

projectId: string
in path

ID of project.

200 OK

successful operation

Response Content-Types: application/json
Response Example (200 OK)
[
  {
    "global": true,
    "name": "Later",
    "color": "35",
    "oid": "Dyh2YkFcu9uLgLFIeN1kB4Ld",
    "project": "Dyh2YkFcu9uLgLFIeN1kB4Ld",
    "createdAt": "2018-12-22T02:06:58.158Z",
    "createdBy": "Dyh2YkFcu9uLgLFIeN1kB4Ld"
  }
]
tag

Get all tags of the given project by its OID.

GET /tag/list/{projectOid}

Returns all tag records of the given project by its OID.

projectOid: string
in path

OID of the project.

200 OK

successful operation

Response Content-Types: application/json
Response Example (200 OK)
[
  {
    "global": true,
    "name": "Later",
    "color": "35",
    "oid": "Dyh2YkFcu9uLgLFIeN1kB4Ld",
    "project": "Dyh2YkFcu9uLgLFIeN1kB4Ld",
    "createdAt": "2018-12-22T02:06:58.158Z",
    "createdBy": "Dyh2YkFcu9uLgLFIeN1kB4Ld"
  }
]
tag

Update a tag.

PUT /tag/{oid}

Updates an existing tag, and returns the complete updated record.

oid: string
in path

OID of tag that needs to be updated

name: string

(Optional) The new name of the tag.

project: string

(Optional) OID of the project this tag shall be limited to. It is used only if "global" is also specified and false. Otherwise, it is simply ignored.

global: boolean

(Optional) Whether this tag is global. If you specify false here, you have to specify "project" for what project you'd like to put the tag to.

color: string

(Optional) The color of the tag.

Request Example
{
  "name": "Later",
  "project": "Dyh2YkFcu9uLgLFIeN1kB4Ld",
  "global": true,
  "color": "35"
}
200 OK

successful operation

Response Content-Types: application/json
Response Example (200 OK)
{
  "global": true,
  "name": "Later",
  "color": "35",
  "oid": "Dyh2YkFcu9uLgLFIeN1kB4Ld",
  "project": "Dyh2YkFcu9uLgLFIeN1kB4Ld",
  "createdAt": "2018-12-22T02:06:58.158Z",
  "createdBy": "Dyh2YkFcu9uLgLFIeN1kB4Ld"
}
tag

Delete a tag

DELETE /tag/{oid}

Delete an existing tag of the given OID.

oid: string
in path

OID of tag that needs to be deleted

200 OK

ok

Response Content-Types: application/json

task

The task is a piece of work to be done or undertaken. It is the basic object that you and your team can collaborate on.

Add a new task.

POST /task/id/{projectId}

Add a new task into a project.

projectId: string
in path

ID of project that this new task to be added to. The new task will be added as a root task.

name: string

The name of the task.

description: string

(Optional) An optional description about this task.

followers: string[]

(Optional) OID of users who follow this task.If "me" is specified, it means the current user will follow this task. If the application would like to follow (i.e., receive notifications), it can pass "app" as one of OIDs. In additions, it can pass additional information in one of the following syntaxes.

Syntax 1: "app|team" or "app|team|channel" where team and channel can be any value.

Syntax 2: "app|/path" where "/path" can be any URL path. It will be appended to the hook's URL when calling the registered hook. For example, if the hook URL is " https://super.app/hooks/standard" and the follower is "app|/soc1/33456/a7", then the notification will be sent to " https://super.app/hooks/standard/soc1/33456/a7".

tags: string[]

(Optional) OID of the tags to be added to the new created task.

due: string

(Optional) An optional start time. Note: if time is specified, the millisecond must be 001. Otherwise, it is 000 (so are the hour, minute and second fields).

asUser: boolean

(Optional) Specify true if you'd like to make this new task as created by the app. Default: false -- the task is marked as created by the user authorizing the app.

start: string

(Optional) An optional start time. Note: if time is specified, the millisecond must be 001. Otherwise, it is 000 (so are the hour, minute and second fields).

assignees: string[]

(Optional) OID of the users that this task is assigned to.

recurring: Recurring

(Optional) The recurring information of this task. It is null if it is not a recurring task.

peekaboo: boolean

(Optional) Specify true to peekaboo this task and its subtasks, if any. Default: false.

priority: integer

(Optiona) An optional priority. Its value must be between -1 (lowest) and 2 (highest). Default: 0.

status: integer

(Optiona) An optional status. Its value must be between 0 and 100. Default: 0.

Request Example
{
  "name": "Design new **logo**",
  "description": "This is a *cool* task.",
  "followers": [
    "tzufRLqCnud74dARyDSvjWDl"
  ],
  "tags": [
    "X6nmx9XjEO2wKbqeB1pRT43C"
  ],
  "due": "2018-12-22T00:00:00.000Z",
  "asUser": true,
  "start": "2018-12-20T00:00:00.000Z",
  "assignees": [
    "6QMKkEPBVWETLWrXqws94ALU"
  ],
  "recurring": {
    "type": 2048,
    "data": 6,
    "rate": 2048,
    "end": "2020-12-22T00:00:00.000Z"
  },
  "peekaboo": true,
  "priority": 0,
  "status": 0
}
200 OK

successful operation

Response Content-Types: application/json
Response Example (200 OK)
{
  "oid": "Dyh2YkFcu9uLgLFIeN1kB4Ld",
  "id": 12,
  "name": "Design new **logo**",
  "nameText": "Design new **logo**",
  "nameHtml": "Design new <b>logo</b>",
  "description": "This is a *cool* task.",
  "descriptionText": "This is a cool task.",
  "descriptionHtml": "This is a <i>cool</i> task.",
  "priority": 0,
  "status": 0,
  "due": "2018-12-22T00:00:00.000Z",
  "start": "2018-12-20T00:00:00.000Z",
  "recurring": {
    "type": 2048,
    "data": 6,
    "rate": 2048,
    "end": "2020-12-22T00:00:00.000Z"
  },
  "tags": [
    "X6nmx9XjEO2wKbqeB1pRT43C",
    "mPAQrYU1qt8wAYAInKRlTnvl"
  ],
  "assignors": [
    "6QMKkEPBVWETLWrXqws94ALU",
    "6QMKkEPBVWETLWrXqws94ALU"
  ],
  "partnerBy": "rcBHBYXZSiyDRrHrWPutatfF",
  "partner": "rcBHBYXZSiyDRrHrWPutatfF",
  "assignees": [
    "6QMKkEPBVWETLWrXqws94ALU",
    "Job4NSW9xK6Owcke8iKj7zyH"
  ],
  "board": "rcBHBYXZSiyDRrHrWPutatfF",
  "order": 99,
  "cover": "qfqVmUtC",
  "attachments": [
    {
      "length": 2048,
      "name": "file.zip",
      "type": 2048,
      "url": "https://quire.io/att/Ta/sdcQOGgeUtyaFFzb9p0IwAgi/qfqVmUtC/image.png",
      "createdAt": "2018-12-22T02:06:58.158Z",
      "createdBy": "Dyh2YkFcu9uLgLFIeN1kB4Ld"
    }
  ],
  "childCount": 5,
  "referrers": [
    {
      "task": "wrSpgghWFCzPHBqiShSurDeD",
      "user": "wrSpgghWFCzPHBqiShSurDeD",
      "when": "2018-12-22T02:06:58.158Z"
    }
  ],
  "url": "https://quire.io/w/my_project/123",
  "editedAt": "2018-12-22T02:06:58.158Z",
  "toggledAt": "2018-12-22T02:06:58.158Z",
  "toggledBy": "rcBHBYXZSiyDRrHrWPutatfF",
  "peekabooAt": "2018-12-22T02:06:58.158Z",
  "followers": [
    "6QMKkEPBVWETLWrXqws94ALU"
  ],
  "favorites": [
    "Job4NSW9xK6Owcke8iKj7zyH"
  ],
  "project": "Dyh2YkFcu9uLgLFIeN1kB4Ld",
  "createdAt": "2018-12-22T02:06:58.158Z",
  "createdBy": "Dyh2YkFcu9uLgLFIeN1kB4Ld"
}

Add a new task.

POST /task/{oid}

Add a new task into a project or a task.

oid: string
in path

OID of project or task that this new task to be added to. If the given OID is a project, the new task will be added as a root task. If the given OID is a task, the new task will become its subtask.

name: string

The name of the task.

description: string

(Optional) An optional description about this task.

followers: string[]

(Optional) OID of users who follow this task.If "me" is specified, it means the current user will follow this task. If the application would like to follow (i.e., receive notifications), it can pass "app" as one of OIDs. In additions, it can pass additional information in one of the following syntaxes.

Syntax 1: "app|team" or "app|team|channel" where team and channel can be any value.

Syntax 2: "app|/path" where "/path" can be any URL path. It will be appended to the hook's URL when calling the registered hook. For example, if the hook URL is " https://super.app/hooks/standard" and the follower is "app|/soc1/33456/a7", then the notification will be sent to " https://super.app/hooks/standard/soc1/33456/a7".

tags: string[]

(Optional) OID of the tags to be added to the new created task.

due: string

(Optional) An optional start time. Note: if time is specified, the millisecond must be 001. Otherwise, it is 000 (so are the hour, minute and second fields).

asUser: boolean

(Optional) Specify true if you'd like to make this new task as created by the app. Default: false -- the task is marked as created by the user authorizing the app.

start: string

(Optional) An optional start time. Note: if time is specified, the millisecond must be 001. Otherwise, it is 000 (so are the hour, minute and second fields).

assignees: string[]

(Optional) OID of the users that this task is assigned to.

recurring: Recurring

(Optional) The recurring information of this task. It is null if it is not a recurring task.

peekaboo: boolean

(Optional) Specify true to peekaboo this task and its subtasks, if any. Default: false.

priority: integer

(Optiona) An optional priority. Its value must be between -1 (lowest) and 2 (highest). Default: 0.

status: integer

(Optiona) An optional status. Its value must be between 0 and 100. Default: 0.

Request Example
{
  "name": "Design new **logo**",
  "description": "This is a *cool* task.",
  "followers": [
    "tzufRLqCnud74dARyDSvjWDl"
  ],
  "tags": [
    "X6nmx9XjEO2wKbqeB1pRT43C"
  ],
  "due": "2018-12-22T00:00:00.000Z",
  "asUser": true,
  "start": "2018-12-20T00:00:00.000Z",
  "assignees": [
    "6QMKkEPBVWETLWrXqws94ALU"
  ],
  "recurring": {
    "type": 2048,
    "data": 6,
    "rate": 2048,
    "end": "2020-12-22T00:00:00.000Z"
  },
  "peekaboo": true,
  "priority": 0,
  "status": 0
}
200 OK

successful operation

Response Content-Types: application/json
Response Example (200 OK)
{
  "oid": "Dyh2YkFcu9uLgLFIeN1kB4Ld",
  "id": 12,
  "name": "Design new **logo**",
  "nameText": "Design new **logo**",
  "nameHtml": "Design new <b>logo</b>",
  "description": "This is a *cool* task.",
  "descriptionText": "This is a cool task.",
  "descriptionHtml": "This is a <i>cool</i> task.",
  "priority": 0,
  "status": 0,
  "due": "2018-12-22T00:00:00.000Z",
  "start": "2018-12-20T00:00:00.000Z",
  "recurring": {
    "type": 2048,
    "data": 6,
    "rate": 2048,
    "end": "2020-12-22T00:00:00.000Z"
  },
  "tags": [
    "X6nmx9XjEO2wKbqeB1pRT43C",
    "mPAQrYU1qt8wAYAInKRlTnvl"
  ],
  "assignors": [
    "6QMKkEPBVWETLWrXqws94ALU",
    "6QMKkEPBVWETLWrXqws94ALU"
  ],
  "partnerBy": "rcBHBYXZSiyDRrHrWPutatfF",
  "partner": "rcBHBYXZSiyDRrHrWPutatfF",
  "assignees": [
    "6QMKkEPBVWETLWrXqws94ALU",
    "Job4NSW9xK6Owcke8iKj7zyH"
  ],
  "board": "rcBHBYXZSiyDRrHrWPutatfF",
  "order": 99,
  "cover": "qfqVmUtC",
  "attachments": [
    {
      "length": 2048,
      "name": "file.zip",
      "type": 2048,
      "url": "https://quire.io/att/Ta/sdcQOGgeUtyaFFzb9p0IwAgi/qfqVmUtC/image.png",
      "createdAt": "2018-12-22T02:06:58.158Z",
      "createdBy": "Dyh2YkFcu9uLgLFIeN1kB4Ld"
    }
  ],
  "childCount": 5,
  "referrers": [
    {
      "task": "wrSpgghWFCzPHBqiShSurDeD",
      "user": "wrSpgghWFCzPHBqiShSurDeD",
      "when": "2018-12-22T02:06:58.158Z"
    }
  ],
  "url": "https://quire.io/w/my_project/123",
  "editedAt": "2018-12-22T02:06:58.158Z",
  "toggledAt": "2018-12-22T02:06:58.158Z",
  "toggledBy": "rcBHBYXZSiyDRrHrWPutatfF",
  "peekabooAt": "2018-12-22T02:06:58.158Z",
  "followers": [
    "6QMKkEPBVWETLWrXqws94ALU"
  ],
  "favorites": [
    "Job4NSW9xK6Owcke8iKj7zyH"
  ],
  "project": "Dyh2YkFcu9uLgLFIeN1kB4Ld",
  "createdAt": "2018-12-22T02:06:58.158Z",
  "createdBy": "Dyh2YkFcu9uLgLFIeN1kB4Ld"
}

Add a new task after the given task.

POST /task/after/{oid}

Add a new task after the given task.

oid: string
in path

OID of the task that this new task to be added after.

name: string

The name of the task.

description: string

(Optional) An optional description about this task.

followers: string[]

(Optional) OID of users who follow this task.If "me" is specified, it means the current user will follow this task. If the application would like to follow (i.e., receive notifications), it can pass "app" as one of OIDs. In additions, it can pass additional information in one of the following syntaxes.

Syntax 1: "app|team" or "app|team|channel" where team and channel can be any value.

Syntax 2: "app|/path" where "/path" can be any URL path. It will be appended to the hook's URL when calling the registered hook. For example, if the hook URL is " https://super.app/hooks/standard" and the follower is "app|/soc1/33456/a7", then the notification will be sent to " https://super.app/hooks/standard/soc1/33456/a7".

tags: string[]

(Optional) OID of the tags to be added to the new created task.

due: string

(Optional) An optional start time. Note: if time is specified, the millisecond must be 001. Otherwise, it is 000 (so are the hour, minute and second fields).

asUser: boolean

(Optional) Specify true if you'd like to make this new task as created by the app. Default: false -- the task is marked as created by the user authorizing the app.

start: string

(Optional) An optional start time. Note: if time is specified, the millisecond must be 001. Otherwise, it is 000 (so are the hour, minute and second fields).

assignees: string[]

(Optional) OID of the users that this task is assigned to.

recurring: Recurring

(Optional) The recurring information of this task. It is null if it is not a recurring task.

peekaboo: boolean

(Optional) Specify true to peekaboo this task and its subtasks, if any. Default: false.

priority: integer

(Optiona) An optional priority. Its value must be between -1 (lowest) and 2 (highest). Default: 0.

status: integer

(Optiona) An optional status. Its value must be between 0 and 100. Default: 0.

Request Example
{
  "name": "Design new **logo**",
  "description": "This is a *cool* task.",
  "followers": [
    "tzufRLqCnud74dARyDSvjWDl"
  ],
  "tags": [
    "X6nmx9XjEO2wKbqeB1pRT43C"
  ],
  "due": "2018-12-22T00:00:00.000Z",
  "asUser": true,
  "start": "2018-12-20T00:00:00.000Z",
  "assignees": [
    "6QMKkEPBVWETLWrXqws94ALU"
  ],
  "recurring": {
    "type": 2048,
    "data": 6,
    "rate": 2048,
    "end": "2020-12-22T00:00:00.000Z"
  },
  "peekaboo": true,
  "priority": 0,
  "status": 0
}
200 OK

successful operation

Response Content-Types: application/json
Response Example (200 OK)
{
  "oid": "Dyh2YkFcu9uLgLFIeN1kB4Ld",
  "id": 12,
  "name": "Design new **logo**",
  "nameText": "Design new **logo**",
  "nameHtml": "Design new <b>logo</b>",
  "description": "This is a *cool* task.",
  "descriptionText": "This is a cool task.",
  "descriptionHtml": "This is a <i>cool</i> task.",
  "priority": 0,
  "status": 0,
  "due": "2018-12-22T00:00:00.000Z",
  "start": "2018-12-20T00:00:00.000Z",
  "recurring": {
    "type": 2048,
    "data": 6,
    "rate": 2048,
    "end": "2020-12-22T00:00:00.000Z"
  },
  "tags": [
    "X6nmx9XjEO2wKbqeB1pRT43C",
    "mPAQrYU1qt8wAYAInKRlTnvl"
  ],
  "assignors": [
    "6QMKkEPBVWETLWrXqws94ALU",
    "6QMKkEPBVWETLWrXqws94ALU"
  ],
  "partnerBy": "rcBHBYXZSiyDRrHrWPutatfF",
  "partner": "rcBHBYXZSiyDRrHrWPutatfF",
  "assignees": [
    "6QMKkEPBVWETLWrXqws94ALU",
    "Job4NSW9xK6Owcke8iKj7zyH"
  ],
  "board": "rcBHBYXZSiyDRrHrWPutatfF",
  "order": 99,
  "cover": "qfqVmUtC",
  "attachments": [
    {
      "length": 2048,
      "name": "file.zip",
      "type": 2048,
      "url": "https://quire.io/att/Ta/sdcQOGgeUtyaFFzb9p0IwAgi/qfqVmUtC/image.png",
      "createdAt": "2018-12-22T02:06:58.158Z",
      "createdBy": "Dyh2YkFcu9uLgLFIeN1kB4Ld"
    }
  ],
  "childCount": 5,
  "referrers": [
    {
      "task": "wrSpgghWFCzPHBqiShSurDeD",
      "user": "wrSpgghWFCzPHBqiShSurDeD",
      "when": "2018-12-22T02:06:58.158Z"
    }
  ],
  "url": "https://quire.io/w/my_project/123",
  "editedAt": "2018-12-22T02:06:58.158Z",
  "toggledAt": "2018-12-22T02:06:58.158Z",
  "toggledBy": "rcBHBYXZSiyDRrHrWPutatfF",
  "peekabooAt": "2018-12-22T02:06:58.158Z",
  "followers": [
    "6QMKkEPBVWETLWrXqws94ALU"
  ],
  "favorites": [
    "Job4NSW9xK6Owcke8iKj7zyH"
  ],
  "project": "Dyh2YkFcu9uLgLFIeN1kB4Ld",
  "createdAt": "2018-12-22T02:06:58.158Z",
  "createdBy": "Dyh2YkFcu9uLgLFIeN1kB4Ld"
}

Add a new task before the given task.

POST /task/before/{oid}

Add a new task before the given task.

oid: string
in path

OID of the task that this new task to be added before.

name: string

The name of the task.

description: string

(Optional) An optional description about this task.

followers: string[]

(Optional) OID of users who follow this task.If "me" is specified, it means the current user will follow this task. If the application would like to follow (i.e., receive notifications), it can pass "app" as one of OIDs. In additions, it can pass additional information in one of the following syntaxes.

Syntax 1: "app|team" or "app|team|channel" where team and channel can be any value.

Syntax 2: "app|/path" where "/path" can be any URL path. It will be appended to the hook's URL when calling the registered hook. For example, if the hook URL is " https://super.app/hooks/standard" and the follower is "app|/soc1/33456/a7", then the notification will be sent to " https://super.app/hooks/standard/soc1/33456/a7".

tags: string[]

(Optional) OID of the tags to be added to the new created task.

due: string

(Optional) An optional start time. Note: if time is specified, the millisecond must be 001. Otherwise, it is 000 (so are the hour, minute and second fields).

asUser: boolean

(Optional) Specify true if you'd like to make this new task as created by the app. Default: false -- the task is marked as created by the user authorizing the app.

start: string

(Optional) An optional start time. Note: if time is specified, the millisecond must be 001. Otherwise, it is 000 (so are the hour, minute and second fields).

assignees: string[]

(Optional) OID of the users that this task is assigned to.

recurring: Recurring

(Optional) The recurring information of this task. It is null if it is not a recurring task.

peekaboo: boolean

(Optional) Specify true to peekaboo this task and its subtasks, if any. Default: false.

priority: integer

(Optiona) An optional priority. Its value must be between -1 (lowest) and 2 (highest). Default: 0.

status: integer

(Optiona) An optional status. Its value must be between 0 and 100. Default: 0.

Request Example
{
  "name": "Design new **logo**",
  "description": "This is a *cool* task.",
  "followers": [
    "tzufRLqCnud74dARyDSvjWDl"
  ],
  "tags": [
    "X6nmx9XjEO2wKbqeB1pRT43C"
  ],
  "due": "2018-12-22T00:00:00.000Z",
  "asUser": true,
  "start": "2018-12-20T00:00:00.000Z",
  "assignees": [
    "6QMKkEPBVWETLWrXqws94ALU"
  ],
  "recurring": {
    "type": 2048,
    "data": 6,
    "rate": 2048,
    "end": "2020-12-22T00:00:00.000Z"
  },
  "peekaboo": true,
  "priority": 0,
  "status": 0
}
200 OK

successful operation

Response Content-Types: application/json
Response Example (200 OK)
{
  "oid": "Dyh2YkFcu9uLgLFIeN1kB4Ld",
  "id": 12,
  "name": "Design new **logo**",
  "nameText": "Design new **logo**",
  "nameHtml": "Design new <b>logo</b>",
  "description": "This is a *cool* task.",
  "descriptionText": "This is a cool task.",
  "descriptionHtml": "This is a <i>cool</i> task.",
  "priority": 0,
  "status": 0,
  "due": "2018-12-22T00:00:00.000Z",
  "start": "2018-12-20T00:00:00.000Z",
  "recurring": {
    "type": 2048,
    "data": 6,
    "rate": 2048,
    "end": "2020-12-22T00:00:00.000Z"
  },
  "tags": [
    "X6nmx9XjEO2wKbqeB1pRT43C",
    "mPAQrYU1qt8wAYAInKRlTnvl"
  ],
  "assignors": [
    "6QMKkEPBVWETLWrXqws94ALU",
    "6QMKkEPBVWETLWrXqws94ALU"
  ],
  "partnerBy": "rcBHBYXZSiyDRrHrWPutatfF",
  "partner": "rcBHBYXZSiyDRrHrWPutatfF",
  "assignees": [
    "6QMKkEPBVWETLWrXqws94ALU",
    "Job4NSW9xK6Owcke8iKj7zyH"
  ],
  "board": "rcBHBYXZSiyDRrHrWPutatfF",
  "order": 99,
  "cover": "qfqVmUtC",
  "attachments": [
    {
      "length": 2048,
      "name": "file.zip",
      "type": 2048,
      "url": "https://quire.io/att/Ta/sdcQOGgeUtyaFFzb9p0IwAgi/qfqVmUtC/image.png",
      "createdAt": "2018-12-22T02:06:58.158Z",
      "createdBy": "Dyh2YkFcu9uLgLFIeN1kB4Ld"
    }
  ],
  "childCount": 5,
  "referrers": [
    {
      "task": "wrSpgghWFCzPHBqiShSurDeD",
      "user": "wrSpgghWFCzPHBqiShSurDeD",
      "when": "2018-12-22T02:06:58.158Z"
    }
  ],
  "url": "https://quire.io/w/my_project/123",
  "editedAt": "2018-12-22T02:06:58.158Z",
  "toggledAt": "2018-12-22T02:06:58.158Z",
  "toggledBy": "rcBHBYXZSiyDRrHrWPutatfF",
  "peekabooAt": "2018-12-22T02:06:58.158Z",
  "followers": [
    "6QMKkEPBVWETLWrXqws94ALU"
  ],
  "favorites": [
    "Job4NSW9xK6Owcke8iKj7zyH"
  ],
  "project": "Dyh2YkFcu9uLgLFIeN1kB4Ld",
  "createdAt": "2018-12-22T02:06:58.158Z",
  "createdBy": "Dyh2YkFcu9uLgLFIeN1kB4Ld"
}

Get an existing task by its ID.

GET /task/id/{projectId}/{id}

Returns the full task record for a single task.

projectId: string
in path

ID of the project that the task belongs to.

id: integer
in path

ID of the task that needs to be fetched

200 OK

successful operation

Response Content-Types: application/json
Response Example (200 OK)
{
  "oid": "Dyh2YkFcu9uLgLFIeN1kB4Ld",
  "id": 12,
  "name": "Design new **logo**",
  "nameText": "Design new **logo**",
  "nameHtml": "Design new <b>logo</b>",
  "description": "This is a *cool* task.",
  "descriptionText": "This is a cool task.",
  "descriptionHtml": "This is a <i>cool</i> task.",
  "priority": 0,
  "status": 0,
  "due": "2018-12-22T00:00:00.000Z",
  "start": "2018-12-20T00:00:00.000Z",
  "recurring": {
    "type": 2048,
    "data": 6,
    "rate": 2048,
    "end": "2020-12-22T00:00:00.000Z"
  },
  "tags": [
    "X6nmx9XjEO2wKbqeB1pRT43C",
    "mPAQrYU1qt8wAYAInKRlTnvl"
  ],
  "assignors": [
    "6QMKkEPBVWETLWrXqws94ALU",
    "6QMKkEPBVWETLWrXqws94ALU"
  ],
  "partnerBy": "rcBHBYXZSiyDRrHrWPutatfF",
  "partner": "rcBHBYXZSiyDRrHrWPutatfF",
  "assignees": [
    "6QMKkEPBVWETLWrXqws94ALU",
    "Job4NSW9xK6Owcke8iKj7zyH"
  ],
  "board": "rcBHBYXZSiyDRrHrWPutatfF",
  "order": 99,
  "cover": "qfqVmUtC",
  "attachments": [
    {
      "length": 2048,
      "name": "file.zip",
      "type": 2048,
      "url": "https://quire.io/att/Ta/sdcQOGgeUtyaFFzb9p0IwAgi/qfqVmUtC/image.png",
      "createdAt": "2018-12-22T02:06:58.158Z",
      "createdBy": "Dyh2YkFcu9uLgLFIeN1kB4Ld"
    }
  ],
  "childCount": 5,
  "referrers": [
    {
      "task": "wrSpgghWFCzPHBqiShSurDeD",
      "user": "wrSpgghWFCzPHBqiShSurDeD",
      "when": "2018-12-22T02:06:58.158Z"
    }
  ],
  "url": "https://quire.io/w/my_project/123",
  "editedAt": "2018-12-22T02:06:58.158Z",
  "toggledAt": "2018-12-22T02:06:58.158Z",
  "toggledBy": "rcBHBYXZSiyDRrHrWPutatfF",
  "peekabooAt": "2018-12-22T02:06:58.158Z",
  "followers": [
    "6QMKkEPBVWETLWrXqws94ALU"
  ],
  "favorites": [
    "Job4NSW9xK6Owcke8iKj7zyH"
  ],
  "project": "Dyh2YkFcu9uLgLFIeN1kB4Ld",
  "createdAt": "2018-12-22T02:06:58.158Z",
  "createdBy": "Dyh2YkFcu9uLgLFIeN1kB4Ld"
}

Get an existing task by its OID.

GET /task/{oid}

Returns the full task record for a single task.

oid: string
in path

OID of the task that needs to be fetched

200 OK

successful operation

Response Content-Types: application/json
Response Example (200 OK)
{
  "oid": "Dyh2YkFcu9uLgLFIeN1kB4Ld",
  "id": 12,
  "name": "Design new **logo**",
  "nameText": "Design new **logo**",
  "nameHtml": "Design new <b>logo</b>",
  "description": "This is a *cool* task.",
  "descriptionText": "This is a cool task.",
  "descriptionHtml": "This is a <i>cool</i> task.",
  "priority": 0,
  "status": 0,
  "due": "2018-12-22T00:00:00.000Z",
  "start": "2018-12-20T00:00:00.000Z",
  "recurring": {
    "type": 2048,
    "data": 6,
    "rate": 2048,
    "end": "2020-12-22T00:00:00.000Z"
  },
  "tags": [
    "X6nmx9XjEO2wKbqeB1pRT43C",
    "mPAQrYU1qt8wAYAInKRlTnvl"
  ],
  "assignors": [
    "6QMKkEPBVWETLWrXqws94ALU",
    "6QMKkEPBVWETLWrXqws94ALU"
  ],
  "partnerBy": "rcBHBYXZSiyDRrHrWPutatfF",
  "partner": "rcBHBYXZSiyDRrHrWPutatfF",
  "assignees": [
    "6QMKkEPBVWETLWrXqws94ALU",
    "Job4NSW9xK6Owcke8iKj7zyH"
  ],
  "board": "rcBHBYXZSiyDRrHrWPutatfF",
  "order": 99,
  "cover": "qfqVmUtC",
  "attachments": [
    {
      "length": 2048,
      "name": "file.zip",
      "type": 2048,
      "url": "https://quire.io/att/Ta/sdcQOGgeUtyaFFzb9p0IwAgi/qfqVmUtC/image.png",
      "createdAt": "2018-12-22T02:06:58.158Z",
      "createdBy": "Dyh2YkFcu9uLgLFIeN1kB4Ld"
    }
  ],
  "childCount": 5,
  "referrers": [
    {
      "task": "wrSpgghWFCzPHBqiShSurDeD",
      "user": "wrSpgghWFCzPHBqiShSurDeD",
      "when": "2018-12-22T02:06:58.158Z"
    }
  ],
  "url": "https://quire.io/w/my_project/123",
  "editedAt": "2018-12-22T02:06:58.158Z",
  "toggledAt": "2018-12-22T02:06:58.158Z",
  "toggledBy": "rcBHBYXZSiyDRrHrWPutatfF",
  "peekabooAt": "2018-12-22T02:06:58.158Z",
  "followers": [
    "6QMKkEPBVWETLWrXqws94ALU"
  ],
  "favorites": [
    "Job4NSW9xK6Owcke8iKj7zyH"
  ],
  "project": "Dyh2YkFcu9uLgLFIeN1kB4Ld",
  "createdAt": "2018-12-22T02:06:58.158Z",
  "createdBy": "Dyh2YkFcu9uLgLFIeN1kB4Ld"
}

Get all root tasks of the given project or all subtasks of the given task.

GET /task/list/{oid}

Returns all root task records of the given project or all subtasks of the given task by OID. If the given OID is a project, the root tasks are returned. If the given OID is a task, its subtasks are returned. Note: tasks in the same level are return. That is, it won't returns subtasks of subtasks. You have to retrieve them recursively.

oid: string
in path

OID of project or parent task to look for

200 OK

successful operation

Response Content-Types: application/json
Response Example (200 OK)
[
  {
    "oid": "Dyh2YkFcu9uLgLFIeN1kB4Ld",
    "id": 12,
    "name": "Design new **logo**",
    "nameText": "Design new **logo**",
    "nameHtml": "Design new <b>logo</b>",
    "description": "This is a *cool* task.",
    "descriptionText": "This is a cool task.",
    "descriptionHtml": "This is a <i>cool</i> task.",
    "priority": 0,
    "status": 0,
    "due": "2018-12-22T00:00:00.000Z",
    "start": "2018-12-20T00:00:00.000Z",
    "recurring": {
      "type": 2048,
      "data": 6,
      "rate": 2048,
      "end": "2020-12-22T00:00:00.000Z"
    },
    "tags": [
      "X6nmx9XjEO2wKbqeB1pRT43C",
      "mPAQrYU1qt8wAYAInKRlTnvl"
    ],
    "assignors": [
      "6QMKkEPBVWETLWrXqws94ALU",
      "6QMKkEPBVWETLWrXqws94ALU"
    ],
    "partnerBy": "rcBHBYXZSiyDRrHrWPutatfF",
    "partner": "rcBHBYXZSiyDRrHrWPutatfF",
    "assignees": [
      "6QMKkEPBVWETLWrXqws94ALU",
      "Job4NSW9xK6Owcke8iKj7zyH"
    ],
    "board": "rcBHBYXZSiyDRrHrWPutatfF",
    "order": 99,
    "cover": "qfqVmUtC",
    "attachments": [
      {
        "length": 2048,
        "name": "file.zip",
        "type": 2048,
        "url": "https://quire.io/att/Ta/sdcQOGgeUtyaFFzb9p0IwAgi/qfqVmUtC/image.png",
        "createdAt": "2018-12-22T02:06:58.158Z",
        "createdBy": "Dyh2YkFcu9uLgLFIeN1kB4Ld"
      }
    ],
    "childCount": 5,
    "referrers": [
      {
        "task": "wrSpgghWFCzPHBqiShSurDeD",
        "user": "wrSpgghWFCzPHBqiShSurDeD",
        "when": "2018-12-22T02:06:58.158Z"
      }
    ],
    "url": "https://quire.io/w/my_project/123",
    "editedAt": "2018-12-22T02:06:58.158Z",
    "toggledAt": "2018-12-22T02:06:58.158Z",
    "toggledBy": "rcBHBYXZSiyDRrHrWPutatfF",
    "peekabooAt": "2018-12-22T02:06:58.158Z",
    "followers": [
      "6QMKkEPBVWETLWrXqws94ALU"
    ],
    "favorites": [
      "Job4NSW9xK6Owcke8iKj7zyH"
    ],
    "project": "Dyh2YkFcu9uLgLFIeN1kB4Ld",
    "createdAt": "2018-12-22T02:06:58.158Z",
    "createdBy": "Dyh2YkFcu9uLgLFIeN1kB4Ld"
  }
]

Get all root tasks of the given project.

GET /task/list/id/{projectId}

Returns all root task records of the given project.

projectId: string
in path

ID of project.

200 OK

successful operation

Response Content-Types: application/json
Response Example (200 OK)
[
  {
    "oid": "Dyh2YkFcu9uLgLFIeN1kB4Ld",
    "id": 12,
    "name": "Design new **logo**",
    "nameText": "Design new **logo**",
    "nameHtml": "Design new <b>logo</b>",
    "description": "This is a *cool* task.",
    "descriptionText": "This is a cool task.",
    "descriptionHtml": "This is a <i>cool</i> task.",
    "priority": 0,
    "status": 0,
    "due": "2018-12-22T00:00:00.000Z",
    "start": "2018-12-20T00:00:00.000Z",
    "recurring": {
      "type": 2048,
      "data": 6,
      "rate": 2048,
      "end": "2020-12-22T00:00:00.000Z"
    },
    "tags": [
      "X6nmx9XjEO2wKbqeB1pRT43C",
      "mPAQrYU1qt8wAYAInKRlTnvl"
    ],
    "assignors": [
      "6QMKkEPBVWETLWrXqws94ALU",
      "6QMKkEPBVWETLWrXqws94ALU"
    ],
    "partnerBy": "rcBHBYXZSiyDRrHrWPutatfF",
    "partner": "rcBHBYXZSiyDRrHrWPutatfF",
    "assignees": [
      "6QMKkEPBVWETLWrXqws94ALU",
      "Job4NSW9xK6Owcke8iKj7zyH"
    ],
    "board": "rcBHBYXZSiyDRrHrWPutatfF",
    "order": 99,
    "cover": "qfqVmUtC",
    "attachments": [
      {
        "length": 2048,
        "name": "file.zip",
        "type": 2048,
        "url": "https://quire.io/att/Ta/sdcQOGgeUtyaFFzb9p0IwAgi/qfqVmUtC/image.png",
        "createdAt": "2018-12-22T02:06:58.158Z",
        "createdBy": "Dyh2YkFcu9uLgLFIeN1kB4Ld"
      }
    ],
    "childCount": 5,
    "referrers": [
      {
        "task": "wrSpgghWFCzPHBqiShSurDeD",
        "user": "wrSpgghWFCzPHBqiShSurDeD",
        "when": "2018-12-22T02:06:58.158Z"
      }
    ],
    "url": "https://quire.io/w/my_project/123",
    "editedAt": "2018-12-22T02:06:58.158Z",
    "toggledAt": "2018-12-22T02:06:58.158Z",
    "toggledBy": "rcBHBYXZSiyDRrHrWPutatfF",
    "peekabooAt": "2018-12-22T02:06:58.158Z",
    "followers": [
      "6QMKkEPBVWETLWrXqws94ALU"
    ],
    "favorites": [
      "Job4NSW9xK6Owcke8iKj7zyH"
    ],
    "project": "Dyh2YkFcu9uLgLFIeN1kB4Ld",
    "createdAt": "2018-12-22T02:06:58.158Z",
    "createdBy": "Dyh2YkFcu9uLgLFIeN1kB4Ld"
  }
]

Get all subtasks of the given task.

GET /task/list/id/{projectId}/{taskId}

Returns all subtask records of the given task. Note: tasks in the same level are return. That is, it won't returns subtasks of subtasks. You have to retrieve them recursively.

projectId: string
in path

ID of the project.

taskId: integer
in path

ID of the parent task.

200 OK

successful operation

Response Content-Types: application/json
Response Example (200 OK)
[
  {
    "oid": "Dyh2YkFcu9uLgLFIeN1kB4Ld",
    "id": 12,
    "name": "Design new **logo**",
    "nameText": "Design new **logo**",
    "nameHtml": "Design new <b>logo</b>",
    "description": "This is a *cool* task.",
    "descriptionText": "This is a cool task.",
    "descriptionHtml": "This is a <i>cool</i> task.",
    "priority": 0,
    "status": 0,
    "due": "2018-12-22T00:00:00.000Z",
    "start": "2018-12-20T00:00:00.000Z",
    "recurring": {
      "type": 2048,
      "data": 6,
      "rate": 2048,
      "end": "2020-12-22T00:00:00.000Z"
    },
    "tags": [
      "X6nmx9XjEO2wKbqeB1pRT43C",
      "mPAQrYU1qt8wAYAInKRlTnvl"
    ],
    "assignors": [
      "6QMKkEPBVWETLWrXqws94ALU",
      "6QMKkEPBVWETLWrXqws94ALU"
    ],
    "partnerBy": "rcBHBYXZSiyDRrHrWPutatfF",
    "partner": "rcBHBYXZSiyDRrHrWPutatfF",
    "assignees": [
      "6QMKkEPBVWETLWrXqws94ALU",
      "Job4NSW9xK6Owcke8iKj7zyH"
    ],
    "board": "rcBHBYXZSiyDRrHrWPutatfF",
    "order": 99,
    "cover": "qfqVmUtC",
    "attachments": [
      {
        "length": 2048,
        "name": "file.zip",
        "type": 2048,
        "url": "https://quire.io/att/Ta/sdcQOGgeUtyaFFzb9p0IwAgi/qfqVmUtC/image.png",
        "createdAt": "2018-12-22T02:06:58.158Z",
        "createdBy": "Dyh2YkFcu9uLgLFIeN1kB4Ld"
      }
    ],
    "childCount": 5,
    "referrers": [
      {
        "task": "wrSpgghWFCzPHBqiShSurDeD",
        "user": "wrSpgghWFCzPHBqiShSurDeD",
        "when": "2018-12-22T02:06:58.158Z"
      }
    ],
    "url": "https://quire.io/w/my_project/123",
    "editedAt": "2018-12-22T02:06:58.158Z",
    "toggledAt": "2018-12-22T02:06:58.158Z",
    "toggledBy": "rcBHBYXZSiyDRrHrWPutatfF",
    "peekabooAt": "2018-12-22T02:06:58.158Z",
    "followers": [
      "6QMKkEPBVWETLWrXqws94ALU"
    ],
    "favorites": [
      "Job4NSW9xK6Owcke8iKj7zyH"
    ],
    "project": "Dyh2YkFcu9uLgLFIeN1kB4Ld",
    "createdAt": "2018-12-22T02:06:58.158Z",
    "createdBy": "Dyh2YkFcu9uLgLFIeN1kB4Ld"
  }
]

Searches tasks in the given project.

GET /task/search/{projectOid}

Returns task records that match the specified criteria in the given project.

Note: it returns at most 50 records, and recent edited first.

projectOid: string
in path

OID of the project to search for the tasks.

name: string
in query

Task name to match with. To specify a regular expression, you can precede it with ~.

description: string
in query

Task's description to match with. To specify a regular expression, you can precede it with ~.

status: string
in query

Task's status to match with. You can specify a value between 0 and 100, or "active" for active tasks, "completed" for completed tasks.

200 OK

successful operation

Response Content-Types: application/json
Response Example (200 OK)
[
  {
    "oid": "Dyh2YkFcu9uLgLFIeN1kB4Ld",
    "id": 12,
    "name": "Design new <b>logo</b>",
    "priority": 0,
    "status": 0,
    "due": "2018-12-22T00:00:00.000Z",
    "start": "2018-12-20T00:00:00.000Z",
    "url": "https://quire.io/w/my_project/123"
  }
]

Searches tasks in the given project.

GET /task/search/id/{projectId}

Returns task records that match the specified criteria in the given project.

projectId: string
in path

ID of the project to search for the tasks.

name: string
in query

Task name to match with. To specify a regular expression, you can precede it with ~. For example, name=~abc matches if abc is part of the name. name=~^ab.*ed$ matches if the name starts with ab and ends with ed.

description: string
in query

Task's description to match with. To specify a regular expression, you can precede it with ~.

status: string
in query

Task's status to match with. You can specify a value between 0 and 100.

200 OK

successful operation

Response Content-Types: application/json
Response Example (200 OK)
[
  {
    "oid": "Dyh2YkFcu9uLgLFIeN1kB4Ld",
    "id": 12,
    "name": "Design new <b>logo</b>",
    "priority": 0,
    "status": 0,
    "due": "2018-12-22T00:00:00.000Z",
    "start": "2018-12-20T00:00:00.000Z",
    "url": "https://quire.io/w/my_project/123"
  }
]

Update an existing task.

PUT /task/{oid}

Updates an existing task, and returns the full updated record.

oid: string
in path

OID of task that needs to be updated.

name: string

(Optional) New name of the task.

description: string

(Optional) Change the description about this task.

followers: string[]

(Optional) OID of the users to replace the followers of this task. Please refer to addFollowers() for more details.

addFollowers: string[]

(Optional) OID of the followers to be added to this task.If "me" is specified, it means the current user will follow this task. If the application would like to follow (i.e., receive notifications), it can pass "app" as one of OIDs. In additions, it can pass additional information in one of the following syntaxes.

Syntax 1: "app|team" or "app|team|channel" where team and channel can be any value.

Syntax 2: "app|/path" where "/path" can be any URL path. It will be appended to the hook's URL when calling the registered hook. For example, if the hook URL is " https://super.app/hooks/standard" and the follower is "app|/soc1/33456/a7", then the notification will be sent to " https://super.app/hooks/standard/soc1/33456/a7".

removeFollowers: string[]

(Optional) OID of the followers to be removed from this task.Please refer to addFollowers() for more details.

tags: string[]

(Optional) OID of the tags to replace existing tags of to this task. If specified, it will replace any existing tag(s). Instead of replacment, you can use "addTags" or "removeTags".

due: string

(Optional) An optional start time. Note: if time is specified, the millisecond must be 001. Otherwise, it is 000 (so are the hour, minute and second fields).

start: string

(Optional) An optional start time. Note: if time is specified, the millisecond must be 001. Otherwise, it is 000 (so are the hour, minute and second fields).

assignees: string[]

(Optional) OID of the users that this task is assigned to. If specified, it will replace any existing assignee(s). Instead of replacment, you can use "addAssignees" or "removeAssignees".

recurring: Recurring

(Optional) The recurring information of this task. It is null if it is not a recurring task.

peekaboo: boolean

(Optional) Specify true to peekaboo this task and its subtasks. Or, specify false to undo the previous peekaboo if any.

addTags: string[]

(Optional) OID of the tags to be added to this task.

removeTags: string[]

(Optional) OID of the tags to be removed from this task.

addAssignees: string[]

(Optional) OID of the assignees to be added to this task.

removeAssignees: string[]

(Optional) OID of the assignees to be removed from this task.

priority: integer

(Optiona) Change the priority of this task. Its value must be between -1 (lowest) and 2 (highest).

status: integer

(Optiona) An optional status to change to. Its value must be between 0 and 100. To complete a task, specify 100.

board: string

(Optional) OID of the board to replace existing board of to this task. If specified, it will replace existing board.

Request Example
{
  "name": "New idea",
  "description": "This is a **cool** task.",
  "followers": [
    "tzufRLqCnud74dARyDSvjWDl",
    "app"
  ],
  "addFollowers": [
    "sfsvLbDVPvi1QMf2GkDn7VSy"
  ],
  "removeFollowers": [
    "aBuz4MwfZ5CasOae6stnFa2f"
  ],
  "tags": [
    "ITaVbkhh3iVcEcV3vuSLeE2k"
  ],
  "due": "2018-12-22T00:00:00.000Z",
  "start": "2018-12-20T00:00:00.000Z",
  "assignees": [
    "6QMKkEPBVWETLWrXqws94ALU"
  ],
  "recurring": {
    "type": 2048,
    "data": 6,
    "rate": 2048,
    "end": "2020-12-22T00:00:00.000Z"
  },
  "peekaboo": true,
  "addTags": [
    "X6nmx9XjEO2wKbqeB1pRT43C"
  ],
  "removeTags": [
    "mPAQrYU1qt8wAYAInKRlTnvl"
  ],
  "addAssignees": [
    "6QMKkEPBVWETLWrXqws94ALU"
  ],
  "removeAssignees": [
    "Job4NSW9xK6Owcke8iKj7zyH"
  ],
  "priority": 0,
  "status": 100,
  "board": "rcBHBYXZSiyDRrHrWPutatfF"
}
200 OK

successful operation

Response Content-Types: application/json
Response Example (200 OK)
{
  "oid": "Dyh2YkFcu9uLgLFIeN1kB4Ld",
  "id": 12,
  "name": "Design new **logo**",
  "nameText": "Design new **logo**",
  "nameHtml": "Design new <b>logo</b>",
  "description": "This is a *cool* task.",
  "descriptionText": "This is a cool task.",
  "descriptionHtml": "This is a <i>cool</i> task.",
  "priority": 0,
  "status": 0,
  "due": "2018-12-22T00:00:00.000Z",
  "start": "2018-12-20T00:00:00.000Z",
  "recurring": {
    "type": 2048,
    "data": 6,
    "rate": 2048,
    "end": "2020-12-22T00:00:00.000Z"
  },
  "tags": [
    "X6nmx9XjEO2wKbqeB1pRT43C",
    "mPAQrYU1qt8wAYAInKRlTnvl"
  ],
  "assignors": [
    "6QMKkEPBVWETLWrXqws94ALU",
    "6QMKkEPBVWETLWrXqws94ALU"
  ],
  "partnerBy": "rcBHBYXZSiyDRrHrWPutatfF",
  "partner": "rcBHBYXZSiyDRrHrWPutatfF",
  "assignees": [
    "6QMKkEPBVWETLWrXqws94ALU",
    "Job4NSW9xK6Owcke8iKj7zyH"
  ],
  "board": "rcBHBYXZSiyDRrHrWPutatfF",
  "order": 99,
  "cover": "qfqVmUtC",
  "attachments": [
    {
      "length": 2048,
      "name": "file.zip",
      "type": 2048,
      "url": "https://quire.io/att/Ta/sdcQOGgeUtyaFFzb9p0IwAgi/qfqVmUtC/image.png",
      "createdAt": "2018-12-22T02:06:58.158Z",
      "createdBy": "Dyh2YkFcu9uLgLFIeN1kB4Ld"
    }
  ],
  "childCount": 5,
  "referrers": [
    {
      "task": "wrSpgghWFCzPHBqiShSurDeD",
      "user": "wrSpgghWFCzPHBqiShSurDeD",
      "when": "2018-12-22T02:06:58.158Z"
    }
  ],
  "url": "https://quire.io/w/my_project/123",
  "editedAt": "2018-12-22T02:06:58.158Z",
  "toggledAt": "2018-12-22T02:06:58.158Z",
  "toggledBy": "rcBHBYXZSiyDRrHrWPutatfF",
  "peekabooAt": "2018-12-22T02:06:58.158Z",
  "followers": [
    "6QMKkEPBVWETLWrXqws94ALU"
  ],
  "favorites": [
    "Job4NSW9xK6Owcke8iKj7zyH"
  ],
  "project": "Dyh2YkFcu9uLgLFIeN1kB4Ld",
  "createdAt": "2018-12-22T02:06:58.158Z",
  "createdBy": "Dyh2YkFcu9uLgLFIeN1kB4Ld"
}

Delete a task and all of its subtasks.

DELETE /task/{oid}

Delete an existing task and all of its subtasks.

oid: string
in path

OID of task that needs to be deleted

200 OK

ok

Response Content-Types: application/json

user

A user object represents an account in Quire that can be given access to various organizations, projects, and tasks.

Get a user by its ID or email address.

GET /user/id/{id}

Returns the full user record of the given ID or email address.

id: string
in path

ID, email address or "me" of user that needs to be fetched. Example: " john@gmail.com","me"

200 OK

successful operation

Response Content-Types: application/json
Response Example (200 OK)
{
  "email": "john@gmail.cc",
  "website": "https://coolwebsites.com",
  "id": "My_ID",
  "description": "This is *cool*!",
  "url": "https://quire.io/w/my_project",
  "nameText": "My Name",
  "nameHtml": "My Name",
  "descriptionText": "This is cool!",
  "descriptionHtml": "This is <i>cool</i>!",
  "iconColor": "37",
  "image": "https://quire.s3.amazonaws.com/oid/image.jpg",
  "name": "My Name",
  "oid": "Dyh2YkFcu9uLgLFIeN1kB4Ld"
}

Get a user by its OID.

GET /user/{oid}

Returns the full user record of the given OID.

oid: string
in path

OID of user that needs to be fetched

200 OK

successful operation

Response Content-Types: application/json
Response Example (200 OK)
{
  "email": "john@gmail.cc",
  "website": "https://coolwebsites.com",
  "id": "My_ID",
  "description": "This is *cool*!",
  "url": "https://quire.io/w/my_project",
  "nameText": "My Name",
  "nameHtml": "My Name",
  "descriptionText": "This is cool!",
  "descriptionHtml": "This is <i>cool</i>!",
  "iconColor": "37",
  "image": "https://quire.s3.amazonaws.com/oid/image.jpg",
  "name": "My Name",
  "oid": "Dyh2YkFcu9uLgLFIeN1kB4Ld"
}

Get all user records.

GET /user/list

Returns all colleagues of the current user if he granted the app to access his contacts. Otherwise, it returns only colleagues who also authorized the same app. If the current user didn't grant the access of his contacts and none of his collegues authorized this app, only the current user's record will be returned. The first record must be the current user.

200 OK

successful operation

Response Content-Types: application/json
Response Example (200 OK)
[
  {
    "email": "john@gmail.cc",
    "website": "https://coolwebsites.com",
    "id": "My_ID",
    "description": "This is *cool*!",
    "url": "https://quire.io/w/my_project",
    "nameText": "My Name",
    "nameHtml": "My Name",
    "descriptionText": "This is cool!",
    "descriptionHtml": "This is <i>cool</i>!",
    "iconColor": "37",
    "image": "https://quire.s3.amazonaws.com/oid/image.jpg",
    "name": "My Name",
    "oid": "Dyh2YkFcu9uLgLFIeN1kB4Ld"
  }
]

Get all users records of the given project.

GET /user/list/project/id/{projectId}

Returns all members of the given project of the specified ID. If the current user doesn't grant the app to access his contacts, only basic information are returned. The first record must be the current user.

200 OK

successful operation

Response Content-Types: application/json
Response Example (200 OK)
[
  {
    "email": "john@gmail.cc",
    "website": "https://coolwebsites.com",
    "id": "My_ID",
    "description": "This is *cool*!",
    "url": "https://quire.io/w/my_project",
    "nameText": "My Name",
    "nameHtml": "My Name",
    "descriptionText": "This is cool!",
    "descriptionHtml": "This is <i>cool</i>!",
    "iconColor": "37",
    "image": "https://quire.s3.amazonaws.com/oid/image.jpg",
    "name": "My Name",
    "oid": "Dyh2YkFcu9uLgLFIeN1kB4Ld"
  }
]

Get all users records of the given project.

GET /user/list/project/{oid}

Returns all members of the given project of the specified OID. If the current user doesn't grant the app to access his contacts, only basic information are returned. The first record must be the current user.

200 OK

successful operation

Response Content-Types: application/json
Response Example (200 OK)
[
  {
    "email": "john@gmail.cc",
    "website": "https://coolwebsites.com",
    "id": "My_ID",
    "description": "This is *cool*!",
    "url": "https://quire.io/w/my_project",
    "nameText": "My Name",
    "nameHtml": "My Name",
    "descriptionText": "This is cool!",
    "descriptionHtml": "This is <i>cool</i>!",
    "iconColor": "37",
    "image": "https://quire.s3.amazonaws.com/oid/image.jpg",
    "name": "My Name",
    "oid": "Dyh2YkFcu9uLgLFIeN1kB4Ld"
  }
]