Epitrello API Documentation

Welcome to the GraphQL API documentation for Epitrello

API Endpoints
# Staging:
https://staging-epitrello-backend-940386127836.europe-west1.run.app/graphql
Headers
# Your foo from bar
Authorization: Bearer <YOUR_TOKEN_HERE>

Getting Started

Getting Started

  1. Authentication: Most operations require authentication. Use the login or register mutations to obtain a JWT token.
  2. Authorization: Include the JWT token in the Authorization header: Bearer YOUR_JWT_TOKEN
  3. Base URL: https://staging-epitrello-backend-940386127836.europe-west1.run.app/graphql

Features

  • Boards: Create and manage project boards
  • Lists: Organize tasks into lists within boards
  • Cards: Create and manage tasks with position tracking
  • Workspaces: Organize boards into workspaces
  • Authentication: Secure JWT-based authentication
  • OAuth: Support for Google, Microsoft, Apple, and Slack

Queries

activityFeed

Description

Get activity feed from all boards the user has access to (all members). Optional workspace filter.

Response

Returns a MyActivityResult!

Arguments
Name Description
input - MyActivityInput Default = {limit: 20}

Example

Query
query ActivityFeed($input: MyActivityInput) {
  activityFeed(input: $input) {
    activities {
      board {
        ...BoardFragment
      }
      boardId
      cardId
      createdAt
      id
      listId
      payload {
        ...ActivityPayloadFragment
      }
      type
      user {
        ...UserFragment
      }
      userId
    }
    hasMore
    nextCursor
  }
}
Variables
{"input": {"limit": 20}}
Response
{
  "data": {
    "activityFeed": {
      "activities": [Activity],
      "hasMore": true,
      "nextCursor": 4
    }
  }
}

archivedCards

Description

Get archived cards for a board. User must have access to the board.

Response

Returns [Card!]!

Arguments
Name Description
boardId - ID!

Example

Query
query ArchivedCards($boardId: ID!) {
  archivedCards(boardId: $boardId) {
    assignees {
      avatar
      description
      email
      id
      name
    }
    background
    checklists {
      cardId
      id
      items {
        ...ChecklistItemFragment
      }
      title
    }
    completed
    createdAt
    description
    dueDate
    id
    isArchived
    labels {
      boardId
      color
      id
      name
    }
    listId
    position
    startDate
    title
    updatedAt
  }
}
Variables
{"boardId": "4"}
Response
{
  "data": {
    "archivedCards": [
      {
        "assignees": [MemberUser],
        "background": "abc123",
        "checklists": [Checklist],
        "completed": true,
        "createdAt": "2007-12-03T10:15:30Z",
        "description": "abc123",
        "dueDate": "2007-12-03T10:15:30Z",
        "id": "4",
        "isArchived": true,
        "labels": [Label],
        "listId": "4",
        "position": 123.45,
        "startDate": "2007-12-03T10:15:30Z",
        "title": "abc123",
        "updatedAt": "2007-12-03T10:15:30Z"
      }
    ]
  }
}

archivedLists

Description

Get archived lists for a board. User must have access to the board.

Response

Returns [List!]!

Arguments
Name Description
boardId - ID!

Example

Query
query ArchivedLists($boardId: ID!) {
  archivedLists(boardId: $boardId) {
    boardId
    cards {
      assignees {
        ...MemberUserFragment
      }
      background
      checklists {
        ...ChecklistFragment
      }
      completed
      createdAt
      description
      dueDate
      id
      isArchived
      labels {
        ...LabelFragment
      }
      listId
      position
      startDate
      title
      updatedAt
    }
    createdAt
    id
    isArchived
    position
    title
    updatedAt
  }
}
Variables
{"boardId": "4"}
Response
{
  "data": {
    "archivedLists": [
      {
        "boardId": "4",
        "cards": [Card],
        "createdAt": "2007-12-03T10:15:30Z",
        "id": 4,
        "isArchived": true,
        "position": 123,
        "title": "xyz789",
        "updatedAt": "2007-12-03T10:15:30Z"
      }
    ]
  }
}

attachment

Description

Get an attachment by ID. User must have access to the board.

Response

Returns an Attachment!

Arguments
Name Description
id - ID!

Example

Query
query Attachment($id: ID!) {
  attachment(id: $id) {
    cardId
    createdAt
    filename
    id
    size
    uploader {
      avatar
      createdAt
      description
      email
      id
      name
      updatedAt
    }
    uploaderId
    url
  }
}
Variables
{"id": "4"}
Response
{
  "data": {
    "attachment": {
      "cardId": "4",
      "createdAt": "2007-12-03T10:15:30Z",
      "filename": "xyz789",
      "id": "4",
      "size": 987,
      "uploader": User,
      "uploaderId": "4",
      "url": "xyz789"
    }
  }
}

board

Description

Get a board by ID. Access based on visibility and membership.

Response

Returns a Board!

Arguments
Name Description
id - ID!

Example

Query
query Board($id: ID!) {
  board(id: $id) {
    background
    createdAt
    creatorId
    description
    id
    isArchived
    lists {
      boardId
      cards {
        ...CardFragment
      }
      createdAt
      id
      isArchived
      position
      title
      updatedAt
    }
    members {
      boardId
      id
      joinedAt
      role
      user {
        ...MemberUserFragment
      }
      userId
    }
    title
    updatedAt
    visibility
    workspaceId
  }
}
Variables
{"id": 4}
Response
{
  "data": {
    "board": {
      "background": "abc123",
      "createdAt": "2007-12-03T10:15:30Z",
      "creatorId": 4,
      "description": "xyz789",
      "id": "4",
      "isArchived": false,
      "lists": [List],
      "members": [BoardMemberWithUser],
      "title": "xyz789",
      "updatedAt": "2007-12-03T10:15:30Z",
      "visibility": "PRIVATE",
      "workspaceId": "4"
    }
  }
}

boardActivity

Description

Get activity for a board (all members). User must have access to the board.

Response

Returns a MyActivityResult!

Arguments
Name Description
boardId - String!
input - BoardActivityInput Default = {limit: 50}

Example

Query
query BoardActivity(
  $boardId: String!,
  $input: BoardActivityInput
) {
  boardActivity(
    boardId: $boardId,
    input: $input
  ) {
    activities {
      board {
        ...BoardFragment
      }
      boardId
      cardId
      createdAt
      id
      listId
      payload {
        ...ActivityPayloadFragment
      }
      type
      user {
        ...UserFragment
      }
      userId
    }
    hasMore
    nextCursor
  }
}
Variables
{
  "boardId": "xyz789",
  "input": {"limit": 50}
}
Response
{
  "data": {
    "boardActivity": {
      "activities": [Activity],
      "hasMore": true,
      "nextCursor": 4
    }
  }
}

boardLabels

Description

List all labels for a board. User must have access to the board.

Response

Returns [Label!]!

Arguments
Name Description
boardId - ID!

Example

Query
query BoardLabels($boardId: ID!) {
  boardLabels(boardId: $boardId) {
    boardId
    color
    id
    name
  }
}
Variables
{"boardId": "4"}
Response
{
  "data": {
    "boardLabels": [
      {
        "boardId": "4",
        "color": "xyz789",
        "id": 4,
        "name": "abc123"
      }
    ]
  }
}

card

Description

Get a card by ID. User must have access to the board.

Response

Returns a Card!

Arguments
Name Description
id - ID!

Example

Query
query Card($id: ID!) {
  card(id: $id) {
    assignees {
      avatar
      description
      email
      id
      name
    }
    background
    checklists {
      cardId
      id
      items {
        ...ChecklistItemFragment
      }
      title
    }
    completed
    createdAt
    description
    dueDate
    id
    isArchived
    labels {
      boardId
      color
      id
      name
    }
    listId
    position
    startDate
    title
    updatedAt
  }
}
Variables
{"id": 4}
Response
{
  "data": {
    "card": {
      "assignees": [MemberUser],
      "background": "abc123",
      "checklists": [Checklist],
      "completed": true,
      "createdAt": "2007-12-03T10:15:30Z",
      "description": "xyz789",
      "dueDate": "2007-12-03T10:15:30Z",
      "id": "4",
      "isArchived": true,
      "labels": [Label],
      "listId": "4",
      "position": 987.65,
      "startDate": "2007-12-03T10:15:30Z",
      "title": "xyz789",
      "updatedAt": "2007-12-03T10:15:30Z"
    }
  }
}

cardAttachments

Description

List attachments for a card. User must have access to the board.

Response

Returns [Attachment!]!

Arguments
Name Description
cardId - ID!

Example

Query
query CardAttachments($cardId: ID!) {
  cardAttachments(cardId: $cardId) {
    cardId
    createdAt
    filename
    id
    size
    uploader {
      avatar
      createdAt
      description
      email
      id
      name
      updatedAt
    }
    uploaderId
    url
  }
}
Variables
{"cardId": 4}
Response
{
  "data": {
    "cardAttachments": [
      {
        "cardId": 4,
        "createdAt": "2007-12-03T10:15:30Z",
        "filename": "xyz789",
        "id": "4",
        "size": 987,
        "uploader": User,
        "uploaderId": "4",
        "url": "xyz789"
      }
    ]
  }
}

cardChecklists

Description

List all checklists for a card. User must have access to the board.

Response

Returns [Checklist!]!

Arguments
Name Description
cardId - ID!

Example

Query
query CardChecklists($cardId: ID!) {
  cardChecklists(cardId: $cardId) {
    cardId
    id
    items {
      checked
      checklistId
      content
      id
      position
    }
    title
  }
}
Variables
{"cardId": "4"}
Response
{
  "data": {
    "cardChecklists": [
      {
        "cardId": "4",
        "id": "4",
        "items": [ChecklistItem],
        "title": "abc123"
      }
    ]
  }
}

cardComments

Description

List comments for a card. User must have access to the board.

Response

Returns [Comment!]!

Arguments
Name Description
cardId - ID!

Example

Query
query CardComments($cardId: ID!) {
  cardComments(cardId: $cardId) {
    author {
      avatar
      createdAt
      description
      email
      id
      name
      updatedAt
    }
    authorId
    cardId
    content
    createdAt
    id
    updatedAt
  }
}
Variables
{"cardId": "4"}
Response
{
  "data": {
    "cardComments": [
      {
        "author": User,
        "authorId": 4,
        "cardId": 4,
        "content": "abc123",
        "createdAt": "2007-12-03T10:15:30Z",
        "id": 4,
        "updatedAt": "2007-12-03T10:15:30Z"
      }
    ]
  }
}

checklist

Description

Get a checklist by ID. User must have access to the board.

Response

Returns a Checklist!

Arguments
Name Description
id - ID!

Example

Query
query Checklist($id: ID!) {
  checklist(id: $id) {
    cardId
    id
    items {
      checked
      checklistId
      content
      id
      position
    }
    title
  }
}
Variables
{"id": 4}
Response
{
  "data": {
    "checklist": {
      "cardId": "4",
      "id": 4,
      "items": [ChecklistItem],
      "title": "xyz789"
    }
  }
}

comment

Description

Get a comment by ID. User must have access to the board.

Response

Returns a Comment!

Arguments
Name Description
id - ID!

Example

Query
query Comment($id: ID!) {
  comment(id: $id) {
    author {
      avatar
      createdAt
      description
      email
      id
      name
      updatedAt
    }
    authorId
    cardId
    content
    createdAt
    id
    updatedAt
  }
}
Variables
{"id": 4}
Response
{
  "data": {
    "comment": {
      "author": User,
      "authorId": "4",
      "cardId": "4",
      "content": "xyz789",
      "createdAt": "2007-12-03T10:15:30Z",
      "id": "4",
      "updatedAt": "2007-12-03T10:15:30Z"
    }
  }
}

list

Description

Get a list by ID. User must have access to the board.

Response

Returns a List!

Arguments
Name Description
id - ID!

Example

