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.

Parameter Value
client_id {your-client-ID}
redirect_uri Optional. The redirect URL after granted. If specified, it must match the redirect URL specified in your app's config. Otherwise, the configured URL will be used.
state Optional. A random string generated by your app to protect from XSRF.

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}
curl -X POST \
  -H "Content-Type: application/x-www-form-urlencoded" \
  -d "grant_type=authorization_code&code=Your_code_from_previous_step&client_id=Your_app_client_id&client_secret=Your_app_client_secret" \
  https://quire.io/oauth/token

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. To receive these events, you have to specify a valid URL for Webhooks when configuring your app.

System Events

A system event is used to notify your app about system or app's activities.

Token Expiration

When the token has been expired or revoked, an event will be sent to your app. You can clean up your storage if necessary.

{
  "type": "system",
  "token": "hook-token-defined-by-you",
  "secret": "secret-defined-by-you",
  "data": {
    "type": "token-revocation",
    "token": "the-refresh-token"
  }
}

Notification Events

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

{
  "type": "notification",
  "token": "hook-token-defined-by-you",
  "secret": "secret-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"
  } 
}
  • There is an optional field called value in the map of the data field. It contains the detailed information in a map instance. For example, it contains the assignee's ID, name and URL if it is an assignment.

  • Also, if the notification is about start or due, there will be another field called due in the map of the data field. It is the date time formatted in user's locale and time zone.

  • There is an addition field called tasks for activities that can affect multiple tasks. The field is a collection of OIDs of tasks that were changed.

    • For example, completing a task will complete its subtasks too. And, you can find all of them from the tasks field.
    • Please refer to Activity Types.

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:

Syntax 1

{
  "addFollowers": ["app"]
}

where app is a keyword. It indicates that the app would like to receives the notifications about the given target (a project or a task). That is, it'll add the app into the target's followers.

Syntax 2

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

"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.

Note: team and channel can not contain '|'.

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
  }
}

Another example:

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

You'll get:

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

Syntax 3

"app|team|channel|mine"

where both app and mine are keywords. It is similar to Syntax 2, except it receives only notifications that match the notification setting of the user.

If you don't need both team and channel, you can specify: "app|||mine.

The notification setting can be found at https://quire.io/w/YourProject?view=setting&tab=options#notifications

Syntax 4

"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".

Syntax 5

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
  }
}

Responding and Retries

When receiving the notification, your Web Hook shall return a status code between 200 and 299 to indicate success.

If 403 or 404 is returned, the registration will be removed, so called unfollow. That is, you won't receive further notifications for the same task or project your app follows.

If a status code other than above is returned, we will retry 10 minutes later, then 1 hour later, 1 day later and 3 days later.

Activities Types

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.

Here are the limits for free plans.

Plan Maximum requests per organization, per minute Maximum requests per organization, per hour
Free 25 120

Note: the limit is per-organization. It sums up the total number of all accesses from all applications for each organization. For more quota, please refer to Pricing.

Size limits

The size of each request can't be larger than 1MB. Requests that hit this limit will receive a 413 Content 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 Invalid or expired token.
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.
413 Content too large The request's content is larger than 1MB.
418 Not valid JSON content The request's content doesn't appear to be JSON.
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, such as number of projects and number of members.
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

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 the 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": "iDsPd.QP_qM.hN.Trymukn8b",
  "descriptionText": "It is cool!",
  "descriptionHtml": "It is <i>cool</i>!",
  "description": "It is *cool*!",
  "attachments": [
    {
      "name": "file.zip",
      "length": 20000,
      "type": 1,
      "url": "https://quire.io/att/Ta/sdcQOGgeUtyaFFzb9p0IwAgi/qfqVmUtC/image.png",
      "createdAt": "2018-12-22T02:06:58.158Z",
      "createdBy": {
        "id": "my_id",
        "url": "https://quire.io/u/my_id",
        "iconColor": "37",
        "image": "https://quire.s3.amazonaws.com/oid/image.jpg",
        "name": "Foo",
        "oid": "Dyh2YkFcu9uLgLFIeN1kB4Ld"
      }
    }
  ],
  "editedBy": "#/definitions/SimpleIdentity",
  "editedAt": "2018-12-22T02:06:58.158Z",
  "pinAt": "2018-12-22T02:06:58.158Z",
  "pinBy": "#/definitions/SimpleIdentity",
  "url": "string",
  "owner": {
    "type": "Project",
    "url": "https://quire.io/u/my_id",
    "name": "Foo",
    "oid": "Dyh2YkFcu9uLgLFIeN1kB4Ld"
  },
  "createdAt": "2018-12-22T02:06:58.158Z",
  "createdBy": "#/definitions/SimpleIdentity"
}

Add a new comment to a task.

POST /comment/id/{projectId}/{taskId}

Add a new comment to a task.

projectId: string
in path

ID of the project that the task is in

taskId: integer
in path

ID of the 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": "iDsPd.QP_qM.hN.Trymukn8b",
  "descriptionText": "It is cool!",
  "descriptionHtml": "It is <i>cool</i>!",
  "description": "It is *cool*!",
  "attachments": [
    {
      "name": "file.zip",
      "length": 20000,
      "type": 1,
      "url": "https://quire.io/att/Ta/sdcQOGgeUtyaFFzb9p0IwAgi/qfqVmUtC/image.png",
      "createdAt": "2018-12-22T02:06:58.158Z",
      "createdBy": {
        "id": "my_id",
        "url": "https://quire.io/u/my_id",
        "iconColor": "37",
        "image": "https://quire.s3.amazonaws.com/oid/image.jpg",
        "name": "Foo",
        "oid": "Dyh2YkFcu9uLgLFIeN1kB4Ld"
      }
    }
  ],
  "editedBy": "#/definitions/SimpleIdentity",
  "editedAt": "2018-12-22T02:06:58.158Z",
  "pinAt": "2018-12-22T02:06:58.158Z",
  "pinBy": "#/definitions/SimpleIdentity",
  "url": "string",
  "owner": {
    "type": "Project",
    "url": "https://quire.io/u/my_id",
    "name": "Foo",
    "oid": "Dyh2YkFcu9uLgLFIeN1kB4Ld"
  },
  "createdAt": "2018-12-22T02:06:58.158Z",
  "createdBy": "#/definitions/SimpleIdentity"
}

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 the project or 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": "iDsPd.QP_qM.hN.Trymukn8b",
  "descriptionText": "It is cool!",
  "descriptionHtml": "It is <i>cool</i>!",
  "description": "It is *cool*!",
  "attachments": [
    {
      "name": "file.zip",
      "length": 20000,
      "type": 1,
      "url": "https://quire.io/att/Ta/sdcQOGgeUtyaFFzb9p0IwAgi/qfqVmUtC/image.png",
      "createdAt": "2018-12-22T02:06:58.158Z",
      "createdBy": {
        "id": "my_id",
        "url": "https://quire.io/u/my_id",
        "iconColor": "37",
        "image": "https://quire.s3.amazonaws.com/oid/image.jpg",
        "name": "Foo",
        "oid": "Dyh2YkFcu9uLgLFIeN1kB4Ld"
      }
    }
  ],
  "editedBy": "#/definitions/SimpleIdentity",
  "editedAt": "2018-12-22T02:06:58.158Z",
  "pinAt": "2018-12-22T02:06:58.158Z",
  "pinBy": "#/definitions/SimpleIdentity",
  "url": "string",
  "owner": {
    "type": "Project",
    "url": "https://quire.io/u/my_id",
    "name": "Foo",
    "oid": "Dyh2YkFcu9uLgLFIeN1kB4Ld"
  },
  "createdAt": "2018-12-22T02:06:58.158Z",
  "createdBy": "#/definitions/SimpleIdentity"
}

Get a comment with project's OID

GET /comment/{projectOid}/{oid}

Returns the full comment record of the given OID.

projectOid: string
in path

OID of the project that the comment is in.

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": "iDsPd.QP_qM.hN.Trymukn8b",
  "descriptionText": "It is cool!",
  "descriptionHtml": "It is <i>cool</i>!",
  "description": "It is *cool*!",
  "attachments": [
    {
      "name": "file.zip",
      "length": 20000,
      "type": 1,
      "url": "https://quire.io/att/Ta/sdcQOGgeUtyaFFzb9p0IwAgi/qfqVmUtC/image.png",
      "createdAt": "2018-12-22T02:06:58.158Z",
      "createdBy": {
        "id": "my_id",
        "url": "https://quire.io/u/my_id",
        "iconColor": "37",
        "image": "https://quire.s3.amazonaws.com/oid/image.jpg",
        "name": "Foo",
        "oid": "Dyh2YkFcu9uLgLFIeN1kB4Ld"
      }
    }
  ],
  "editedBy": "#/definitions/SimpleIdentity",
  "editedAt": "2018-12-22T02:06:58.158Z",
  "pinAt": "2018-12-22T02:06:58.158Z",
  "pinBy": "#/definitions/SimpleIdentity",
  "url": "string",
  "owner": {
    "type": "Project",
    "url": "https://quire.io/u/my_id",
    "name": "Foo",
    "oid": "Dyh2YkFcu9uLgLFIeN1kB4Ld"
  },
  "createdAt": "2018-12-22T02:06:58.158Z",
  "createdBy": "#/definitions/SimpleIdentity"
}

Get a comment with project's ID

GET /comment/id/{projectId}/{oid}

Returns the full comment record of the given OID.

projectId: string
in path

ID of the project that the comment is in.

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": "iDsPd.QP_qM.hN.Trymukn8b",
  "descriptionText": "It is cool!",
  "descriptionHtml": "It is <i>cool</i>!",
  "description": "It is *cool*!",
  "attachments": [
    {
      "name": "file.zip",
      "length": 20000,
      "type": 1,
      "url": "https://quire.io/att/Ta/sdcQOGgeUtyaFFzb9p0IwAgi/qfqVmUtC/image.png",
      "createdAt": "2018-12-22T02:06:58.158Z",
      "createdBy": {
        "id": "my_id",
        "url": "https://quire.io/u/my_id",
        "iconColor": "37",
        "image": "https://quire.s3.amazonaws.com/oid/image.jpg",
        "name": "Foo",
        "oid": "Dyh2YkFcu9uLgLFIeN1kB4Ld"
      }
    }
  ],
  "editedBy": "#/definitions/SimpleIdentity",
  "editedAt": "2018-12-22T02:06:58.158Z",
  "pinAt": "2018-12-22T02:06:58.158Z",
  "pinBy": "#/definitions/SimpleIdentity",
  "url": "string",
  "owner": {
    "type": "Project",
    "url": "https://quire.io/u/my_id",
    "name": "Foo",
    "oid": "Dyh2YkFcu9uLgLFIeN1kB4Ld"
  },
  "createdAt": "2018-12-22T02:06:58.158Z",
  "createdBy": "#/definitions/SimpleIdentity"
}

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": "iDsPd.QP_qM.hN.Trymukn8b",
    "descriptionText": "It is cool!",
    "descriptionHtml": "It is <i>cool</i>!",
    "description": "It is *cool*!",
    "attachments": [
      {
        "name": "file.zip",
        "length": 20000,
        "type": 1,
        "url": "https://quire.io/att/Ta/sdcQOGgeUtyaFFzb9p0IwAgi/qfqVmUtC/image.png",
        "createdAt": "2018-12-22T02:06:58.158Z",
        "createdBy": {
          "id": "my_id",
          "url": "https://quire.io/u/my_id",
          "iconColor": "37",
          "image": "https://quire.s3.amazonaws.com/oid/image.jpg",
          "name": "Foo",
          "oid": "Dyh2YkFcu9uLgLFIeN1kB4Ld"
        }
      }
    ],
    "editedBy": "#/definitions/SimpleIdentity",
    "editedAt": "2018-12-22T02:06:58.158Z",
    "pinAt": "2018-12-22T02:06:58.158Z",
    "pinBy": "#/definitions/SimpleIdentity",
    "url": "string",
    "owner": {
      "type": "Project",
      "url": "https://quire.io/u/my_id",
      "name": "Foo",
      "oid": "Dyh2YkFcu9uLgLFIeN1kB4Ld"
    },
    "createdAt": "2018-12-22T02:06:58.158Z",
    "createdBy": "#/definitions/SimpleIdentity"
  }
]

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": "iDsPd.QP_qM.hN.Trymukn8b",
    "descriptionText": "It is cool!",
    "descriptionHtml": "It is <i>cool</i>!",
    "description": "It is *cool*!",
    "attachments": [
      {
        "name": "file.zip",
        "length": 20000,
        "type": 1,
        "url": "https://quire.io/att/Ta/sdcQOGgeUtyaFFzb9p0IwAgi/qfqVmUtC/image.png",
        "createdAt": "2018-12-22T02:06:58.158Z",
        "createdBy": {
          "id": "my_id",
          "url": "https://quire.io/u/my_id",
          "iconColor": "37",
          "image": "https://quire.s3.amazonaws.com/oid/image.jpg",
          "name": "Foo",
          "oid": "Dyh2YkFcu9uLgLFIeN1kB4Ld"
        }
      }
    ],
    "editedBy": "#/definitions/SimpleIdentity",
    "editedAt": "2018-12-22T02:06:58.158Z",
    "pinAt": "2018-12-22T02:06:58.158Z",
    "pinBy": "#/definitions/SimpleIdentity",
    "url": "string",
    "owner": {
      "type": "Project",
      "url": "https://quire.io/u/my_id",
      "name": "Foo",
      "oid": "Dyh2YkFcu9uLgLFIeN1kB4Ld"
    },
    "createdAt": "2018-12-22T02:06:58.158Z",
    "createdBy": "#/definitions/SimpleIdentity"
  }
]

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": "iDsPd.QP_qM.hN.Trymukn8b",
    "descriptionText": "It is cool!",
    "descriptionHtml": "It is <i>cool</i>!",
    "description": "It is *cool*!",
    "attachments": [
      {
        "name": "file.zip",
        "length": 20000,
        "type": 1,
        "url": "https://quire.io/att/Ta/sdcQOGgeUtyaFFzb9p0IwAgi/qfqVmUtC/image.png",
        "createdAt": "2018-12-22T02:06:58.158Z",
        "createdBy": {
          "id": "my_id",
          "url": "https://quire.io/u/my_id",
          "iconColor": "37",
          "image": "https://quire.s3.amazonaws.com/oid/image.jpg",
          "name": "Foo",
          "oid": "Dyh2YkFcu9uLgLFIeN1kB4Ld"
        }
      }
    ],
    "editedBy": "#/definitions/SimpleIdentity",
    "editedAt": "2018-12-22T02:06:58.158Z",
    "pinAt": "2018-12-22T02:06:58.158Z",
    "pinBy": "#/definitions/SimpleIdentity",
    "url": "string",
    "owner": {
      "type": "Project",
      "url": "https://quire.io/u/my_id",
      "name": "Foo",
      "oid": "Dyh2YkFcu9uLgLFIeN1kB4Ld"
    },
    "createdAt": "2018-12-22T02:06:58.158Z",
    "createdBy": "#/definitions/SimpleIdentity"
  }
]

Update an existing comment with project's OID

PUT /comment/{projectOid}/{oid}

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

projectOid: string
in path

OID of the project that the comment is in.

oid: string
in path

OID of the 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": "iDsPd.QP_qM.hN.Trymukn8b",
  "descriptionText": "It is cool!",
  "descriptionHtml": "It is <i>cool</i>!",
  "description": "It is *cool*!",
  "attachments": [
    {
      "name": "file.zip",
      "length": 20000,
      "type": 1,
      "url": "https://quire.io/att/Ta/sdcQOGgeUtyaFFzb9p0IwAgi/qfqVmUtC/image.png",
      "createdAt": "2018-12-22T02:06:58.158Z",
      "createdBy": {
        "id": "my_id",
        "url": "https://quire.io/u/my_id",
        "iconColor": "37",
        "image": "https://quire.s3.amazonaws.com/oid/image.jpg",
        "name": "Foo",
        "oid": "Dyh2YkFcu9uLgLFIeN1kB4Ld"
      }
    }
  ],
  "editedBy": "#/definitions/SimpleIdentity",
  "editedAt": "2018-12-22T02:06:58.158Z",
  "pinAt": "2018-12-22T02:06:58.158Z",
  "pinBy": "#/definitions/SimpleIdentity",
  "url": "string",
  "owner": {
    "type": "Project",
    "url": "https://quire.io/u/my_id",
    "name": "Foo",
    "oid": "Dyh2YkFcu9uLgLFIeN1kB4Ld"
  },
  "createdAt": "2018-12-22T02:06:58.158Z",
  "createdBy": "#/definitions/SimpleIdentity"
}

Update an existing comment with project's ID

PUT /comment/id/{projectId}/{oid}

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

projectId: string
in path

ID of the project that the comment is in.

oid: string
in path

OID of the 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": "iDsPd.QP_qM.hN.Trymukn8b",
  "descriptionText": "It is cool!",
  "descriptionHtml": "It is <i>cool</i>!",
  "description": "It is *cool*!",
  "attachments": [
    {
      "name": "file.zip",
      "length": 20000,
      "type": 1,
      "url": "https://quire.io/att/Ta/sdcQOGgeUtyaFFzb9p0IwAgi/qfqVmUtC/image.png",
      "createdAt": "2018-12-22T02:06:58.158Z",
      "createdBy": {
        "id": "my_id",
        "url": "https://quire.io/u/my_id",
        "iconColor": "37",
        "image": "https://quire.s3.amazonaws.com/oid/image.jpg",
        "name": "Foo",
        "oid": "Dyh2YkFcu9uLgLFIeN1kB4Ld"
      }
    }
  ],
  "editedBy": "#/definitions/SimpleIdentity",
  "editedAt": "2018-12-22T02:06:58.158Z",
  "pinAt": "2018-12-22T02:06:58.158Z",
  "pinBy": "#/definitions/SimpleIdentity",
  "url": "string",
  "owner": {
    "type": "Project",
    "url": "https://quire.io/u/my_id",
    "name": "Foo",
    "oid": "Dyh2YkFcu9uLgLFIeN1kB4Ld"
  },
  "createdAt": "2018-12-22T02:06:58.158Z",
  "createdBy": "#/definitions/SimpleIdentity"
}

Delete an existing comment with project's OID

DELETE /comment/{projectOid}/{oid}

Delete an existing comment.

projectOid: string
in path

OID of the project that the comment is in.

oid: string
in path

OID of comment that needs to be deleted

200 OK

ok

Response Content-Types: application/json

Delete an existing comment with project's ID

DELETE /comment/id/{projectId}/{oid}

Delete an existing comment.

projectId: string
in path

ID of the project that the comment is in.

oid: string
in path

OID of comment that needs to be deleted

200 OK

ok

Response Content-Types: application/json

notification

Sends a notification the user who granted the access. It is usually to report an error to the user.

Send a notification.

POST /notification

Send a notification to the user.

message: string

The message

url: string

(Optional) The URL of the message.If not omitted, a hyperlink will be generated to enclose the message.

Request Example
{
  "message": "Unable to synchronize",
  "url": "https://superheros.com/sync"
}
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)
{
  "name": "My Organization",
  "id": "my_organization",
  "nameText": "My Organization",
  "nameHtml": "My Organization",
  "email": "info@compony.com",
  "url": "https://quire.io/c/my_organization",
  "website": "https://coolwebsites.com",
  "descriptionText": "This is cool!",
  "descriptionHtml": "This is <i>cool</i>!",
  "description": "This is *cool*!",
  "iconColor": "37",
  "image": "https://quire.s3.amazonaws.com/oid/image.jpg",
  "oid": "Dyh2YkFcu9uLgLFIeN1kB4Ld",
  "followers": [
    {
      "id": "my_id",
      "url": "https://quire.io/u/my_id",
      "iconColor": "37",
      "image": "https://quire.s3.amazonaws.com/oid/image.jpg",
      "name": "Foo",
      "oid": "Dyh2YkFcu9uLgLFIeN1kB4Ld"
    }
  ],
  "createdAt": "2018-12-22T02:06:58.158Z",
  "createdBy": "#/definitions/SimpleIdentity"
}

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)
{
  "name": "My Organization",
  "id": "my_organization",
  "nameText": "My Organization",
  "nameHtml": "My Organization",
  "email": "info@compony.com",
  "url": "https://quire.io/c/my_organization",
  "website": "https://coolwebsites.com",
  "descriptionText": "This is cool!",
  "descriptionHtml": "This is <i>cool</i>!",
  "description": "This is *cool*!",
  "iconColor": "37",
  "image": "https://quire.s3.amazonaws.com/oid/image.jpg",
  "oid": "Dyh2YkFcu9uLgLFIeN1kB4Ld",
  "followers": [
    {
      "id": "my_id",
      "url": "https://quire.io/u/my_id",
      "iconColor": "37",
      "image": "https://quire.s3.amazonaws.com/oid/image.jpg",
      "name": "Foo",
      "oid": "Dyh2YkFcu9uLgLFIeN1kB4Ld"
    }
  ],
  "createdAt": "2018-12-22T02:06:58.158Z",
  "createdBy": "#/definitions/SimpleIdentity"
}

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)
[
  {
    "name": "My Organization",
    "id": "my_organization",
    "nameText": "My Organization",
    "nameHtml": "My Organization",
    "email": "info@compony.com",
    "url": "https://quire.io/c/my_organization",
    "website": "https://coolwebsites.com",
    "descriptionText": "This is cool!",
    "descriptionHtml": "This is <i>cool</i>!",
    "description": "This is *cool*!",
    "iconColor": "37",
    "image": "https://quire.s3.amazonaws.com/oid/image.jpg",
    "oid": "Dyh2YkFcu9uLgLFIeN1kB4Ld",
    "followers": [
      {
        "id": "my_id",
        "url": "https://quire.io/u/my_id",
        "iconColor": "37",
        "image": "https://quire.s3.amazonaws.com/oid/image.jpg",
        "name": "Foo",
        "oid": "Dyh2YkFcu9uLgLFIeN1kB4Ld"
      }
    ],
    "createdAt": "2018-12-22T02:06:58.158Z",
    "createdBy": "#/definitions/SimpleIdentity"
  }
]

Update an organization by its ID.

PUT /organization/id/{id}

A specific, existing organization can be updated by making a PUT request on the URL for that organization. Returns the complete updated organization record.

id: string
in path

ID of organization that needs to be updated

followers: string[]

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

addFollowers: string[]

(Optional) OID of the followers to be added to this organization.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 organization. Please refer to addFollowers() for more details.

Request Example
{
  "followers": [
    "string"
  ],
  "addFollowers": [
    "string"
  ],
  "removeFollowers": [
    "string"
  ]
}
200 OK

successful operation

Response Content-Types: application/json
Response Example (200 OK)
{
  "name": "My Organization",
  "id": "my_organization",
  "nameText": "My Organization",
  "nameHtml": "My Organization",
  "email": "info@compony.com",
  "url": "https://quire.io/c/my_organization",
  "website": "https://coolwebsites.com",
  "descriptionText": "This is cool!",
  "descriptionHtml": "This is <i>cool</i>!",
  "description": "This is *cool*!",
  "iconColor": "37",
  "image": "https://quire.s3.amazonaws.com/oid/image.jpg",
  "oid": "Dyh2YkFcu9uLgLFIeN1kB4Ld",
  "followers": [
    {
      "id": "my_id",
      "url": "https://quire.io/u/my_id",
      "iconColor": "37",
      "image": "https://quire.s3.amazonaws.com/oid/image.jpg",
      "name": "Foo",
      "oid": "Dyh2YkFcu9uLgLFIeN1kB4Ld"
    }
  ],
  "createdAt": "2018-12-22T02:06:58.158Z",
  "createdBy": "#/definitions/SimpleIdentity"
}

Update an organization by its OID.

PUT /organization/{oid}

A specific, existing organization can be updated by making a PUT request on the URL for that organization. Returns the complete updated organization record.

oid: string
in path

OID of organization that needs to be updated

followers: string[]

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

addFollowers: string[]

(Optional) OID of the followers to be added to this organization.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 organization. Please refer to addFollowers() for more details.

Request Example
{
  "followers": [
    "string"
  ],
  "addFollowers": [
    "string"
  ],
  "removeFollowers": [
    "string"
  ]
}
200 OK

