Height Tasks API

The Tasks API from Height — 3 operation(s) for tasks.

OpenAPI Specification

height-tasks-api-openapi.yml Raw ↑
openapi: 3.0.3
info:
  title: Height APP Activities Tasks API
  description: "Unofficial Open API 3.1 specification for [Height App API](https://www.notion.so/API-documentation-643aea5bf01742de9232e5971cb4afda). This is not affiliated with Height team.\n\n---\n# Authentication\n\nThe Height API uses API keys to authenticate requests. **You can view your API key in the Height settings under API**.\n\nAuthentication to the API is performed via the `Authorization` header. All API requests should be made over HTTPs.\n\ni.e. Get your workspace.\n\n```bash\ncurl https://api.height.app/workspace \\\n  -H \"Authorization: api-key secret_1234\"\n```\n\nThird-party applications must connect to the Height API using [OAuth2](https://www.notion.so/API-documentation-643aea5bf01742de9232e5971cb4afda). \n\nSee [OAuth Apps on Height](https://www.notion.so/OAuth-Apps-on-Height-a8ebeab3f3f047e3857bd8ce60c2f640) for more information.\n\n# Object formats\n\nAll objects have a unique `id` ([UUID v4](https://en.m.wikipedia.org/wiki/Universally_unique_identifier#Version_4_(random))) and a `model` attribute to distinguish the model type.\n\ne.g. a task object.\n\n```json\n{\n  \"id\": \"123e4567-e89b-12d3-a456-426655440000\",\n  \"model\": \"task\",\n  \"name\": \"Fix bug\",\n  \"index\": 1,\n  \"status\": \"backLog\",\n  [...]\n}\n```\n\n# Date formats\n\nEvery date uses the ISO format e.g.\n\n```js\n\"2019-11-07T17:00:00.000Z\"\n```\n\n# Real-time\n\nAny change that you make to the API will be pushed to every user in real-time: i.e. creating tasks or messages.\n\n# Rate limits\n\nTo keep incoming traffic under control and maintain a great experience for all our users, our API is behind a rate limiter. Users who send many requests in quick succession may see error responses that show up as status code 429.\n\nHeight allows up to 120 requests/min, but we have stricter limits on these endpoints:\n\n- `POST /activities`: 60 requests/min\n- `POST /tasks`: 60 requests/min"
  contact:
    email: gil@beomjun.kr
  license:
    name: MIT
    url: http://www.apache.org/licenses/LICENSE-2.0.html
  version: 1.0.0