Query
query List($id: ID!) {
  list(id: $id) {
    boardId
    cards {
      assignees {
        ...MemberUserFragment
      }
      background
      checklists {
        ...ChecklistFragment
      }
      completed
      createdAt
      description
      dueDate
      id
      isArchived
      labels {
        ...LabelFragment
      }
      listId
      position
      startDate
      title
      updatedAt
    }
    createdAt
    id
    isArchived
    position
    title
    updatedAt
  }
}
Variables
{"id": "4"}
Response
{
  "data": {
    "list": {
      "boardId": 4,
      "cards": [Card],
      "createdAt": "2007-12-03T10:15:30Z",
      "id": 4,
      "isArchived": true,
      "position": 987,
      "title": "abc123",
      "updatedAt": "2007-12-03T10:15:30Z"
    }
  }
}

me

Description

Get the currently authenticated user information

Response

Returns a User

Example

Query
query Me {
  me {
    avatar
    createdAt
    description
    email
    id
    name
    updatedAt
  }
}
Response
{
  "data": {
    "me": {
      "avatar": "xyz789",
      "createdAt": "2007-12-03T10:15:30Z",
      "description": "abc123",
      "email": "xyz789",
      "id": "4",
      "name": "xyz789",
      "updatedAt": "2007-12-03T10:15:30Z"
    }
  }
}

myActivity

Description

Get current user activity log with optional workspace filter and pagination.

Response

Returns a MyActivityResult!

Arguments
Name Description
input - MyActivityInput Default = {limit: 20}

Example

Query
query MyActivity($input: MyActivityInput) {
  myActivity(input: $input) {
    activities {
      board {
        ...BoardFragment
      }
      boardId
      cardId
      createdAt
      id
      listId
      payload {
        ...ActivityPayloadFragment
      }
      type
      user {
        ...UserFragment
      }
      userId
    }
    hasMore
    nextCursor
  }
}
Variables
{"input": {"limit": 20}}
Response
{
  "data": {
    "myActivity": {
      "activities": [Activity],
      "hasMore": false,
      "nextCursor": "4"
    }
  }
}

myInvitations

Description

Get all pending invitations for the current user.

Response

Returns [WorkspaceInvitation!]!

Example

Query
query MyInvitations {
  myInvitations {
    createdAt
    expiresAt
    id
    inviteeEmail
    inviteeId
    inviterId
    inviterName
    role
    status
    updatedAt
    workspaceId
    workspaceName
  }
}
Response
{
  "data": {
    "myInvitations": [
      {
        "createdAt": "2007-12-03T10:15:30Z",
        "expiresAt": "2007-12-03T10:15:30Z",
        "id": "4",
        "inviteeEmail": "xyz789",
        "inviteeId": "4",
        "inviterId": 4,
        "inviterName": "xyz789",
        "role": "abc123",
        "status": "ACCEPTED",
        "updatedAt": "2007-12-03T10:15:30Z",
        "workspaceId": "4",
        "workspaceName": "abc123"
      }
    ]
  }
}

myNotificationPreferences

Description

Get current user notification preferences (email frequency, desktop notifications).

Response

Returns a NotificationPreferences!

Example

Query
query MyNotificationPreferences {
  myNotificationPreferences {
    allowDesktopNotifications
    emailFrequency
  }
}
Response
{
  "data": {
    "myNotificationPreferences": {
      "allowDesktopNotifications": false,
      "emailFrequency": "DAILY"
    }
  }
}

myNotifications

Description

Get current user notifications with pagination and optional unread filter.

Response

Returns a MyNotificationsResult!

Arguments
Name Description
input - MyNotificationsInput Default = {}

Example

Query
query MyNotifications($input: MyNotificationsInput) {
  myNotifications(input: $input) {
    hasMore
    nextCursor
    notifications {
      createdAt
      id
      payload
      read
      type
      userId
    }
  }
}
Variables
{"input": {}}
Response
{
  "data": {
    "myNotifications": {
      "hasMore": false,
      "nextCursor": "abc123",
      "notifications": [Notification]
    }
  }
}

myWorkspaces

Description

Get all workspaces where the current user is a member

Response

Returns [Workspace!]!

Example

Query
query MyWorkspaces {
  myWorkspaces {
    createdAt
    description
    id
    logoUrl
    memberCount
    memberships {
      id
      joinedAt
      role
      userId
    }
    name
    updatedAt
    visibility
  }
}
Response
{
  "data": {
    "myWorkspaces": [
      {
        "createdAt": "2007-12-03T10:15:30Z",
        "description": "xyz789",
        "id": "4",
        "logoUrl": "abc123",
        "memberCount": 987.65,
        "memberships": [WorkspaceMember],
        "name": "xyz789",
        "updatedAt": "2007-12-03T10:15:30Z",
        "visibility": "PRIVATE"
      }
    ]
  }
}

user

Description

Get a user by ID (requires authentication)

Response

Returns a User

Arguments
Name Description
id - ID!

Example

Query
query User($id: ID!) {
  user(id: $id) {
    avatar
    createdAt
    description
    email
    id
    name
    updatedAt
  }
}
Variables
{"id": 4}
Response
{
  "data": {
    "user": {
      "avatar": "xyz789",
      "createdAt": "2007-12-03T10:15:30Z",
      "description": "abc123",
      "email": "xyz789",
      "id": "4",
      "name": "xyz789",
      "updatedAt": "2007-12-03T10:15:30Z"
    }
  }
}

userByEmail

Description

Get a user by email (for invite flows; requires authentication)

Response

Returns a User

Arguments
Name Description
email - String!

Example

Query
query UserByEmail($email: String!) {
  userByEmail(email: $email) {
    avatar
    createdAt
    description
    email
    id
    name
    updatedAt
  }
}
Variables
{"email": "xyz789"}
Response
{
  "data": {
    "userByEmail": {
      "avatar": "xyz789",
      "createdAt": "2007-12-03T10:15:30Z",
      "description": "abc123",
      "email": "xyz789",
      "id": "4",
      "name": "xyz789",
      "updatedAt": "2007-12-03T10:15:30Z"
    }
  }
}

users

Description

Get all users (requires authentication)

Response

Returns [User!]!

Example

Query
query Users {
  users {
    avatar
    createdAt
    description
    email
    id
    name
    updatedAt
  }
}
Response
{
  "data": {
    "users": [
      {
        "avatar": "xyz789",
        "createdAt": "2007-12-03T10:15:30Z",
        "description": "abc123",
        "email": "xyz789",
        "id": "4",
        "name": "xyz789",
        "updatedAt": "2007-12-03T10:15:30Z"
      }
    ]
  }
}

workspace

Description

Get a workspace by ID. User must be a member to access.

Response

Returns a Workspace!

Arguments
Name Description
id - ID!

Example

Query
query Workspace($id: ID!) {
  workspace(id: $id) {
    createdAt
    description
    id
    logoUrl
    memberCount
    memberships {
      id
      joinedAt
      role
      userId
    }
    name
    updatedAt
    visibility
  }
}
Variables
{"id": "4"}
Response
{
  "data": {
    "workspace": {
      "createdAt": "2007-12-03T10:15:30Z",
      "description": "abc123",
      "id": "4",
      "logoUrl": "xyz789",
      "memberCount": 987.65,
      "memberships": [WorkspaceMember],
      "name": "xyz789",
      "updatedAt": "2007-12-03T10:15:30Z",
      "visibility": "PRIVATE"
    }
  }
}

workspaceBoards

Description

List all boards in a workspace. User must be a workspace member.

Response

Returns [Board!]!

Arguments
Name Description
workspaceId - ID!

Example

Query
query WorkspaceBoards($workspaceId: ID!) {
  workspaceBoards(workspaceId: $workspaceId) {
    background
    createdAt
    creatorId
    description
    id
    isArchived
    lists {
      boardId
      cards {
        ...CardFragment
      }
      createdAt
      id
      isArchived
      position
      title
      updatedAt
    }
    members {
      boardId
      id
      joinedAt
      role
      user {
        ...MemberUserFragment
      }
      userId
    }
    title
    updatedAt
    visibility
    workspaceId
  }
}
Variables
{"workspaceId": 4}
Response
{
  "data": {
    "workspaceBoards": [
      {
        "background": "abc123",
        "createdAt": "2007-12-03T10:15:30Z",
        "creatorId": 4,
        "description": "xyz789",
        "id": 4,
        "isArchived": false,
        "lists": [List],
        "members": [BoardMemberWithUser],
        "title": "abc123",
        "updatedAt": "2007-12-03T10:15:30Z",
        "visibility": "PRIVATE",
        "workspaceId": 4
      }
    ]
  }
}

workspaceInvitations

Description

Get pending invitations for a workspace. Only ADMIN can view.

Response

Returns [WorkspaceInvitation!]!

Arguments
Name Description
workspaceId - ID!

Example

Query
query WorkspaceInvitations($workspaceId: ID!) {
  workspaceInvitations(workspaceId: $workspaceId) {
    createdAt
    expiresAt
    id
    inviteeEmail
    inviteeId
    inviterId
    inviterName
    role
    status
    updatedAt
    workspaceId
    workspaceName
  }
}
Variables
{"workspaceId": "4"}
Response
{
  "data": {
    "workspaceInvitations": [
      {
        "createdAt": "2007-12-03T10:15:30Z",
        "expiresAt": "2007-12-03T10:15:30Z",
        "id": 4,
        "inviteeEmail": "xyz789",
        "inviteeId": "4",
        "inviterId": "4",
        "inviterName": "abc123",
        "role": "abc123",
        "status": "ACCEPTED",
        "updatedAt": "2007-12-03T10:15:30Z",
        "workspaceId": 4,
        "workspaceName": "abc123"
      }
    ]
  }
}

workspaceInviteInfo

Description

Get workspace name/logo for the invite link page. Public.

Response

Returns a WorkspaceInviteInfo!

Arguments
Name Description
workspaceId - ID!

Example

Query
query WorkspaceInviteInfo($workspaceId: ID!) {
  workspaceInviteInfo(workspaceId: $workspaceId) {
    id
    logoUrl
    name
  }
}
Variables
{"workspaceId": 4}
Response
{
  "data": {
    "workspaceInviteInfo": {
      "id": "4",
      "logoUrl": "abc123",
      "name": "xyz789"
    }
  }
}

workspaceMembers

Description

Get all members of a workspace. User must be a member to view.

Response

Returns [WorkspaceMemberWithUser!]!

Arguments
Name Description
workspaceId - ID!

Example

Query
query WorkspaceMembers($workspaceId: ID!) {
  workspaceMembers(workspaceId: $workspaceId) {
    id
    joinedAt
    role
    user {
      avatar
      description
      email
      id
      name
    }
    userId
    workspaceId
  }
}
Variables
{"workspaceId": 4}
Response
{
  "data": {
    "workspaceMembers": [
      {
        "id": 4,
        "joinedAt": "2007-12-03T10:15:30Z",
        "role": "abc123",
        "user": MemberUser,
        "userId": "4",
        "workspaceId": "4"
      }
    ]
  }
}

Mutations

acceptInvitation

Description

Accept a workspace invitation.

Response

Returns a WorkspaceInvitation!

Arguments
Name Description
input - RespondInvitationInput!

Example

Query
mutation AcceptInvitation($input: RespondInvitationInput!) {
  acceptInvitation(input: $input) {
    createdAt
    expiresAt
    id
    inviteeEmail
    inviteeId
    inviterId
    inviterName
    role
    status
    updatedAt
    workspaceId
    workspaceName
  }
}
Variables
{"input": RespondInvitationInput}
Response
{
  "data": {
    "acceptInvitation": {
      "createdAt": "2007-12-03T10:15:30Z",
      "expiresAt": "2007-12-03T10:15:30Z",
      "id": "4",
      "inviteeEmail": "xyz789",
      "inviteeId": "4",
      "inviterId": 4,
      "inviterName": "abc123",
      "role": "xyz789",
      "status": "ACCEPTED",
      "updatedAt": "2007-12-03T10:15:30Z",
      "workspaceId": "4",
      "workspaceName": "abc123"
    }
  }
}

addBoardMember

Description

Add a member to a board. Only board ADMIN can add members.

Response

Returns a BoardMemberWithUser!

Arguments
Name Description
input - AddBoardMemberInput!

Example