successful operation

Response Content-Types: application/json
Response Example (200 OK)
{
  "name": "My Organization",
  "id": "my_organization",
  "nameText": "My Organization",
  "nameHtml": "My Organization",
  "email": "info@compony.com",
  "url": "https://quire.io/c/my_organization",
  "website": "https://coolwebsites.com",
  "descriptionText": "This is cool!",
  "descriptionHtml": "This is <i>cool</i>!",
  "description": "This is *cool*!",
  "iconColor": "37",
  "image": "https://quire.s3.amazonaws.com/oid/image.jpg",
  "oid": "Dyh2YkFcu9uLgLFIeN1kB4Ld",
  "followers": [
    {
      "id": "my_id",
      "url": "https://quire.io/u/my_id",
      "iconColor": "37",
      "image": "https://quire.s3.amazonaws.com/oid/image.jpg",
      "name": "Foo",
      "oid": "Dyh2YkFcu9uLgLFIeN1kB4Ld"
    }
  ],
  "createdAt": "2018-12-22T02:06:58.158Z",
  "createdBy": "#/definitions/SimpleIdentity"
}

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": "UI design team",
  "color": "35",
  "oid": "Dyh2YkFcu9uLgLFIeN1kB4Ld",
  "image": "https://quire.s3.amazonaws.com/oid/image.jpg",
  "project": {
    "id": "my_id",
    "url": "https://quire.io/u/my_id",
    "iconColor": "37",
    "image": "https://quire.s3.amazonaws.com/oid/image.jpg",
    "name": "Foo",
    "oid": "Dyh2YkFcu9uLgLFIeN1kB4Ld"
  },
  "createdAt": "2018-12-22T02:06:58.158Z",
  "createdBy": "#/definitions/SimpleIdentity"
}

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": "UI design team",
    "color": "35",
    "oid": "Dyh2YkFcu9uLgLFIeN1kB4Ld",
    "image": "https://quire.s3.amazonaws.com/oid/image.jpg",
    "project": {
      "id": "my_id",
      "url": "https://quire.io/u/my_id",
      "iconColor": "37",
      "image": "https://quire.s3.amazonaws.com/oid/image.jpg",
      "name": "Foo",
      "oid": "Dyh2YkFcu9uLgLFIeN1kB4Ld"
    },
    "createdAt": "2018-12-22T02:06:58.158Z",
    "createdBy": "#/definitions/SimpleIdentity"
  }
]

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": "UI design team",
    "color": "35",
    "oid": "Dyh2YkFcu9uLgLFIeN1kB4Ld",
    "image": "https://quire.s3.amazonaws.com/oid/image.jpg",
    "project": {
      "id": "my_id",
      "url": "https://quire.io/u/my_id",
      "iconColor": "37",
      "image": "https://quire.s3.amazonaws.com/oid/image.jpg",
      "name": "Foo",
      "oid": "Dyh2YkFcu9uLgLFIeN1kB4Ld"
    },
    "createdAt": "2018-12-22T02:06:58.158Z",
    "createdBy": "#/definitions/SimpleIdentity"
  }
]

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.

Export a project into a CSV string by the given ID.

GET /project/export-csv/id/{id}

Returns a CSV string containing the project, tasks, and so on. Note: it is allowed only for projects with professional plan or above. Also notice that the allowed number of invocation of this API is more restricted.

id: string
in path

ID of project that needs to be exported

status: string
in query

Task's status to match with. You can specify a value "active" for active tasks, "completed" for completed tasks, or "all" for all tasks. Default: all.

merge: boolean
in query

Whether to merge all values of the same header into one column. Example: All values for tags will be put in the same column. Default: false.

200 OK

successful operation

Response Content-Types: text/csv
Response Example (200 OK)
"ID",Name,Status,Started,Completed,Priority,Start,Due,Assignee,Tag,Created,Created by,Description
#6,Task A,In Progress,"Mar 8, 2022",,Medium,,"Mar 8, 2022",,,"Mar 7, 2022",John,
"#6, #8",Task A1,To-Do,"Jan 24, 2022",,Urgent,,,,,"Mar 7, 2022",John,
#7,Task B,In Progress,"Jan 24, 2022",,Urgent,,"Mar 4, 2022",,,"Mar 7, 2022",John,
"#7, #9",Task B1,In Progress,"Jan 24, 2022",,Medium,,,,,"Mar 7, 2022",John,
"#7, #4",Task B2,In Progress,"Mar 2, 2022",,Medium,,"Mar 8, 2022",,,"Mar 2, 2022",John,

Export a project into a JSON map by the given ID.

GET /project/export-json/id/{id}

Returns a JSON map containing the project, all tasks, and so on. Note: it is allowed only for projects with professional plan or above. Also notice that the allowed number of invocation of this API is more restricted.

id: string
in path

ID of project that needs to be exported

200 OK

successful operation

Response Content-Types: application/json
Response Example (200 OK)
{
  "name": "My Project",
  "id": "My_Project",
  "oid": "Dyh2YkFcu9uLgLFIeN1kB4Ld"
}

Export a project into a JSON map by the given OID.

GET /project/export-json/{oid}

Returns a JSON map containing the project, all tasks, and so on. Note: it is allowed only for projects with professional plan or above. Also notice that the allowed number of invocation of this API is more restricted.

oid: string
in path

OID of project that needs to be exported

200 OK

successful operation

Response Content-Types: application/json
Response Example (200 OK)
{
  "name": "My Project",
  "id": "My_Project",
  "oid": "Dyh2YkFcu9uLgLFIeN1kB4Ld"
}

Export a project into a CSV string by the given OID.

GET /project/export-csv/{oid}

Returns a CSV string containing the project, tasks, and so on. Note: it is allowed only for projects with professional plan or above. Also notice that the allowed number of invocation of this API is more restricted.

oid: string
in path

OID of project that needs to be exported

status: string
in query

Task's status to match with. You can specify a value "active" for active tasks, "completed" for completed tasks, or "all" for all tasks. Default: all.

merge: boolean
in query

Whether to merge all values of the same header into one column. Example: All values for tags will be put in the same column. Default: false.

200 OK

successful operation

Response Content-Types: text/csv
Response Example (200 OK)
"ID",Name,Status,Started,Completed,Priority,Start,Due,Assignee,Tag,Created,Created by,Description
#6,Task A,In Progress,"Mar 8, 2022",,Medium,,"Mar 8, 2022",,,"Mar 7, 2022",John,
"#6, #8",Task A1,To-Do,"Jan 24, 2022",,Urgent,,,,,"Mar 7, 2022",John,
#7,Task B,In Progress,"Jan 24, 2022",,Urgent,,"Mar 4, 2022",,,"Mar 7, 2022",John,
"#7, #9",Task B1,In Progress,"Jan 24, 2022",,Medium,,,,,"Mar 7, 2022",John,
"#7, #4",Task B2,In Progress,"Mar 2, 2022",,Medium,,"Mar 8, 2022",,,"Mar 2, 2022",John,

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)
{
  "name": "My Project",
  "id": "my_project",
  "nameText": "My Project",
  "nameHtml": "My Project",
  "rootCount": 5,
  "organization": {
    "id": "my_id",
    "url": "https://quire.io/u/my_id",
    "iconColor": "37",
    "image": "https://quire.s3.amazonaws.com/oid/image.jpg",
    "name": "Foo",
    "oid": "Dyh2YkFcu9uLgLFIeN1kB4Ld"
  },
  "url": "https://quire.io/w/my_project",
  "activeCount": 20,
  "taskCount": 30,
  "descriptionText": "This is cool!",
  "descriptionHtml": "This is <i>cool</i>!",
  "description": "This is *cool*!",
  "iconColor": "37",
  "image": "https://quire.s3.amazonaws.com/oid/image.jpg",
  "oid": "Dyh2YkFcu9uLgLFIeN1kB4Ld",
  "editedAt": "2018-12-22T02:06:58.158Z",
  "archivedAt": "2018-12-22T02:06:58.158Z",
  "followers": [
    "#/definitions/SimpleIdentity"
  ],
  "attachments": [
    {
      "name": "file.zip",
      "length": 20000,
      "type": 1,
      "url": "https://quire.io/att/Ta/sdcQOGgeUtyaFFzb9p0IwAgi/qfqVmUtC/image.png",
      "createdAt": "2018-12-22T02:06:58.158Z",
      "createdBy": "#/definitions/SimpleIdentity"
    }
  ],
  "createdAt": "2018-12-22T02:06:58.158Z",
  "createdBy": "#/definitions/SimpleIdentity"
}

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)
{
  "name": "My Project",
  "id": "my_project",
  "nameText": "My Project",
  "nameHtml": "My Project",
  "rootCount": 5,
  "organization": {
    "id": "my_id",
    "url": "https://quire.io/u/my_id",
    "iconColor": "37",
    "image": "https://quire.s3.amazonaws.com/oid/image.jpg",
    "name": "Foo",
    "oid": "Dyh2YkFcu9uLgLFIeN1kB4Ld"
  },
  "url": "https://quire.io/w/my_project",
  "activeCount": 20,
  "taskCount": 30,
  "descriptionText": "This is cool!",
  "descriptionHtml": "This is <i>cool</i>!",
  "description": "This is *cool*!",
  "iconColor": "37",
  "image": "https://quire.s3.amazonaws.com/oid/image.jpg",
  "oid": "Dyh2YkFcu9uLgLFIeN1kB4Ld",
  "editedAt": "2018-12-22T02:06:58.158Z",
  "archivedAt": "2018-12-22T02:06:58.158Z",
  "followers": [
    "#/definitions/SimpleIdentity"
  ],
  "attachments": [
    {
      "name": "file.zip",
      "length": 20000,
      "type": 1,
      "url": "https://quire.io/att/Ta/sdcQOGgeUtyaFFzb9p0IwAgi/qfqVmUtC/image.png",
      "createdAt": "2018-12-22T02:06:58.158Z",
      "createdBy": "#/definitions/SimpleIdentity"
    }
  ],
  "createdAt": "2018-12-22T02:06:58.158Z",
  "createdBy": "#/definitions/SimpleIdentity"
}

Get all granted projects.

GET /project/list

Returns the project records for all projects that the current user can grant to this application.

archived: boolean
in query

Whether to return archived projects. By default, archived projects won't be returned. If the parameter is specified without value, true is assumed.

add-task: boolean
in query

Whether to return only projects that you can add tasks to. Default: false. If the parameter is specified without value, true is assumed.

200 OK

successful operation

Response Content-Types: application/json
Response Example (200 OK)
[
  {
    "name": "My Project",
    "id": "my_project",
    "nameText": "My Project",
    "nameHtml": "My Project",
    "rootCount": 5,
    "organization": {
      "id": "my_id",
      "url": "https://quire.io/u/my_id",
      "iconColor": "37",
      "image": "https://quire.s3.amazonaws.com/oid/image.jpg",
      "name": "Foo",
      "oid": "Dyh2YkFcu9uLgLFIeN1kB4Ld"
    },
    "url": "https://quire.io/w/my_project",
    "activeCount": 20,
    "taskCount": 30,
    "descriptionText": "This is cool!",
    "descriptionHtml": "This is <i>cool</i>!",
    "description": "This is *cool*!",
    "iconColor": "37",
    "image": "https://quire.s3.amazonaws.com/oid/image.jpg",
    "oid": "Dyh2YkFcu9uLgLFIeN1kB4Ld",
    "editedAt": "2018-12-22T02:06:58.158Z",
    "archivedAt": "2018-12-22T02:06:58.158Z",
    "followers": [
      "#/definitions/SimpleIdentity"
    ],
    "attachments": [
      {
        "name": "file.zip",
        "length": 20000,
        "type": 1,
        "url": "https://quire.io/att/Ta/sdcQOGgeUtyaFFzb9p0IwAgi/qfqVmUtC/image.png",
        "createdAt": "2018-12-22T02:06:58.158Z",
        "createdBy": "#/definitions/SimpleIdentity"
      }
    ],
    "createdAt": "2018-12-22T02:06:58.158Z",
    "createdBy": "#/definitions/SimpleIdentity"
  }
]

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

archived: boolean
in query

Whether to return archived projects. By default, archived projects won't be returned. If the parameter is specified without value, true is assumed.

add-task: boolean
in query

Whether to return only projects that you can add tasks to. Default: false. If the parameter is specified without value, true is assumed.

200 OK

successful operation

Response Content-Types: application/json
Response Example (200 OK)
[
  {
    "name": "My Project",
    "id": "my_project",
    "nameText": "My Project",
    "nameHtml": "My Project",
    "rootCount": 5,
    "organization": {
      "id": "my_id",
      "url": "https://quire.io/u/my_id",
      "iconColor": "37",
      "image": "https://quire.s3.amazonaws.com/oid/image.jpg",
      "name": "Foo",
      "oid": "Dyh2YkFcu9uLgLFIeN1kB4Ld"
    },
    "url": "https://quire.io/w/my_project",
    "activeCount": 20,
    "taskCount": 30,
    "descriptionText": "This is cool!",
    "descriptionHtml": "This is <i>cool</i>!",
    "description": "This is *cool*!",
    "iconColor": "37",
    "image": "https://quire.s3.amazonaws.com/oid/image.jpg",
    "oid": "Dyh2YkFcu9uLgLFIeN1kB4Ld",
    "editedAt": "2018-12-22T02:06:58.158Z",
    "archivedAt": "2018-12-22T02:06:58.158Z",
    "followers": [
      "#/definitions/SimpleIdentity"
    ],
    "attachments": [
      {
        "name": "file.zip",
        "length": 20000,
        "type": 1,
        "url": "https://quire.io/att/Ta/sdcQOGgeUtyaFFzb9p0IwAgi/qfqVmUtC/image.png",
        "createdAt": "2018-12-22T02:06:58.158Z",
        "createdBy": "#/definitions/SimpleIdentity"
      }
    ],
    "createdAt": "2018-12-22T02:06:58.158Z",
    "createdBy": "#/definitions/SimpleIdentity"
  }
]

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.

organizationOid: string
in path

OID of the organization.

archived: boolean
in query

Whether to return archived projects. By default, archived projects won't be returned. If the parameter is specified without value, true is assumed.

add-task: boolean
in query

Whether to return only projects that you can add tasks to. Default: false. If the parameter is specified without value, true is assumed.

200 OK

successful operation

Response Content-Types: application/json
Response Example (200 OK)
[
  {
    "name": "My Project",
    "id": "my_project",
    "nameText": "My Project",
    "nameHtml": "My Project",
    "rootCount": 5,
    "organization": {
      "id": "my_id",
      "url": "https://quire.io/u/my_id",
      "iconColor": "37",
      "image": "https://quire.s3.amazonaws.com/oid/image.jpg",
      "name": "Foo",
      "oid": "Dyh2YkFcu9uLgLFIeN1kB4Ld"
    },
    "url": "https://quire.io/w/my_project",
    "activeCount": 20,
    "taskCount": 30,
    "descriptionText": "This is cool!",
    "descriptionHtml": "This is <i>cool</i>!",
    "description": "This is *cool*!",
    "iconColor": "37",
    "image": "https://quire.s3.amazonaws.com/oid/image.jpg",
    "oid": "Dyh2YkFcu9uLgLFIeN1kB4Ld",
    "editedAt": "2018-12-22T02:06:58.158Z",
    "archivedAt": "2018-12-22T02:06:58.158Z",
    "followers": [
      "#/definitions/SimpleIdentity"
    ],
    "attachments": [
      {
        "name": "file.zip",
        "length": 20000,
        "type": 1,
        "url": "https://quire.io/att/Ta/sdcQOGgeUtyaFFzb9p0IwAgi/qfqVmUtC/image.png",
        "createdAt": "2018-12-22T02:06:58.158Z",
        "createdBy": "#/definitions/SimpleIdentity"
      }
    ],
    "createdAt": "2018-12-22T02:06:58.158Z",
    "createdBy": "#/definitions/SimpleIdentity"
  }
]

Update a project by its ID.

PUT /project/id/{id}

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

id: string
in path

ID 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)
{
  "name": "My Project",
  "id": "my_project",
  "nameText": "My Project",
  "nameHtml": "My Project",
  "rootCount": 5,
  "organization": {
    "id": "my_id",
    "url": "https://quire.io/u/my_id",
    "iconColor": "37",
    "image": "https://quire.s3.amazonaws.com/oid/image.jpg",
    "name": "Foo",
    "oid": "Dyh2YkFcu9uLgLFIeN1kB4Ld"
  },
  "url": "https://quire.io/w/my_project",
  "activeCount": 20,
  "taskCount": 30,
  "descriptionText": "This is cool!",
  "descriptionHtml": "This is <i>cool</i>!",
  "description": "This is *cool*!",
  "iconColor": "37",
  "image": "https://quire.s3.amazonaws.com/oid/image.jpg",
  "oid": "Dyh2YkFcu9uLgLFIeN1kB4Ld",
  "editedAt": "2018-12-22T02:06:58.158Z",
  "archivedAt": "2018-12-22T02:06:58.158Z",
  "followers": [
    "#/definitions/SimpleIdentity"
  ],
  "attachments": [
    {
      "name": "file.zip",
      "length": 20000,
      "type": 1,
      "url": "https://quire.io/att/Ta/sdcQOGgeUtyaFFzb9p0IwAgi/qfqVmUtC/image.png",
      "createdAt": "2018-12-22T02:06:58.158Z",
      "createdBy": "#/definitions/SimpleIdentity"
    }
  ],
  "createdAt": "2018-12-22T02:06:58.158Z",
  "createdBy": "#/definitions/SimpleIdentity"
}

Update a project by its OID.

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)
{
  "name": "My Project",
  "id": "my_project",
  "nameText": "My Project",
  "nameHtml": "My Project",
  "rootCount": 5,
  "organization": {
    "id": "my_id",
    "url": "https://quire.io/u/my_id",
    "iconColor": "37",
    "image": "https://quire.s3.amazonaws.com/oid/image.jpg",
    "name": "Foo",
    "oid": "Dyh2YkFcu9uLgLFIeN1kB4Ld"
  },
  "url": "https://quire.io/w/my_project",
  "activeCount": 20,
  "taskCount": 30,
  "descriptionText": "This is cool!",
  "descriptionHtml": "This is <i>cool</i>!",
  "description": "This is *cool*!",
  "iconColor": "37",
  "image": "https://quire.s3.amazonaws.com/oid/image.jpg",
  "oid": "Dyh2YkFcu9uLgLFIeN1kB4Ld",
  "editedAt": "2018-12-22T02:06:58.158Z",
  "archivedAt": "2018-12-22T02:06:58.158Z",
  "followers": [
    "#/definitions/SimpleIdentity"
  ],
  "attachments": [
    {
      "name": "file.zip",
      "length": 20000,
      "type": 1,
      "url": "https://quire.io/att/Ta/sdcQOGgeUtyaFFzb9p0IwAgi/qfqVmUtC/image.png",
      "createdAt": "2018-12-22T02:06:58.158Z",
      "createdBy": "#/definitions/SimpleIdentity"
    }
  ],
  "createdAt": "2018-12-22T02:06:58.158Z",
  "createdBy": "#/definitions/SimpleIdentity"
}

status

A task status is a value to indicate the progress of a task.

Add a new task status.

POST /status/{projectOid}

Add a new task status into a project.

projectOid: string
in path

OID of project that this new task status to be added to.

name: string

The name of the status

value: integer

The value. It is a non-negative value to indicate the progress. The value must be unique. If it is great or equals to 100, it means the task has been completed.

color: string

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

Request Example
{
  "name": "Doing",
  "value": "true",
  "color": "35"
}
200 OK

successful operation

Response Content-Types: application/json
Response Example (200 OK)
{
  "name": "Doing",
  "value": 50,
  "color": "35"
}

Add a new task status.

POST /status/id/{projectId}

Add a new task status into a project.

projectId: string
in path

ID of project that this new task status to be added to.

name: string

The name of the status

value: integer

The value. It is a non-negative value to indicate the progress. The value must be unique. If it is great or equals to 100, it means the task has been completed.

color: string

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

Request Example
{
  "name": "Doing",
  "value": "true",
  "color": "35"
}
200 OK

successful operation

Response Content-Types: application/json
Response Example (200 OK)
{
  "name": "Doing",
  "value": 50,
  "color": "35"
}

Get the task status of the given value.

GET /status/{projectOid}/{value}

Returns the full status record of the given value.

projectOid: string
in path

OID of project that the task status belongs to.

value: integer
in path

The status's value that needs to be fetched.

200 OK

successful operation

Response Content-Types: application/json
Response Example (200 OK)
{
  "name": "Doing",
  "value": 50,
  "color": "35"
}

Get the task status of the given value.

GET /status/id/{projectId}/{value}

Returns the full status record of the given value.

projectId: string
in path

ID of project that the task status belongs to.

value: integer
in path

The status's value that needs to be fetched.

200 OK

successful operation

Response Content-Types: application/json
Response Example (200 OK)
{
  "name": "Doing",
  "value": 50,
  "color": "35"
}

Get all statuses of the given project by its ID.

GET /status/list/id/{projectId}

Returns all status 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)
[
  {
    "name": "Doing",
    "value": 50,
    "color": "35"
  }
]

Get all statuses of the given project by its OID.

GET /status/list/{projectOid}

Returns all status 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)
[
  {
    "name": "Doing",
    "value": 50,
    "color": "35"
  }
]

Update a status.

PUT /status/{projectOid}/{value}

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

projectOid: string
in path

OID of project that the task status belongs to.

value: integer
in path

The status's value that needs to be updated.

name: string

(Optional) The new name of the status.

value: integer

(Optional) The new value of the status. It is a non-negative value to indicate the progress. The value must be unique. If it is great or equals to 100, it means the task has been completed.

color: string

(Optional) The color of the status.

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

successful operation

Response Content-Types: application/json
Response Example (200 OK)
{
  "name": "Doing",
  "value": 50,
  "color": "35"
}

Update a status.

PUT /status/id/{projectId}/{value}

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

projectId: string
in path

ID of project that the task status belongs to.

value: integer
in path

The status's value that needs to be updated.

name: string

(Optional) The new name of the status.

value: integer

(Optional) The new value of the status. It is a non-negative value to indicate the progress. The value must be unique. If it is great or equals to 100, it means the task has been completed.

color: string

(Optional) The color of the status.

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

successful operation

Response Content-Types: application/json
Response Example (200 OK)
{
  "name": "Doing",
  "value": 50,
  "color": "35"
}

Delete a status

DELETE /status/{projectOid}/{value}

Delete an existing status.

projectOid: string
in path

OID of project that the task status belongs to.

value: integer
in path

The status's value that needs to be deleted.

200 OK

ok

Response Content-Types: application/json

Delete a status

DELETE /status/id/{projectId}/{value}

Delete an existing status.

projectId: string
in path

ID of project that the task status belongs to.

value: integer
in path

The status's value that needs to be deleted.

200 OK

ok

Response Content-Types: application/json

storage

A storage to store application specific data. The application specific data is stored per access token. They will be deleted if the token is revoked or expired.

Get the application specific data of the given name.

GET /storage/{name}

Returns the application specific data of the given name If not found, it returns 404 (status code).Note: application specific data are stored per access token.

name: string
in path

The name. Example: "latest"

200 OK

successful operation

Response Content-Types: application/json
Response Example (200 OK)
{
  "myKey": "My data"
}

Get all stored application specific values with the given prefix.

GET /storage/list/{prefix}

Returns all stored application specific values that start with the given prefix. Note: at most 20 items are returned for each query.

prefix: string
in path

A prefix (optional). Example: "foo".If not specified, all values are returned.

200 OK

successful operation

Response Content-Types: application/json
Response Example (200 OK)
{
  "currentProject": "Dyh2YkFcu9uLgLFIeN1kB4Ld",
  "myList": [
    "string"
  ],
  "latest": {
    "myKey": "My data"
  }
}

Update the application specific data of the given name.

PUT /storage/{name}

Updates the application specific data of the given name. If it doesn't exist, it adds the name to the given value. If the value is null, it is the same as deletion. It returns true if the value is updated or added successfully. Note: application specific data are stored per access token.

name: string
in path