servers:
- url: https://api.height.app
security:
- apiKey: []
tags:
- name: Tasks
paths:
  /tasks:
    post:
      tags:
      - Tasks
      summary: Create a task
      operationId: createTask
      x-codeSamples:
      - lang: JavaScript
        label: SDK
        source: 'const height = new Height({secretKey: ''secret_your-key''});


          height.tasks.create({...});'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateTaskRequest'
        required: true
      responses:
        '201':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TaskObject'
      parameters:
      - name: realtime
        in: query
        description: (defaults to true) - use false when migrating tasks
        schema:
          type: boolean
      - name: notifyUsers
        in: query
        description: (defaults to true) - use false when migrating tasks
        schema:
          type: boolean
    patch:
      tags:
      - Tasks
      summary: Patch multiples tasks
      operationId: patchTasks
      x-codeSamples:
      - lang: JavaScript
        label: SDK
        source: 'const height = new Height({secretKey: ''secret_your-key''});


          height.tasks.patch({...});'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PatchTasksRequest'
        required: true
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/PatchTasksResponse'
    get:
      tags:
      - Tasks
      summary: Search tasks
      operationId: searchTasks
      x-codeSamples:
      - lang: JavaScript
        label: SDK
        source: 'const height = new Height({secretKey: ''secret_your-key''});


          const request: SearchTasksRequest = {};

          height.tasks.search(request);'
      parameters:
      - name: filters
        in: query
        description: JSON object with filters
        example: '{"status":{"values":["backLog","inProgress"]},"assigneeId":{"values":["123e4567-e89b-12d3-a456-426655440000"]},"completed":{"values":[false]},"lastActivityAt":{"values":[],"gt":{"date":"2019-11-07T17:00:00.000Z"}}}'
        schema:
          type: string
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SearchTasksResponse'
  /tasks/:id:
    get:
      tags:
      - Tasks
      summary: Get a task
      operationId: getTask
      x-codeSamples:
      - lang: JavaScript
        label: SDK
        source: 'const height = new Height({secretKey: ''secret_your-key''});


          height.tasks.get({...});'
      parameters:
      - name: id
        in: path
        description: task index (number) or task id (UUID)
        required: true
        schema:
          type: string
          format: uuid
      - name: include
        in: query
        description: What you wish to include with the task.
        schema:
          type: string
          enum:
          - Assignees
          - CreatedByUser
          - CompletedByUser
          - DeletedByUser
          - Subscribers
          - Fields.User
          - Lists
          - Status
          - Mentions
          - NotificationsSubscription
          - ParentTasks
          - SubtaskIds
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TaskObject'
    patch:
      tags:
      - Tasks
      summary: Update a single task
      operationId: updateTask
      x-codeSamples:
      - lang: JavaScript
        label: SDK
        source: 'const height = new Height({secretKey: ''secret_your-key''});


          height.tasks.update({...});'
      parameters:
      - name: id
        in: path
        description: task index (number) or task id (UUID)
        required: true
        schema:
          type: string
          format: uuid
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateTaskRequest'
        required: true
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TaskObject'
  /tasks/move:
    put:
      tags:
      - Tasks
      summary: Move tasks
      description: Not working. https://www.notion.so/Move-tasks-0e612add3e09400bacc6119c8129fa67
      operationId: moveTasks
      x-codeSamples:
      - lang: JavaScript
        label: SDK
        source: 'const height = new Height({secretKey: ''secret_your-key''});


          height.tasks.move({...});'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/MoveTasksRequest'
        required: true
      responses:
        '200':
          description: Successful operation