Query
mutation AddBoardMember($input: AddBoardMemberInput!) {
  addBoardMember(input: $input) {
    boardId
    id
    joinedAt
    role
    user {
      avatar
      description
      email
      id
      name
    }
    userId
  }
}
Variables
{"input": AddBoardMemberInput}
Response
{
  "data": {
    "addBoardMember": {
      "boardId": "4",
      "id": "4",
      "joinedAt": "2007-12-03T10:15:30Z",
      "role": "xyz789",
      "user": MemberUser,
      "userId": "4"
    }
  }
}

addChecklistItem

Description

Add an item to a checklist.

Response

Returns a ChecklistItem!

Arguments
Name Description
input - AddChecklistItemInput!

Example

Query
mutation AddChecklistItem($input: AddChecklistItemInput!) {
  addChecklistItem(input: $input) {
    checked
    checklistId
    content
    id
    position
  }
}
Variables
{"input": AddChecklistItemInput}
Response
{
  "data": {
    "addChecklistItem": {
      "checked": true,
      "checklistId": "4",
      "content": "abc123",
      "id": 4,
      "position": 123.45
    }
  }
}

addLabelToCard

Description

Add a label to a card. User must have access to the board.

Response

Returns a Card!

Arguments
Name Description
input - AddLabelToCardInput!

Example

Query
mutation AddLabelToCard($input: AddLabelToCardInput!) {
  addLabelToCard(input: $input) {
    assignees {
      avatar
      description
      email
      id
      name
    }
    background
    checklists {
      cardId
      id
      items {
        ...ChecklistItemFragment
      }
      title
    }
    completed
    createdAt
    description
    dueDate
    id
    isArchived
    labels {
      boardId
      color
      id
      name
    }
    listId
    position
    startDate
    title
    updatedAt
  }
}
Variables
{"input": AddLabelToCardInput}
Response
{
  "data": {
    "addLabelToCard": {
      "assignees": [MemberUser],
      "background": "abc123",
      "checklists": [Checklist],
      "completed": false,
      "createdAt": "2007-12-03T10:15:30Z",
      "description": "xyz789",
      "dueDate": "2007-12-03T10:15:30Z",
      "id": "4",
      "isArchived": true,
      "labels": [Label],
      "listId": 4,
      "position": 987.65,
      "startDate": "2007-12-03T10:15:30Z",
      "title": "xyz789",
      "updatedAt": "2007-12-03T10:15:30Z"
    }
  }
}

archiveBoard

Description

Archive a board. User must be ADMIN or MEMBER.

Response

Returns a Board!

Arguments
Name Description
id - ID!

Example

Query
mutation ArchiveBoard($id: ID!) {
  archiveBoard(id: $id) {
    background
    createdAt
    creatorId
    description
    id
    isArchived
    lists {
      boardId
      cards {
        ...CardFragment
      }
      createdAt
      id
      isArchived
      position
      title
      updatedAt
    }
    members {
      boardId
      id
      joinedAt
      role
      user {
        ...MemberUserFragment
      }
      userId
    }
    title
    updatedAt
    visibility
    workspaceId
  }
}
Variables
{"id": "4"}
Response
{
  "data": {
    "archiveBoard": {
      "background": "abc123",
      "createdAt": "2007-12-03T10:15:30Z",
      "creatorId": "4",
      "description": "xyz789",
      "id": 4,
      "isArchived": true,
      "lists": [List],
      "members": [BoardMemberWithUser],
      "title": "xyz789",
      "updatedAt": "2007-12-03T10:15:30Z",
      "visibility": "PRIVATE",
      "workspaceId": "4"
    }
  }
}

archiveCard

Description

Archive a card. User must have access to the board.

Response

Returns a Card!

Arguments
Name Description
id - ID!

Example

Query
mutation ArchiveCard($id: ID!) {
  archiveCard(id: $id) {
    assignees {
      avatar
      description
      email
      id
      name
    }
    background
    checklists {
      cardId
      id
      items {
        ...ChecklistItemFragment
      }
      title
    }
    completed
    createdAt
    description
    dueDate
    id
    isArchived
    labels {
      boardId
      color
      id
      name
    }
    listId
    position
    startDate
    title
    updatedAt
  }
}
Variables
{"id": "4"}
Response
{
  "data": {
    "archiveCard": {
      "assignees": [MemberUser],
      "background": "abc123",
      "checklists": [Checklist],
      "completed": true,
      "createdAt": "2007-12-03T10:15:30Z",
      "description": "xyz789",
      "dueDate": "2007-12-03T10:15:30Z",
      "id": "4",
      "isArchived": true,
      "labels": [Label],
      "listId": "4",
      "position": 987.65,
      "startDate": "2007-12-03T10:15:30Z",
      "title": "abc123",
      "updatedAt": "2007-12-03T10:15:30Z"
    }
  }
}

archiveList

Description

Archive a list. User must have access to the board.

Response

Returns a List!

Arguments
Name Description
id - ID!

Example

Query
mutation ArchiveList($id: ID!) {
  archiveList(id: $id) {
    boardId
    cards {
      assignees {
        ...MemberUserFragment
      }
      background
      checklists {
        ...ChecklistFragment
      }
      completed
      createdAt
      description
      dueDate
      id
      isArchived
      labels {
        ...LabelFragment
      }
      listId
      position
      startDate
      title
      updatedAt
    }
    createdAt
    id
    isArchived
    position
    title
    updatedAt
  }
}
Variables
{"id": "4"}
Response
{
  "data": {
    "archiveList": {
      "boardId": "4",
      "cards": [Card],
      "createdAt": "2007-12-03T10:15:30Z",
      "id": 4,
      "isArchived": true,
      "position": 987,
      "title": "xyz789",
      "updatedAt": "2007-12-03T10:15:30Z"
    }
  }
}

assignMemberToCard

Description

Assign a member to a card. User must have access to the board.

Response

Returns a Card!

Arguments
Name Description
input - AssignMemberToCardInput!

Example

Query
mutation AssignMemberToCard($input: AssignMemberToCardInput!) {
  assignMemberToCard(input: $input) {
    assignees {
      avatar
      description
      email
      id
      name
    }
    background
    checklists {
      cardId
      id
      items {
        ...ChecklistItemFragment
      }
      title
    }
    completed
    createdAt
    description
    dueDate
    id
    isArchived
    labels {
      boardId
      color
      id
      name
    }
    listId
    position
    startDate
    title
    updatedAt
  }
}
Variables
{"input": AssignMemberToCardInput}
Response
{
  "data": {
    "assignMemberToCard": {
      "assignees": [MemberUser],
      "background": "xyz789",
      "checklists": [Checklist],
      "completed": true,
      "createdAt": "2007-12-03T10:15:30Z",
      "description": "abc123",
      "dueDate": "2007-12-03T10:15:30Z",
      "id": 4,
      "isArchived": false,
      "labels": [Label],
      "listId": "4",
      "position": 123.45,
      "startDate": "2007-12-03T10:15:30Z",
      "title": "abc123",
      "updatedAt": "2007-12-03T10:15:30Z"
    }
  }
}

cancelInvitation

Description

Cancel a pending invitation. Only the inviter or workspace admin can cancel.

Response

Returns a Boolean!

Arguments
Name Description
invitationId - ID!

Example

Query
mutation CancelInvitation($invitationId: ID!) {
  cancelInvitation(invitationId: $invitationId)
}
Variables
{"invitationId": 4}
Response
{"data": {"cancelInvitation": false}}

createAttachment

Description

Create an attachment on a card.

Response

Returns an Attachment!

Arguments
Name Description
input - CreateAttachmentInput!

Example

Query
mutation CreateAttachment($input: CreateAttachmentInput!) {
  createAttachment(input: $input) {
    cardId
    createdAt
    filename
    id
    size
    uploader {
      avatar
      createdAt
      description
      email
      id
      name
      updatedAt
    }
    uploaderId
    url
  }
}
Variables
{"input": CreateAttachmentInput}
Response
{
  "data": {
    "createAttachment": {
      "cardId": 4,
      "createdAt": "2007-12-03T10:15:30Z",
      "filename": "abc123",
      "id": 4,
      "size": 987,
      "uploader": User,
      "uploaderId": "4",
      "url": "abc123"
    }
  }
}

createBoard

Description

Create a new board. User must be ADMIN or MEMBER of the workspace (if provided).

Response

Returns a Board!

Arguments
Name Description
input - CreateBoardInput!

Example

Query
mutation CreateBoard($input: CreateBoardInput!) {
  createBoard(input: $input) {
    background
    createdAt
    creatorId
    description
    id
    isArchived
    lists {
      boardId
      cards {
        ...CardFragment
      }
      createdAt
      id
      isArchived
      position
      title
      updatedAt
    }
    members {
      boardId
      id
      joinedAt
      role
      user {
        ...MemberUserFragment
      }
      userId
    }
    title
    updatedAt
    visibility
    workspaceId
  }
}
Variables
{"input": CreateBoardInput}
Response
{
  "data": {
    "createBoard": {
      "background": "abc123",
      "createdAt": "2007-12-03T10:15:30Z",
      "creatorId": "4",
      "description": "xyz789",
      "id": 4,
      "isArchived": true,
      "lists": [List],
      "members": [BoardMemberWithUser],
      "title": "abc123",
      "updatedAt": "2007-12-03T10:15:30Z",
      "visibility": "PRIVATE",
      "workspaceId": "4"
    }
  }
}

createCard

Description

Create a new card. Position is calculated automatically if not provided.

Response

Returns a Card!

Arguments
Name Description
input - CreateCardInput!

Example

Query
mutation CreateCard($input: CreateCardInput!) {
  createCard(input: $input) {
    assignees {
      avatar
      description
      email
      id
      name
    }
    background
    checklists {
      cardId
      id
      items {
        ...ChecklistItemFragment
      }
      title
    }
    completed
    createdAt
    description
    dueDate
    id
    isArchived
    labels {
      boardId
      color
      id
      name
    }
    listId
    position
    startDate
    title
    updatedAt
  }
}
Variables
{"input": CreateCardInput}
Response
{
  "data": {
    "createCard": {
      "assignees": [MemberUser],
      "background": "xyz789",
      "checklists": [Checklist],
      "completed": true,
      "createdAt": "2007-12-03T10:15:30Z",
      "description": "xyz789",
      "dueDate": "2007-12-03T10:15:30Z",
      "id": 4,
      "isArchived": true,
      "labels": [Label],
      "listId": 4,
      "position": 987.65,
      "startDate": "2007-12-03T10:15:30Z",
      "title": "abc123",
      "updatedAt": "2007-12-03T10:15:30Z"
    }
  }
}

createChecklist

Description

Create a new checklist for a card.

Response

Returns a Checklist!

Arguments
Name Description
input - CreateChecklistInput!

Example

Query
mutation CreateChecklist($input: CreateChecklistInput!) {
  createChecklist(input: $input) {
    cardId
    id
    items {
      checked
      checklistId
      content
      id
      position
    }
    title
  }
}
Variables
{"input": CreateChecklistInput}
Response
{
  "data": {
    "createChecklist": {
      "cardId": "4",
      "id": "4",
      "items": [ChecklistItem],
      "title": "xyz789"
    }
  }
}

createComment

Description

Create a comment on a card.

Response

Returns a Comment!

Arguments
Name Description
input - CreateCommentInput!

Example

Query
mutation CreateComment($input: CreateCommentInput!) {
  createComment(input: $input) {
    author {
      avatar
      createdAt
      description
      email
      id
      name
      updatedAt
    }
    authorId
    cardId
    content
    createdAt
    id
    updatedAt
  }
}
Variables
{"input": CreateCommentInput}
Response
{
  "data": {
    "createComment": {
      "author": User,
      "authorId": "4",
      "cardId": 4,
      "content": "xyz789",
      "createdAt": "2007-12-03T10:15:30Z",
      "id": 4,
      "updatedAt": "2007-12-03T10:15:30Z"
    }
  }
}

createLabel

Description

Create a new label for a board. User must have access to the board.

Response

Returns a Label!

Arguments
Name Description
input - CreateLabelInput!

Example

Query
mutation CreateLabel($input: CreateLabelInput!) {
  createLabel(input: $input) {
    boardId
    color
    id
    name
  }
}
Variables
{"input": CreateLabelInput}
Response
{
  "data": {
    "createLabel": {
      "boardId": "4",
      "color": "xyz789",
      "id": 4,
      "name": "abc123"
    }
  }
}