The name. Example: "latest"

myKey: string

Property name

Request Example
{
  "myKey": "My data"
}
200 OK

ok

Response Content-Types: application/json

Delete the application specific data of the given name

DELETE /storage/{name}

Delete the application specific data of the given name. It returns true if the value is deleted successfully, or false if the name doesn't exist. Note: application specific data are stored per access token.

name: string
in path

The name. Example: "latest"

200 OK

ok

Response Content-Types: application/json

sublist

A sublist is a collections of tasks. It represents a subset of all tasks.

Add a new sublist by owner's OID.

POST /sublist/{ownerType}/{ownerOid}

Add a new sublist by owner's OID

ownerType: string
in path

The type of the owner that this new sublist to be added to. It can be project, organization, folder or smart-folder. If omitted, project is assumed. For example, /this_is_oid is equivalent to /project/this_is_oid.

ownerOid: string
in path

OID of the owner that this new sublist to be added to.

name: string

The name of the sublist.

id: string

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

iconColor: string

(Optional) The color of the icon representing this record. It is an index of our predefined color palette.

description: string

(Optional) An optional description about this task.

includes: string[]

(Optional) A list of tasks' OID that belong to this sublist. Note: all of descendants will be included too.

image: string

(Optional) The image representing this record. It shall be one of the predined images: 'icon-view-list', 'icon-view-kanban', 'icon-briefcase-o', 'icon-rocket-o', 'icon-bug-o', 'icon-leaf-o', 'icon-clapperboard', 'icon-sitemap-o', 'icon-flash-on-o', 'icon-piggy-bank-o', 'icon-graduation-cap-o', 'icon-paper-plane-o', 'icon-globe-o', 'icon-music-o', 'icon-detail', 'icon-beach-o', 'icon-paper', 'icon-home-o', 'icon-building', 'icon-database-o', 'icon-microscope-o', 'icon-hamburger-o', 'icon-trophy-o', 'icon-thumbs-o-up', 'icon-thumbs-o-down', 'icon-smile-o', 'icon-frown-o', 'icon-meh-o', 'icon-bullseye', 'icon-square-dotted-o'

personal: boolean

(Optional) Whether it is personal. If omitted, false is assumed.

partner: string

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

start: string

(Optional) When this sublist was aimed to start.

due: string

(Optional) When this sublist was aimed to complete.

Request Example
{
  "name": "Sublist 101",
  "id": "Sublist101",
  "iconColor": "37",
  "description": "**Great** sublist to start with.",
  "includes": [
    "string"
  ],
  "image": "icon-view-kanban",
  "personal": false,
  "partner": "rcBHBYXZSiyDRrHrWPutatfF",
  "start": "2024-01-02",
  "due": "2024-05-25"
}
200 OK

successful operation

Response Content-Types: application/json
Response Example (200 OK)
{
  "name": "Sublist 101",
  "id": "Sublist101",
  "nameText": "Sublist 101",
  "nameHtml": "Sublist 101",
  "url": "https://quire.io/w/my_project?sublist=Sublist101",
  "descriptionText": "This is cool!",
  "descriptionHtml": "This is <i>cool</i>!",
  "description": "This is *cool*!",
  "iconColor": "37",
  "image": "https://quire.s3.amazonaws.com/oid/image.jpg",
  "oid": "Dyh2YkFcu9uLgLFIeN1kB4Ld",
  "partner": {
    "color": "35",
    "name": "Foo",
    "oid": "Dyh2YkFcu9uLgLFIeN1kB4Ld"
  },
  "archivedAt": "2020-02-22T02:06:58.158Z",
  "start": "2024-01-02",
  "due": "2024-05-25",
  "owner": {
    "type": "Project",
    "url": "https://quire.io/u/my_id",
    "id": "my_id",
    "iconColor": "37",
    "image": "https://quire.s3.amazonaws.com/oid/image.jpg",
    "name": "Foo",
    "oid": "Dyh2YkFcu9uLgLFIeN1kB4Ld"
  },
  "createdAt": "2018-12-22T02:06:58.158Z",
  "createdBy": {
    "id": "my_id",
    "url": "https://quire.io/u/my_id",
    "iconColor": "37",
    "image": "https://quire.s3.amazonaws.com/oid/image.jpg",
    "name": "Foo",
    "oid": "Dyh2YkFcu9uLgLFIeN1kB4Ld"
  }
}

Add a new sublist by owner's ID.

POST /sublist/id/{ownerType}/{ownerId}

Add a new sublist by owner's ID.

owenerType: string
in path

The type of the owner that this new sublist to be added to. It can be project, organization, folder or smart-folder. If omitted, project is assumed. For example, /id/this_is_id is equivalent to /id/project/this_is_id.

ownerId: string
in path

ID of owner that this new sublist to be added to.

name: string

The name of the sublist.

id: string

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

iconColor: string

(Optional) The color of the icon representing this record. It is an index of our predefined color palette.

description: string

(Optional) An optional description about this task.

includes: string[]

(Optional) A list of tasks' OID that belong to this sublist. Note: all of descendants will be included too.

image: string

(Optional) The image representing this record. It shall be one of the predined images: 'icon-view-list', 'icon-view-kanban', 'icon-briefcase-o', 'icon-rocket-o', 'icon-bug-o', 'icon-leaf-o', 'icon-clapperboard', 'icon-sitemap-o', 'icon-flash-on-o', 'icon-piggy-bank-o', 'icon-graduation-cap-o', 'icon-paper-plane-o', 'icon-globe-o', 'icon-music-o', 'icon-detail', 'icon-beach-o', 'icon-paper', 'icon-home-o', 'icon-building', 'icon-database-o', 'icon-microscope-o', 'icon-hamburger-o', 'icon-trophy-o', 'icon-thumbs-o-up', 'icon-thumbs-o-down', 'icon-smile-o', 'icon-frown-o', 'icon-meh-o', 'icon-bullseye', 'icon-square-dotted-o'

personal: boolean

(Optional) Whether it is personal. If omitted, false is assumed.

partner: string

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

start: string

(Optional) When this sublist was aimed to start.

due: string

(Optional) When this sublist was aimed to complete.

Request Example
{
  "name": "Sublist 101",
  "id": "Sublist101",
  "iconColor": "37",
  "description": "**Great** sublist to start with.",
  "includes": [
    "string"
  ],
  "image": "icon-view-kanban",
  "personal": false,
  "partner": "rcBHBYXZSiyDRrHrWPutatfF",
  "start": "2024-01-02",
  "due": "2024-05-25"
}
200 OK

successful operation

Response Content-Types: application/json
Response Example (200 OK)
{
  "name": "Sublist 101",
  "id": "Sublist101",
  "nameText": "Sublist 101",
  "nameHtml": "Sublist 101",
  "url": "https://quire.io/w/my_project?sublist=Sublist101",
  "descriptionText": "This is cool!",
  "descriptionHtml": "This is <i>cool</i>!",
  "description": "This is *cool*!",
  "iconColor": "37",
  "image": "https://quire.s3.amazonaws.com/oid/image.jpg",
  "oid": "Dyh2YkFcu9uLgLFIeN1kB4Ld",
  "partner": {
    "color": "35",
    "name": "Foo",
    "oid": "Dyh2YkFcu9uLgLFIeN1kB4Ld"
  },
  "archivedAt": "2020-02-22T02:06:58.158Z",
  "start": "2024-01-02",
  "due": "2024-05-25",
  "owner": {
    "type": "Project",
    "url": "https://quire.io/u/my_id",
    "id": "my_id",
    "iconColor": "37",
    "image": "https://quire.s3.amazonaws.com/oid/image.jpg",
    "name": "Foo",
    "oid": "Dyh2YkFcu9uLgLFIeN1kB4Ld"
  },
  "createdAt": "2018-12-22T02:06:58.158Z",
  "createdBy": {
    "id": "my_id",
    "url": "https://quire.io/u/my_id",
    "iconColor": "37",
    "image": "https://quire.s3.amazonaws.com/oid/image.jpg",
    "name": "Foo",
    "oid": "Dyh2YkFcu9uLgLFIeN1kB4Ld"
  }
}

Get an existing sublist by its ID.

GET /sublist/id/{ownerType}/{ownerId}/{id}

Returns the full sublist record of the given ID.

owenerType: string
in path

The type of the owner that this sublist belongs to. It can be project, organization, folder or smart-folder. If omitted, project is assumed. For example, /id/this_is_id is equivalent to /id/project/this_is_id.

ownerId: string
in path

ID of owner that this sublist belongs to.

id: string
in path

ID of the sublist that needs to be fetched

200 OK

successful operation

Response Content-Types: application/json
Response Example (200 OK)
{
  "name": "Sublist 101",
  "id": "Sublist101",
  "nameText": "Sublist 101",
  "nameHtml": "Sublist 101",
  "url": "https://quire.io/w/my_project?sublist=Sublist101",
  "descriptionText": "This is cool!",
  "descriptionHtml": "This is <i>cool</i>!",
  "description": "This is *cool*!",
  "iconColor": "37",
  "image": "https://quire.s3.amazonaws.com/oid/image.jpg",
  "oid": "Dyh2YkFcu9uLgLFIeN1kB4Ld",
  "partner": {
    "color": "35",
    "name": "Foo",
    "oid": "Dyh2YkFcu9uLgLFIeN1kB4Ld"
  },
  "archivedAt": "2020-02-22T02:06:58.158Z",
  "start": "2024-01-02",
  "due": "2024-05-25",
  "owner": {
    "type": "Project",
    "url": "https://quire.io/u/my_id",
    "id": "my_id",
    "iconColor": "37",
    "image": "https://quire.s3.amazonaws.com/oid/image.jpg",
    "name": "Foo",
    "oid": "Dyh2YkFcu9uLgLFIeN1kB4Ld"
  },
  "createdAt": "2018-12-22T02:06:58.158Z",
  "createdBy": {
    "id": "my_id",
    "url": "https://quire.io/u/my_id",
    "iconColor": "37",
    "image": "https://quire.s3.amazonaws.com/oid/image.jpg",
    "name": "Foo",
    "oid": "Dyh2YkFcu9uLgLFIeN1kB4Ld"
  }
}

Get an existing sublist by its OID

GET /sublist/{oid}

Returns the full sublist record of the given OID.

oid: string
in path

OID of sublist that needs to be fetched.

200 OK

successful operation

Response Content-Types: application/json
Response Example (200 OK)
{
  "name": "Sublist 101",
  "id": "Sublist101",
  "nameText": "Sublist 101",
  "nameHtml": "Sublist 101",
  "url": "https://quire.io/w/my_project?sublist=Sublist101",
  "descriptionText": "This is cool!",
  "descriptionHtml": "This is <i>cool</i>!",
  "description": "This is *cool*!",
  "iconColor": "37",
  "image": "https://quire.s3.amazonaws.com/oid/image.jpg",
  "oid": "Dyh2YkFcu9uLgLFIeN1kB4Ld",
  "partner": {
    "color": "35",
    "name": "Foo",
    "oid": "Dyh2YkFcu9uLgLFIeN1kB4Ld"
  },
  "archivedAt": "2020-02-22T02:06:58.158Z",
  "start": "2024-01-02",
  "due": "2024-05-25",
  "owner": {
    "type": "Project",
    "url": "https://quire.io/u/my_id",
    "id": "my_id",
    "iconColor": "37",
    "image": "https://quire.s3.amazonaws.com/oid/image.jpg",
    "name": "Foo",
    "oid": "Dyh2YkFcu9uLgLFIeN1kB4Ld"
  },
  "createdAt": "2018-12-22T02:06:58.158Z",
  "createdBy": {
    "id": "my_id",
    "url": "https://quire.io/u/my_id",
    "iconColor": "37",
    "image": "https://quire.s3.amazonaws.com/oid/image.jpg",
    "name": "Foo",
    "oid": "Dyh2YkFcu9uLgLFIeN1kB4Ld"
  }
}

Get all sublists of the given owner by its ID.

GET /sublist/list/id/{ownerType}/{ownerId}

Returns all sublist records of the given owner by its ID.

ownerType: string
in path

The type of the owner. It can be project, organization, folder or smart-folder. If omitted, project is assumed. For example, /list/id/this_is_id is equivalent to /list/id/project/this_is_id.

ownerId: string
in path

ID of the owner.

200 OK

successful operation

Response Content-Types: application/json
Response Example (200 OK)
[
  {
    "name": "Sublist 101",
    "id": "Sublist101",
    "nameText": "Sublist 101",
    "nameHtml": "Sublist 101",
    "url": "https://quire.io/w/my_project?sublist=Sublist101",
    "descriptionText": "This is cool!",
    "descriptionHtml": "This is <i>cool</i>!",
    "description": "This is *cool*!",
    "iconColor": "37",
    "image": "https://quire.s3.amazonaws.com/oid/image.jpg",
    "oid": "Dyh2YkFcu9uLgLFIeN1kB4Ld",
    "partner": {
      "color": "35",
      "name": "Foo",
      "oid": "Dyh2YkFcu9uLgLFIeN1kB4Ld"
    },
    "archivedAt": "2020-02-22T02:06:58.158Z",
    "start": "2024-01-02",
    "due": "2024-05-25",
    "owner": {
      "type": "Project",
      "url": "https://quire.io/u/my_id",
      "id": "my_id",
      "iconColor": "37",
      "image": "https://quire.s3.amazonaws.com/oid/image.jpg",
      "name": "Foo",
      "oid": "Dyh2YkFcu9uLgLFIeN1kB4Ld"
    },
    "createdAt": "2018-12-22T02:06:58.158Z",
    "createdBy": {
      "id": "my_id",
      "url": "https://quire.io/u/my_id",
      "iconColor": "37",
      "image": "https://quire.s3.amazonaws.com/oid/image.jpg",
      "name": "Foo",
      "oid": "Dyh2YkFcu9uLgLFIeN1kB4Ld"
    }
  }
]

Get all sublists of the given owner by its OID.

GET /sublist/list/{ownerType}/{ownerOid}

Returns all sublist records of the given owner by its OID.

ownerType: string
in path

The type of the owner. It can be project, organization, folder or smart-folder. If omitted, project is assumed. For example, /list/this_is_oid is equivalent to /list/project/this_is_oid.

ownerOid: string
in path

OID of the owner.

200 OK

successful operation

Response Content-Types: application/json
Response Example (200 OK)
[
  {
    "name": "Sublist 101",
    "id": "Sublist101",
    "nameText": "Sublist 101",
    "nameHtml": "Sublist 101",
    "url": "https://quire.io/w/my_project?sublist=Sublist101",
    "descriptionText": "This is cool!",
    "descriptionHtml": "This is <i>cool</i>!",
    "description": "This is *cool*!",
    "iconColor": "37",
    "image": "https://quire.s3.amazonaws.com/oid/image.jpg",
    "oid": "Dyh2YkFcu9uLgLFIeN1kB4Ld",
    "partner": {
      "color": "35",
      "name": "Foo",
      "oid": "Dyh2YkFcu9uLgLFIeN1kB4Ld"
    },
    "archivedAt": "2020-02-22T02:06:58.158Z",
    "start": "2024-01-02",
    "due": "2024-05-25",
    "owner": {
      "type": "Project",
      "url": "https://quire.io/u/my_id",
      "id": "my_id",
      "iconColor": "37",
      "image": "https://quire.s3.amazonaws.com/oid/image.jpg",
      "name": "Foo",
      "oid": "Dyh2YkFcu9uLgLFIeN1kB4Ld"
    },
    "createdAt": "2018-12-22T02:06:58.158Z",
    "createdBy": {
      "id": "my_id",
      "url": "https://quire.io/u/my_id",
      "iconColor": "37",
      "image": "https://quire.s3.amazonaws.com/oid/image.jpg",
      "name": "Foo",
      "oid": "Dyh2YkFcu9uLgLFIeN1kB4Ld"
    }
  }
]

Update a sublist by its ID.

PUT /sublist/id/{ownerType}/{ownerId}/{id}

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

ownerType: string
in path

The type of the owner. It can be project, organization, folder or smart-folder. If omitted, project is assumed. For example, /id/this_is_id is equivalent to /id/project/this_is_id.

ownerId: string
in path

ID of the owner.

name: string

(Optional) The name of the sublist.

id: string

(Optional) ID of the sublist.

archived: boolean

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

iconColor: string

(Optional) The color of the icon representing this record. It is an index of our predefined color palette.

description: string

(Optional) An optional description about this task.

image: string

(Optional) The image representing this record. It shall be one of the predined images: 'icon-view-list', 'icon-view-kanban', 'icon-briefcase-o', 'icon-rocket-o', 'icon-bug-o', 'icon-leaf-o', 'icon-clapperboard', 'icon-sitemap-o', 'icon-flash-on-o', 'icon-piggy-bank-o', 'icon-graduation-cap-o', 'icon-paper-plane-o', 'icon-globe-o', 'icon-music-o', 'icon-detail', 'icon-beach-o', 'icon-paper', 'icon-home-o', 'icon-building', 'icon-database-o', 'icon-microscope-o', 'icon-hamburger-o', 'icon-trophy-o', 'icon-thumbs-o-up', 'icon-thumbs-o-down', 'icon-smile-o', 'icon-frown-o', 'icon-meh-o', 'icon-bullseye', 'icon-square-dotted-o'

start: string

(Optional) When this sublist was aimed to start.

due: string

(Optional) When this sublist was aimed to complete.

changes: Change

(Optional) A list of changes to control what tasks to be added to or removed from this sublist.

Request Example
{
  "name": "Sublist 101",
  "id": "Sublist101",
  "archived": true,
  "iconColor": "37",
  "description": "**Great** sublist to start with.",
  "image": "icon-view-kanban",
  "start": "2024-01-02",
  "due": "2024-05-25",
  "changes": [
    {
      "exclude": false,
      "single": false,
      "task": "2MmYOpJH_ZLeehIjjytH1Rwr"
    }
  ]
}
200 OK

successful operation

Response Content-Types: application/json
Response Example (200 OK)
{
  "name": "Sublist 101",
  "id": "Sublist101",
  "nameText": "Sublist 101",
  "nameHtml": "Sublist 101",
  "url": "https://quire.io/w/my_project?sublist=Sublist101",
  "descriptionText": "This is cool!",
  "descriptionHtml": "This is <i>cool</i>!",
  "description": "This is *cool*!",
  "iconColor": "37",
  "image": "https://quire.s3.amazonaws.com/oid/image.jpg",
  "oid": "Dyh2YkFcu9uLgLFIeN1kB4Ld",
  "partner": {
    "color": "35",
    "name": "Foo",
    "oid": "Dyh2YkFcu9uLgLFIeN1kB4Ld"
  },
  "archivedAt": "2020-02-22T02:06:58.158Z",
  "start": "2024-01-02",
  "due": "2024-05-25",
  "owner": {
    "type": "Project",
    "url": "https://quire.io/u/my_id",
    "id": "my_id",
    "iconColor": "37",
    "image": "https://quire.s3.amazonaws.com/oid/image.jpg",
    "name": "Foo",
    "oid": "Dyh2YkFcu9uLgLFIeN1kB4Ld"
  },
  "createdAt": "2018-12-22T02:06:58.158Z",
  "createdBy": {
    "id": "my_id",
    "url": "https://quire.io/u/my_id",
    "iconColor": "37",
    "image": "https://quire.s3.amazonaws.com/oid/image.jpg",
    "name": "Foo",
    "oid": "Dyh2YkFcu9uLgLFIeN1kB4Ld"
  }
}

Update a sublist by its OID.

PUT /sublist/{oid}

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

oid: string
in path

OID of sublist that needs to be updated

name: string

(Optional) The name of the sublist.

id: string

(Optional) ID of the sublist.

archived: boolean

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

iconColor: string

(Optional) The color of the icon representing this record. It is an index of our predefined color palette.

description: string

(Optional) An optional description about this task.

image: string

(Optional) The image representing this record. It shall be one of the predined images: 'icon-view-list', 'icon-view-kanban', 'icon-briefcase-o', 'icon-rocket-o', 'icon-bug-o', 'icon-leaf-o', 'icon-clapperboard', 'icon-sitemap-o', 'icon-flash-on-o', 'icon-piggy-bank-o', 'icon-graduation-cap-o', 'icon-paper-plane-o', 'icon-globe-o', 'icon-music-o', 'icon-detail', 'icon-beach-o', 'icon-paper', 'icon-home-o', 'icon-building', 'icon-database-o', 'icon-microscope-o', 'icon-hamburger-o', 'icon-trophy-o', 'icon-thumbs-o-up', 'icon-thumbs-o-down', 'icon-smile-o', 'icon-frown-o', 'icon-meh-o', 'icon-bullseye', 'icon-square-dotted-o'

start: string

(Optional) When this sublist was aimed to start.

due: string

(Optional) When this sublist was aimed to complete.

changes: Change

(Optional) A list of changes to control what tasks to be added to or removed from this sublist.

Request Example
{
  "name": "Sublist 101",
  "id": "Sublist101",
  "archived": true,
  "iconColor": "37",
  "description": "**Great** sublist to start with.",
  "image": "icon-view-kanban",
  "start": "2024-01-02",
  "due": "2024-05-25",
  "changes": [
    {
      "exclude": false,
      "single": false,
      "task": "2MmYOpJH_ZLeehIjjytH1Rwr"
    }
  ]
}
200 OK

successful operation

Response Content-Types: application/json
Response Example (200 OK)
{
  "name": "Sublist 101",
  "id": "Sublist101",
  "nameText": "Sublist 101",
  "nameHtml": "Sublist 101",
  "url": "https://quire.io/w/my_project?sublist=Sublist101",
  "descriptionText": "This is cool!",
  "descriptionHtml": "This is <i>cool</i>!",
  "description": "This is *cool*!",
  "iconColor": "37",
  "image": "https://quire.s3.amazonaws.com/oid/image.jpg",
  "oid": "Dyh2YkFcu9uLgLFIeN1kB4Ld",
  "partner": {
    "color": "35",
    "name": "Foo",
    "oid": "Dyh2YkFcu9uLgLFIeN1kB4Ld"
  },
  "archivedAt": "2020-02-22T02:06:58.158Z",
  "start": "2024-01-02",
  "due": "2024-05-25",
  "owner": {
    "type": "Project",
    "url": "https://quire.io/u/my_id",
    "id": "my_id",
    "iconColor": "37",
    "image": "https://quire.s3.amazonaws.com/oid/image.jpg",
    "name": "Foo",
    "oid": "Dyh2YkFcu9uLgLFIeN1kB4Ld"
  },
  "createdAt": "2018-12-22T02:06:58.158Z",
  "createdBy": {
    "id": "my_id",
    "url": "https://quire.io/u/my_id",
    "iconColor": "37",
    "image": "https://quire.s3.amazonaws.com/oid/image.jpg",
    "name": "Foo",
    "oid": "Dyh2YkFcu9uLgLFIeN1kB4Ld"
  }
}

Delete a sublist by its ID

DELETE /sublist/id/{ownerType}/{ownerId}/{id}

Delete an existing sublist of the given OID.

ownerType: string
in path

The type of the owner. It can be project, organization, folder or smart-folder. If omitted, project is assumed. For example, /id/this_is_id is equivalent to /id/project/this_is_id.

ownerId: string
in path

ID of the owner.

200 OK

ok

Response Content-Types: application/json

Delete a sublist by its OID

DELETE /sublist/{oid}

Delete an existing sublist of the given OID.

oid: string
in path

OID of sublist that needs to be deleted

200 OK

ok

