PLANKA · Schema

Card

KanbanProject ManagementSelf-HostedAgileOpen Source

Properties

Name Type Description
id string Unique identifier for the card
boardId string ID of the board the card belongs to (denormalized)
listId string ID of the list the card belongs to
creatorUserId stringnull ID of the user who created the card
prevListId stringnull ID of the previous list the card was in (available when in archive or trash)
coverAttachmentId stringnull ID of the attachment used as cover
type string Type of the card
position numbernull Position of the card within the list
name string Name/title of the card
description stringnull Detailed description of the card
dueDate stringnull Due date for the card
isDueCompleted booleannull Whether the due date is completed
stopwatch objectnull Stopwatch data for time tracking
commentsTotal number Total number of comments on the card
isClosed boolean Whether the card is closed
listChangedAt stringnull When the card was last moved between lists
createdAt stringnull When the card was created
updatedAt stringnull When the card was last updated
View JSON Schema on GitHub

JSON Schema

planka-card-schema.json Raw ↑
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://raw.githubusercontent.com/api-evangelist/planka/main/json-schema/planka-card-schema.json",
  "title": "Card",
  "x-generated": "2026-10-27",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/planka-openapi.json#/components/schemas/Card",
  "type": "object",
  "required": [
    "id",
    "boardId",
    "listId",
    "creatorUserId",
    "prevListId",
    "coverAttachmentId",
    "type",
    "position",
    "name",
    "description",
    "dueDate",
    "isDueCompleted",
    "stopwatch",
    "commentsTotal",
    "isClosed",
    "listChangedAt",
    "createdAt",
    "updatedAt"
  ],
  "properties": {
    "id": {
      "type": "string",
      "description": "Unique identifier for the card"
    },
    "boardId": {
      "type": "string",
      "description": "ID of the board the card belongs to (denormalized)"
    },
    "listId": {
      "type": "string",
      "description": "ID of the list the card belongs to"
    },
    "creatorUserId": {
      "type": [
        "string",
        "null"
      ],
      "description": "ID of the user who created the card"
    },
    "prevListId": {
      "type": [
        "string",
        "null"
      ],
      "description": "ID of the previous list the card was in (available when in archive or trash)"
    },
    "coverAttachmentId": {
      "type": [
        "string",
        "null"
      ],
      "description": "ID of the attachment used as cover"
    },
    "type": {
      "type": "string",
      "enum": [
        "project",
        "story"
      ],
      "description": "Type of the card"
    },
    "position": {
      "type": [
        "number",
        "null"
      ],
      "description": "Position of the card within the list"
    },
    "name": {
      "type": "string",
      "description": "Name/title of the card"
    },
    "description": {
      "type": [
        "string",
        "null"
      ],
      "description": "Detailed description of the card"
    },
    "dueDate": {
      "type": [
        "string",
        "null"
      ],
      "format": "date-time",
      "description": "Due date for the card"
    },
    "isDueCompleted": {
      "type": [
        "boolean",
        "null"
      ],
      "description": "Whether the due date is completed"
    },
    "stopwatch": {
      "type": [
        "object",
        "null"
      ],
      "required": [
        "startedAt",
        "total"
      ],
      "description": "Stopwatch data for time tracking",
      "properties": {
        "startedAt": {
          "type": "string",
          "format": "date-time",
          "description": "When the stopwatch was started"
        },
        "total": {
          "type": "number",
          "description": "Total time in seconds"
        }
      }
    },
    "commentsTotal": {
      "type": "number",
      "default": 0,
      "description": "Total number of comments on the card"
    },
    "isClosed": {
      "type": "boolean",
      "default": false,
      "description": "Whether the card is closed"
    },
    "listChangedAt": {
      "type": [
        "string",
        "null"
      ],
      "format": "date-time",
      "description": "When the card was last moved between lists"
    },
    "createdAt": {
      "type": [
        "string",
        "null"
      ],
      "format": "date-time",
      "description": "When the card was created"
    },
    "updatedAt": {
      "type": [
        "string",
        "null"
      ],
      "format": "date-time",
      "description": "When the card was last updated"
    }
  }
}

Work with this as data

Every JSON Schema here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for schemas

4 MCP tools reach this
  • find_json_schemasBrowse and filter every JSON Schema in the catalog.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This JSON Schema
curl "https://apis.io/api/v1/json-schemas/planka-card"
All schemas
curl "https://apis.io/api/v1/json-schemas?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.