createList

Description

Create a new list. Position is calculated automatically if not provided.

Response

Returns a List!

Arguments
Name Description
input - CreateListInput!

Example

Query
mutation CreateList($input: CreateListInput!) {
  createList(input: $input) {
    boardId
    cards {
      assignees {
        ...MemberUserFragment
      }
      background
      checklists {
        ...ChecklistFragment
      }
      completed
      createdAt
      description
      dueDate
      id
      isArchived
      labels {
        ...LabelFragment
      }
      listId
      position
      startDate
      title
      updatedAt
    }
    createdAt
    id
    isArchived
    position
    title
    updatedAt
  }
}
Variables
{"input": CreateListInput}
Response
{
  "data": {
    "createList": {
      "boardId": 4,
      "cards": [Card],
      "createdAt": "2007-12-03T10:15:30Z",
      "id": 4,
      "isArchived": true,
      "position": 987,
      "title": "abc123",
      "updatedAt": "2007-12-03T10:15:30Z"
    }
  }
}

createUser

Description

Create a new user (requires authentication)

Response

Returns a User!

Arguments
Name Description
input - CreateUserInput!

Example

Query
mutation CreateUser($input: CreateUserInput!) {
  createUser(input: $input) {
    avatar
    createdAt
    description
    email
    id
    name
    updatedAt
  }
}
Variables
{"input": CreateUserInput}
Response
{
  "data": {
    "createUser": {
      "avatar": "abc123",
      "createdAt": "2007-12-03T10:15:30Z",
      "description": "xyz789",
      "email": "abc123",
      "id": 4,
      "name": "xyz789",
      "updatedAt": "2007-12-03T10:15:30Z"
    }
  }
}

createWorkspace

Description

Create a new workspace. The creator becomes an ADMIN automatically.

Response

Returns a Workspace!

Arguments
Name Description
input - CreateWorkspaceInput!

Example

Query
mutation CreateWorkspace($input: CreateWorkspaceInput!) {
  createWorkspace(input: $input) {
    createdAt
    description
    id
    logoUrl
    memberCount
    memberships {
      id
      joinedAt
      role
      userId
    }
    name
    updatedAt
    visibility
  }
}
Variables
{"input": CreateWorkspaceInput}
Response
{
  "data": {
    "createWorkspace": {
      "createdAt": "2007-12-03T10:15:30Z",
      "description": "abc123",
      "id": 4,
      "logoUrl": "xyz789",
      "memberCount": 987.65,
      "memberships": [WorkspaceMember],
      "name": "xyz789",
      "updatedAt": "2007-12-03T10:15:30Z",
      "visibility": "PRIVATE"
    }
  }
}

deleteAttachment

Description

Delete an attachment. Uploader only.

Response

Returns a Boolean!

Arguments
Name Description
id - ID!

Example

Query
mutation DeleteAttachment($id: ID!) {
  deleteAttachment(id: $id)
}
Variables
{"id": "4"}
Response
{"data": {"deleteAttachment": false}}

deleteBoard

Description

Delete a board. Only board ADMIN can delete.

Response

Returns a Boolean!

Arguments
Name Description
id - ID!

Example

Query
mutation DeleteBoard($id: ID!) {
  deleteBoard(id: $id)
}
Variables
{"id": 4}
Response
{"data": {"deleteBoard": true}}

deleteCard

Description

Delete a card. User must have access to the board.

Response

Returns a Boolean!

Arguments
Name Description
id - ID!

Example

Query
mutation DeleteCard($id: ID!) {
  deleteCard(id: $id)
}
Variables
{"id": "4"}
Response
{"data": {"deleteCard": false}}

deleteChecklist

Description

Delete a checklist.

Response

Returns a Boolean!

Arguments
Name Description
id - ID!

Example

Query
mutation DeleteChecklist($id: ID!) {
  deleteChecklist(id: $id)
}
Variables
{"id": 4}
Response
{"data": {"deleteChecklist": false}}

deleteChecklistItem

Description

Delete a checklist item.

Response

Returns a Boolean!

Arguments
Name Description
id - ID!

Example

Query
mutation DeleteChecklistItem($id: ID!) {
  deleteChecklistItem(id: $id)
}
Variables
{"id": "4"}
Response
{"data": {"deleteChecklistItem": true}}

deleteComment

Description

Delete a comment. Author only.

Response

Returns a Boolean!

Arguments
Name Description
id - ID!

Example

Query
mutation DeleteComment($id: ID!) {
  deleteComment(id: $id)
}
Variables
{"id": 4}
Response
{"data": {"deleteComment": true}}

deleteLabel

Description

Delete a label. User must have access to the board.

Response

Returns a Boolean!

Arguments
Name Description
id - ID!

Example

Query
mutation DeleteLabel($id: ID!) {
  deleteLabel(id: $id)
}
Variables
{"id": 4}
Response
{"data": {"deleteLabel": true}}

deleteList

Description

Delete a list. Cards are automatically deleted via cascade.

Response

Returns a Boolean!

Arguments
Name Description
id - ID!

Example

Query
mutation DeleteList($id: ID!) {
  deleteList(id: $id)
}
Variables
{"id": 4}
Response
{"data": {"deleteList": true}}

deleteUser

Description

Delete a user by ID (requires authentication)

Response

Returns a Boolean!

Arguments
Name Description
id - ID!

Example

Query
mutation DeleteUser($id: ID!) {
  deleteUser(id: $id)
}
Variables
{"id": 4}
Response
{"data": {"deleteUser": false}}

deleteWorkspace

Description

Delete a workspace. Only ADMIN members can delete.

Response

Returns a Boolean!

Arguments
Name Description
id - ID!

Example

Query
mutation DeleteWorkspace($id: ID!) {
  deleteWorkspace(id: $id)
}
Variables
{"id": 4}
Response
{"data": {"deleteWorkspace": true}}

forgotPassword

Description

Request a password reset. A reset token will be sent to the provided email address if the account exists.

Response

Returns a MessageResponse!

Arguments
Name Description
input - ForgotPasswordInput!

Example

Query
mutation ForgotPassword($input: ForgotPasswordInput!) {
  forgotPassword(input: $input) {
    message
  }
}
Variables
{"input": ForgotPasswordInput}
Response
{
  "data": {
    "forgotPassword": {"message": "abc123"}
  }
}

inviteMember

Description

Invite a member to a workspace. Only ADMIN members can invite.

Response

Returns a WorkspaceInvitation!

Arguments
Name Description
input - InviteMemberInput!

Example

Query
mutation InviteMember($input: InviteMemberInput!) {
  inviteMember(input: $input) {
    createdAt
    expiresAt
    id
    inviteeEmail
    inviteeId
    inviterId
    inviterName
    role
    status
    updatedAt
    workspaceId
    workspaceName
  }
}
Variables
{"input": InviteMemberInput}
Response
{
  "data": {
    "inviteMember": {
      "createdAt": "2007-12-03T10:15:30Z",
      "expiresAt": "2007-12-03T10:15:30Z",
      "id": "4",
      "inviteeEmail": "xyz789",
      "inviteeId": 4,
      "inviterId": "4",
      "inviterName": "abc123",
      "role": "abc123",
      "status": "ACCEPTED",
      "updatedAt": "2007-12-03T10:15:30Z",
      "workspaceId": 4,
      "workspaceName": "abc123"
    }
  }
}

leaveBoard

Description

Leave a board. Cannot leave if you are the last admin.

Response

Returns a Boolean!

Arguments
Name Description
boardId - ID!

Example

Query
mutation LeaveBoard($boardId: ID!) {
  leaveBoard(boardId: $boardId)
}
Variables
{"boardId": "4"}
Response
{"data": {"leaveBoard": false}}

leaveWorkspace

Description

Leave a workspace. Cannot leave if you are the last admin.

Response

Returns a Boolean!

Arguments
Name Description
workspaceId - ID!

Example

Query
mutation LeaveWorkspace($workspaceId: ID!) {
  leaveWorkspace(workspaceId: $workspaceId)
}
Variables
{"workspaceId": "4"}
Response
{"data": {"leaveWorkspace": false}}

login

Description

Login with email and password. Returns a JWT token for authenticated requests.

Response

Returns an AuthPayload!

Arguments
Name Description
input - LoginInput!

Example

Query
mutation Login($input: LoginInput!) {
  login(input: $input) {
    token
    user {
      avatar
      createdAt
      description
      email
      id
      name
      updatedAt
    }
  }
}
Variables
{"input": LoginInput}
Response
{
  "data": {
    "login": {
      "token": "abc123",
      "user": User
    }
  }
}

markAllNotificationsRead

Description

Mark all notifications as read for the current user. Returns count updated.

Response

Returns an Int!

Example

Query
mutation MarkAllNotificationsRead {
  markAllNotificationsRead
}
Response
{"data": {"markAllNotificationsRead": 123}}

markNotificationRead

Description

Mark a notification as read.

Response

Returns a Notification!

Arguments
Name Description
id - ID!

Example

Query
mutation MarkNotificationRead($id: ID!) {
  markNotificationRead(id: $id) {
    createdAt
    id
    payload
    read
    type
    userId
  }
}
Variables
{"id": 4}
Response
{
  "data": {
    "markNotificationRead": {
      "createdAt": "2007-12-03T10:15:30Z",
      "id": "4",
      "payload": "xyz789",
      "read": true,
      "type": "BOARD_INVITATION",
      "userId": 4
    }
  }
}

moveCard

Description

Move a card to a different list within the same board. Position is calculated automatically if not provided.

Response

Returns a Card!

Arguments
Name Description
input - MoveCardInput!

Example

Query
mutation MoveCard($input: MoveCardInput!) {
  moveCard(input: $input) {
    assignees {
      avatar
      description
      email
      id
      name
    }
    background
    checklists {
      cardId
      id
      items {
        ...ChecklistItemFragment
      }
      title
    }
    completed
    createdAt
    description
    dueDate
    id
    isArchived
    labels {
      boardId
      color
      id
      name
    }
    listId
    position
    startDate
    title
    updatedAt
  }
}
Variables
{"input": MoveCardInput}
Response
{
  "data": {
    "moveCard": {
      "assignees": [MemberUser],
      "background": "xyz789",
      "checklists": [Checklist],
      "completed": false,
      "createdAt": "2007-12-03T10:15:30Z",
      "description": "abc123",
      "dueDate": "2007-12-03T10:15:30Z",
      "id": 4,
      "isArchived": true,
      "labels": [Label],
      "listId": "4",
      "position": 987.65,
      "startDate": "2007-12-03T10:15:30Z",
      "title": "xyz789",
      "updatedAt": "2007-12-03T10:15:30Z"
    }
  }
}

register

Description

Register a new user account. If companyName is provided, a workspace is automatically created.

Response

Returns an AuthPayload!

Arguments
Name Description
input - RegisterInput!

Example

Query
mutation Register($input: RegisterInput!) {
  register(input: $input) {
    token
    user {
      avatar
      createdAt
      description
      email
      id
      name
      updatedAt
    }
  }
}
Variables
{"input": RegisterInput}
Response
{
  "data": {
    "register": {
      "token": "xyz789",
      "user": User
    }
  }
}

rejectInvitation

Description

Reject a workspace invitation.

Response

Returns a WorkspaceInvitation!

Arguments
Name Description
input - RespondInvitationInput!

Example

Query
mutation RejectInvitation($input: RespondInvitationInput!) {
  rejectInvitation(input: $input) {
    createdAt
    expiresAt
    id
    inviteeEmail
    inviteeId
    inviterId
    inviterName
    role
    status
    updatedAt
    workspaceId
    workspaceName
  }
}
Variables
{"input": RespondInvitationInput}
Response
{
  "data": {
    "rejectInvitation": {
      "createdAt": "2007-12-03T10:15:30Z",
      "expiresAt": "2007-12-03T10:15:30Z",
      "id": "4",
      "inviteeEmail": "xyz789",
      "inviteeId": "4",
      "inviterId": "4",
      "inviterName": "xyz789",
      "role": "abc123",
      "status": "ACCEPTED",
      "updatedAt": "2007-12-03T10:15:30Z",
      "workspaceId": 4,
      "workspaceName": "xyz789"
    }
  }
}