Response Content-Types: application/json

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. Specify "-" if you'd like to add it to the personal tasks that belong to no specific projects in My Tasks.

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": {
    "id": "my_id",
    "url": "https://quire.io/u/my_id",
    "iconColor": "37",
    "image": "https://quire.s3.amazonaws.com/oid/image.jpg",
    "name": "Foo",
    "oid": "Dyh2YkFcu9uLgLFIeN1kB4Ld"
  },
  "createdAt": "2018-12-22T02:06:58.158Z",
  "createdBy": "#/definitions/SimpleIdentity"
}
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. Specify "-" if you'd like to add it to the personal tasks that belong to no specific projects in My Tasks.

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": {
    "id": "my_id",
    "url": "https://quire.io/u/my_id",
    "iconColor": "37",
    "image": "https://quire.s3.amazonaws.com/oid/image.jpg",
    "name": "Foo",
    "oid": "Dyh2YkFcu9uLgLFIeN1kB4Ld"
  },
  "createdAt": "2018-12-22T02:06:58.158Z",
  "createdBy": "#/definitions/SimpleIdentity"
}
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": {
    "id": "my_id",
    "url": "https://quire.io/u/my_id",
    "iconColor": "37",
    "image": "https://quire.s3.amazonaws.com/oid/image.jpg",
    "name": "Foo",
    "oid": "Dyh2YkFcu9uLgLFIeN1kB4Ld"
  },
  "createdAt": "2018-12-22T02:06:58.158Z",
  "createdBy": "#/definitions/SimpleIdentity"
}
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. Specify "-" if you'd like to retrieve tags from the personal tasks that belong to no specific projects in My Tasks.

200 OK

successful operation

Response Content-Types: application/json
Response Example (200 OK)
[
  {
    "global": true,
    "name": "Later",
    "color": "35",
    "oid": "Dyh2YkFcu9uLgLFIeN1kB4Ld",
    "project": {
      "id": "my_id",
      "url": "https://quire.io/u/my_id",
      "iconColor": "37",
      "image": "https://quire.s3.amazonaws.com/oid/image.jpg",
      "name": "Foo",
      "oid": "Dyh2YkFcu9uLgLFIeN1kB4Ld"
    },
    "createdAt": "2018-12-22T02:06:58.158Z",
    "createdBy": "#/definitions/SimpleIdentity"
  }
]
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. Specify "-" if you'd like to retrieve tags from the personal tasks that belong to no specific projects in My Tasks.

200 OK

successful operation

Response Content-Types: application/json
Response Example (200 OK)
[
  {
    "global": true,
    "name": "Later",
    "color": "35",
    "oid": "Dyh2YkFcu9uLgLFIeN1kB4Ld",
    "project": {
      "id": "my_id",
      "url": "https://quire.io/u/my_id",
      "iconColor": "37",
      "image": "https://quire.s3.amazonaws.com/oid/image.jpg",
      "name": "Foo",
      "oid": "Dyh2YkFcu9uLgLFIeN1kB4Ld"
    },
    "createdAt": "2018-12-22T02:06:58.158Z",
    "createdBy": "#/definitions/SimpleIdentity"
  }
]
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.

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.

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.

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

successful operation

Response Content-Types: application/json
Response Example (200 OK)
{
  "global": true,
  "name": "Later",
  "color": "35",
  "oid": "Dyh2YkFcu9uLgLFIeN1kB4Ld",
  "project": {
    "id": "my_id",
    "url": "https://quire.io/u/my_id",
    "iconColor": "37",
    "image": "https://quire.s3.amazonaws.com/oid/image.jpg",
    "name": "Foo",
    "oid": "Dyh2YkFcu9uLgLFIeN1kB4Ld"
  },
  "createdAt": "2018-12-22T02:06:58.158Z",
  "createdBy": "#/definitions/SimpleIdentity"
}
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. Specify "-" if you'd like to add it to the personal tasks that belong to no specific projects in My Tasks.

name: string

The name of the task.

assignees: string[]

(Optional) OID, ID or emails of the users that this task is assigned to.

recurrence: Recurrence

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

  • freq: daily, weekly, monthly, yearly
  • interval: The interval between each freq iteration. Default: 1.
  • until: The last recurrence is less than or equals to the specified value. Default: never ends.
  • bymonth: If given, it must be an integer, starting from 1, meaning the month to apply to. It is supported only if freq is yearly. Default: 1 meaning January.
  • byweekno: If given, it must be an integer, meaning the week number, or last meaning the last week. The value starts with 1. It is supported only for monthly and yearly.
  • byweekday: If given, it must be an integer: 0 for Monday, 1 for Tuesday, and so on. For weekly, it is a list of integers, such as [1] and [0, 3]. When given, these values will define the weekdays where the recurrence will be applied.
  • bydayno: If given, it must be an integer, starting from 1, meaning the day to apply to. It is supported only for monthly and yearly.
    • Note: byweekday and bydayno can not be specified at the same time.
  • dupsubtasks: Whether to duplicate the subtasks when the task is completed. Default: true.
  • sincelatest: Whether to repeat it since the last date the task is completed. It is available only for daily. Default: false.
peekaboo:
boolean
integer

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

If a positive integer is specified, it is the number of days to peekaboo a task. If true, it won't be reshowed automatically.

Default: false.

successors: string[]

(Optional) OID or ID of successors of this task.

To specify task's ID, you can specify as #id or id.

Example, 'AMZ0-59R125-35KTK2356G', '#13', and 135.

yourField: object

(Optional) Specify a value to your custom field. The name and value depends on your definition of the custom field.

  • For Money type, please specify the value directly (without currency).
  • For User or Task type, please specify the OID.
  • For Duration type, please specify number of seconds.
  • For multiple values, you can specify a list of values.
followers: string[]

(Optional) OID, ID or emails 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".

description: string

(Optional) An optional description about this task.

section: boolean

(Optional) Specify whether this task is a section. Default: false.

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.

tags: string[]

(Optional) OID or names of the tags to be added to the new created task. Note: if tag's name is specified, it is case-insensitive.

start: string

(Optional) An optional start time. If you'd like to specify time, use yyyy-mm-ddThh:mmZ, e.g., 2020-10-30T09:30Z. Note: they must be in UTC time, and we don't support seconds.

If you don't like to set time, use yyyy-mm-dd, e.g., 2020-10-30.

Also note: for backward compatibility, 2020-10-30T00:00:00 (all zero and up to second) is considered the same as 2020-10-30, i.e., without time. OTOH, To specify time at midnight in UTC, please specify 2020-10-30T00:00 (no second)

due: string

(Optional) An optional due time. If you'd like to specify time, use yyyy-mm-ddThh:mmZ, e.g., 2020-10-30T09:30Z. Note: they must be in UTC time, and we don't support seconds.

If you don't like to set time, use yyyy-mm-dd, e.g., 2020-10-30.

Also note: for backward compatibility, 2020-10-30T00:00:00 (all zero and up to second) is considered the same as 2020-10-30, i.e., without time. OTOH, To specify time at midnight in UTC, please specify 2020-10-30T00:00 (no second)

tasks: CreateTaskBody

(Optional) A list of subtasks to create.

priority: integer

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

etc: integer

(Optional) The estimated time to complete. If specified, it must be non-negative. Unit: seconds.

status: integer

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

Request Example
{
  "name": "Design new **logo**",
  "assignees": [
    "6QMKkEPBVWETLWrXqws94ALU"
  ],
  "recurrence": {
    "byweekday": [
      "integer (int32)"
    ],
    "interval": 1,
    "dupsubtasks": false,
    "sincelatest": true,
    "byweekno": 2,
    "freq": "weekly",
    "bydayno": 25,
    "bymonth": 10,
    "until": "2020-12-22"
  },
  "peekaboo": true,
  "successors": [
    "string"
  ],
  "yourField": "object",
  "followers": [
    "tzufRLqCnud74dARyDSvjWDl"
  ],
  "description": "This is a *cool* task.",
  "section": true,
  "asUser": true,
  "tags": [
    "X6nmx9XjEO2wKbqeB1pRT43C"
  ],
  "start": "2018-12-20T00:00:00.000Z",
  "due": "2018-12-22T00:00:00.000Z",
  "tasks": [
    "#/definitions/CreateTaskBody"
  ],
  "priority": 0,
  "etc": 0,
  "status": 0
}
200 OK

successful operation

Response Content-Types: application/json
Response Example (200 OK)
{
  "successors": [
    "string"
  ],
  "oid": "Dyh2YkFcu9uLgLFIeN1kB4Ld",
  "id": 12,
  "name": "Design new **logo**",
  "nameText": "Design new logo",
  "nameHtml": "Design new <b>logo</b>",
  "descriptionText": "This is a cool task.",
  "descriptionHtml": "This is a <i>cool</i> task.",
  "description": "This is a *cool* task.",
  "recurrence": {
    "byweekday": [
      "integer (int32)"
    ],
    "interval": 1,
    "dupsubtasks": false,
    "sincelatest": true,
    "byweekno": 2,
    "freq": "weekly",
    "bydayno": 25,
    "bymonth": 10,
    "until": "2020-12-22"
  },
  "timelogs": [
    {
      "start": "2023-02-20T00:00:00.000Z",
      "end": "2023-02-20T00:05:35.000Z",
      "user": {
        "id": "my_id",
        "url": "https://quire.io/u/my_id",
        "iconColor": "37",
        "image": "https://quire.s3.amazonaws.com/oid/image.jpg",
        "name": "Foo",
        "oid": "Dyh2YkFcu9uLgLFIeN1kB4Ld"
      },
      "billable": true,
      "note": "A piece of cake"
    }
  ],
  "etc": 500,
  "priority": 0,
  "start": "2018-12-20T00:00:00.000Z",
  "due": "2018-12-22T00:00:00.000Z",
  "status": 0,
  "assignors": [
    "#/definitions/SimpleIdentity"
  ],
  "partnerBy": "#/definitions/SimpleIdentity",
  "partner": {
    "color": "35",
    "name": "Foo",
    "oid": "Dyh2YkFcu9uLgLFIeN1kB4Ld"
  },
  "assignees": [
    "#/definitions/SimpleIdentity"
  ],
  "tags": [
    "#/definitions/SimpleTaggingEntity"
  ],
  "order": 99,
  "attachments": [
    {
      "name": "file.zip",
      "length": 20000,
      "type": 1,
      "url": "https://quire.io/att/Ta/sdcQOGgeUtyaFFzb9p0IwAgi/qfqVmUtC/image.png",
      "createdAt": "2018-12-22T02:06:58.158Z",
      "createdBy": "#/definitions/SimpleIdentity"
    }
  ],
  "cover": "qfqVmUtC",
  "childCount": 5,
  "referrers": [
    {
      "user": "wrSpgghWFCzPHBqiShSurDeD",
      "when": "2018-12-22T02:06:58.158Z",
      "task": "wrSpgghWFCzPHBqiShSurDeD"
    }
  ],
  "toggledAt": "2018-12-22T02:06:58.158Z",
  "toggledBy": "#/definitions/SimpleIdentity",
  "editedAt": "2018-12-22T02:06:58.158Z",
  "peekaboo": true,
  "section": true,
  "url": "https://quire.io/w/my_project/123",
  "favorites": [
    "#/definitions/SimpleIdentity"
  ],
  "followers": [
    "#/definitions/SimpleIdentity"
  ],
  "mutes": [
    "#/definitions/SimpleIdentity"
  ],
  "project": "#/definitions/SimpleIdentity",
  "createdAt": "2018-12-22T02:06:58.158Z",
  "createdBy": "#/definitions/SimpleIdentity"
}

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. Specify "-" if you'd like to add it to the personal tasks that belong to no specific projects in My Tasks.

name: string

The name of the task.

assignees: string[]

(Optional) OID, ID or emails of the users that this task is assigned to.

recurrence: Recurrence

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

  • freq: daily, weekly, monthly, yearly
  • interval: The interval between each freq iteration. Default: 1.
  • until: The last recurrence is less than or equals to the specified value. Default: never ends.
  • bymonth: If given, it must be an integer, starting from 1, meaning the month to apply to. It is supported only if freq is yearly. Default: 1 meaning January.
  • byweekno: If given, it must be an integer, meaning the week number, or last meaning the last week. The value starts with 1. It is supported only for monthly and yearly.
  • byweekday: If given, it must be an integer: 0 for Monday, 1 for Tuesday, and so on. For weekly, it is a list of integers, such as [1] and [0, 3]. When given, these values will define the weekdays where the recurrence will be applied.
  • bydayno: If given, it must be an integer, starting from 1, meaning the day to apply to. It is supported only for monthly and yearly.
    • Note: byweekday and bydayno can not be specified at the same time.
  • dupsubtasks: Whether to duplicate the subtasks when the task is completed. Default: true.
  • sincelatest: Whether to repeat it since the last date the task is completed. It is available only for daily. Default: false.
peekaboo:
boolean
integer

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

If a positive integer is specified, it is the number of days to peekaboo a task. If true, it won't be reshowed automatically.

Default: false.

successors: string[]

(Optional) OID or ID of successors of this task.

To specify task's ID, you can specify as #id or id.

Example, 'AMZ0-59R125-35KTK2356G', '#13', and 135.

yourField: object

(Optional) Specify a value to your custom field. The name and value depends on your definition of the custom field.

  • For Money type, please specify the value directly (without currency).
  • For User or Task type, please specify the OID.
  • For Duration type, please specify number of seconds.
  • For multiple values, you can specify a list of values.
followers: string[]

(Optional) OID, ID or emails 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".

description: string

(Optional) An optional description about this task.

section: boolean

(Optional) Specify whether this task is a section. Default: false.

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.

tags: string[]

(Optional) OID or names of the tags to be added to the new created task. Note: if tag's name is specified, it is case-insensitive.

start: string

(Optional) An optional start time. If you'd like to specify time, use yyyy-mm-ddThh:mmZ, e.g., 2020-10-30T09:30Z. Note: they must be in UTC time, and we don't support seconds.

If you don't like to set time, use yyyy-mm-dd, e.g., 2020-10-30.

Also note: for backward compatibility, 2020-10-30T00:00:00 (all zero and up to second) is considered the same as 2020-10-30, i.e., without time. OTOH, To specify time at midnight in UTC, please specify 2020-10-30T00:00 (no second)

due: string

(Optional) An optional due time. If you'd like to specify time, use yyyy-mm-ddThh:mmZ, e.g., 2020-10-30T09:30Z. Note: they must be in UTC time, and we don't support seconds.

If you don't like to set time, use yyyy-mm-dd, e.g., 2020-10-30.

Also note: for backward compatibility, 2020-10-30T00:00:00 (all zero and up to second) is considered the same as 2020-10-30, i.e., without time. OTOH, To specify time at midnight in UTC, please specify 2020-10-30T00:00 (no second)

tasks: CreateTaskBody

(Optional) A list of subtasks to create.

priority: integer

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

etc: integer

(Optional) The estimated time to complete. If specified, it must be non-negative. Unit: seconds.

status: integer

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

Request Example
{
  "name": "Design new **logo**",
  "assignees": [
    "6QMKkEPBVWETLWrXqws94ALU"
  ],
  "recurrence": {
    "byweekday": [
      "integer (int32)"
    ],
    "interval": 1,
    "dupsubtasks": false,
    "sincelatest": true,
    "byweekno": 2,
    "freq": "weekly",
    "bydayno": 25,
    "bymonth": 10,
    "until": "2020-12-22"
  },
  "peekaboo": true,
  "successors": [
    "string"
  ],
  "yourField": "object",
  "followers": [
    "tzufRLqCnud74dARyDSvjWDl"
  ],
  "description": "This is a *cool* task.",
  "section": true,
  "asUser": true,
  "tags": [
    "X6nmx9XjEO2wKbqeB1pRT43C"
  ],
  "start": "2018-12-20T00:00:00.000Z",
  "due": "2018-12-22T00:00:00.000Z",
  "tasks": [
    "#/definitions/CreateTaskBody"
  ],
  "priority": 0,
  "etc": 0,
  "status": 0
}
200 OK

successful operation

Response Content-Types: application/json
Response Example (200 OK)
{
  "successors": [
    "string"
  ],
  "oid": "Dyh2YkFcu9uLgLFIeN1kB4Ld",
  "id": 12,
  "name": "Design new **logo**",
  "nameText": "Design new logo",
  "nameHtml": "Design new <b>logo</b>",
  "descriptionText": "This is a cool task.",
  "descriptionHtml": "This is a <i>cool</i> task.",
  "description": "This is a *cool* task.",
  "recurrence": {
    "byweekday": [
      "integer (int32)"
    ],
    "interval": 1,
    "dupsubtasks": false,
    "sincelatest": true,
    "byweekno": 2,
    "freq": "weekly",
    "bydayno": 25,
    "bymonth": 10,
    "until": "2020-12-22"
  },
  "timelogs": [
    {
      "start": "2023-02-20T00:00:00.000Z",
      "end": "2023-02-20T00:05:35.000Z",
      "user": {
        "id": "my_id",
        "url": "https://quire.io/u/my_id",
        "iconColor": "37",
        "image": "https://quire.s3.amazonaws.com/oid/image.jpg",
        "name": "Foo",
        "oid": "Dyh2YkFcu9uLgLFIeN1kB4Ld"
      },
      "billable": true,
      "note": "A piece of cake"
    }
  ],
  "etc": 500,
  "priority": 0,
  "start": "2018-12-20T00:00:00.000Z",
  "due": "2018-12-22T00:00:00.000Z",
  "status": 0,
  "assignors": [
    "#/definitions/SimpleIdentity"
  ],
  "partnerBy": "#/definitions/SimpleIdentity",
  "partner": {
    "color": "35",
    "name": "Foo",
    "oid": "Dyh2YkFcu9uLgLFIeN1kB4Ld"
  },
  "assignees": [
    "#/definitions/SimpleIdentity"
  ],
  "tags": [
    "#/definitions/SimpleTaggingEntity"
  ],
  "order": 99,
  "attachments": [
    {
      "name": "file.zip",
      "length": 20000,
      "type": 1,
      "url": "https://quire.io/att/Ta/sdcQOGgeUtyaFFzb9p0IwAgi/qfqVmUtC/image.png",
      "createdAt": "2018-12-22T02:06:58.158Z",
      "createdBy": "#/definitions/SimpleIdentity"
    }
  ],
  "cover": "qfqVmUtC",
  "childCount": 5,
  "referrers": [
    {
      "user": "wrSpgghWFCzPHBqiShSurDeD",
      "when": "2018-12-22T02:06:58.158Z",
      "task": "wrSpgghWFCzPHBqiShSurDeD"
    }
  ],
  "toggledAt": "2018-12-22T02:06:58.158Z",
  "toggledBy": "#/definitions/SimpleIdentity",
  "editedAt": "2018-12-22T02:06:58.158Z",
  "peekaboo": true,
  "section": true,
  "url": "https://quire.io/w/my_project/123",
  "favorites": [
    "#/definitions/SimpleIdentity"
  ],
  "followers": [
    "#/definitions/SimpleIdentity"
  ],
  "mutes": [
    "#/definitions/SimpleIdentity"
  ],
  "project": "#/definitions/SimpleIdentity",
  "createdAt": "2018-12-22T02:06:58.158Z",
  "createdBy": "#/definitions/SimpleIdentity"
}

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.

assignees: string[]

(Optional) OID, ID or emails of the users that this task is assigned to.

recurrence: Recurrence

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

  • freq: daily, weekly, monthly, yearly
  • interval: The interval between each freq iteration. Default: 1.
  • until: The last recurrence is less than or equals to the specified value. Default: never ends.
  • bymonth: If given, it must be an integer, starting from 1, meaning the month to apply to. It is supported only if freq is yearly. Default: 1 meaning January.
  • byweekno: If given, it must be an integer, meaning the week number, or last meaning the last week. The value starts with 1. It is supported only for monthly and yearly.
  • byweekday: If given, it must be an integer: 0 for Monday, 1 for Tuesday, and so on. For weekly, it is a list of integers, such as [1] and [0, 3]. When given, these values will define the weekdays where the recurrence will be applied.
  • bydayno: If given, it must be an integer, starting from 1, meaning the day to apply to. It is supported only for monthly and yearly.
    • Note: byweekday and bydayno can not be specified at the same time.
  • dupsubtasks: Whether to duplicate the subtasks when the task is completed. Default: true.
  • sincelatest: Whether to repeat it since the last date the task is completed. It is available only for daily. Default: false.
peekaboo:
boolean
integer

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

If a positive integer is specified, it is the number of days to peekaboo a task. If true, it won't be reshowed automatically.

Default: false.

successors: string[]

(Optional) OID or ID of successors of this task.

To specify task's ID, you can specify as #id or id.

Example, 'AMZ0-59R125-35KTK2356G', '#13', and 135.

yourField: object

(Optional) Specify a value to your custom field. The name and value depends on your definition of the custom field.

  • For Money type, please specify the value directly (without currency).
  • For User or Task type, please specify the OID.
  • For Duration type, please specify number of seconds.
  • For multiple values, you can specify a list of values.
followers: string[]

(Optional) OID, ID or emails 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".

description: string

(Optional) An optional description about this task.

section: boolean

(Optional) Specify whether this task is a section. Default: false.

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.

tags: string[]

(Optional) OID or names of the tags to be added to the new created task. Note: if tag's name is specified, it is case-insensitive.

start: string

(Optional) An optional start time. If you'd like to specify time, use yyyy-mm-ddThh:mmZ, e.g., 2020-10-30T09:30Z. Note: they must be in UTC time, and we don't support seconds.

If you don't like to set time, use yyyy-mm-dd, e.g., 2020-10-30.

Also note: for backward compatibility, 2020-10-30T00:00:00 (all zero and up to second) is considered the same as 2020-10-30, i.e., without time. OTOH, To specify time at midnight in UTC, please specify 2020-10-30T00:00 (no second)

due: string

(Optional) An optional due time. If you'd like to specify time, use yyyy-mm-ddThh:mmZ, e.g., 2020-10-30T09:30Z. Note: they must be in UTC time, and we don't support seconds.

If you don't like to set time, use yyyy-mm-dd, e.g., 2020-10-30.

Also note: for backward compatibility, 2020-10-30T00:00:00 (all zero and up to second) is considered the same as 2020-10-30, i.e., without time. OTOH, To specify time at midnight in UTC, please specify 2020-10-30T00:00 (no second)

tasks: CreateTaskBody

(Optional) A list of subtasks to create.

priority: integer

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

etc: integer

(Optional) The estimated time to complete. If specified, it must be non-negative. Unit: seconds.

status: integer

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

Request Example
{
  "name": "Design new **logo**",
  "assignees": [
    "6QMKkEPBVWETLWrXqws94ALU"
  ],
  "recurrence": {
    "byweekday": [
      "integer (int32)"
    ],
    "interval": 1,
    "dupsubtasks": false,
    "sincelatest": true,
    "byweekno": 2,
    "freq": "weekly",
    "bydayno": 25,
    "bymonth": 10,
    "until": "2020-12-22"
  },
  "peekaboo": true,
  "successors": [
    "string"
  ],
  "yourField": "object",
  "followers": [
    "tzufRLqCnud74dARyDSvjWDl"
  ],
  "description": "This is a *cool* task.",
  "section": true,
  "asUser": true,
  "tags": [
    "X6nmx9XjEO2wKbqeB1pRT43C"
  ],
  "start": "2018-12-20T00:00:00.000Z",
  "due": "2018-12-22T00:00:00.000Z",
  "tasks": [
    "#/definitions/CreateTaskBody"
  ],
  "priority": 0,
  "etc": 0,
  "status": 0
}
200 OK

successful operation