components:
  schemas:
    CreateTaskRequest:
      type: object
      required:
      - name
      - listIds
      properties:
        name:
          type: string
        listIds:
          type: array
          items:
            type: string
            format: uuid
          minItems: 1
          description: An array of UUIDs (one or more)
        description:
          type: string
        status:
          type: string
        assigneesIds:
          type: array
          items:
            type: string
            format: uuid
          description: An array of UUIDs of the users assigned to the task (optional).
        parentTaskId:
          type: string
          format: uuid
          description: The UUID of the parent task (optional).
        fields:
          type: array
          items:
            type: object
            required:
            - fieldTemplateId
            properties:
              fieldTemplateId:
                type: string
                format: uuid
                description: The id of the appropriate field template
              value:
                type: string
                description: 'For text fields: the text value of the field. For select fields: the id of the selected option'
              date:
                type: string
                format: date-time
                description: 'For date fields: the date value of the field'
              labels:
                type: array
                items:
                  type: string
                description: 'For labels fields: the labels of the field'
              linkedTasks:
                type: array
                items:
                  type: object
                  properties:
                    id:
                      type: string
                      format: uuid
                    index:
                      type: number
                description: 'For linkedTasks fields: the tasks to be linked, in the format: { "id": "UUID", "index": number }'
        orderIntent:
          type: object
          description: Inserts the task at the right place in the list.
          properties:
            intent:
              type: string
              enum:
              - start
              - end
              - before
              - after
            taskId:
              type: string
              format: uuid
              description: (only used for before and after intent)
    PatchTasksRequest:
      type: object
      description: Patch multiples tasks
      properties:
        patches:
          type: array
          items:
            type: object
            required:
            - taskIds
            - effects
            properties:
              taskIds:
                type: array
                description: Array of task ids, either UUIDs or task numbers
                items:
                  type: string
                  format: uuid
              effects:
                type: array
                items:
                  oneOf:
                  - $ref: '#/components/schemas/PatchTasksNameEffect'
                  - $ref: '#/components/schemas/PatchTasksDescriptionEffect'
                  - $ref: '#/components/schemas/PatchTasksStatusEffect'
                  - $ref: '#/components/schemas/PatchTasksDeletedEffect'
                  - $ref: '#/components/schemas/PatchTasksParentTaskEffect'
                  - $ref: '#/components/schemas/PatchTasksAssigneesEffect'
                  - $ref: '#/components/schemas/PatchTasksListsEffect'
                  - $ref: '#/components/schemas/PatchTasksFieldsEffect'
                  - $ref: '#/components/schemas/PatchTasksMoveToTrashEffect'
                  - $ref: '#/components/schemas/PatchTasksOutOfTrashEffect'
    PatchTasksListsEffect:
      type: object
      description: Update lists
      properties:
        type:
          type: string
          enum:
          - lists
        listIds:
          type: array
          items:
            type: object
            properties:
              add:
                type: array
                items:
                  type: string
                  format: uuid
              remove:
                type: array
                items:
                  type: string
                  format: uuid
          description: An array of UUIDs
    MoveTasksRequest:
      type: object
      properties:
        taskIds:
          type: array
          items:
            type: string
            format: uuid
        sourceId:
          type: string
          description: UUID of list or parent task of tasks
          format: uuid
        orderIntent:
          type: object
          properties:
            intent:
              type: string
              enum:
              - start
              - end
              - before
              - after
            taskId:
              type: string
              description: UUID (only used for before and after intent)
              format: uuid
      required:
      - taskIds
      - sourceId
      - orderIntent
    UpdateTaskRequest:
      type: object
      properties:
        name:
          type: string
        listIds:
          type: array
          items:
            type: string
            format: uuid
        description:
          type: string
        status:
          type: string
          description: 'The status of the task.

            - `backLog`

            - `inProgress`

            - `done`

            - and any *UUID* of available statuses. You can find the *UUIDs* through the field template API.'
        assigneesIds:
          type: array
          items:
            type: string
            format: uuid
        parentTaskId:
          type: string
          format: uuid
        fields:
          type: array
          items:
            type: object
            required:
            - fieldTemplateId
            properties:
              fieldTemplateId:
                type: string
                format: uuid
                description: The id of the appropriate field template
              value:
                type: string
                description: 'For text fields: the text value of the field. For select fields: the id of the selected option'
              date:
                type: string
                format: date-time
                description: 'For date fields: the date value of the field'
              labels:
                type: array
                items:
                  type: string
                description: 'For labels fields: the labels of the field'
              linkedTasks:
                type: array
                items:
                  type: object
                  properties:
                    id:
                      type: string
                      format: uuid
                    index:
                      type: number
                description: 'For linkedTasks fields: the tasks to be linked, in the format: { "id": "UUID", "index": number }'
      required:
      - name
    TaskObject:
      type: object
      required:
      - id
      - model
      - index
      - listIds
      - name
      - description
      - status
      - assigneesIds
      - fields
      - deleted
      - deletedAt
      - deletedByUserId
      - completed
      - completedAt
      - createdAt
      - createdUserId
      - lastActivityAt
      - url
      - trashedAt
      - trashedByUserId
      properties:
        id:
          type: string
          description: The unique id of the task
        model:
          type: string
          enum:
          - task
          description: The model is always `task`
        index:
          type: number
          description: The task index. For example, if the task is T-123, its index is 123.
        listIds:
          type: array
          description: Tasks belong to one or more lists. To create tasks, it's necessary to know in which list you want to create them.
          items:
            type: string
            format: uuid
        name:
          type: string
          description: The name of the task.
        description:
          type: string
          description: The description of the task. It's only retrieved if you use include. See ['Get a task'](https://www.notion.so/Get-a-task-8afda1c08e7f4f07a5c53720710cf24e).
        status:
          type: string
          description: 'The status of the task.

            - `backLog`

            - `inProgress`

            - `done`

            - and any *UUID* of available statuses. You can find the *UUIDs* through the field template API.'
        assigneesIds:
          type: array
          items:
            type: string
            format: uuid
          description: "The assignees of the task. You can find the UUIDs of users through the users API.\n ['List all users'](https://www.notion.so/List-all-users-ea66d04e48534b32927903c4deee58e8)"
          minItems: 1
        fields:
          type: array
          items:
            type: object
            required:
            - fieldTemplateId
            properties:
              fieldTemplateId:
                type: string
                format: uuid
                description: The id of the appropriate field template
              value:
                type: string
                description: 'For text fields: the text value of the field. For select fields: the id of the selected option'
              date:
                type: string
                format: date-time
                description: 'For date fields: the date value of the field'
              labels:
                type: array
                items:
                  type: string
                description: 'For labels fields: the labels of the field'
              linkedTasks:
                type: array
                items:
                  type: object
                  properties:
                    id:
                      type: string
                      format: uuid
                    index:
                      type: number
                description: 'For linkedTasks fields: the tasks to be linked, in the format: { "id": "UUID", "index": number }'
        deleted:
          type: boolean
          description: If the task was deleted.
        deletedAt:
          type: string
          format: date-time
          description: The date at which the task was deleted.
        deletedByUserId:
          type: string
          format: uuid
          description: The user that deleted the task.
        completed:
          type: boolean
          description: If the status is considered as completed (i.e. `done`), the value will be `true`.
        completedAt:
          type: string
          format: date-time
        createdAt:
          type: string
          format: date-time
        createdUserId:
          type: string
          format: uuid
          description: The user that created the task.
        lastActivityAt:
          type: string
          format: date-time
        url:
          type: string
          description: The URL of the task.
        trashedAt:
          type: string
          format: date-time
          description: A timestamp when the task was moved to the trash. Tasks are deleted after 30 days in the trash. This will be null unless the task is currently in the trash or deleted.
        trashedByUserId:
          type: string
          format: uuid
          description: The id of the user that moved the task to the trash
        parentTaskId:
          type: string
          format: uuid
          description: If the task is a subtask of another task, `parentTaskId` will be the id of the parent task.
    PatchTasksMoveToTrashEffect:
      type: object
      description: Move trash to the task
      required:
      - type
      - trashState
      - trashStateEffectAt
      properties:
        type:
          type: string
          enum:
          - trashState
        trashState:
          type: string
          enum:
          - trash
        trashStateEffectAt:
          type: string
          format: date-time
          description: ISO 8601 date-time
    PatchTasksParentTaskEffect:
      type: object
      description: Update parent task
      required:
      - type
      properties:
        type:
          type: string
          enum:
          - parentTask
        parentTaskId:
          type:
          - 'null'
          - string
          format: uuid
          description: The UUID of the parent task (optional).
    PatchTasksStatusEffect:
      type: object
      description: Update status
      required:
      - type
      - status
      properties:
        type:
          type: string
          enum:
          - status
        status:
          description: 'The status of the task.

            - `backLog`

            - `inProgress`

            - `done`

            - and any *UUID* of available statuses. You can find the *UUIDs* through the field template API.'
          type: string
        completedAt:
          type: string
          format: date-time
          description: ISO 8601 date-time
    PatchTasksAssigneesEffect:
      type: object
      description: Update assignees
      required:
      - type
      - assigneesIds
      properties:
        type:
          type: string
          enum:
          - assignees
        assigneesIds:
          type: array
          items:
            type: object
            properties:
              add:
                type: array
                items:
                  type: string
                  format: uuid
              remove:
                type: array
                items:
                  type: string
                  format: uuid
          description: An array of UUIDs of the users assigned to the task (optional).
    PatchTasksOutOfTrashEffect:
      type: object
      description: Move task out of the trash
      required:
      - type
      - trashState
      - trashStateEffectAt
      properties:
        type:
          type: string
          enum:
          - trashState
        trashState:
          type: string
          enum:
          - active
        trashStateEffectAt:
          type: string
          format: date-time
          description: ISO 8601 date-time
    PatchTasksResponse:
      type: object
      properties:
        list:
          type: array
          items:
            oneOf:
            - $ref: '#/components/schemas/TaskObject'
    SearchTasksResponse:
      type: object
      properties:
        list:
          type: array
          items:
            oneOf:
            - $ref: '#/components/schemas/TaskObject'
    PatchTasksDeletedEffect:
      type: object
      description: Update deleted
      required:
      - type
      - deleted
      properties:
        type:
          type: string
          enum:
          - deleted
        deleted:
          type: boolean
    PatchTasksDescriptionEffect:
      type: object
      description: Update description
      required:
      - type
      - description
      properties:
        type:
          type: string
          enum:
          - description
        description:
          type: object
          required:
          - message
          properties:
            message:
              type: string
    PatchTasksFieldsEffect:
      type: object
      description: Update fields
      required:
      - type
      - fieldTemplateId
      - field
      properties:
        type:
          type: string
          enum:
          - fields
        fieldTemplateId:
          type: string
          format: uuid
        field:
          type: object
          properties:
            text:
              type:
              - 'null'
              - string
              description: The value of the field when the template type is text.
            date:
              type:
              - 'null'
              - string
              format: date-time
              description: The value of the field when the template type is date.
            recursion:
              type:
              - 'null'
              - object
              description: 'recursion

                Untyped. Should be documented in [original docs](https://www.notion.so/Update-tasks-53d72cb0059a4e0e81cc2fcbfcbf9d0a)'
            label:
              type: object
              description: The label value of the field when the template type is select.
              properties:
                optionId:
                  type: string
                  format: uuid
            labels:
              type: object
              description: The label values of the field when the template type is labels.
              properties:
                add:
                  type: array
                  items:
                    type: object
                    properties:
                      id:
                        type: string
                        format: uuid
                        description: The ID for the label to add.
                    required:
                    - id
                remove:
                  type: array
                  items:
                    type: object
                    properties:
                      id:
                        type: string
                        format: uuid
                        description: The ID for the label to remove.
                    required:
                    - id
            linkedTasks:
              type: object
              description: The linked tasks value of the field when the template type is linkedTask or reverseLinkedTask.
              properties:
                add:
                  type: array
                  items:
                    type: object
                    properties:
                      id:
                        type: string
                        format: uuid
                        description: The ID for the task to add.
                      index:
                        type: integer
                        description: The index for the task to add.
                    required:
                    - id
                remove:
                  type: array
                  items:
                    type: object
                    properties:
                      id:
                        type: string
                        format: uuid
                        description: The ID for the task to remove.
                      index:
                        type: integer
                        description: The index for the task to remove.
                    required:
                    - id
        userIds:
          type: object
          description: The user IDs of the field when the template type is users.
          properties:
            add:
              type: array
              items:
                type: string
                format: uuid
                description: The user ID to add.
              required:
              - id
            remove:
              type: array
              items:
                type: string
                format: uuid
                description: The user ID to remove.
              required:
              - id
    PatchTasksNameEffect:
      type: object
      description: Update name
      required:
      - type
      - name
      properties:
        type:
          type: string
          enum:
          - name
        name:
          type: string
  securitySchemes:
    apiKey:
      type: apiKey
      name: Authorization
      description: "The Height API uses API keys to authenticate requests. **You can view your API key in the Height settings under API**.\n ex: `api-key secret_1234`"
      in: header
externalDocs:
  description: Height official API Docs
  url: https://www.notion.so/API-documentation-643aea5bf01742de9232e5971cb4afda