removeBoardMember

Description

Remove a member from a board. Only board ADMIN can remove members.

Response

Returns a Boolean!

Arguments
Name Description
boardId - ID!
userId - ID!

Example

Query
mutation RemoveBoardMember(
  $boardId: ID!,
  $userId: ID!
) {
  removeBoardMember(
    boardId: $boardId,
    userId: $userId
  )
}
Variables
{
  "boardId": "4",
  "userId": "4"
}
Response
{"data": {"removeBoardMember": true}}

removeLabelFromCard

Description

Remove a label from a card. User must have access to the board.

Response

Returns a Card!

Arguments
Name Description
input - RemoveLabelFromCardInput!

Example

Query
mutation RemoveLabelFromCard($input: RemoveLabelFromCardInput!) {
  removeLabelFromCard(input: $input) {
    assignees {
      avatar
      description
      email
      id
      name
    }
    background
    checklists {
      cardId
      id
      items {
        ...ChecklistItemFragment
      }
      title
    }
    completed
    createdAt
    description
    dueDate
    id
    isArchived
    labels {
      boardId
      color
      id
      name
    }
    listId
    position
    startDate
    title
    updatedAt
  }
}
Variables
{"input": RemoveLabelFromCardInput}
Response
{
  "data": {
    "removeLabelFromCard": {
      "assignees": [MemberUser],
      "background": "xyz789",
      "checklists": [Checklist],
      "completed": true,
      "createdAt": "2007-12-03T10:15:30Z",
      "description": "xyz789",
      "dueDate": "2007-12-03T10:15:30Z",
      "id": 4,
      "isArchived": false,
      "labels": [Label],
      "listId": "4",
      "position": 123.45,
      "startDate": "2007-12-03T10:15:30Z",
      "title": "xyz789",
      "updatedAt": "2007-12-03T10:15:30Z"
    }
  }
}

removeMember

Description

Remove a member from a workspace. Only ADMIN can remove members.

Response

Returns a Boolean!

Arguments
Name Description
input - RemoveMemberInput!

Example

Query
mutation RemoveMember($input: RemoveMemberInput!) {
  removeMember(input: $input)
}
Variables
{"input": RemoveMemberInput}
Response
{"data": {"removeMember": true}}

reorderCards

Description

Reorder multiple cards within the same list. All cards must belong to the same list.

Response

Returns [Card!]!

Arguments
Name Description
input - ReorderCardsInput!

Example

Query
mutation ReorderCards($input: ReorderCardsInput!) {
  reorderCards(input: $input) {
    assignees {
      avatar
      description
      email
      id
      name
    }
    background
    checklists {
      cardId
      id
      items {
        ...ChecklistItemFragment
      }
      title
    }
    completed
    createdAt
    description
    dueDate
    id
    isArchived
    labels {
      boardId
      color
      id
      name
    }
    listId
    position
    startDate
    title
    updatedAt
  }
}
Variables
{"input": ReorderCardsInput}
Response
{
  "data": {
    "reorderCards": [
      {
        "assignees": [MemberUser],
        "background": "xyz789",
        "checklists": [Checklist],
        "completed": true,
        "createdAt": "2007-12-03T10:15:30Z",
        "description": "abc123",
        "dueDate": "2007-12-03T10:15:30Z",
        "id": 4,
        "isArchived": false,
        "labels": [Label],
        "listId": "4",
        "position": 987.65,
        "startDate": "2007-12-03T10:15:30Z",
        "title": "abc123",
        "updatedAt": "2007-12-03T10:15:30Z"
      }
    ]
  }
}

reorderChecklistItems

Description

Reorder items in a checklist.

Response

Returns [ChecklistItem!]!

Arguments
Name Description
input - ReorderChecklistItemsInput!

Example

Query
mutation ReorderChecklistItems($input: ReorderChecklistItemsInput!) {
  reorderChecklistItems(input: $input) {
    checked
    checklistId
    content
    id
    position
  }
}
Variables
{"input": ReorderChecklistItemsInput}
Response
{
  "data": {
    "reorderChecklistItems": [
      {
        "checked": false,
        "checklistId": "4",
        "content": "xyz789",
        "id": "4",
        "position": 123.45
      }
    ]
  }
}

reorderLists

Description

Reorder multiple lists at once. All lists must belong to the same board.

Response

Returns [List!]!

Arguments
Name Description
input - ReorderListsInput!

Example

Query
mutation ReorderLists($input: ReorderListsInput!) {
  reorderLists(input: $input) {
    boardId
    cards {
      assignees {
        ...MemberUserFragment
      }
      background
      checklists {
        ...ChecklistFragment
      }
      completed
      createdAt
      description
      dueDate
      id
      isArchived
      labels {
        ...LabelFragment
      }
      listId
      position
      startDate
      title
      updatedAt
    }
    createdAt
    id
    isArchived
    position
    title
    updatedAt
  }
}
Variables
{"input": ReorderListsInput}
Response
{
  "data": {
    "reorderLists": [
      {
        "boardId": 4,
        "cards": [Card],
        "createdAt": "2007-12-03T10:15:30Z",
        "id": "4",
        "isArchived": false,
        "position": 987,
        "title": "abc123",
        "updatedAt": "2007-12-03T10:15:30Z"
      }
    ]
  }
}

resetPassword

Description

Reset password using a valid reset token. The token is received via email after requesting a password reset.

Response

Returns a MessageResponse!

Arguments
Name Description
input - ResetPasswordInput!

Example

Query
mutation ResetPassword($input: ResetPasswordInput!) {
  resetPassword(input: $input) {
    message
  }
}
Variables
{"input": ResetPasswordInput}
Response
{
  "data": {
    "resetPassword": {"message": "xyz789"}
  }
}

unarchiveBoard

Description

Unarchive a board. User must be ADMIN or MEMBER.

Response

Returns a Board!

Arguments
Name Description
id - ID!

Example

Query
mutation UnarchiveBoard($id: ID!) {
  unarchiveBoard(id: $id) {
    background
    createdAt
    creatorId
    description
    id
    isArchived
    lists {
      boardId
      cards {
        ...CardFragment
      }
      createdAt
      id
      isArchived
      position
      title
      updatedAt
    }
    members {
      boardId
      id
      joinedAt
      role
      user {
        ...MemberUserFragment
      }
      userId
    }
    title
    updatedAt
    visibility
    workspaceId
  }
}
Variables
{"id": "4"}
Response
{
  "data": {
    "unarchiveBoard": {
      "background": "abc123",
      "createdAt": "2007-12-03T10:15:30Z",
      "creatorId": "4",
      "description": "abc123",
      "id": "4",
      "isArchived": true,
      "lists": [List],
      "members": [BoardMemberWithUser],
      "title": "abc123",
      "updatedAt": "2007-12-03T10:15:30Z",
      "visibility": "PRIVATE",
      "workspaceId": "4"
    }
  }
}

unarchiveCard

Description

Unarchive a card. User must have access to the board.

Response

Returns a Card!

Arguments
Name Description
id - ID!

Example

Query
mutation UnarchiveCard($id: ID!) {
  unarchiveCard(id: $id) {
    assignees {
      avatar
      description
      email
      id
      name
    }
    background
    checklists {
      cardId
      id
      items {
        ...ChecklistItemFragment
      }
      title
    }
    completed
    createdAt
    description
    dueDate
    id
    isArchived
    labels {
      boardId
      color
      id
      name
    }
    listId
    position
    startDate
    title
    updatedAt
  }
}
Variables
{"id": 4}
Response
{
  "data": {
    "unarchiveCard": {
      "assignees": [MemberUser],
      "background": "abc123",
      "checklists": [Checklist],
      "completed": true,
      "createdAt": "2007-12-03T10:15:30Z",
      "description": "xyz789",
      "dueDate": "2007-12-03T10:15:30Z",
      "id": "4",
      "isArchived": false,
      "labels": [Label],
      "listId": 4,
      "position": 987.65,
      "startDate": "2007-12-03T10:15:30Z",
      "title": "abc123",
      "updatedAt": "2007-12-03T10:15:30Z"
    }
  }
}

unarchiveList

Description

Unarchive a list. User must have access to the board.

Response

Returns a List!

Arguments
Name Description
id - ID!

Example

Query
mutation UnarchiveList($id: ID!) {
  unarchiveList(id: $id) {
    boardId
    cards {
      assignees {
        ...MemberUserFragment
      }
      background
      checklists {
        ...ChecklistFragment
      }
      completed
      createdAt
      description
      dueDate
      id
      isArchived
      labels {
        ...LabelFragment
      }
      listId
      position
      startDate
      title
      updatedAt
    }
    createdAt
    id
    isArchived
    position
    title
    updatedAt
  }
}
Variables
{"id": "4"}
Response
{
  "data": {
    "unarchiveList": {
      "boardId": "4",
      "cards": [Card],
      "createdAt": "2007-12-03T10:15:30Z",
      "id": 4,
      "isArchived": true,
      "position": 987,
      "title": "xyz789",
      "updatedAt": "2007-12-03T10:15:30Z"
    }
  }
}

unassignMemberFromCard

Description

Unassign a member from a card. User must have access to the board.

Response

Returns a Card!

Arguments
Name Description
input - UnassignMemberFromCardInput!

Example

Query
mutation UnassignMemberFromCard($input: UnassignMemberFromCardInput!) {
  unassignMemberFromCard(input: $input) {
    assignees {
      avatar
      description
      email
      id
      name
    }
    background
    checklists {
      cardId
      id
      items {
        ...ChecklistItemFragment
      }
      title
    }
    completed
    createdAt
    description
    dueDate
    id
    isArchived
    labels {
      boardId
      color
      id
      name
    }
    listId
    position
    startDate
    title
    updatedAt
  }
}
Variables
{"input": UnassignMemberFromCardInput}
Response
{
  "data": {
    "unassignMemberFromCard": {
      "assignees": [MemberUser],
      "background": "xyz789",
      "checklists": [Checklist],
      "completed": true,
      "createdAt": "2007-12-03T10:15:30Z",
      "description": "abc123",
      "dueDate": "2007-12-03T10:15:30Z",
      "id": 4,
      "isArchived": true,
      "labels": [Label],
      "listId": "4",
      "position": 123.45,
      "startDate": "2007-12-03T10:15:30Z",
      "title": "xyz789",
      "updatedAt": "2007-12-03T10:15:30Z"
    }
  }
}

updateAttachment

Description

Update an attachment. Uploader only.

Response

Returns an Attachment!

Arguments
Name Description
input - UpdateAttachmentInput!

Example

Query
mutation UpdateAttachment($input: UpdateAttachmentInput!) {
  updateAttachment(input: $input) {
    cardId
    createdAt
    filename
    id
    size
    uploader {
      avatar
      createdAt
      description
      email
      id
      name
      updatedAt
    }
    uploaderId
    url
  }
}
Variables
{"input": UpdateAttachmentInput}
Response
{
  "data": {
    "updateAttachment": {
      "cardId": "4",
      "createdAt": "2007-12-03T10:15:30Z",
      "filename": "abc123",
      "id": "4",
      "size": 123,
      "uploader": User,
      "uploaderId": "4",
      "url": "xyz789"
    }
  }
}

updateBoard

Description

Update a board. User must be ADMIN or MEMBER of the board.

Response

Returns a Board!

Arguments
Name Description
input - UpdateBoardInput!

Example

Query
mutation UpdateBoard($input: UpdateBoardInput!) {
  updateBoard(input: $input) {
    background
    createdAt
    creatorId
    description
    id
    isArchived
    lists {
      boardId
      cards {
        ...CardFragment
      }
      createdAt
      id
      isArchived
      position
      title
      updatedAt
    }
    members {
      boardId
      id
      joinedAt
      role
      user {
        ...MemberUserFragment
      }
      userId
    }
    title
    updatedAt
    visibility
    workspaceId
  }
}
Variables
{"input": UpdateBoardInput}
Response
{
  "data": {
    "updateBoard": {
      "background": "xyz789",
      "createdAt": "2007-12-03T10:15:30Z",
      "creatorId": 4,
      "description": "xyz789",
      "id": 4,
      "isArchived": true,
      "lists": [List],
      "members": [BoardMemberWithUser],
      "title": "xyz789",
      "updatedAt": "2007-12-03T10:15:30Z",
      "visibility": "PRIVATE",
      "workspaceId": 4
    }
  }
}