Response Content-Types: application/json
Response Example (200 OK)
{
  "successors": [
    "string"
  ],
  "oid": "Dyh2YkFcu9uLgLFIeN1kB4Ld",
  "id": 12,
  "name": "Design new **logo**",
  "nameText": "Design new logo",
  "nameHtml": "Design new <b>logo</b>",
  "descriptionText": "This is a cool task.",
  "descriptionHtml": "This is a <i>cool</i> task.",
  "description": "This is a *cool* task.",
  "recurrence": {
    "byweekday": [
      "integer (int32)"
    ],
    "interval": 1,
    "dupsubtasks": false,
    "sincelatest": true,
    "byweekno": 2,
    "freq": "weekly",
    "bydayno": 25,
    "bymonth": 10,
    "until": "2020-12-22"
  },
  "timelogs": [
    {
      "start": "2023-02-20T00:00:00.000Z",
      "end": "2023-02-20T00:05:35.000Z",
      "user": {
        "id": "my_id",
        "url": "https://quire.io/u/my_id",
        "iconColor": "37",
        "image": "https://quire.s3.amazonaws.com/oid/image.jpg",
        "name": "Foo",
        "oid": "Dyh2YkFcu9uLgLFIeN1kB4Ld"
      },
      "billable": true,
      "note": "A piece of cake"
    }
  ],
  "etc": 500,
  "priority": 0,
  "start": "2018-12-20T00:00:00.000Z",
  "due": "2018-12-22T00:00:00.000Z",
  "status": 0,
  "assignors": [
    "#/definitions/SimpleIdentity"
  ],
  "partnerBy": "#/definitions/SimpleIdentity",
  "partner": {
    "color": "35",
    "name": "Foo",
    "oid": "Dyh2YkFcu9uLgLFIeN1kB4Ld"
  },
  "assignees": [
    "#/definitions/SimpleIdentity"
  ],
  "tags": [
    "#/definitions/SimpleTaggingEntity"
  ],
  "order": 99,
  "attachments": [
    {
      "name": "file.zip",
      "length": 20000,
      "type": 1,
      "url": "https://quire.io/att/Ta/sdcQOGgeUtyaFFzb9p0IwAgi/qfqVmUtC/image.png",
      "createdAt": "2018-12-22T02:06:58.158Z",
      "createdBy": "#/definitions/SimpleIdentity"
    }
  ],
  "cover": "qfqVmUtC",
  "childCount": 5,
  "referrers": [
    {
      "user": "wrSpgghWFCzPHBqiShSurDeD",
      "when": "2018-12-22T02:06:58.158Z",
      "task": "wrSpgghWFCzPHBqiShSurDeD"
    }
  ],
  "toggledAt": "2018-12-22T02:06:58.158Z",
  "toggledBy": "#/definitions/SimpleIdentity",
  "editedAt": "2018-12-22T02:06:58.158Z",
  "peekaboo": true,
  "section": true,
  "url": "https://quire.io/w/my_project/123",
  "favorites": [
    "#/definitions/SimpleIdentity"
  ],
  "followers": [
    "#/definitions/SimpleIdentity"
  ],
  "mutes": [
    "#/definitions/SimpleIdentity"
  ],
  "project": "#/definitions/SimpleIdentity",
  "createdAt": "2018-12-22T02:06:58.158Z",
  "createdBy": "#/definitions/SimpleIdentity"
}

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.

assignees: string[]

(Optional) OID, ID or emails of the users that this task is assigned to.

recurrence: Recurrence

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

  • freq: daily, weekly, monthly, yearly
  • interval: The interval between each freq iteration. Default: 1.
  • until: The last recurrence is less than or equals to the specified value. Default: never ends.
  • bymonth: If given, it must be an integer, starting from 1, meaning the month to apply to. It is supported only if freq is yearly. Default: 1 meaning January.
  • byweekno: If given, it must be an integer, meaning the week number, or last meaning the last week. The value starts with 1. It is supported only for monthly and yearly.
  • byweekday: If given, it must be an integer: 0 for Monday, 1 for Tuesday, and so on. For weekly, it is a list of integers, such as [1] and [0, 3]. When given, these values will define the weekdays where the recurrence will be applied.
  • bydayno: If given, it must be an integer, starting from 1, meaning the day to apply to. It is supported only for monthly and yearly.
    • Note: byweekday and bydayno can not be specified at the same time.
  • dupsubtasks: Whether to duplicate the subtasks when the task is completed. Default: true.
  • sincelatest: Whether to repeat it since the last date the task is completed. It is available only for daily. Default: false.
peekaboo:
boolean
integer

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

If a positive integer is specified, it is the number of days to peekaboo a task. If true, it won't be reshowed automatically.

Default: false.

successors: string[]

(Optional) OID or ID of successors of this task.

To specify task's ID, you can specify as #id or id.

Example, 'AMZ0-59R125-35KTK2356G', '#13', and 135.

yourField: object

(Optional) Specify a value to your custom field. The name and value depends on your definition of the custom field.

  • For Money type, please specify the value directly (without currency).
  • For User or Task type, please specify the OID.
  • For Duration type, please specify number of seconds.
  • For multiple values, you can specify a list of values.
followers: string[]

(Optional) OID, ID or emails 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".

description: string

(Optional) An optional description about this task.

section: boolean

(Optional) Specify whether this task is a section. Default: false.

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.

tags: string[]

(Optional) OID or names of the tags to be added to the new created task. Note: if tag's name is specified, it is case-insensitive.

start: string

(Optional) An optional start time. If you'd like to specify time, use yyyy-mm-ddThh:mmZ, e.g., 2020-10-30T09:30Z. Note: they must be in UTC time, and we don't support seconds.

If you don't like to set time, use yyyy-mm-dd, e.g., 2020-10-30.

Also note: for backward compatibility, 2020-10-30T00:00:00 (all zero and up to second) is considered the same as 2020-10-30, i.e., without time. OTOH, To specify time at midnight in UTC, please specify 2020-10-30T00:00 (no second)

due: string

(Optional) An optional due time. If you'd like to specify time, use yyyy-mm-ddThh:mmZ, e.g., 2020-10-30T09:30Z. Note: they must be in UTC time, and we don't support seconds.

If you don't like to set time, use yyyy-mm-dd, e.g., 2020-10-30.

Also note: for backward compatibility, 2020-10-30T00:00:00 (all zero and up to second) is considered the same as 2020-10-30, i.e., without time. OTOH, To specify time at midnight in UTC, please specify 2020-10-30T00:00 (no second)

tasks: CreateTaskBody

(Optional) A list of subtasks to create.

priority: integer

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

etc: integer

(Optional) The estimated time to complete. If specified, it must be non-negative. Unit: seconds.

status: integer

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

Request Example
{
  "name": "Design new **logo**",
  "assignees": [
    "6QMKkEPBVWETLWrXqws94ALU"
  ],
  "recurrence": {
    "byweekday": [
      "integer (int32)"
    ],
    "interval": 1,
    "dupsubtasks": false,
    "sincelatest": true,
    "byweekno": 2,
    "freq": "weekly",
    "bydayno": 25,
    "bymonth": 10,
    "until": "2020-12-22"
  },
  "peekaboo": true,
  "successors": [
    "string"
  ],
  "yourField": "object",
  "followers": [
    "tzufRLqCnud74dARyDSvjWDl"
  ],
  "description": "This is a *cool* task.",
  "section": true,
  "asUser": true,
  "tags": [
    "X6nmx9XjEO2wKbqeB1pRT43C"
  ],
  "start": "2018-12-20T00:00:00.000Z",
  "due": "2018-12-22T00:00:00.000Z",
  "tasks": [
    "#/definitions/CreateTaskBody"
  ],
  "priority": 0,
  "etc": 0,
  "status": 0
}
200 OK

successful operation

Response Content-Types: application/json
Response Example (200 OK)
{
  "successors": [
    "string"
  ],
  "oid": "Dyh2YkFcu9uLgLFIeN1kB4Ld",
  "id": 12,
  "name": "Design new **logo**",
  "nameText": "Design new logo",
  "nameHtml": "Design new <b>logo</b>",
  "descriptionText": "This is a cool task.",
  "descriptionHtml": "This is a <i>cool</i> task.",
  "description": "This is a *cool* task.",
  "recurrence": {
    "byweekday": [
      "integer (int32)"
    ],
    "interval": 1,
    "dupsubtasks": false,
    "sincelatest": true,
    "byweekno": 2,
    "freq": "weekly",
    "bydayno": 25,
    "bymonth": 10,
    "until": "2020-12-22"
  },
  "timelogs": [
    {
      "start": "2023-02-20T00:00:00.000Z",
      "end": "2023-02-20T00:05:35.000Z",
      "user": {
        "id": "my_id",
        "url": "https://quire.io/u/my_id",
        "iconColor": "37",
        "image": "https://quire.s3.amazonaws.com/oid/image.jpg",
        "name": "Foo",
        "oid": "Dyh2YkFcu9uLgLFIeN1kB4Ld"
      },
      "billable": true,
      "note": "A piece of cake"
    }
  ],
  "etc": 500,
  "priority": 0,
  "start": "2018-12-20T00:00:00.000Z",
  "due": "2018-12-22T00:00:00.000Z",
  "status": 0,
  "assignors": [
    "#/definitions/SimpleIdentity"
  ],
  "partnerBy": "#/definitions/SimpleIdentity",
  "partner": {
    "color": "35",
    "name": "Foo",
    "oid": "Dyh2YkFcu9uLgLFIeN1kB4Ld"
  },
  "assignees": [
    "#/definitions/SimpleIdentity"
  ],
  "tags": [
    "#/definitions/SimpleTaggingEntity"
  ],
  "order": 99,
  "attachments": [
    {
      "name": "file.zip",
      "length": 20000,
      "type": 1,
      "url": "https://quire.io/att/Ta/sdcQOGgeUtyaFFzb9p0IwAgi/qfqVmUtC/image.png",
      "createdAt": "2018-12-22T02:06:58.158Z",
      "createdBy": "#/definitions/SimpleIdentity"
    }
  ],
  "cover": "qfqVmUtC",
  "childCount": 5,
  "referrers": [
    {
      "user": "wrSpgghWFCzPHBqiShSurDeD",
      "when": "2018-12-22T02:06:58.158Z",
      "task": "wrSpgghWFCzPHBqiShSurDeD"
    }
  ],
  "toggledAt": "2018-12-22T02:06:58.158Z",
  "toggledBy": "#/definitions/SimpleIdentity",
  "editedAt": "2018-12-22T02:06:58.158Z",
  "peekaboo": true,
  "section": true,
  "url": "https://quire.io/w/my_project/123",
  "favorites": [
    "#/definitions/SimpleIdentity"
  ],
  "followers": [
    "#/definitions/SimpleIdentity"
  ],
  "mutes": [
    "#/definitions/SimpleIdentity"
  ],
  "project": "#/definitions/SimpleIdentity",
  "createdAt": "2018-12-22T02:06:58.158Z",
  "createdBy": "#/definitions/SimpleIdentity"
}

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. Specify "-" if you'd like to retrieve the personal tasks that belong to no specific projects in My Tasks.

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)
{
  "successors": [
    "string"
  ],
  "oid": "Dyh2YkFcu9uLgLFIeN1kB4Ld",
  "id": 12,
  "name": "Design new **logo**",
  "nameText": "Design new logo",
  "nameHtml": "Design new <b>logo</b>",
  "descriptionText": "This is a cool task.",
  "descriptionHtml": "This is a <i>cool</i> task.",
  "description": "This is a *cool* task.",
  "recurrence": {
    "byweekday": [
      "integer (int32)"
    ],
    "interval": 1,
    "dupsubtasks": false,
    "sincelatest": true,
    "byweekno": 2,
    "freq": "weekly",
    "bydayno": 25,
    "bymonth": 10,
    "until": "2020-12-22"
  },
  "timelogs": [
    {
      "start": "2023-02-20T00:00:00.000Z",
      "end": "2023-02-20T00:05:35.000Z",
      "user": {
        "id": "my_id",
        "url": "https://quire.io/u/my_id",
        "iconColor": "37",
        "image": "https://quire.s3.amazonaws.com/oid/image.jpg",
        "name": "Foo",
        "oid": "Dyh2YkFcu9uLgLFIeN1kB4Ld"
      },
      "billable": true,
      "note": "A piece of cake"
    }
  ],
  "etc": 500,
  "priority": 0,
  "start": "2018-12-20T00:00:00.000Z",
  "due": "2018-12-22T00:00:00.000Z",
  "status": 0,
  "assignors": [
    "#/definitions/SimpleIdentity"
  ],
  "partnerBy": "#/definitions/SimpleIdentity",
  "partner": {
    "color": "35",
    "name": "Foo",
    "oid": "Dyh2YkFcu9uLgLFIeN1kB4Ld"
  },
  "assignees": [
    "#/definitions/SimpleIdentity"
  ],
  "tags": [
    "#/definitions/SimpleTaggingEntity"
  ],
  "order": 99,
  "attachments": [
    {
      "name": "file.zip",
      "length": 20000,
      "type": 1,
      "url": "https://quire.io/att/Ta/sdcQOGgeUtyaFFzb9p0IwAgi/qfqVmUtC/image.png",
      "createdAt": "2018-12-22T02:06:58.158Z",
      "createdBy": "#/definitions/SimpleIdentity"
    }
  ],
  "cover": "qfqVmUtC",
  "childCount": 5,
  "referrers": [
    {
      "user": "wrSpgghWFCzPHBqiShSurDeD",
      "when": "2018-12-22T02:06:58.158Z",
      "task": "wrSpgghWFCzPHBqiShSurDeD"
    }
  ],
  "toggledAt": "2018-12-22T02:06:58.158Z",
  "toggledBy": "#/definitions/SimpleIdentity",
  "editedAt": "2018-12-22T02:06:58.158Z",
  "peekaboo": true,
  "section": true,
  "url": "https://quire.io/w/my_project/123",
  "favorites": [
    "#/definitions/SimpleIdentity"
  ],
  "followers": [
    "#/definitions/SimpleIdentity"
  ],
  "mutes": [
    "#/definitions/SimpleIdentity"
  ],
  "project": "#/definitions/SimpleIdentity",
  "createdAt": "2018-12-22T02:06:58.158Z",
  "createdBy": "#/definitions/SimpleIdentity"
}

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)
{
  "successors": [
    "string"
  ],
  "oid": "Dyh2YkFcu9uLgLFIeN1kB4Ld",
  "id": 12,
  "name": "Design new **logo**",
  "nameText": "Design new logo",
  "nameHtml": "Design new <b>logo</b>",
  "descriptionText": "This is a cool task.",
  "descriptionHtml": "This is a <i>cool</i> task.",
  "description": "This is a *cool* task.",
  "recurrence": {
    "byweekday": [
      "integer (int32)"
    ],
    "interval": 1,
    "dupsubtasks": false,
    "sincelatest": true,
    "byweekno": 2,
    "freq": "weekly",
    "bydayno": 25,
    "bymonth": 10,
    "until": "2020-12-22"
  },
  "timelogs": [
    {
      "start": "2023-02-20T00:00:00.000Z",
      "end": "2023-02-20T00:05:35.000Z",
      "user": {
        "id": "my_id",
        "url": "https://quire.io/u/my_id",
        "iconColor": "37",
        "image": "https://quire.s3.amazonaws.com/oid/image.jpg",
        "name": "Foo",
        "oid": "Dyh2YkFcu9uLgLFIeN1kB4Ld"
      },
      "billable": true,
      "note": "A piece of cake"
    }
  ],
  "etc": 500,
  "priority": 0,
  "start": "2018-12-20T00:00:00.000Z",
  "due": "2018-12-22T00:00:00.000Z",
  "status": 0,
  "assignors": [
    "#/definitions/SimpleIdentity"
  ],
  "partnerBy": "#/definitions/SimpleIdentity",
  "partner": {
    "color": "35",
    "name": "Foo",
    "oid": "Dyh2YkFcu9uLgLFIeN1kB4Ld"
  },
  "assignees": [
    "#/definitions/SimpleIdentity"
  ],
  "tags": [
    "#/definitions/SimpleTaggingEntity"
  ],
  "order": 99,
  "attachments": [
    {
      "name": "file.zip",
      "length": 20000,
      "type": 1,
      "url": "https://quire.io/att/Ta/sdcQOGgeUtyaFFzb9p0IwAgi/qfqVmUtC/image.png",
      "createdAt": "2018-12-22T02:06:58.158Z",
      "createdBy": "#/definitions/SimpleIdentity"
    }
  ],
  "cover": "qfqVmUtC",
  "childCount": 5,
  "referrers": [
    {
      "user": "wrSpgghWFCzPHBqiShSurDeD",
      "when": "2018-12-22T02:06:58.158Z",
      "task": "wrSpgghWFCzPHBqiShSurDeD"
    }
  ],
  "toggledAt": "2018-12-22T02:06:58.158Z",
  "toggledBy": "#/definitions/SimpleIdentity",
  "editedAt": "2018-12-22T02:06:58.158Z",
  "peekaboo": true,
  "section": true,
  "url": "https://quire.io/w/my_project/123",
  "favorites": [
    "#/definitions/SimpleIdentity"
  ],
  "followers": [
    "#/definitions/SimpleIdentity"
  ],
  "mutes": [
    "#/definitions/SimpleIdentity"
  ],
  "project": "#/definitions/SimpleIdentity",
  "createdAt": "2018-12-22T02:06:58.158Z",
  "createdBy": "#/definitions/SimpleIdentity"
}

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. Specify "-" if you'd like to retrieve the personal tasks that belong to no specific projects in My Tasks

taskId: integer
in path

ID of the parent task.

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)
[
  {
    "successors": [
      "string"
    ],
    "oid": "Dyh2YkFcu9uLgLFIeN1kB4Ld",
    "id": 12,
    "name": "Design new **logo**",
    "nameText": "Design new logo",
    "nameHtml": "Design new <b>logo</b>",
    "descriptionText": "This is a cool task.",
    "descriptionHtml": "This is a <i>cool</i> task.",
    "description": "This is a *cool* task.",
    "recurrence": {
      "byweekday": [
        "integer (int32)"
      ],
      "interval": 1,
      "dupsubtasks": false,
      "sincelatest": true,
      "byweekno": 2,
      "freq": "weekly",
      "bydayno": 25,
      "bymonth": 10,
      "until": "2020-12-22"
    },
    "timelogs": [
      {
        "start": "2023-02-20T00:00:00.000Z",
        "end": "2023-02-20T00:05:35.000Z",
        "user": {
          "id": "my_id",
          "url": "https://quire.io/u/my_id",
          "iconColor": "37",
          "image": "https://quire.s3.amazonaws.com/oid/image.jpg",
          "name": "Foo",
          "oid": "Dyh2YkFcu9uLgLFIeN1kB4Ld"
        },
        "billable": true,
        "note": "A piece of cake"
      }
    ],
    "etc": 500,
    "priority": 0,
    "start": "2018-12-20T00:00:00.000Z",
    "due": "2018-12-22T00:00:00.000Z",
    "status": 0,
    "assignors": [
      "#/definitions/SimpleIdentity"
    ],
    "partnerBy": "#/definitions/SimpleIdentity",
    "partner": {
      "color": "35",
      "name": "Foo",
      "oid": "Dyh2YkFcu9uLgLFIeN1kB4Ld"
    },
    "assignees": [
      "#/definitions/SimpleIdentity"
    ],
    "tags": [
      "#/definitions/SimpleTaggingEntity"
    ],
    "order": 99,
    "attachments": [
      {
        "name": "file.zip",
        "length": 20000,
        "type": 1,
        "url": "https://quire.io/att/Ta/sdcQOGgeUtyaFFzb9p0IwAgi/qfqVmUtC/image.png",
        "createdAt": "2018-12-22T02:06:58.158Z",
        "createdBy": "#/definitions/SimpleIdentity"
      }
    ],
    "cover": "qfqVmUtC",
    "childCount": 5,
    "referrers": [
      {
        "user": "wrSpgghWFCzPHBqiShSurDeD",
        "when": "2018-12-22T02:06:58.158Z",
        "task": "wrSpgghWFCzPHBqiShSurDeD"
      }
    ],
    "toggledAt": "2018-12-22T02:06:58.158Z",
    "toggledBy": "#/definitions/SimpleIdentity",
    "editedAt": "2018-12-22T02:06:58.158Z",
    "peekaboo": true,
    "section": true,
    "url": "https://quire.io/w/my_project/123",
    "favorites": [
      "#/definitions/SimpleIdentity"
    ],
    "followers": [
      "#/definitions/SimpleIdentity"
    ],
    "mutes": [
      "#/definitions/SimpleIdentity"
    ],
    "project": "#/definitions/SimpleIdentity",
    "createdAt": "2018-12-22T02:06:58.158Z",
    "createdBy": "#/definitions/SimpleIdentity"
  }
]

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. Specify "-" if you'd like to retrieve the personal tasks that belong to no specific projects in My Tasks.

200 OK

successful operation

Response Content-Types: application/json
Response Example (200 OK)
[
  {
    "successors": [
      "string"
    ],
    "oid": "Dyh2YkFcu9uLgLFIeN1kB4Ld",
    "id": 12,
    "name": "Design new **logo**",
    "nameText": "Design new logo",
    "nameHtml": "Design new <b>logo</b>",
    "descriptionText": "This is a cool task.",
    "descriptionHtml": "This is a <i>cool</i> task.",
    "description": "This is a *cool* task.",
    "recurrence": {
      "byweekday": [
        "integer (int32)"
      ],
      "interval": 1,
      "dupsubtasks": false,
      "sincelatest": true,
      "byweekno": 2,
      "freq": "weekly",
      "bydayno": 25,
      "bymonth": 10,
      "until": "2020-12-22"
    },
    "timelogs": [
      {
        "start": "2023-02-20T00:00:00.000Z",
        "end": "2023-02-20T00:05:35.000Z",
        "user": {
          "id": "my_id",
          "url": "https://quire.io/u/my_id",
          "iconColor": "37",
          "image": "https://quire.s3.amazonaws.com/oid/image.jpg",
          "name": "Foo",
          "oid": "Dyh2YkFcu9uLgLFIeN1kB4Ld"
        },
        "billable": true,
        "note": "A piece of cake"
      }
    ],
    "etc": 500,
    "priority": 0,
    "start": "2018-12-20T00:00:00.000Z",
    "due": "2018-12-22T00:00:00.000Z",
    "status": 0,
    "assignors": [
      "#/definitions/SimpleIdentity"
    ],
    "partnerBy": "#/definitions/SimpleIdentity",
    "partner": {
      "color": "35",
      "name": "Foo",
      "oid": "Dyh2YkFcu9uLgLFIeN1kB4Ld"
    },
    "assignees": [
      "#/definitions/SimpleIdentity"
    ],
    "tags": [
      "#/definitions/SimpleTaggingEntity"
    ],
    "order": 99,
    "attachments": [
      {
        "name": "file.zip",
        "length": 20000,
        "type": 1,
        "url": "https://quire.io/att/Ta/sdcQOGgeUtyaFFzb9p0IwAgi/qfqVmUtC/image.png",
        "createdAt": "2018-12-22T02:06:58.158Z",
        "createdBy": "#/definitions/SimpleIdentity"
      }
    ],
    "cover": "qfqVmUtC",
    "childCount": 5,
    "referrers": [
      {
        "user": "wrSpgghWFCzPHBqiShSurDeD",
        "when": "2018-12-22T02:06:58.158Z",
        "task": "wrSpgghWFCzPHBqiShSurDeD"
      }
    ],
    "toggledAt": "2018-12-22T02:06:58.158Z",
    "toggledBy": "#/definitions/SimpleIdentity",
    "editedAt": "2018-12-22T02:06:58.158Z",
    "peekaboo": true,
    "section": true,
    "url": "https://quire.io/w/my_project/123",
    "favorites": [
      "#/definitions/SimpleIdentity"
    ],
    "followers": [
      "#/definitions/SimpleIdentity"
    ],
    "mutes": [
      "#/definitions/SimpleIdentity"
    ],
    "project": "#/definitions/SimpleIdentity",
    "createdAt": "2018-12-22T02:06:58.158Z",
    "createdBy": "#/definitions/SimpleIdentity"
  }
]

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. Specify "-" if you'd like to retrieve the personal tasks that belong to no specific projects in My Tasks.

200 OK

successful operation