updateBoardMemberRole

Description

Update a member role in a board. Only board ADMIN can update roles.

Response

Returns a Boolean!

Arguments
Name Description
input - UpdateBoardMemberRoleInput!

Example

Query
mutation UpdateBoardMemberRole($input: UpdateBoardMemberRoleInput!) {
  updateBoardMemberRole(input: $input)
}
Variables
{"input": UpdateBoardMemberRoleInput}
Response
{"data": {"updateBoardMemberRole": true}}

updateCard

Description

Update a card. User must have access to the board.

Response

Returns a Card!

Arguments
Name Description
input - UpdateCardInput!

Example

Query
mutation UpdateCard($input: UpdateCardInput!) {
  updateCard(input: $input) {
    assignees {
      avatar
      description
      email
      id
      name
    }
    background
    checklists {
      cardId
      id
      items {
        ...ChecklistItemFragment
      }
      title
    }
    completed
    createdAt
    description
    dueDate
    id
    isArchived
    labels {
      boardId
      color
      id
      name
    }
    listId
    position
    startDate
    title
    updatedAt
  }
}
Variables
{"input": UpdateCardInput}
Response
{
  "data": {
    "updateCard": {
      "assignees": [MemberUser],
      "background": "xyz789",
      "checklists": [Checklist],
      "completed": false,
      "createdAt": "2007-12-03T10:15:30Z",
      "description": "abc123",
      "dueDate": "2007-12-03T10:15:30Z",
      "id": 4,
      "isArchived": true,
      "labels": [Label],
      "listId": "4",
      "position": 123.45,
      "startDate": "2007-12-03T10:15:30Z",
      "title": "xyz789",
      "updatedAt": "2007-12-03T10:15:30Z"
    }
  }
}

updateChecklist

Description

Update a checklist title.

Response

Returns a Checklist!

Arguments
Name Description
input - UpdateChecklistInput!

Example

Query
mutation UpdateChecklist($input: UpdateChecklistInput!) {
  updateChecklist(input: $input) {
    cardId
    id
    items {
      checked
      checklistId
      content
      id
      position
    }
    title
  }
}
Variables
{"input": UpdateChecklistInput}
Response
{
  "data": {
    "updateChecklist": {
      "cardId": "4",
      "id": 4,
      "items": [ChecklistItem],
      "title": "xyz789"
    }
  }
}

updateChecklistItem

Description

Update a checklist item (content, checked, position).

Response

Returns a ChecklistItem!

Arguments
Name Description
input - UpdateChecklistItemInput!

Example

Query
mutation UpdateChecklistItem($input: UpdateChecklistItemInput!) {
  updateChecklistItem(input: $input) {
    checked
    checklistId
    content
    id
    position
  }
}
Variables
{"input": UpdateChecklistItemInput}
Response
{
  "data": {
    "updateChecklistItem": {
      "checked": false,
      "checklistId": 4,
      "content": "abc123",
      "id": 4,
      "position": 123.45
    }
  }
}

updateComment

Description

Update a comment. Author only.

Response

Returns a Comment!

Arguments
Name Description
input - UpdateCommentInput!

Example

Query
mutation UpdateComment($input: UpdateCommentInput!) {
  updateComment(input: $input) {
    author {
      avatar
      createdAt
      description
      email
      id
      name
      updatedAt
    }
    authorId
    cardId
    content
    createdAt
    id
    updatedAt
  }
}
Variables
{"input": UpdateCommentInput}
Response
{
  "data": {
    "updateComment": {
      "author": User,
      "authorId": 4,
      "cardId": "4",
      "content": "xyz789",
      "createdAt": "2007-12-03T10:15:30Z",
      "id": 4,
      "updatedAt": "2007-12-03T10:15:30Z"
    }
  }
}

updateLabel

Description

Update a label. User must have access to the board.

Response

Returns a Label!

Arguments
Name Description
input - UpdateLabelInput!

Example

Query
mutation UpdateLabel($input: UpdateLabelInput!) {
  updateLabel(input: $input) {
    boardId
    color
    id
    name
  }
}
Variables
{"input": UpdateLabelInput}
Response
{
  "data": {
    "updateLabel": {
      "boardId": 4,
      "color": "abc123",
      "id": "4",
      "name": "xyz789"
    }
  }
}

updateList

Description

Update a list. User must have access to the board.

Response

Returns a List!

Arguments
Name Description
input - UpdateListInput!

Example

Query
mutation UpdateList($input: UpdateListInput!) {
  updateList(input: $input) {
    boardId
    cards {
      assignees {
        ...MemberUserFragment
      }
      background
      checklists {
        ...ChecklistFragment
      }
      completed
      createdAt
      description
      dueDate
      id
      isArchived
      labels {
        ...LabelFragment
      }
      listId
      position
      startDate
      title
      updatedAt
    }
    createdAt
    id
    isArchived
    position
    title
    updatedAt
  }
}
Variables
{"input": UpdateListInput}
Response
{
  "data": {
    "updateList": {
      "boardId": 4,
      "cards": [Card],
      "createdAt": "2007-12-03T10:15:30Z",
      "id": 4,
      "isArchived": false,
      "position": 987,
      "title": "abc123",
      "updatedAt": "2007-12-03T10:15:30Z"
    }
  }
}

updateMemberRole

Description

Update a member role in a workspace. Only ADMIN can update roles.

Response

Returns a Boolean!

Arguments
Name Description
input - UpdateMemberRoleInput!

Example

Query
mutation UpdateMemberRole($input: UpdateMemberRoleInput!) {
  updateMemberRole(input: $input)
}
Variables
{"input": UpdateMemberRoleInput}
Response
{"data": {"updateMemberRole": false}}

updateMyNotificationPreferences

Description

Update current user notification preferences.

Response

Returns a NotificationPreferences!

Arguments
Name Description
input - UpdateNotificationPreferencesInput!

Example

Query
mutation UpdateMyNotificationPreferences($input: UpdateNotificationPreferencesInput!) {
  updateMyNotificationPreferences(input: $input) {
    allowDesktopNotifications
    emailFrequency
  }
}
Variables
{"input": UpdateNotificationPreferencesInput}
Response
{
  "data": {
    "updateMyNotificationPreferences": {
      "allowDesktopNotifications": false,
      "emailFrequency": "DAILY"
    }
  }
}

updateUser

Description

Update an existing user (requires authentication)

Response

Returns a User!

Arguments
Name Description
id - ID!
input - UpdateUserInput!

Example

Query
mutation UpdateUser(
  $id: ID!,
  $input: UpdateUserInput!
) {
  updateUser(
    id: $id,
    input: $input
  ) {
    avatar
    createdAt
    description
    email
    id
    name
    updatedAt
  }
}
Variables
{"id": 4, "input": UpdateUserInput}
Response
{
  "data": {
    "updateUser": {
      "avatar": "abc123",
      "createdAt": "2007-12-03T10:15:30Z",
      "description": "abc123",
      "email": "abc123",
      "id": "4",
      "name": "abc123",
      "updatedAt": "2007-12-03T10:15:30Z"
    }
  }
}

updateWorkspace

Description

Update a workspace. Only ADMIN members can update.

Response

Returns a Workspace!

Arguments
Name Description
id - ID!
input - UpdateWorkspaceInput!

Example

Query
mutation UpdateWorkspace(
  $id: ID!,
  $input: UpdateWorkspaceInput!
) {
  updateWorkspace(
    id: $id,
    input: $input
  ) {
    createdAt
    description
    id
    logoUrl
    memberCount
    memberships {
      id
      joinedAt
      role
      userId
    }
    name
    updatedAt
    visibility
  }
}
Variables
{
  "id": "4",
  "input": UpdateWorkspaceInput
}
Response
{
  "data": {
    "updateWorkspace": {
      "createdAt": "2007-12-03T10:15:30Z",
      "description": "abc123",
      "id": "4",
      "logoUrl": "abc123",
      "memberCount": 987.65,
      "memberships": [WorkspaceMember],
      "name": "xyz789",
      "updatedAt": "2007-12-03T10:15:30Z",
      "visibility": "PRIVATE"
    }
  }
}

verifyEmail

Description

Verify email address using the verification token received via email. A welcome email will be sent upon successful verification.

Response

Returns a MessageResponse!

Arguments
Name Description
token - String!

Example

Query
mutation VerifyEmail($token: String!) {
  verifyEmail(token: $token) {
    message
  }
}
Variables
{"token": "abc123"}
Response
{
  "data": {
    "verifyEmail": {"message": "abc123"}
  }
}

Subscriptions

cardUpdated

Description

Subscribe to card create/update/move/delete for a board.

Response

Returns a Card!

Arguments
Name Description
boardId - ID!

Example

Query
subscription CardUpdated($boardId: ID!) {
  cardUpdated(boardId: $boardId) {
    assignees {
      avatar
      description
      email
      id
      name
    }
    background
    checklists {
      cardId
      id
      items {
        ...ChecklistItemFragment
      }
      title
    }
    completed
    createdAt
    description
    dueDate
    id
    isArchived
    labels {
      boardId
      color
      id
      name
    }
    listId
    position
    startDate
    title
    updatedAt
  }
}
Variables
{"boardId": 4}
Response
{
  "data": {
    "cardUpdated": {
      "assignees": [MemberUser],
      "background": "xyz789",
      "checklists": [Checklist],
      "completed": false,
      "createdAt": "2007-12-03T10:15:30Z",
      "description": "abc123",
      "dueDate": "2007-12-03T10:15:30Z",
      "id": 4,
      "isArchived": true,
      "labels": [Label],
      "listId": 4,
      "position": 987.65,
      "startDate": "2007-12-03T10:15:30Z",
      "title": "xyz789",
      "updatedAt": "2007-12-03T10:15:30Z"
    }
  }
}

cardUpdatedByCardId

Description

Subscribe to updates for a single card (e.g. card modal).

Response

Returns a Card!

Arguments
Name Description
cardId - ID!

Example

Query
subscription CardUpdatedByCardId($cardId: ID!) {
  cardUpdatedByCardId(cardId: $cardId) {
    assignees {
      avatar
      description
      email
      id
      name
    }
    background
    checklists {
      cardId
      id
      items {
        ...ChecklistItemFragment
      }
      title
    }
    completed
    createdAt
    description
    dueDate
    id
    isArchived
    labels {
      boardId
      color
      id
      name
    }
    listId
    position
    startDate
    title
    updatedAt
  }
}
Variables
{"cardId": 4}
Response
{
  "data": {
    "cardUpdatedByCardId": {
      "assignees": [MemberUser],
      "background": "abc123",
      "checklists": [Checklist],
      "completed": false,
      "createdAt": "2007-12-03T10:15:30Z",
      "description": "abc123",
      "dueDate": "2007-12-03T10:15:30Z",
      "id": "4",
      "isArchived": false,
      "labels": [Label],
      "listId": "4",
      "position": 123.45,
      "startDate": "2007-12-03T10:15:30Z",
      "title": "abc123",
      "updatedAt": "2007-12-03T10:15:30Z"
    }
  }
}

commentAdded

Description

Subscribe to new comments on a card. Filter by cardId.

Response

Returns a Comment!

Arguments
Name Description
cardId - ID!

Example

Query
subscription CommentAdded($cardId: ID!) {
  commentAdded(cardId: $cardId) {
    author {
      avatar
      createdAt
      description
      email
      id
      name
      updatedAt
    }
    authorId
    cardId
    content
    createdAt
    id
    updatedAt
  }
}
Variables
{"cardId": "4"}
Response
{
  "data": {
    "commentAdded": {
      "author": User,
      "authorId": "4",
      "cardId": 4,
      "content": "abc123",
      "createdAt": "2007-12-03T10:15:30Z",
      "id": "4",
      "updatedAt": "2007-12-03T10:15:30Z"
    }
  }
}