Response Content-Types: application/json
Response Example (200 OK)
[
  {
    "successors": [
      "string"
    ],
    "oid": "Dyh2YkFcu9uLgLFIeN1kB4Ld",
    "id": 12,
    "name": "Design new **logo**",
    "nameText": "Design new logo",
    "nameHtml": "Design new <b>logo</b>",
    "descriptionText": "This is a cool task.",
    "descriptionHtml": "This is a <i>cool</i> task.",
    "description": "This is a *cool* task.",
    "recurrence": {
      "byweekday": [
        "integer (int32)"
      ],
      "interval": 1,
      "dupsubtasks": false,
      "sincelatest": true,
      "byweekno": 2,
      "freq": "weekly",
      "bydayno": 25,
      "bymonth": 10,
      "until": "2020-12-22"
    },
    "timelogs": [
      {
        "start": "2023-02-20T00:00:00.000Z",
        "end": "2023-02-20T00:05:35.000Z",
        "user": {
          "id": "my_id",
          "url": "https://quire.io/u/my_id",
          "iconColor": "37",
          "image": "https://quire.s3.amazonaws.com/oid/image.jpg",
          "name": "Foo",
          "oid": "Dyh2YkFcu9uLgLFIeN1kB4Ld"
        },
        "billable": true,
        "note": "A piece of cake"
      }
    ],
    "etc": 500,
    "priority": 0,
    "start": "2018-12-20T00:00:00.000Z",
    "due": "2018-12-22T00:00:00.000Z",
    "status": 0,
    "assignors": [
      "#/definitions/SimpleIdentity"
    ],
    "partnerBy": "#/definitions/SimpleIdentity",
    "partner": {
      "color": "35",
      "name": "Foo",
      "oid": "Dyh2YkFcu9uLgLFIeN1kB4Ld"
    },
    "assignees": [
      "#/definitions/SimpleIdentity"
    ],
    "tags": [
      "#/definitions/SimpleTaggingEntity"
    ],
    "order": 99,
    "attachments": [
      {
        "name": "file.zip",
        "length": 20000,
        "type": 1,
        "url": "https://quire.io/att/Ta/sdcQOGgeUtyaFFzb9p0IwAgi/qfqVmUtC/image.png",
        "createdAt": "2018-12-22T02:06:58.158Z",
        "createdBy": "#/definitions/SimpleIdentity"
      }
    ],
    "cover": "qfqVmUtC",
    "childCount": 5,
    "referrers": [
      {
        "user": "wrSpgghWFCzPHBqiShSurDeD",
        "when": "2018-12-22T02:06:58.158Z",
        "task": "wrSpgghWFCzPHBqiShSurDeD"
      }
    ],
    "toggledAt": "2018-12-22T02:06:58.158Z",
    "toggledBy": "#/definitions/SimpleIdentity",
    "editedAt": "2018-12-22T02:06:58.158Z",
    "peekaboo": true,
    "section": true,
    "url": "https://quire.io/w/my_project/123",
    "favorites": [
      "#/definitions/SimpleIdentity"
    ],
    "followers": [
      "#/definitions/SimpleIdentity"
    ],
    "mutes": [
      "#/definitions/SimpleIdentity"
    ],
    "project": "#/definitions/SimpleIdentity",
    "createdAt": "2018-12-22T02:06:58.158Z",
    "createdBy": "#/definitions/SimpleIdentity"
  }
]

Searches tasks in the project of the given OID.

GET /task/search/{projectOid}

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

projectOid: string
in path

OID of the project to search for the tasks. Specify "-" if you'd like to search the personal tasks that belong to no specific projects in My Tasks.

text: string
in query

Text to do a full-text search against the name, description, and attachments. Note: it doesn't include the content and attachment of comments. Also note: the update of tasks can take 10 seconds or more before it can be found by the full-text search.

name: string
in query

Task name to match with. To specify a regular expression, you can precede it with ~. To specify a case-insensitive 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. To do a full-text search, please use text instead.

description: string
in query

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

sublist: string
in query

ID or OID of task's sublist to match 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.

scheduled: boolean
in query

Whether to return only tasks that are scheduled. By scheduled we mean either start or due is scheduled. If scheduled=false is specified, it returns only tasks that neither start nor due is scheduled.

mine: boolean
in query

Whether to return only My Tasks. By My Tasks we mean tasks that are assigned to me, or tasks that are created by me and scheduled, but not assigned to anyone.

limit: string
in query

The maximal number of tasks to return. Default: 30. That is, at most 30 tasks will be returned. You can specify "no" to return all matched tasks.

Note: If the project is on a free plan, the value cannot be larger than 30 or "no" (unlimited).

200 OK

successful operation

Response Content-Types: application/json
Response Example (200 OK)
[
  {
    "successors": [
      "string"
    ],
    "oid": "Dyh2YkFcu9uLgLFIeN1kB4Ld",
    "id": 12,
    "name": "Design new **logo**",
    "nameText": "Design new logo",
    "nameHtml": "Design new <b>logo</b>",
    "descriptionText": "This is a cool task.",
    "descriptionHtml": "This is a <i>cool</i> task.",
    "description": "This is a *cool* task.",
    "priority": 0,
    "start": "2018-12-20T00:00:00.000Z",
    "due": "2018-12-22T00:00:00.000Z",
    "status": 0,
    "assignees": [
      {
        "id": "my_id",
        "url": "https://quire.io/u/my_id",
        "iconColor": "37",
        "image": "https://quire.s3.amazonaws.com/oid/image.jpg",
        "name": "Foo",
        "oid": "Dyh2YkFcu9uLgLFIeN1kB4Ld"
      }
    ],
    "tags": [
      {
        "color": "35",
        "name": "Foo",
        "oid": "Dyh2YkFcu9uLgLFIeN1kB4Ld"
      }
    ],
    "peekaboo": true,
    "section": true,
    "url": "https://quire.io/w/my_project/123",
    "createdAt": "2018-12-22T02:06:58.158Z",
    "createdBy": "#/definitions/SimpleIdentity"
  }
]

Searches tasks in the project of the given ID.

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. Specify "-" if you'd like to search for the personal tasks that belong to no specific projects in My Tasks.

text: string
in query

Text to do a full-text search against the name, description, and attachments. Note: it doesn't include the content and attachment of comments. Also note: the update of tasks can take 10 seconds or more before it can be found by the full-text search.

name: string
in query

Task name to match with. To specify a regular expression, you can precede it with ~. To specify a case-insensitive 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. To do a full-text search, please use text instead.

description: string
in query

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

sublist: string
in query

ID or OID of task's sublist to match 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.

scheduled: boolean
in query

Whether to return only tasks that are scheduled. By scheduled we mean either start or due is scheduled. If scheduled=false is specified, it returns only tasks that neither start nor due is scheduled.

mine: boolean
in query

Whether to return only My Tasks. By My Tasks we mean tasks that are assigned to me, or tasks that are created by me and scheduled, but not assigned to anyone.

limit: string
in query

The maximal number of tasks to return. Default: 30. That is, at most 30 tasks will be returned. You can specify "no" to return all matched tasks.

Note: If the project is on a free plan, the value cannot be larger than 30 or "no" (unlimited).

200 OK

successful operation

Response Content-Types: application/json
Response Example (200 OK)
[
  {
    "successors": [
      "string"
    ],
    "oid": "Dyh2YkFcu9uLgLFIeN1kB4Ld",
    "id": 12,
    "name": "Design new **logo**",
    "nameText": "Design new logo",
    "nameHtml": "Design new <b>logo</b>",
    "descriptionText": "This is a cool task.",
    "descriptionHtml": "This is a <i>cool</i> task.",
    "description": "This is a *cool* task.",
    "priority": 0,
    "start": "2018-12-20T00:00:00.000Z",
    "due": "2018-12-22T00:00:00.000Z",
    "status": 0,
    "assignees": [
      {
        "id": "my_id",
        "url": "https://quire.io/u/my_id",
        "iconColor": "37",
        "image": "https://quire.s3.amazonaws.com/oid/image.jpg",
        "name": "Foo",
        "oid": "Dyh2YkFcu9uLgLFIeN1kB4Ld"
      }
    ],
    "tags": [
      {
        "color": "35",
        "name": "Foo",
        "oid": "Dyh2YkFcu9uLgLFIeN1kB4Ld"
      }
    ],
    "peekaboo": true,
    "section": true,
    "url": "https://quire.io/w/my_project/123",
    "createdAt": "2018-12-22T02:06:58.158Z",
    "createdBy": "#/definitions/SimpleIdentity"
  }
]

Update an existing task by its ID.

PUT /task/id/{projectId}/{id}

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

projectId: string
in path

ID of the project that the task belongs to. Specify "-" if you'd like to update the personal tasks that belong to no specific projects in My Tasks.

id: integer
in path

ID of the task that needs to be updated

name: string

(Optional) New name of the task.

assignees: string[]

(Optional) OID, ID emails 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".

recurrence: Recurrence

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

  • freq: daily, weekly, monthly, yearly
  • interval: The interval between each freq iteration. Default: 1.
  • until: The last recurrence is less than or equals to the specified value. Default: never ends.
  • bymonth: If given, it must be an integer, starting from 1, meaning the month to apply to. It is supported only if freq is yearly. Default: 1 meaning January.
  • byweekno: If given, it must be an integer, meaning the week number, or last meaning the last week. The value starts with 1. It is supported only for monthly and yearly.
  • byweekday: If given, it must be an integer: 0 for Monday, 1 for Tuesday, and so on. For weekly, it is a list of integers, such as [1] and [0, 3]. When given, these values will define the weekdays where the recurrence will be applied.
  • bydayno: If given, it must be an integer, starting from 1, meaning the day to apply to. It is supported only for monthly and yearly.
    • Note: byweekday and bydayno can not be specified at the same time.
  • dupsubtasks: Whether to duplicate the subtasks when the task is completed. Default: true.
  • sincelatest: Whether to repeat it since the last date the task is completed. It is available only for daily. Default: false.
peekaboo:
boolean
integer

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

If a positive integer is specified, it is the number of days to peekaboo a task. If true, it won't be reshowed automatically.

Default: false.

successors: string[]

(Optional) OID or ID of tasks to replace the successors of this task.

To specify task's ID, you can specify as #id or id.

Example, 'AMZ0-59R125-35KTK2356G', '#13', and 135.

yourField: object

(Optional) Specify a value to your custom field. The name and value depends on your definition of the custom field.

  • For Money type, please specify the value directly (without currency).
  • For User or Task type, please specify the OID.
  • For Duration type, please specify number of seconds.
  • For multiple values, you can specify a list of values.
removeTags: string[]

(Optional) OID or names of the tags to be removed from this task. Note: if tag's name is specified, it is case-insensitive.

addAssignees: string[]

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

removeAssignees: string[]

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

addSuccessors: string[]

(Optional) OID or ID of tasks to be added to the successors of this task.

To specify task's ID, you can specify as #id or id.

Example, 'AMZ0-59R125-35KTK2356G', '#13', and 135.

removeSuccessors: string[]

(Optional) OID or ID of tasks to be removed from the successors of this task.

To specify task's ID, you can specify as #id or id.

Example, 'AMZ0-59R125-35KTK2356G', '#13', and 135.

followers: string[]

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

addFollowers: string[]

(Optional) OID or ID 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 or ID of the followers to be removed from this task.Please refer to addFollowers() for more details.

description: string

(Optional) Change the description about this task.

section: boolean

(Optional) Specify whether this task is a section or a normal task.

addTags: string[]

(Optional) OID or names of the tags to be added to this task. Note: if tag's name is specified, it is case-insensitive.

asUser: boolean

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

tags: string[]

(Optional) OID or names 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". Note: if tag's name is specified, it is case-insensitive.

start: string

(Optional) An optional start time. If you'd like to specify time, use yyyy-mm-ddThh:mmZ, e.g., 2020-10-30T09:30Z. Note: they must be in UTC time, and we don't support seconds.

If you don't like to set time, use yyyy-mm-dd, e.g., 2020-10-30.

Also note: for backward compatibility, 2020-10-30T00:00:00 (all zero and up to second) is considered the same as 2020-10-30, i.e., without time. OTOH, To specify time at midnight in UTC, please specify 2020-10-30T00:00 (no second)

due: string

(Optional) An optional due time. If you'd like to specify time, use yyyy-mm-ddThh:mmZ, e.g., 2020-10-30T09:30Z. Note: they must be in UTC time, and we don't support seconds.

If you don't like to set time, use yyyy-mm-dd, e.g., 2020-10-30.

Also note: for backward compatibility, 2020-10-30T00:00:00 (all zero and up to second) is considered the same as 2020-10-30, i.e., without time. OTOH, To specify time at midnight in UTC, please specify 2020-10-30T00:00 (no second)

priority: integer

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

etc: integer

(Optional) The estimated time to complete. If specified, it must be non-negative or null. If null is specified, it means to clear the value.Unit: seconds.

status: integer

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

Request Example
{
  "name": "New idea",
  "assignees": [
    "6QMKkEPBVWETLWrXqws94ALU"
  ],
  "recurrence": {
    "byweekday": [
      "integer (int32)"
    ],
    "interval": 1,
    "dupsubtasks": false,
    "sincelatest": true,
    "byweekno": 2,
    "freq": "weekly",
    "bydayno": 25,
    "bymonth": 10,
    "until": "2020-12-22"
  },
  "peekaboo": true,
  "successors": [
    "string"
  ],
  "yourField": "object",
  "removeTags": [
    "mPAQrYU1qt8wAYAInKRlTnvl"
  ],
  "addAssignees": [
    "6QMKkEPBVWETLWrXqws94ALU"
  ],
  "removeAssignees": [
    "Job4NSW9xK6Owcke8iKj7zyH"
  ],
  "addSuccessors": [
    "string"
  ],
  "removeSuccessors": [
    "string"
  ],
  "followers": [
    "tzufRLqCnud74dARyDSvjWDl",
    "app"
  ],
  "addFollowers": [
    "sfsvLbDVPvi1QMf2GkDn7VSy"
  ],
  "removeFollowers": [
    "aBuz4MwfZ5CasOae6stnFa2f"
  ],
  "description": "This is a **cool** task.",
  "section": true,
  "addTags": [
    "X6nmx9XjEO2wKbqeB1pRT43C"
  ],
  "asUser": true,
  "tags": [
    "ITaVbkhh3iVcEcV3vuSLeE2k"
  ],
  "start": "2018-12-20T00:00:00.000Z",
  "due": "2018-12-22T00:00:00.000Z",
  "priority": 0,
  "etc": 0,
  "status": 100
}
200 OK

successful operation

Response Content-Types: application/json
Response Example (200 OK)
{
  "successors": [
    "string"
  ],
  "oid": "Dyh2YkFcu9uLgLFIeN1kB4Ld",
  "id": 12,
  "name": "Design new **logo**",
  "nameText": "Design new logo",
  "nameHtml": "Design new <b>logo</b>",
  "descriptionText": "This is a cool task.",
  "descriptionHtml": "This is a <i>cool</i> task.",
  "description": "This is a *cool* task.",
  "recurrence": {
    "byweekday": [
      "integer (int32)"
    ],
    "interval": 1,
    "dupsubtasks": false,
    "sincelatest": true,
    "byweekno": 2,
    "freq": "weekly",
    "bydayno": 25,
    "bymonth": 10,
    "until": "2020-12-22"
  },
  "timelogs": [
    {
      "start": "2023-02-20T00:00:00.000Z",
      "end": "2023-02-20T00:05:35.000Z",
      "user": {
        "id": "my_id",
        "url": "https://quire.io/u/my_id",
        "iconColor": "37",
        "image": "https://quire.s3.amazonaws.com/oid/image.jpg",
        "name": "Foo",
        "oid": "Dyh2YkFcu9uLgLFIeN1kB4Ld"
      },
      "billable": true,
      "note": "A piece of cake"
    }
  ],
  "etc": 500,
  "priority": 0,
  "start": "2018-12-20T00:00:00.000Z",
  "due": "2018-12-22T00:00:00.000Z",
  "status": 0,
  "assignors": [
    "#/definitions/SimpleIdentity"
  ],
  "partnerBy": "#/definitions/SimpleIdentity",
  "partner": {
    "color": "35",
    "name": "Foo",
    "oid": "Dyh2YkFcu9uLgLFIeN1kB4Ld"
  },
  "assignees": [
    "#/definitions/SimpleIdentity"
  ],
  "tags": [
    "#/definitions/SimpleTaggingEntity"
  ],
  "order": 99,
  "attachments": [
    {
      "name": "file.zip",
      "length": 20000,
      "type": 1,
      "url": "https://quire.io/att/Ta/sdcQOGgeUtyaFFzb9p0IwAgi/qfqVmUtC/image.png",
      "createdAt": "2018-12-22T02:06:58.158Z",
      "createdBy": "#/definitions/SimpleIdentity"
    }
  ],
  "cover": "qfqVmUtC",
  "childCount": 5,
  "referrers": [
    {
      "user": "wrSpgghWFCzPHBqiShSurDeD",
      "when": "2018-12-22T02:06:58.158Z",
      "task": "wrSpgghWFCzPHBqiShSurDeD"
    }
  ],
  "toggledAt": "2018-12-22T02:06:58.158Z",
  "toggledBy": "#/definitions/SimpleIdentity",
  "editedAt": "2018-12-22T02:06:58.158Z",
  "peekaboo": true,
  "section": true,
  "url": "https://quire.io/w/my_project/123",
  "favorites": [
    "#/definitions/SimpleIdentity"
  ],
  "followers": [
    "#/definitions/SimpleIdentity"
  ],
  "mutes": [
    "#/definitions/SimpleIdentity"
  ],
  "project": "#/definitions/SimpleIdentity",
  "createdAt": "2018-12-22T02:06:58.158Z",
  "createdBy": "#/definitions/SimpleIdentity"
}

Update an existing task by its OID.

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.

assignees: string[]

(Optional) OID, ID emails 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".

recurrence: Recurrence

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

  • freq: daily, weekly, monthly, yearly
  • interval: The interval between each freq iteration. Default: 1.
  • until: The last recurrence is less than or equals to the specified value. Default: never ends.
  • bymonth: If given, it must be an integer, starting from 1, meaning the month to apply to. It is supported only if freq is yearly. Default: 1 meaning January.
  • byweekno: If given, it must be an integer, meaning the week number, or last meaning the last week. The value starts with 1. It is supported only for monthly and yearly.
  • byweekday: If given, it must be an integer: 0 for Monday, 1 for Tuesday, and so on. For weekly, it is a list of integers, such as [1] and [0, 3]. When given, these values will define the weekdays where the recurrence will be applied.
  • bydayno: If given, it must be an integer, starting from 1, meaning the day to apply to. It is supported only for monthly and yearly.
    • Note: byweekday and bydayno can not be specified at the same time.
  • dupsubtasks: Whether to duplicate the subtasks when the task is completed. Default: true.
  • sincelatest: Whether to repeat it since the last date the task is completed. It is available only for daily. Default: false.
peekaboo:
boolean
integer

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

If a positive integer is specified, it is the number of days to peekaboo a task. If true, it won't be reshowed automatically.

Default: false.

successors: string[]

(Optional) OID or ID of tasks to replace the successors of this task.

To specify task's ID, you can specify as #id or id.

Example, 'AMZ0-59R125-35KTK2356G', '#13', and 135.

yourField: object

(Optional) Specify a value to your custom field. The name and value depends on your definition of the custom field.

  • For Money type, please specify the value directly (without currency).
  • For User or Task type, please specify the OID.
  • For Duration type, please specify number of seconds.
  • For multiple values, you can specify a list of values.
removeTags: string[]

(Optional) OID or names of the tags to be removed from this task. Note: if tag's name is specified, it is case-insensitive.

addAssignees: string[]

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

removeAssignees: string[]

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

addSuccessors: string[]

(Optional) OID or ID of tasks to be added to the successors of this task.

To specify task's ID, you can specify as #id or id.

Example, 'AMZ0-59R125-35KTK2356G', '#13', and 135.

removeSuccessors: string[]

(Optional) OID or ID of tasks to be removed from the successors of this task.

To specify task's ID, you can specify as #id or id.

Example, 'AMZ0-59R125-35KTK2356G', '#13', and 135.

followers: string[]

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

addFollowers: string[]

(Optional) OID or ID 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 or ID of the followers to be removed from this task.Please refer to addFollowers() for more details.

description: string

(Optional) Change the description about this task.

section: boolean

(Optional) Specify whether this task is a section or a normal task.

addTags: string[]

(Optional) OID or names of the tags to be added to this task. Note: if tag's name is specified, it is case-insensitive.

asUser: boolean

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

tags: string[]

(Optional) OID or names 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". Note: if tag's name is specified, it is case-insensitive.

start: string

(Optional) An optional start time. If you'd like to specify time, use yyyy-mm-ddThh:mmZ, e.g., 2020-10-30T09:30Z. Note: they must be in UTC time, and we don't support seconds.

If you don't like to set time, use yyyy-mm-dd, e.g., 2020-10-30.

Also note: for backward compatibility, 2020-10-30T00:00:00 (all zero and up to second) is considered the same as 2020-10-30, i.e., without time. OTOH, To specify time at midnight in UTC, please specify 2020-10-30T00:00 (no second)

due: string

(Optional) An optional due time. If you'd like to specify time, use yyyy-mm-ddThh:mmZ, e.g., 2020-10-30T09:30Z. Note: they must be in UTC time, and we don't support seconds.

If you don't like to set time, use yyyy-mm-dd, e.g., 2020-10-30.

Also note: for backward compatibility, 2020-10-30T00:00:00 (all zero and up to second) is considered the same as 2020-10-30, i.e., without time. OTOH, To specify time at midnight in UTC, please specify 2020-10-30T00:00 (no second)

priority: integer

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

etc: integer

(Optional) The estimated time to complete. If specified, it must be non-negative or null. If null is specified, it means to clear the value.Unit: seconds.

status: integer

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

Request Example
{
  "name": "New idea",
  "assignees": [
    "6QMKkEPBVWETLWrXqws94ALU"
  ],
  "recurrence": {
    "byweekday": [
      "integer (int32)"
    ],
    "interval": 1,
    "dupsubtasks": false,
    "sincelatest": true,
    "byweekno": 2,
    "freq": "weekly",
    "bydayno": 25,
    "bymonth": 10,
    "until": "2020-12-22"
  },
  "peekaboo": true,
  "successors": [
    "string"
  ],
  "yourField": "object",
  "removeTags": [
    "mPAQrYU1qt8wAYAInKRlTnvl"
  ],
  "addAssignees": [
    "6QMKkEPBVWETLWrXqws94ALU"
  ],
  "removeAssignees": [
    "Job4NSW9xK6Owcke8iKj7zyH"
  ],
  "addSuccessors": [
    "string"
  ],
  "removeSuccessors": [
    "string"
  ],
  "followers": [
    "tzufRLqCnud74dARyDSvjWDl",
    "app"
  ],
  "addFollowers": [
    "sfsvLbDVPvi1QMf2GkDn7VSy"
  ],
  "removeFollowers": [
    "aBuz4MwfZ5CasOae6stnFa2f"
  ],
  "description": "This is a **cool** task.",
  "section": true,
  "addTags": [
    "X6nmx9XjEO2wKbqeB1pRT43C"
  ],
  "asUser": true,
  "tags": [
    "ITaVbkhh3iVcEcV3vuSLeE2k"
  ],
  "start": "2018-12-20T00:00:00.000Z",
  "due": "2018-12-22T00:00:00.000Z",
  "priority": 0,
  "etc": 0,
  "status": 100
}
200 OK

successful operation