commentDeleted

Description

Subscribe to comment deletions on a card. Payload has commentId and cardId.

Response

Returns a CommentDeletedEvent!

Arguments
Name Description
cardId - ID!

Example

Query
subscription CommentDeleted($cardId: ID!) {
  commentDeleted(cardId: $cardId) {
    cardId
    commentId
  }
}
Variables
{"cardId": 4}
Response
{"data": {"commentDeleted": {"cardId": 4, "commentId": 4}}}

commentUpdated

Description

Subscribe to comment edits on a card. Filter by cardId.

Response

Returns a Comment!

Arguments
Name Description
cardId - ID!

Example

Query
subscription CommentUpdated($cardId: ID!) {
  commentUpdated(cardId: $cardId) {
    author {
      avatar
      createdAt
      description
      email
      id
      name
      updatedAt
    }
    authorId
    cardId
    content
    createdAt
    id
    updatedAt
  }
}
Variables
{"cardId": 4}
Response
{
  "data": {
    "commentUpdated": {
      "author": User,
      "authorId": "4",
      "cardId": 4,
      "content": "xyz789",
      "createdAt": "2007-12-03T10:15:30Z",
      "id": 4,
      "updatedAt": "2007-12-03T10:15:30Z"
    }
  }
}

listUpdated

Description

Subscribe to list create/update/reorder/delete for a board.

Response

Returns a List!

Arguments
Name Description
boardId - ID!

Example

Query
subscription ListUpdated($boardId: ID!) {
  listUpdated(boardId: $boardId) {
    boardId
    cards {
      assignees {
        ...MemberUserFragment
      }
      background
      checklists {
        ...ChecklistFragment
      }
      completed
      createdAt
      description
      dueDate
      id
      isArchived
      labels {
        ...LabelFragment
      }
      listId
      position
      startDate
      title
      updatedAt
    }
    createdAt
    id
    isArchived
    position
    title
    updatedAt
  }
}
Variables
{"boardId": "4"}
Response
{
  "data": {
    "listUpdated": {
      "boardId": "4",
      "cards": [Card],
      "createdAt": "2007-12-03T10:15:30Z",
      "id": "4",
      "isArchived": false,
      "position": 987,
      "title": "xyz789",
      "updatedAt": "2007-12-03T10:15:30Z"
    }
  }
}

notificationReceived

Description

Real-time notifications for the current user (WebSocket).

Response

Returns a Notification!

Example

Query
subscription NotificationReceived {
  notificationReceived {
    createdAt
    id
    payload
    read
    type
    userId
  }
}
Response
{
  "data": {
    "notificationReceived": {
      "createdAt": "2007-12-03T10:15:30Z",
      "id": 4,
      "payload": "abc123",
      "read": true,
      "type": "BOARD_INVITATION",
      "userId": "4"
    }
  }
}

Types

Activity

Fields
Field Name Description
board - Board
boardId - ID!
cardId - ID
createdAt - DateTime!
id - ID!
listId - ID
payload - ActivityPayload
type - ActivityType!
user - User
userId - ID!
Example
{
  "board": Board,
  "boardId": 4,
  "cardId": 4,
  "createdAt": "2007-12-03T10:15:30Z",
  "id": "4",
  "listId": 4,
  "payload": ActivityPayload,
  "type": "BOARD_ARCHIVED",
  "user": User,
  "userId": "4"
}

ActivityPayload

Fields
Field Name Description
boardTitle - String
cardTitle - String
commentPreview - String
listName - String
memberName - String
targetListName - String
Example
{
  "boardTitle": "abc123",
  "cardTitle": "xyz789",
  "commentPreview": "xyz789",
  "listName": "xyz789",
  "memberName": "abc123",
  "targetListName": "xyz789"
}

ActivityType

Description

Type of user action recorded in the activity log

Values
Enum Value Description

BOARD_ARCHIVED

BOARD_UNARCHIVED

CARD_ARCHIVED

CARD_COMPLETED

CARD_CREATED

CARD_MOVED

CARD_UNARCHIVED

CARD_UNCOMPLETED

COMMENT_ADDED

LIST_ARCHIVED

LIST_UNARCHIVED

MEMBER_ADDED_TO_BOARD

MEMBER_ADDED_TO_CARD

Example
"BOARD_ARCHIVED"

AddBoardMemberInput

Fields
Input Field Description
boardId - ID!
role - String
userId - ID!
Example
{
  "boardId": 4,
  "role": "abc123",
  "userId": "4"
}

AddChecklistItemInput

Fields
Input Field Description
checklistId - ID!
content - String!
position - Float Optional position. If not provided, will be calculated automatically.
Example
{
  "checklistId": "4",
  "content": "abc123",
  "position": 123.45
}

AddLabelToCardInput

Fields
Input Field Description
cardId - ID!
labelId - ID!
Example
{
  "cardId": "4",
  "labelId": "4"
}

AssignMemberToCardInput

Fields
Input Field Description
cardId - ID!
userId - ID!
Example
{"cardId": 4, "userId": 4}

Attachment

Fields
Field Name Description
cardId - ID!
createdAt - DateTime!
filename - String!
id - ID!
size - Int!
uploader - User
uploaderId - ID!
url - String!
Example
{
  "cardId": 4,
  "createdAt": "2007-12-03T10:15:30Z",
  "filename": "abc123",
  "id": "4",
  "size": 123,
  "uploader": User,
  "uploaderId": 4,
  "url": "xyz789"
}

AuthPayload

Description

Authentication response containing JWT token and user data

Fields
Field Name Description
token - String! JWT token to use in Authorization header for authenticated requests
user - User! Authenticated user information
Example
{
  "token": "xyz789",
  "user": User
}

Board

Fields
Field Name Description
background - String
createdAt - DateTime!
creatorId - ID!
description - String
id - ID!
isArchived - Boolean!
lists - [List!]
members - [BoardMemberWithUser!]
title - String!
updatedAt - DateTime!
visibility - Visibility!
workspaceId - ID
Example
{
  "background": "xyz789",
  "createdAt": "2007-12-03T10:15:30Z",
  "creatorId": "4",
  "description": "xyz789",
  "id": 4,
  "isArchived": true,
  "lists": [List],
  "members": [BoardMemberWithUser],
  "title": "xyz789",
  "updatedAt": "2007-12-03T10:15:30Z",
  "visibility": "PRIVATE",
  "workspaceId": "4"
}

BoardActivityInput

Fields
Input Field Description
cursor - ID Cursor for pagination (activity id).
limit - Int
Example
{"cursor": 4, "limit": 987}

BoardMemberWithUser

Fields
Field Name Description
boardId - ID!
id - ID!
joinedAt - DateTime!
role - String!
user - MemberUser!
userId - ID!
Example
{
  "boardId": "4",
  "id": 4,
  "joinedAt": "2007-12-03T10:15:30Z",
  "role": "xyz789",
  "user": MemberUser,
  "userId": "4"
}

Boolean

Description

The Boolean scalar type represents true or false.

Example
true

Card

Fields
Field Name Description
assignees - [MemberUser!]
background - String
checklists - [Checklist!]
completed - Boolean!
createdAt - DateTime!
description - String
dueDate - DateTime
id - ID!
isArchived - Boolean!
labels - [Label!]
listId - ID!
position - Float!
startDate - DateTime
title - String!
updatedAt - DateTime!
Example
{
  "assignees": [MemberUser],
  "background": "xyz789",
  "checklists": [Checklist],
  "completed": false,
  "createdAt": "2007-12-03T10:15:30Z",
  "description": "xyz789",
  "dueDate": "2007-12-03T10:15:30Z",
  "id": 4,
  "isArchived": true,
  "labels": [Label],
  "listId": "4",
  "position": 987.65,
  "startDate": "2007-12-03T10:15:30Z",
  "title": "abc123",
  "updatedAt": "2007-12-03T10:15:30Z"
}

CardPosition

Fields
Input Field Description
id - ID!
position - Float!
Example
{"id": "4", "position": 987.65}

Checklist

Fields
Field Name Description
cardId - ID!
id - ID!
items - [ChecklistItem!]
title - String!
Example
{
  "cardId": "4",
  "id": 4,
  "items": [ChecklistItem],
  "title": "abc123"
}

ChecklistItem

Fields
Field Name Description
checked - Boolean!
checklistId - ID!
content - String!
id - ID!
position - Float!
Example
{
  "checked": true,
  "checklistId": "4",
  "content": "xyz789",
  "id": 4,
  "position": 123.45
}

ChecklistItemPositionInput

Fields
Input Field Description
id - ID!
position - Float!
Example
{"id": "4", "position": 987.65}

Comment

Fields
Field Name Description
author - User
authorId - ID!
cardId - ID!
content - String!
createdAt - DateTime!
id - ID!
updatedAt - DateTime!
Example
{
  "author": User,
  "authorId": "4",
  "cardId": "4",
  "content": "xyz789",
  "createdAt": "2007-12-03T10:15:30Z",
  "id": "4",
  "updatedAt": "2007-12-03T10:15:30Z"
}

CommentDeletedEvent

Fields
Field Name Description
cardId - ID!
commentId - ID!
Example
{"cardId": 4, "commentId": 4}

CreateAttachmentInput

Fields
Input Field Description
cardId - ID!
filename - String!
size - Int!
url - String!
Example
{
  "cardId": "4",
  "filename": "abc123",
  "size": 987,
  "url": "abc123"
}

CreateBoardInput

Fields
Input Field Description
background - String
description - String
title - String!
visibility - Visibility
workspaceId - ID
Example
{
  "background": "abc123",
  "description": "xyz789",
  "title": "abc123",
  "visibility": "PRIVATE",
  "workspaceId": 4
}

CreateCardInput

Fields
Input Field Description
background - String
completed - Boolean
description - String Card description with markdown support
dueDate - DateTime
listId - ID!
position - Float Optional position. If not provided, will be calculated automatically.
startDate - DateTime
title - String!
Example
{
  "background": "xyz789",
  "completed": true,
  "description": "xyz789",
  "dueDate": "2007-12-03T10:15:30Z",
  "listId": 4,
  "position": 987.65,
  "startDate": "2007-12-03T10:15:30Z",
  "title": "abc123"
}

CreateChecklistInput

Fields
Input Field Description
cardId - ID!
title - String!
Example
{"cardId": 4, "title": "abc123"}

CreateCommentInput

Fields
Input Field Description
cardId - ID!
content - String!
Example
{"cardId": 4, "content": "abc123"}

CreateLabelInput

Fields
Input Field Description
boardId - ID!
color - String!
name - String
Example
{
  "boardId": "4",
  "color": "abc123",
  "name": "xyz789"
}

CreateListInput

Fields
Input Field Description
boardId - ID!
position - Float Optional position. If not provided, will be calculated automatically.
title - String!
Example
{
  "boardId": "4",
  "position": 123.45,
  "title": "xyz789"
}

CreateUserInput

Fields
Input Field Description
avatar - String
description - String
email - String!
name - String!
password - String!
Example
{
  "avatar": "abc123",
  "description": "abc123",
  "email": "xyz789",
  "name": "xyz789",
  "password": "abc123"
}

CreateWorkspaceInput

Fields
Input Field Description
description - String
logoUrl - String
name - String!
visibility - String
Example
{
  "description": "abc123",
  "logoUrl": "xyz789",
  "name": "abc123",
  "visibility": "abc123"
}

DateTime

Description

A date-time string at UTC, such as 2019-12-03T09:54:33Z, compliant with the date-time format.

Example
"2007-12-03T10:15:30Z"

Float

Description

The Float scalar type represents signed double-precision fractional values as specified by IEEE 754.

Example
987.65

ForgotPasswordInput

Description

Input for requesting password reset

Fields
Input Field Description
email - String! User email address
Example
{"email": "abc123"}

ID

Description

The ID scalar type represents a unique identifier, often used to refetch an object or as key for a cache. The ID type appears in a JSON response as a String; however, it is not intended to be human-readable. When expected as an input type, any string (such as "4") or integer (such as 4) input value will be accepted as an ID.

Example
4

Int

Description

The Int scalar type represents non-fractional signed whole numeric values. Int can represent values between -(2^31) and 2^31 - 1.

Example
987

InvitationStatus

Description

Status of a workspace invitation

Values
Enum Value Description

ACCEPTED

CANCELLED

PENDING

REJECTED

Example
"ACCEPTED"

InviteMemberInput

Fields
Input Field Description
inviteeEmail - String!
role - String
workspaceId - String!
Example
{
  "inviteeEmail": "xyz789",
  "role": "abc123",
  "workspaceId": "abc123"
}

Label

Fields
Field Name Description
boardId - ID!
color - String!
id - ID!
name - String
Example
{
  "boardId": 4,
  "color": "xyz789",
  "id": 4,
  "name": "xyz789"
}

List

Fields
Field Name Description
boardId - ID!
cards - [Card!]
createdAt - DateTime!
id - ID!
isArchived - Boolean!
position - Int!
title - String!
updatedAt - DateTime!
Example
{
  "boardId": 4,
  "cards": [Card],
  "createdAt": "2007-12-03T10:15:30Z",
  "id": 4,
  "isArchived": false,
  "position": 123,
  "title": "abc123",
  "updatedAt": "2007-12-03T10:15:30Z"
}

ListPosition

Fields
Input Field Description
id - ID!
position - Float!
Example
{"id": 4, "position": 123.45}

LoginInput

Description

Input for user login

Fields
Input Field Description
email - String! User email address
password - String! User password
rememberMe - Boolean If true, token expires in 30 days instead of 7 days. Default = false
Example
{
  "email": "abc123",
  "password": "xyz789",
  "rememberMe": false
}

MemberUser

Fields
Field Name Description
avatar - String
description - String
email - String!
id - ID!
name - String!
Example
{
  "avatar": "abc123",
  "description": "xyz789",
  "email": "xyz789",
  "id": 4,
  "name": "xyz789"
}

MessageResponse

Description

Generic message response

Fields
Field Name Description
message - String! Response message
Example
{"message": "abc123"}

MoveCardInput

Fields
Input Field Description
cardId - ID!
position - Float Optional position in target list. If not provided, will be calculated automatically.
targetListId - ID!
Example
{
  "cardId": 4,
  "position": 123.45,
  "targetListId": "4"
}

MyActivityInput

Fields
Input Field Description
cursor - ID Cursor for pagination (activity id). Fetch activities older than this.
limit - Int
workspaceIds - [ID!] Filter by workspace IDs. Only activities from boards in these workspaces.
Example
{
  "cursor": 4,
  "limit": 123,
  "workspaceIds": ["4"]
}

MyActivityResult

Fields
Field Name Description
activities - [Activity!]!
hasMore - Boolean!
nextCursor - ID Cursor for next page (last activity id)
Example
{
  "activities": [Activity],
  "hasMore": true,
  "nextCursor": "4"
}

MyNotificationsInput

Fields
Input Field Description
cursor - String Cursor for pagination (notification id)
limit - Int Max number of notifications to return (default 20, max 50)
unreadOnly - Boolean If true, only unread notifications
Example
{
  "cursor": "abc123",
  "limit": 987,
  "unreadOnly": true
}

MyNotificationsResult

Fields
Field Name Description
hasMore - Boolean!
nextCursor - String Cursor for next page (last notification id)
notifications - [Notification!]!
Example
{
  "hasMore": false,
  "nextCursor": "xyz789",
  "notifications": [Notification]
}

Notification

Fields
Field Name Description
createdAt - DateTime!
id - ID!
payload - String JSON payload (cardId, boardId, workspaceId, etc.)
read - Boolean!
type - NotificationType!
userId - ID!
Example
{
  "createdAt": "2007-12-03T10:15:30Z",
  "id": "4",
  "payload": "abc123",
  "read": true,
  "type": "BOARD_INVITATION",
  "userId": 4
}

NotificationEmailFrequency

Description

How often to receive notification emails.

Values
Enum Value Description

DAILY

INSTANT

NEVER

PERIODICALLY

Example
"DAILY"

NotificationPreferences

Fields
Field Name Description
allowDesktopNotifications - Boolean!
emailFrequency - NotificationEmailFrequency!
Example
{"allowDesktopNotifications": true, "emailFrequency": "DAILY"}

NotificationType

Description

Type of notification (card assigned, due soon, comment, invitation, etc.)

Values
Enum Value Description

BOARD_INVITATION

CARD_ASSIGNED

CARD_DUE_SOON

COMMENT_ADDED

WORKSPACE_INVITATION

Example
"BOARD_INVITATION"

RegisterInput

Description

Input for user registration

Fields
Input Field Description
companyName - String Optional company name - creates a workspace if provided
email - String! User email address (must be unique)
name - String! User full name (minimum 3 characters)
password - String! User password (minimum 6 characters)
Example
{
  "companyName": "abc123",
  "email": "xyz789",
  "name": "abc123",
  "password": "xyz789"
}

RemoveLabelFromCardInput

Fields
Input Field Description
cardId - ID!
labelId - ID!
Example
{"cardId": "4", "labelId": 4}

RemoveMemberInput

Fields
Input Field Description
userId - String!
workspaceId - String!
Example
{
  "userId": "abc123",
  "workspaceId": "xyz789"
}

ReorderCardsInput

Fields
Input Field Description
cardPositions - [CardPosition!]!
listId - ID!
Example
{"cardPositions": [CardPosition], "listId": 4}

ReorderChecklistItemsInput

Fields
Input Field Description
checklistId - ID!
itemPositions - [ChecklistItemPositionInput!]!
Example
{
  "checklistId": "4",
  "itemPositions": [ChecklistItemPositionInput]
}

ReorderListsInput

Fields
Input Field Description
boardId - ID!
listPositions - [ListPosition!]!
Example
{"boardId": 4, "listPositions": [ListPosition]}

ResetPasswordInput

Description

Input for resetting password with token

Fields
Input Field Description
newPassword - String! New password (minimum 6 characters)
token - String! Password reset token received via email
Example
{
  "newPassword": "xyz789",
  "token": "abc123"
}

RespondInvitationInput

Fields
Input Field Description
invitationId - String!
Example
{"invitationId": "abc123"}

String

Description

The String scalar type represents textual data, represented as UTF-8 character sequences. The String type is most often used by GraphQL to represent free-form human-readable text.

Example
"abc123"

UnassignMemberFromCardInput

Fields
Input Field Description
cardId - ID!
userId - ID!
Example
{"cardId": 4, "userId": "4"}

UpdateAttachmentInput

Fields
Input Field Description
filename - String
id - ID!
size - Int
url - String
Example
{
  "filename": "abc123",
  "id": "4",
  "size": 987,
  "url": "xyz789"
}

UpdateBoardInput

Fields
Input Field Description
background - String
description - String
id - ID!
title - String
visibility - Visibility
Example
{
  "background": "xyz789",
  "description": "xyz789",
  "id": "4",
  "title": "xyz789",
  "visibility": "PRIVATE"
}

UpdateBoardMemberRoleInput

Fields
Input Field Description
boardId - ID!
role - String!
userId - ID!
Example
{
  "boardId": "4",
  "role": "xyz789",
  "userId": 4
}

UpdateCardInput

Fields
Input Field Description
background - String
completed - Boolean
description - String Card description with markdown support
dueDate - DateTime
id - ID!
position - Float
startDate - DateTime
title - String
Example
{
  "background": "abc123",
  "completed": false,
  "description": "abc123",
  "dueDate": "2007-12-03T10:15:30Z",
  "id": 4,
  "position": 987.65,
  "startDate": "2007-12-03T10:15:30Z",
  "title": "xyz789"
}

UpdateChecklistInput

Fields
Input Field Description
id - ID!
title - String
Example
{"id": 4, "title": "abc123"}

UpdateChecklistItemInput

Fields
Input Field Description
checked - Boolean
content - String
id - ID!
position - Float
Example
{
  "checked": false,
  "content": "xyz789",
  "id": 4,
  "position": 123.45
}

UpdateCommentInput

Fields
Input Field Description
content - String!
id - ID!
Example
{"content": "xyz789", "id": 4}

UpdateLabelInput

Fields
Input Field Description
color - String
id - ID!
name - String
Example
{
  "color": "abc123",
  "id": "4",
  "name": "xyz789"
}

UpdateListInput

Fields
Input Field Description
id - ID!
position - Int
title - String
Example
{
  "id": 4,
  "position": 987,
  "title": "abc123"
}

UpdateMemberRoleInput

Fields
Input Field Description
role - String!
userId - String!
workspaceId - String!
Example
{
  "role": "abc123",
  "userId": "abc123",
  "workspaceId": "xyz789"
}

UpdateNotificationPreferencesInput

Fields
Input Field Description
allowDesktopNotifications - Boolean
emailFrequency - NotificationEmailFrequency
Example
{"allowDesktopNotifications": true, "emailFrequency": "DAILY"}

UpdateUserInput

Fields
Input Field Description
avatar - String
description - String
email - String
name - String
password - String
Example
{
  "avatar": "abc123",
  "description": "xyz789",
  "email": "abc123",
  "name": "xyz789",
  "password": "xyz789"
}

UpdateWorkspaceInput

Fields
Input Field Description
description - String
logoUrl - String
name - String
visibility - String
Example
{
  "description": "xyz789",
  "logoUrl": "xyz789",
  "name": "xyz789",
  "visibility": "xyz789"
}

User

Fields
Field Name Description
avatar - String
createdAt - DateTime!
description - String
email - String!
id - ID!
name - String!
updatedAt - DateTime!
Example
{
  "avatar": "abc123",
  "createdAt": "2007-12-03T10:15:30Z",
  "description": "abc123",
  "email": "xyz789",
  "id": "4",
  "name": "xyz789",
  "updatedAt": "2007-12-03T10:15:30Z"
}

Visibility

Description

Board visibility settings

Values
Enum Value Description

PRIVATE

PUBLIC

WORKSPACE

Example
"PRIVATE"

Workspace

Fields
Field Name Description
createdAt - DateTime!
description - String
id - ID!
logoUrl - String
memberCount - Float!
memberships - [WorkspaceMember!]
name - String!
updatedAt - DateTime!
visibility - Visibility!
Example
{
  "createdAt": "2007-12-03T10:15:30Z",
  "description": "abc123",
  "id": "4",
  "logoUrl": "abc123",
  "memberCount": 987.65,
  "memberships": [WorkspaceMember],
  "name": "xyz789",
  "updatedAt": "2007-12-03T10:15:30Z",
  "visibility": "PRIVATE"
}

WorkspaceInvitation

Fields
Field Name Description
createdAt - DateTime!
expiresAt - DateTime!
id - ID!
inviteeEmail - String!
inviteeId - ID
inviterId - ID!
inviterName - String
role - String!
status - InvitationStatus!
updatedAt - DateTime!
workspaceId - ID!
workspaceName - String
Example
{
  "createdAt": "2007-12-03T10:15:30Z",
  "expiresAt": "2007-12-03T10:15:30Z",
  "id": "4",
  "inviteeEmail": "abc123",
  "inviteeId": "4",
  "inviterId": 4,
  "inviterName": "abc123",
  "role": "xyz789",
  "status": "ACCEPTED",
  "updatedAt": "2007-12-03T10:15:30Z",
  "workspaceId": 4,
  "workspaceName": "xyz789"
}

WorkspaceInviteInfo

Fields
Field Name Description
id - ID!
logoUrl - String
name - String!
Example
{
  "id": 4,
  "logoUrl": "xyz789",
  "name": "abc123"
}

WorkspaceMember

Fields
Field Name Description
id - ID!
joinedAt - DateTime!
role - String!
userId - ID!
Example
{
  "id": "4",
  "joinedAt": "2007-12-03T10:15:30Z",
  "role": "xyz789",
  "userId": 4
}

WorkspaceMemberWithUser

Fields
Field Name Description
id - ID!
joinedAt - DateTime!
role - String!
user - MemberUser!
userId - ID!
workspaceId - ID!
Example
{
  "id": 4,
  "joinedAt": "2007-12-03T10:15:30Z",
  "role": "xyz789",
  "user": MemberUser,
  "userId": 4,
  "workspaceId": "4"
}