Response Content-Types: application/json
Response Example (200 OK)
{
  "successors": [
    "string"
  ],
  "oid": "Dyh2YkFcu9uLgLFIeN1kB4Ld",
  "id": 12,
  "name": "Design new **logo**",
  "nameText": "Design new logo",
  "nameHtml": "Design new <b>logo</b>",
  "descriptionText": "This is a cool task.",
  "descriptionHtml": "This is a <i>cool</i> task.",
  "description": "This is a *cool* task.",
  "recurrence": {
    "byweekday": [
      "integer (int32)"
    ],
    "interval": 1,
    "dupsubtasks": false,
    "sincelatest": true,
    "byweekno": 2,
    "freq": "weekly",
    "bydayno": 25,
    "bymonth": 10,
    "until": "2020-12-22"
  },
  "timelogs": [
    {
      "start": "2023-02-20T00:00:00.000Z",
      "end": "2023-02-20T00:05:35.000Z",
      "user": {
        "id": "my_id",
        "url": "https://quire.io/u/my_id",
        "iconColor": "37",
        "image": "https://quire.s3.amazonaws.com/oid/image.jpg",
        "name": "Foo",
        "oid": "Dyh2YkFcu9uLgLFIeN1kB4Ld"
      },
      "billable": true,
      "note": "A piece of cake"
    }
  ],
  "etc": 500,
  "priority": 0,
  "start": "2018-12-20T00:00:00.000Z",
  "due": "2018-12-22T00:00:00.000Z",
  "status": 0,
  "assignors": [
    "#/definitions/SimpleIdentity"
  ],
  "partnerBy": "#/definitions/SimpleIdentity",
  "partner": {
    "color": "35",
    "name": "Foo",
    "oid": "Dyh2YkFcu9uLgLFIeN1kB4Ld"
  },
  "assignees": [
    "#/definitions/SimpleIdentity"
  ],
  "tags": [
    "#/definitions/SimpleTaggingEntity"
  ],
  "order": 99,
  "attachments": [
    {
      "name": "file.zip",
      "length": 20000,
      "type": 1,
      "url": "https://quire.io/att/Ta/sdcQOGgeUtyaFFzb9p0IwAgi/qfqVmUtC/image.png",
      "createdAt": "2018-12-22T02:06:58.158Z",
      "createdBy": "#/definitions/SimpleIdentity"
    }
  ],
  "cover": "qfqVmUtC",
  "childCount": 5,
  "referrers": [
    {
      "user": "wrSpgghWFCzPHBqiShSurDeD",
      "when": "2018-12-22T02:06:58.158Z",
      "task": "wrSpgghWFCzPHBqiShSurDeD"
    }
  ],
  "toggledAt": "2018-12-22T02:06:58.158Z",
  "toggledBy": "#/definitions/SimpleIdentity",
  "editedAt": "2018-12-22T02:06:58.158Z",
  "peekaboo": true,
  "section": true,
  "url": "https://quire.io/w/my_project/123",
  "favorites": [
    "#/definitions/SimpleIdentity"
  ],
  "followers": [
    "#/definitions/SimpleIdentity"
  ],
  "mutes": [
    "#/definitions/SimpleIdentity"
  ],
  "project": "#/definitions/SimpleIdentity",
  "createdAt": "2018-12-22T02:06:58.158Z",
  "createdBy": "#/definitions/SimpleIdentity"
}

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)
{
  "name": "John",
  "id": "john",
  "nameText": "John",
  "nameHtml": "John",
  "url": "https://quire.io/u/john",
  "website": "https://coolwebsites.com",
  "email": "john@gmail.cc",
  "descriptionText": "This is cool!",
  "descriptionHtml": "This is <i>cool</i>!",
  "description": "This is *cool*!",
  "iconColor": "37",
  "image": "https://quire.s3.amazonaws.com/oid/image.jpg",
  "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)
{
  "name": "John",
  "id": "john",
  "nameText": "John",
  "nameHtml": "John",
  "url": "https://quire.io/u/john",
  "website": "https://coolwebsites.com",
  "email": "john@gmail.cc",
  "descriptionText": "This is cool!",
  "descriptionHtml": "This is <i>cool</i>!",
  "description": "This is *cool*!",
  "iconColor": "37",
  "image": "https://quire.s3.amazonaws.com/oid/image.jpg",
  "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)
[
  {
    "name": "John",
    "id": "john",
    "nameText": "John",
    "nameHtml": "John",
    "url": "https://quire.io/u/john",
    "website": "https://coolwebsites.com",
    "email": "john@gmail.cc",
    "descriptionText": "This is cool!",
    "descriptionHtml": "This is <i>cool</i>!",
    "description": "This is *cool*!",
    "iconColor": "37",
    "image": "https://quire.s3.amazonaws.com/oid/image.jpg",
    "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)
[
  {
    "name": "John",
    "id": "john",
    "nameText": "John",
    "nameHtml": "John",
    "url": "https://quire.io/u/john",
    "website": "https://coolwebsites.com",
    "email": "john@gmail.cc",
    "descriptionText": "This is cool!",
    "descriptionHtml": "This is <i>cool</i>!",
    "description": "This is *cool*!",
    "iconColor": "37",
    "image": "https://quire.s3.amazonaws.com/oid/image.jpg",
    "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)
[
  {
    "name": "John",
    "id": "john",
    "nameText": "John",
    "nameHtml": "John",
    "url": "https://quire.io/u/john",
    "website": "https://coolwebsites.com",
    "email": "john@gmail.cc",
    "descriptionText": "This is cool!",
    "descriptionHtml": "This is <i>cool</i>!",
    "description": "This is *cool*!",
    "iconColor": "37",
    "image": "https://quire.s3.amazonaws.com/oid/image.jpg",
    "oid": "Dyh2YkFcu9uLgLFIeN1kB4Ld"
  }
]

default

POST /sublist/id/{ownerType}/{ownerId}/{id}

owenerType: object
in

(no description)

Schema Definitions

Attachment: object

name: string

Attachment's name.

length: integer

The size of this attachment. Unit: bytes.

type: integer

The type of this attachment.It is 1 if it is from Google Drive. It is 2 if it is stored in Quire.

url: string

URL of this attachment.

createdAt: string

When this record was created.

createdBy: SimpleIdentity

The user who created this record.

Example
{
  "name": "file.zip",
  "length": 20000,
  "type": 1,
  "url": "https://quire.io/att/Ta/sdcQOGgeUtyaFFzb9p0IwAgi/qfqVmUtC/image.png",
  "createdAt": "2018-12-22T02:06:58.158Z",
  "createdBy": {
    "id": "my_id",
    "url": "https://quire.io/u/my_id",
    "iconColor": "37",
    "image": "https://quire.s3.amazonaws.com/oid/image.jpg",
    "name": "Foo",
    "oid": "Dyh2YkFcu9uLgLFIeN1kB4Ld"
  }
}

Change: object

exclude: boolean

Whether to exclude the task. Default: false (include).

single: boolean

Whether to include or exclude only the task. Default: false -- all descendants tasks will be included or excluded too. Note: it won't affect descendants that are explicitly excluded or included before this invocation.

task: string

The task's OID to be included or excluded.

Example
{
  "exclude": false,
  "single": false,
  "task": "2MmYOpJH_ZLeehIjjytH1Rwr"
}

Comment: object

oid: string

OID, aka. UUID.

descriptionText: string

The content but excluding markdown characters.

descriptionHtml: string

The content in a form of a HTML fragment converted from markdown.

description: string

The content.

attachments: Attachment

The attachments of this task.

Attachment
editedBy: SimpleIdentity

The user who edited this comment, or null if not edited.

editedAt: string

When this comment was edited, or null if not edited.

pinAt: string

When this comment was pinned, or null if not pinned.

pinBy: SimpleIdentity

The user who pinned this comment, or null if not pinned.

url: string

Url of this comment on Quire website.

owner: CommentOwner

The object this comment was added to.

createdAt: string

When this record was created.

createdBy: SimpleIdentity

The user who created this record.

Example
{
  "oid": "iDsPd.QP_qM.hN.Trymukn8b",
  "descriptionText": "It is cool!",
  "descriptionHtml": "It is <i>cool</i>!",
  "description": "It is *cool*!",
  "attachments": [
    {
      "name": "file.zip",
      "length": 20000,
      "type": 1,
      "url": "https://quire.io/att/Ta/sdcQOGgeUtyaFFzb9p0IwAgi/qfqVmUtC/image.png",
      "createdAt": "2018-12-22T02:06:58.158Z",
      "createdBy": {
        "id": "my_id",
        "url": "https://quire.io/u/my_id",
        "iconColor": "37",
        "image": "https://quire.s3.amazonaws.com/oid/image.jpg",
        "name": "Foo",
        "oid": "Dyh2YkFcu9uLgLFIeN1kB4Ld"
      }
    }
  ],
  "editedBy": "#/definitions/SimpleIdentity",
  "editedAt": "2018-12-22T02:06:58.158Z",
  "pinAt": "2018-12-22T02:06:58.158Z",
  "pinBy": "#/definitions/SimpleIdentity",
  "url": "string",
  "owner": {
    "type": "Project",
    "url": "https://quire.io/u/my_id",
    "name": "Foo",
    "oid": "Dyh2YkFcu9uLgLFIeN1kB4Ld"
  },
  "createdAt": "2018-12-22T02:06:58.158Z",
  "createdBy": "#/definitions/SimpleIdentity"
}

CommentOwner: object

type: string

The type of this object.

url: string

Url of this record on Quire website.

name: string

Name.

oid: string

OID, aka. UUID.

Example
{
  "type": "Project",
  "url": "https://quire.io/u/my_id",
  "name": "Foo",
  "oid": "Dyh2YkFcu9uLgLFIeN1kB4Ld"
}

CreateCommentBody: object

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.

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

CreateNotificationBody: object

message: string

The message

url: string

(Optional) The URL of the message.If not omitted, a hyperlink will be generated to enclose the message.

Example
{
  "message": "Unable to synchronize",
  "url": "https://superheros.com/sync"
}

CreateStatusBody: object

name: string

The name of the status

value: integer

The value. It is a non-negative value to indicate the progress. The value must be unique. If it is great or equals to 100, it means the task has been completed.

color: string

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

Example
{
  "name": "Doing",
  "value": "true",
  "color": "35"
}

CreateSublistBody: object

name: string

The name of the sublist.

id: string

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

iconColor: string

(Optional) The color of the icon representing this record. It is an index of our predefined color palette.

description: string

(Optional) An optional description about this task.

includes: string[]

(Optional) A list of tasks' OID that belong to this sublist. Note: all of descendants will be included too.

string
image: string

(Optional) The image representing this record. It shall be one of the predined images: 'icon-view-list', 'icon-view-kanban', 'icon-briefcase-o', 'icon-rocket-o', 'icon-bug-o', 'icon-leaf-o', 'icon-clapperboard', 'icon-sitemap-o', 'icon-flash-on-o', 'icon-piggy-bank-o', 'icon-graduation-cap-o', 'icon-paper-plane-o', 'icon-globe-o', 'icon-music-o', 'icon-detail', 'icon-beach-o', 'icon-paper', 'icon-home-o', 'icon-building', 'icon-database-o', 'icon-microscope-o', 'icon-hamburger-o', 'icon-trophy-o', 'icon-thumbs-o-up', 'icon-thumbs-o-down', 'icon-smile-o', 'icon-frown-o', 'icon-meh-o', 'icon-bullseye', 'icon-square-dotted-o'

personal: boolean

(Optional) Whether it is personal. If omitted, false is assumed.

partner: string

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

start: string

(Optional) When this sublist was aimed to start.

due: string

(Optional) When this sublist was aimed to complete.

Example
{
  "name": "Sublist 101",
  "id": "Sublist101",
  "iconColor": "37",
  "description": "**Great** sublist to start with.",
  "includes": [
    "string"
  ],
  "image": "icon-view-kanban",
  "personal": false,
  "partner": "rcBHBYXZSiyDRrHrWPutatfF",
  "start": "2024-01-02",
  "due": "2024-05-25"
}

CreateTagBody: object

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.

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

CreateTaskBody: object

name: string

The name of the task.

assignees: string[]

(Optional) OID, ID or emails of the users that this task is assigned to.

string
recurrence: Recurrence

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

  • freq: daily, weekly, monthly, yearly
  • interval: The interval between each freq iteration. Default: 1.
  • until: The last recurrence is less than or equals to the specified value. Default: never ends.
  • bymonth: If given, it must be an integer, starting from 1, meaning the month to apply to. It is supported only if freq is yearly. Default: 1 meaning January.
  • byweekno: If given, it must be an integer, meaning the week number, or last meaning the last week. The value starts with 1. It is supported only for monthly and yearly.
  • byweekday: If given, it must be an integer: 0 for Monday, 1 for Tuesday, and so on. For weekly, it is a list of integers, such as [1] and [0, 3]. When given, these values will define the weekdays where the recurrence will be applied.
  • bydayno: If given, it must be an integer, starting from 1, meaning the day to apply to. It is supported only for monthly and yearly.
    • Note: byweekday and bydayno can not be specified at the same time.
  • dupsubtasks: Whether to duplicate the subtasks when the task is completed. Default: true.
  • sincelatest: Whether to repeat it since the last date the task is completed. It is available only for daily. Default: false.
peekaboo:
boolean
integer

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

If a positive integer is specified, it is the number of days to peekaboo a task. If true, it won't be reshowed automatically.

Default: false.

successors: string[]

(Optional) OID or ID of successors of this task.

To specify task's ID, you can specify as #id or id.

Example, 'AMZ0-59R125-35KTK2356G', '#13', and 135.

string
yourField: object

(Optional) Specify a value to your custom field. The name and value depends on your definition of the custom field.

  • For Money type, please specify the value directly (without currency).
  • For User or Task type, please specify the OID.
  • For Duration type, please specify number of seconds.
  • For multiple values, you can specify a list of values.
followers: string[]

(Optional) OID, ID or emails 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".

string
description: string

(Optional) An optional description about this task.

section: boolean

(Optional) Specify whether this task is a section. Default: false.

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.

tags: string[]

(Optional) OID or names of the tags to be added to the new created task. Note: if tag's name is specified, it is case-insensitive.

string
start: string

(Optional) An optional start time. If you'd like to specify time, use yyyy-mm-ddThh:mmZ, e.g., 2020-10-30T09:30Z. Note: they must be in UTC time, and we don't support seconds.

If you don't like to set time, use yyyy-mm-dd, e.g., 2020-10-30.

Also note: for backward compatibility, 2020-10-30T00:00:00 (all zero and up to second) is considered the same as 2020-10-30, i.e., without time. OTOH, To specify time at midnight in UTC, please specify 2020-10-30T00:00 (no second)

due: string

(Optional) An optional due time. If you'd like to specify time, use yyyy-mm-ddThh:mmZ, e.g., 2020-10-30T09:30Z. Note: they must be in UTC time, and we don't support seconds.

If you don't like to set time, use yyyy-mm-dd, e.g., 2020-10-30.

Also note: for backward compatibility, 2020-10-30T00:00:00 (all zero and up to second) is considered the same as 2020-10-30, i.e., without time. OTOH, To specify time at midnight in UTC, please specify 2020-10-30T00:00 (no second)

tasks: CreateTaskBody

(Optional) A list of subtasks to create.

CreateTaskBody
priority: integer

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

etc: integer

(Optional) The estimated time to complete. If specified, it must be non-negative. Unit: seconds.

status: integer

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

Example
{
  "name": "Design new **logo**",
  "assignees": [
    "6QMKkEPBVWETLWrXqws94ALU"
  ],
  "recurrence": {
    "byweekday": [
      "integer (int32)"
    ],
    "interval": 1,
    "dupsubtasks": false,
    "sincelatest": true,
    "byweekno": 2,
    "freq": "weekly",
    "bydayno": 25,
    "bymonth": 10,
    "until": "2020-12-22"
  },
  "peekaboo": true,
  "successors": [
    "string"
  ],
  "yourField": "object",
  "followers": [
    "tzufRLqCnud74dARyDSvjWDl"
  ],
  "description": "This is a *cool* task.",
  "section": true,
  "asUser": true,
  "tags": [
    "X6nmx9XjEO2wKbqeB1pRT43C"
  ],
  "start": "2018-12-20T00:00:00.000Z",
  "due": "2018-12-22T00:00:00.000Z",
  "tasks": [
    {
      "name": "Design new **logo**",
      "assignees": [
        "6QMKkEPBVWETLWrXqws94ALU"
      ],
      "recurrence": "#/definitions/Recurrence",
      "peekaboo": true,
      "successors": [
        "string"
      ],
      "yourField": "object",
      "followers": [
        "tzufRLqCnud74dARyDSvjWDl"
      ],
      "description": "This is a *cool* task.",
      "section": true,
      "asUser": true,
      "tags": [
        "X6nmx9XjEO2wKbqeB1pRT43C"
      ],
      "start": "2018-12-20T00:00:00.000Z",
      "due": "2018-12-22T00:00:00.000Z",
      "tasks": [
        "#/definitions/CreateTaskBody"
      ],
      "priority": 0,
      "etc": 0,
      "status": 0
    }
  ],
  "priority": 0,
  "etc": 0,
  "status": 0
}

Organization: object

name: string

Name.

id: string

ID.

nameText: string

Name but excluding markdown characters.

nameHtml: string

Name in a form of a HTML fragment converted from markdown.

email: string

Email address.

url: string

Url of this record on Quire website.

website: string

Website.

descriptionText: string

Description but excluding markdown characters.

descriptionHtml: string

Description in a form of a HTML fragment converted from markdown.

description: string

Description.

iconColor: string

The color of the icon representing this record. It is an index of our predefined color palette.

image: string

The image representing this record.

oid: string

OID, aka. UUID.

followers: SimpleIdentity

Users who follow this organization.

SimpleIdentity
createdAt: string

When this record was created.

createdBy: SimpleIdentity

The user who created this record.

Example
{
  "name": "My Organization",
  "id": "my_organization",
  "nameText": "My Organization",
  "nameHtml": "My Organization",
  "email": "info@compony.com",
  "url": "https://quire.io/c/my_organization",
  "website": "https://coolwebsites.com",
  "descriptionText": "This is cool!",
  "descriptionHtml": "This is <i>cool</i>!",
  "description": "This is *cool*!",
  "iconColor": "37",
  "image": "https://quire.s3.amazonaws.com/oid/image.jpg",
  "oid": "Dyh2YkFcu9uLgLFIeN1kB4Ld",
  "followers": [
    {
      "id": "my_id",
      "url": "https://quire.io/u/my_id",
      "iconColor": "37",
      "image": "https://quire.s3.amazonaws.com/oid/image.jpg",
      "name": "Foo",
      "oid": "Dyh2YkFcu9uLgLFIeN1kB4Ld"
    }
  ],
  "createdAt": "2018-12-22T02:06:58.158Z",
  "createdBy": "#/definitions/SimpleIdentity"
}

Partner: object

name: string

The name.

color: string

The color. It is an index of our predefined color palette. The first digit is between 0 and 5, and the second between 0 and 7. The color palette can be found in our Quire's color picker.

oid: string

OID, aka. UUID.

image: string
project: SimpleIdentity

The project this object belongs to.

createdAt: string

When this record was created.

createdBy: SimpleIdentity

The user who created this record.

Example
{
  "name": "UI design team",
  "color": "35",
  "oid": "Dyh2YkFcu9uLgLFIeN1kB4Ld",
  "image": "https://quire.s3.amazonaws.com/oid/image.jpg",
  "project": {
    "id": "my_id",
    "url": "https://quire.io/u/my_id",
    "iconColor": "37",
    "image": "https://quire.s3.amazonaws.com/oid/image.jpg",
    "name": "Foo",
    "oid": "Dyh2YkFcu9uLgLFIeN1kB4Ld"
  },
  "createdAt": "2018-12-22T02:06:58.158Z",
  "createdBy": "#/definitions/SimpleIdentity"
}

Project: object

name: string

Name.

id: string

ID.

nameText: string

Name but excluding markdown characters.

nameHtml: string

Name in a form of a HTML fragment converted from markdown.

rootCount: integer

Number of root tasks in this project.

organization: SimpleIdentity

The organization this project belongs to.

url: string

Url of this record on Quire website.

activeCount: integer

Number of active tasks in this project.

taskCount: integer

Total number of tasks in this project.

descriptionText: string

Description but excluding markdown characters.

descriptionHtml: string

Description in a form of a HTML fragment converted from markdown.

description: string

Description.

iconColor: string

The color of the icon representing this record. It is an index of our predefined color palette.

image: string

The image representing this record.

oid: string

OID, aka. UUID.

editedAt: string

When this record was edited last time.

archivedAt: string

When this project was archived (aka., peekaboo). It is null if not archived.

followers: SimpleIdentity

Users who follow this project.

SimpleIdentity
attachments: Attachment

The attachments of this project.

Attachment
createdAt: string

When this record was created.

createdBy: SimpleIdentity

The user who created this record.

Example
{
  "name": "My Project",
  "id": "my_project",
  "nameText": "My Project",
  "nameHtml": "My Project",
  "rootCount": 5,
  "organization": {
    "id": "my_id",
    "url": "https://quire.io/u/my_id",
    "iconColor": "37",
    "image": "https://quire.s3.amazonaws.com/oid/image.jpg",
    "name": "Foo",
    "oid": "Dyh2YkFcu9uLgLFIeN1kB4Ld"
  },
  "url": "https://quire.io/w/my_project",
  "activeCount": 20,
  "taskCount": 30,
  "descriptionText": "This is cool!",
  "descriptionHtml": "This is <i>cool</i>!",
  "description": "This is *cool*!",
  "iconColor": "37",
  "image": "https://quire.s3.amazonaws.com/oid/image.jpg",
  "oid": "Dyh2YkFcu9uLgLFIeN1kB4Ld",
  "editedAt": "2018-12-22T02:06:58.158Z",
  "archivedAt": "2018-12-22T02:06:58.158Z",
  "followers": [
    "#/definitions/SimpleIdentity"
  ],
  "attachments": [
    {
      "name": "file.zip",
      "length": 20000,
      "type": 1,
      "url": "https://quire.io/att/Ta/sdcQOGgeUtyaFFzb9p0IwAgi/qfqVmUtC/image.png",
      "createdAt": "2018-12-22T02:06:58.158Z",
      "createdBy": "#/definitions/SimpleIdentity"
    }
  ],
  "createdAt": "2018-12-22T02:06:58.158Z",
  "createdBy": "#/definitions/SimpleIdentity"
}

ProjectJsonMap: object

name: string

Name.

id: string

ID.

oid: string

OID, aka. UUID.

Example
{
  "name": "My Project",
  "id": "My_Project",
  "oid": "Dyh2YkFcu9uLgLFIeN1kB4Ld"
}

Recurrence: object

byweekday: integer[]

It must be an integer or array: 0 for Monday, 1 for Tuesday, and so on. For weekly, it is a list of integers, such as [1] and [0, 3]. When given, these values will define the weekdays where the recurrence will be applied. For example, if the data is [0,1], it means every Monday and Tuesday.

integer
interval: integer

How often this recurring shall occur. If the rate is 2 and the type is weekly, it means it shall occur every two week. If the type is custom, it means number of days to repeat.

dupsubtasks: boolean

Whether to duplicate the subtasks when the task is completed. Default: true

sincelatest: boolean

Whether to repeat it since the last date the task is completed. It is available only for daily. Default: false

byweekno: integer

If given, it must be an integer, meaning the week number, or last meaning the last week. The value starts with 1. It is supported only for monthly and yearly.

freq: string

The frequency of this recurring.

bydayno: integer

If given, it must be an integer, starting from 1, meaning the day to apply to. It is supported only for monthly and yearly.Note: byweekday and bydayno can not be specified at the same time.

bymonth: integer

If given, it must be an integer, starting from 1, meaning the month to apply to. It is supported only if freq is yearly. Default: 1 meaning January.

until: string

When this recurring shall end. If not specified, it means it is never end.

Example
{
  "byweekday": [
    "integer (int32)"
  ],
  "interval": 1,
  "dupsubtasks": false,
  "sincelatest": true,
  "byweekno": 2,
  "freq": "weekly",
  "bydayno": 25,
  "bymonth": 10,
  "until": "2020-12-22"
}

Referrer: object

user: string

OID of the user who made this reference.

when: string

When this reference is made.

task: string

OID of the task that refers another task.

Example
{
  "user": "wrSpgghWFCzPHBqiShSurDeD",
  "when": "2018-12-22T02:06:58.158Z",
  "task": "wrSpgghWFCzPHBqiShSurDeD"
}

SimpleIdentity: object

id: string

ID.

url: string

Url of this record on Quire website.

iconColor: string

The color of the icon representing this record. It is an index of our predefined color palette.

image: string

The image representing this record.

name: string

Name.

oid: string

OID, aka. UUID.

Example
{
  "id": "my_id",
  "url": "https://quire.io/u/my_id",
  "iconColor": "37",
  "image": "https://quire.s3.amazonaws.com/oid/image.jpg",
  "name": "Foo",
  "oid": "Dyh2YkFcu9uLgLFIeN1kB4Ld"
}

SimpleTaggingEntity: object

color: string

The color. It is an index of our predefined color palette. The first digit is between 0 and 5, and the second between 0 and 7. The color palette can be found in our Quire's color picker.

name: string

Name.

oid: string

OID, aka. UUID.

Example
{
  "color": "35",
  "name": "Foo",
  "oid": "Dyh2YkFcu9uLgLFIeN1kB4Ld"
}

SimpleTask: object

successors: string[]

Successors of this task.

Example, ['#135', '#26']

string
oid: string

OID, aka. UUID.

id: integer
name: string

This task's name.

nameText: string

This task's name but excluding markdown characters.

nameHtml: string

This task's name in a form of a HTML fragment converted from markdown.

descriptionText: string

Description but excluding markdown characters.

descriptionHtml: string

Description in a form of a HTML fragment converted from markdown.

description: string

Description about this task.

priority: integer

The priority of this task. Its value must be between -1 (lowest) and 2 (highest). Default: 0.

start: string

When to start this task.Note: if time is specified, the millisecond will be 001. Otherwise, it is 000 (so are the hour, minute and second fields).

due: string

When to complete this task. Note: if time is specified, the millisecond will be 001. Otherwise, it is 000 (so are the hour, minute and second fields).

status: integer

The status of this task. Its value must be between 0 and 100. If 100, it means completed.

assignees: SimpleIdentity

Users who are assigned to this task.

SimpleIdentity
tags: SimpleTaggingEntity

Tags that are tagged to this task.

SimpleTaggingEntity
peekaboo: boolean

Whether this task was peekabooed. It is null if not peekabooed.

section: boolean

Whether this task is a section. It is null if it is a normal task

url: string

Url of this task on Quire website.

createdAt: string

When this record was created.

createdBy: SimpleIdentity

The user who created this record.

Example
{
  "successors": [
    "string"
  ],
  "oid": "Dyh2YkFcu9uLgLFIeN1kB4Ld",
  "id": 12,
  "name": "Design new **logo**",
  "nameText": "Design new logo",
  "nameHtml": "Design new <b>logo</b>",
  "descriptionText": "This is a cool task.",
  "descriptionHtml": "This is a <i>cool</i> task.",
  "description": "This is a *cool* task.",
  "priority": 0,
  "start": "2018-12-20T00:00:00.000Z",
  "due": "2018-12-22T00:00:00.000Z",
  "status": 0,
  "assignees": [
    {
      "id": "my_id",
      "url": "https://quire.io/u/my_id",
      "iconColor": "37",
      "image": "https://quire.s3.amazonaws.com/oid/image.jpg",
      "name": "Foo",
      "oid": "Dyh2YkFcu9uLgLFIeN1kB4Ld"
    }
  ],
  "tags": [
    {
      "color": "35",
      "name": "Foo",
      "oid": "Dyh2YkFcu9uLgLFIeN1kB4Ld"
    }
  ],
  "peekaboo": true,
  "section": true,
  "url": "https://quire.io/w/my_project/123",
  "createdAt": "2018-12-22T02:06:58.158Z",
  "createdBy": "#/definitions/SimpleIdentity"
}

Status: object

name: string

The name.

value: integer

The value. It is a non-negative value to indicate the progress. The value must be unique. If it is great or equals to 100, it means the task has been completed.

color: string

The color. It is an index of our predefined color palette. The first digit is between 0 and 5, and the second between 0 and 7. The color palette can be found in our Quire's color picker.

Example
{
  "name": "Doing",
  "value": 50,
  "color": "35"
}

StorageList: object

currentProject: string

Property name

myList: string[]

Property name.

string
latest: StorageMap

Property name.

Example
{
  "currentProject": "Dyh2YkFcu9uLgLFIeN1kB4Ld",
  "myList": [
    "string"
  ],
  "latest": {
    "myKey": "My data"
  }
}

StorageMap: object

myKey: string

Property name

Example
{
  "myKey": "My data"
}

Sublist: object

name: string

Name.

id: string

ID.

nameText: string

Name but excluding markdown characters.

nameHtml: string

Name in a form of a HTML fragment converted from markdown.

url: string

Url of this record on Quire website.

descriptionText: string

Description but excluding markdown characters.

descriptionHtml: string

Description in a form of a HTML fragment converted from markdown.

description: string

Description.

iconColor: string

The color of the icon representing this record. It is an index of our predefined color palette.

image: string

The image representing this record.

oid: string

OID, aka. UUID.

partner: SimpleTaggingEntity

The external team that this sublist belongs to. It is null if this sublist can't be accessed by a member of external teams.

archivedAt: string

When this sublist was archived. It is null if not archived.

start: string

When this sublist was aimed to start, or null if not specified.

due: string

When this sublist was aimed to complete, or null if not specified.

owner: SublistOwner

The project this sublist belongs to.

createdAt: string

When this record was created.

createdBy: SimpleIdentity

The user who created this record.

Example
{
  "name": "Sublist 101",
  "id": "Sublist101",
  "nameText": "Sublist 101",
  "nameHtml": "Sublist 101",
  "url": "https://quire.io/w/my_project?sublist=Sublist101",
  "descriptionText": "This is cool!",
  "descriptionHtml": "This is <i>cool</i>!",
  "description": "This is *cool*!",
  "iconColor": "37",
  "image": "https://quire.s3.amazonaws.com/oid/image.jpg",
  "oid": "Dyh2YkFcu9uLgLFIeN1kB4Ld",
  "partner": {
    "color": "35",
    "name": "Foo",
    "oid": "Dyh2YkFcu9uLgLFIeN1kB4Ld"
  },
  "archivedAt": "2020-02-22T02:06:58.158Z",
  "start": "2024-01-02",
  "due": "2024-05-25",
  "owner": {
    "type": "Project",
    "url": "https://quire.io/u/my_id",
    "id": "my_id",
    "iconColor": "37",
    "image": "https://quire.s3.amazonaws.com/oid/image.jpg",
    "name": "Foo",
    "oid": "Dyh2YkFcu9uLgLFIeN1kB4Ld"
  },
  "createdAt": "2018-12-22T02:06:58.158Z",
  "createdBy": {
    "id": "my_id",
    "url": "https://quire.io/u/my_id",
    "iconColor": "37",
    "image": "https://quire.s3.amazonaws.com/oid/image.jpg",
    "name": "Foo",
    "oid": "Dyh2YkFcu9uLgLFIeN1kB4Ld"
  }
}

SublistOwner: object

type: string

The type of this object.

url: string

Url of this record on Quire website.

id: string

ID.

iconColor: string

The color of the icon representing this record. It is an index of our predefined color palette.

image: string

The image representing this record.

name: string

Name.

oid: string

OID, aka. UUID.

Example
{
  "type": "Project",
  "url": "https://quire.io/u/my_id",
  "id": "my_id",
  "iconColor": "37",
  "image": "https://quire.s3.amazonaws.com/oid/image.jpg",
  "name": "Foo",
  "oid": "Dyh2YkFcu9uLgLFIeN1kB4Ld"
}

Tag: object

global: boolean

Whether this is a global tag. Note: it won't be returned if this is not a global tag.

name: string

The name.

color: string

The color. It is an index of our predefined color palette. The first digit is between 0 and 5, and the second between 0 and 7. The color palette can be found in our Quire's color picker.

oid: string

OID, aka. UUID.

project: SimpleIdentity

The project this object belongs to.

createdAt: string

When this record was created.

createdBy: SimpleIdentity

The user who created this record.

Example
{
  "global": true,
  "name": "Later",
  "color": "35",
  "oid": "Dyh2YkFcu9uLgLFIeN1kB4Ld",
  "project": {
    "id": "my_id",
    "url": "https://quire.io/u/my_id",
    "iconColor": "37",
    "image": "https://quire.s3.amazonaws.com/oid/image.jpg",
    "name": "Foo",
    "oid": "Dyh2YkFcu9uLgLFIeN1kB4Ld"
  },
  "createdAt": "2018-12-22T02:06:58.158Z",
  "createdBy": "#/definitions/SimpleIdentity"
}

Task: object

successors: string[]

Successors of this task.

Example, ['#135', '#26']

string
oid: string

OID, aka. UUID.

id: integer
name: string

This task's name.

nameText: string

This task's name but excluding markdown characters.

nameHtml: string

This task's name in a form of a HTML fragment converted from markdown.

descriptionText: string

Description but excluding markdown characters.

descriptionHtml: string

Description in a form of a HTML fragment converted from markdown.

description: string

Description about this task.

recurrence: Recurrence

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

timelogs: Timelog

The timelogs of this task if available.

Timelog
etc: integer

The estimed time to complete, or null if not specified. Unit: seconds.

priority: integer

The priority of this task. Its value must be between -1 (lowest) and 2 (highest). Default: 0.

start: string

When to start this task.Note: if time is specified, the millisecond will be 001. Otherwise, it is 000 (so are the hour, minute and second fields).

due: string

When to complete this task. Note: if time is specified, the millisecond will be 001. Otherwise, it is 000 (so are the hour, minute and second fields).

status: integer

The status of this task. Its value must be between 0 and 100. If 100, it means completed.

assignors: SimpleIdentity

Users who have assigned this tasks to a user. For example, the first item of assignees is assigned by the first item of assignors.

SimpleIdentity
partnerBy: SimpleIdentity

The user who assigned this task to an external team. It is null if this task doesn't belong to any external team.

partner: SimpleTaggingEntity

The external team that this task belongs to. It is null if this task doesn't belong to any external team.

assignees: SimpleIdentity

Users who are assigned to this task.

SimpleIdentity
tags: SimpleTaggingEntity

Tags that are tagged to this task.

SimpleTaggingEntity
order: integer

The order of this task shown on the board view. The smaller the number is, the ealier the task is shown. It is meaningless if not in a board view.

attachments: Attachment

The attachments of this task.

Attachment
cover: string

The id of the attachment that is used as a cover of this task.

childCount: integer

Number of subtasks of this task. To retrieve these subtasks, make the GET request to "/task/list/{oid}".

referrers: Referrer

A list of referrers that refer this task. Note: some of them might no longer exist.

Referrer
toggledAt: string

When this task's status was changed last time.

toggledBy: SimpleIdentity

The user who changed this task's status.

editedAt: string

When this record was edited last time.

peekaboo: boolean

Whether this task was peekabooed. It is null if not peekabooed.

section: boolean

Whether this task is a section. It is null if it is a normal task

url: string

Url of this task on Quire website.

favorites: SimpleIdentity

Users who favorite this task.

SimpleIdentity
followers: SimpleIdentity

Users who follow this task.

SimpleIdentity
mutes: SimpleIdentity

Users who don't want any nofications of this task even they're assinged to it.

SimpleIdentity
project: SimpleIdentity

The project this task belongs to.

createdAt: string

When this record was created.

createdBy: SimpleIdentity

The user who created this record.

Example
{
  "successors": [
    "string"
  ],
  "oid": "Dyh2YkFcu9uLgLFIeN1kB4Ld",
  "id": 12,
  "name": "Design new **logo**",
  "nameText": "Design new logo",
  "nameHtml": "Design new <b>logo</b>",
  "descriptionText": "This is a cool task.",
  "descriptionHtml": "This is a <i>cool</i> task.",
  "description": "This is a *cool* task.",
  "recurrence": {
    "byweekday": [
      "integer (int32)"
    ],
    "interval": 1,
    "dupsubtasks": false,
    "sincelatest": true,
    "byweekno": 2,
    "freq": "weekly",
    "bydayno": 25,
    "bymonth": 10,
    "until": "2020-12-22"
  },
  "timelogs": [
    {
      "start": "2023-02-20T00:00:00.000Z",
      "end": "2023-02-20T00:05:35.000Z",
      "user": {
        "id": "my_id",
        "url": "https://quire.io/u/my_id",
        "iconColor": "37",
        "image": "https://quire.s3.amazonaws.com/oid/image.jpg",
        "name": "Foo",
        "oid": "Dyh2YkFcu9uLgLFIeN1kB4Ld"
      },
      "billable": true,
      "note": "A piece of cake"
    }
  ],
  "etc": 500,
  "priority": 0,
  "start": "2018-12-20T00:00:00.000Z",
  "due": "2018-12-22T00:00:00.000Z",
  "status": 0,
  "assignors": [
    "#/definitions/SimpleIdentity"
  ],
  "partnerBy": "#/definitions/SimpleIdentity",
  "partner": {
    "color": "35",
    "name": "Foo",
    "oid": "Dyh2YkFcu9uLgLFIeN1kB4Ld"
  },
  "assignees": [
    "#/definitions/SimpleIdentity"
  ],
  "tags": [
    "#/definitions/SimpleTaggingEntity"
  ],
  "order": 99,
  "attachments": [
    {
      "name": "file.zip",
      "length": 20000,
      "type": 1,
      "url": "https://quire.io/att/Ta/sdcQOGgeUtyaFFzb9p0IwAgi/qfqVmUtC/image.png",
      "createdAt": "2018-12-22T02:06:58.158Z",
      "createdBy": "#/definitions/SimpleIdentity"
    }
  ],
  "cover": "qfqVmUtC",
  "childCount": 5,
  "referrers": [
    {
      "user": "wrSpgghWFCzPHBqiShSurDeD",
      "when": "2018-12-22T02:06:58.158Z",
      "task": "wrSpgghWFCzPHBqiShSurDeD"
    }
  ],
  "toggledAt": "2018-12-22T02:06:58.158Z",
  "toggledBy": "#/definitions/SimpleIdentity",
  "editedAt": "2018-12-22T02:06:58.158Z",
  "peekaboo": true,
  "section": true,
  "url": "https://quire.io/w/my_project/123",
  "favorites": [
    "#/definitions/SimpleIdentity"
  ],
  "followers": [
    "#/definitions/SimpleIdentity"
  ],
  "mutes": [
    "#/definitions/SimpleIdentity"
  ],
  "project": "#/definitions/SimpleIdentity",
  "createdAt": "2018-12-22T02:06:58.158Z",
  "createdBy": "#/definitions/SimpleIdentity"
}

Timelog: object

start: string

When the time log started

end: string

When the time log ended

user: SimpleIdentity

The user who did this.

billable: boolean

Whether this time log is billable. Omitted if false.

note: string

A note.

Example
{
  "start": "2023-02-20T00:00:00.000Z",
  "end": "2023-02-20T00:05:35.000Z",
  "user": {
    "id": "my_id",
    "url": "https://quire.io/u/my_id",
    "iconColor": "37",
    "image": "https://quire.s3.amazonaws.com/oid/image.jpg",
    "name": "Foo",
    "oid": "Dyh2YkFcu9uLgLFIeN1kB4Ld"
  },
  "billable": true,
  "note": "A piece of cake"
}

UpdateCommentBody: object

description: string

(Optional) The new content of the comment.

pinned: boolean

(Optional) Whether to pin this comment.

Example
{
  "description": "Adjust style",
  "pinned": false
}

UpdateOrganizationBody: object

followers: string[]

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

string
addFollowers: string[]

(Optional) OID of the followers to be added to this organization.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".

string
removeFollowers: string[]

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

string
Example
{
  "followers": [
    "string"
  ],
  "addFollowers": [
    "string"
  ],
  "removeFollowers": [
    "string"
  ]
}

UpdateProjectBody: object

followers: string[]

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

string
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".

string
removeFollowers: string[]

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

string
Example
{
  "followers": [
    "tzufRLqCnud74dARyDSvjWDl",
    "app"
  ],
  "addFollowers": [
    "sfsvLbDVPvi1QMf2GkDn7VSy"
  ],
  "removeFollowers": [
    "aBuz4MwfZ5CasOae6stnFa2f"
  ]
}

UpdateStatusBody: object

name: string

(Optional) The new name of the status.

value: integer

(Optional) The new value of the status. It is a non-negative value to indicate the progress. The value must be unique. If it is great or equals to 100, it means the task has been completed.

color: string

(Optional) The color of the status.

Example
{
  "name": "Later",
  "value": "true",
  "color": "35"
}

UpdateSublistBody: object

name: string

(Optional) The name of the sublist.

id: string

(Optional) ID of the sublist.

archived: boolean

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

iconColor: string

(Optional) The color of the icon representing this record. It is an index of our predefined color palette.

description: string

(Optional) An optional description about this task.

image: string

(Optional) The image representing this record. It shall be one of the predined images: 'icon-view-list', 'icon-view-kanban', 'icon-briefcase-o', 'icon-rocket-o', 'icon-bug-o', 'icon-leaf-o', 'icon-clapperboard', 'icon-sitemap-o', 'icon-flash-on-o', 'icon-piggy-bank-o', 'icon-graduation-cap-o', 'icon-paper-plane-o', 'icon-globe-o', 'icon-music-o', 'icon-detail', 'icon-beach-o', 'icon-paper', 'icon-home-o', 'icon-building', 'icon-database-o', 'icon-microscope-o', 'icon-hamburger-o', 'icon-trophy-o', 'icon-thumbs-o-up', 'icon-thumbs-o-down', 'icon-smile-o', 'icon-frown-o', 'icon-meh-o', 'icon-bullseye', 'icon-square-dotted-o'

start: string

(Optional) When this sublist was aimed to start.

due: string

(Optional) When this sublist was aimed to complete.

changes: Change

(Optional) A list of changes to control what tasks to be added to or removed from this sublist.

Change
Example
{
  "name": "Sublist 101",
  "id": "Sublist101",
  "archived": true,
  "iconColor": "37",
  "description": "**Great** sublist to start with.",
  "image": "icon-view-kanban",
  "start": "2024-01-02",
  "due": "2024-05-25",
  "changes": [
    {
      "exclude": false,
      "single": false,
      "task": "2MmYOpJH_ZLeehIjjytH1Rwr"
    }
  ]
}

UpdateTagBody: object

name: string

(Optional) The new name of the tag.

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.

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.

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

UpdateTaskBody: object

name: string

(Optional) New name of the task.

assignees: string[]

(Optional) OID, ID emails 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".

string
recurrence: Recurrence

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

  • freq: daily, weekly, monthly, yearly
  • interval: The interval between each freq iteration. Default: 1.
  • until: The last recurrence is less than or equals to the specified value. Default: never ends.
  • bymonth: If given, it must be an integer, starting from 1, meaning the month to apply to. It is supported only if freq is yearly. Default: 1 meaning January.
  • byweekno: If given, it must be an integer, meaning the week number, or last meaning the last week. The value starts with 1. It is supported only for monthly and yearly.
  • byweekday: If given, it must be an integer: 0 for Monday, 1 for Tuesday, and so on. For weekly, it is a list of integers, such as [1] and [0, 3]. When given, these values will define the weekdays where the recurrence will be applied.
  • bydayno: If given, it must be an integer, starting from 1, meaning the day to apply to. It is supported only for monthly and yearly.
    • Note: byweekday and bydayno can not be specified at the same time.
  • dupsubtasks: Whether to duplicate the subtasks when the task is completed. Default: true.
  • sincelatest: Whether to repeat it since the last date the task is completed. It is available only for daily. Default: false.
peekaboo:
boolean
integer

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

If a positive integer is specified, it is the number of days to peekaboo a task. If true, it won't be reshowed automatically.

Default: false.

successors: string[]

(Optional) OID or ID of tasks to replace the successors of this task.

To specify task's ID, you can specify as #id or id.

Example, 'AMZ0-59R125-35KTK2356G', '#13', and 135.

string
yourField: object

(Optional) Specify a value to your custom field. The name and value depends on your definition of the custom field.

  • For Money type, please specify the value directly (without currency).
  • For User or Task type, please specify the OID.
  • For Duration type, please specify number of seconds.
  • For multiple values, you can specify a list of values.
removeTags: string[]

(Optional) OID or names of the tags to be removed from this task. Note: if tag's name is specified, it is case-insensitive.

string
addAssignees: string[]

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

string
removeAssignees: string[]

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

string
addSuccessors: string[]

(Optional) OID or ID of tasks to be added to the successors of this task.

To specify task's ID, you can specify as #id or id.

Example, 'AMZ0-59R125-35KTK2356G', '#13', and 135.

string
removeSuccessors: string[]

(Optional) OID or ID of tasks to be removed from the successors of this task.

To specify task's ID, you can specify as #id or id.

Example, 'AMZ0-59R125-35KTK2356G', '#13', and 135.

string
followers: string[]

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

string
addFollowers: string[]

(Optional) OID or ID 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".

string
removeFollowers: string[]

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

string
description: string

(Optional) Change the description about this task.

section: boolean

(Optional) Specify whether this task is a section or a normal task.

addTags: string[]

(Optional) OID or names of the tags to be added to this task. Note: if tag's name is specified, it is case-insensitive.

string
asUser: boolean

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

tags: string[]

(Optional) OID or names 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". Note: if tag's name is specified, it is case-insensitive.

string
start: string

(Optional) An optional start time. If you'd like to specify time, use yyyy-mm-ddThh:mmZ, e.g., 2020-10-30T09:30Z. Note: they must be in UTC time, and we don't support seconds.

If you don't like to set time, use yyyy-mm-dd, e.g., 2020-10-30.

Also note: for backward compatibility, 2020-10-30T00:00:00 (all zero and up to second) is considered the same as 2020-10-30, i.e., without time. OTOH, To specify time at midnight in UTC, please specify 2020-10-30T00:00 (no second)

due: string

(Optional) An optional due time. If you'd like to specify time, use yyyy-mm-ddThh:mmZ, e.g., 2020-10-30T09:30Z. Note: they must be in UTC time, and we don't support seconds.

If you don't like to set time, use yyyy-mm-dd, e.g., 2020-10-30.

Also note: for backward compatibility, 2020-10-30T00:00:00 (all zero and up to second) is considered the same as 2020-10-30, i.e., without time. OTOH, To specify time at midnight in UTC, please specify 2020-10-30T00:00 (no second)

priority: integer

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

etc: integer

(Optional) The estimated time to complete. If specified, it must be non-negative or null. If null is specified, it means to clear the value.Unit: seconds.

status: integer

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

Example
{
  "name": "New idea",
  "assignees": [
    "6QMKkEPBVWETLWrXqws94ALU"
  ],
  "recurrence": {
    "byweekday": [
      "integer (int32)"
    ],
    "interval": 1,
    "dupsubtasks": false,
    "sincelatest": true,
    "byweekno": 2,
    "freq": "weekly",
    "bydayno": 25,
    "bymonth": 10,
    "until": "2020-12-22"
  },
  "peekaboo": true,
  "successors": [
    "string"
  ],
  "yourField": "object",
  "removeTags": [
    "mPAQrYU1qt8wAYAInKRlTnvl"
  ],
  "addAssignees": [
    "6QMKkEPBVWETLWrXqws94ALU"
  ],
  "removeAssignees": [
    "Job4NSW9xK6Owcke8iKj7zyH"
  ],
  "addSuccessors": [
    "string"
  ],
  "removeSuccessors": [
    "string"
  ],
  "followers": [
    "tzufRLqCnud74dARyDSvjWDl",
    "app"
  ],
  "addFollowers": [
    "sfsvLbDVPvi1QMf2GkDn7VSy"
  ],
  "removeFollowers": [
    "aBuz4MwfZ5CasOae6stnFa2f"
  ],
  "description": "This is a **cool** task.",
  "section": true,
  "addTags": [
    "X6nmx9XjEO2wKbqeB1pRT43C"
  ],
  "asUser": true,
  "tags": [
    "ITaVbkhh3iVcEcV3vuSLeE2k"
  ],
  "start": "2018-12-20T00:00:00.000Z",
  "due": "2018-12-22T00:00:00.000Z",
  "priority": 0,
  "etc": 0,
  "status": 100
}

User: object

name: string

Name.

id: string

ID.

nameText: string

Name but excluding markdown characters.

nameHtml: string

Name in a form of a HTML fragment converted from markdown.

url: string

Url of this record on Quire website.

website: string

Website.

email: string

Email address.

descriptionText: string

Description but excluding markdown characters.

descriptionHtml: string

Description in a form of a HTML fragment converted from markdown.

description: string

Description.

iconColor: string

The color of the icon representing this record. It is an index of our predefined color palette.

image: string

The image representing this record.

oid: string

OID, aka. UUID.

Example
{
  "name": "John",
  "id": "john",
  "nameText": "John",
  "nameHtml": "John",
  "url": "https://quire.io/u/john",
  "website": "https://coolwebsites.com",
  "email": "john@gmail.cc",
  "descriptionText": "This is cool!",
  "descriptionHtml": "This is <i>cool</i>!",
  "description": "This is *cool*!",
  "iconColor": "37",
  "image": "https://quire.s3.amazonaws.com/oid/image.jpg",
  "oid": "Dyh2YkFcu9uLgLFIeN1kB4Ld"
}

Recurring:

byweekday: object
Example
{
  "byweekday": [
    1,
    4
  ]
}