Deze referentie is alleen in het Engels. Naar het Nederlandse REST API-overzicht

Diese Referenz gibt es nur auf Englisch. Zur deutschen REST-API-Übersicht

Cette référence existe uniquement en anglais. Aller à la présentation de l'API REST en français

Esta referencia solo está en inglés. Ir a la introducción de la API REST en español

How the data fits together

How the data fits together

A map of the resources behind the API, how they relate, and which areas exist only when your organisation has them.

View as Markdown

This page maps the resources the API exposes and how they point at each other. Read it before you design a sync or a report, so you know which collection holds what. Each resource name links to its schema page, which lists every field.

Paths on this page are relative to https://<your-url>/api/v2. <your-url> is the address you sign in to plnnrly on, such as acme.plnnrly.com, or your organisation's own domain.

One organisation per host

Everything you read or write belongs to one organisation, and the host decides which one. A token works only on the host of the organisation it was created in.

Ids are unique per resource inside an organisation, not across resources and not across organisations. Project 12 and work item 12 are different records, and so are project 12 in one organisation and project 12 in another. Key your copy on the resource and the id together, and add the host if your integration serves several organisations.

GET / lists the resources your organisation has, with their paths. See Discovery.

Projects and work

A project belongs to a customer. It has a project manager, an account manager, tags, and a workflow mode that decides whether its work is planned in sprints or on a simple board.

ResourceWhat it isWhere you reach it
BudgetA named pot of minutes on a project. Tasks are filed under it and time is logged against it./budgets, filtered by project_id
Budget groupAn organisation-wide category that budgets are filed under./budget-groups
Project linkA named external URL pinned to a project, such as a staging site./project-links
Work itemOne unit of work on a project's backlog and board. It has an issue key such as ACM-12, and it moves through the statuses of the project's workflow./work-items
SubtaskA checklist line on one work item./work-items/{work_item}/subtasks
Work item linkA directed link between two work items, such as blocks or duplicates./work-items/{work_item}/links
CommentA post in the thread of a work item or a Drive item./work-items/{work_item}/comments
FileA file attached to a work item or a Drive item./work-items/{work_item}/attachments
SprintA time-boxed slice of a project's backlog. A work item with no sprint sits in the backlog./sprints
TaskA kanban card on one employee's board, filed under a budget, with an estimate in minutes./projects/{project}/tasks

The issue key is built from the customer's code and a running number, so ACM-12 is a work item on a project of the customer with code ACM. Every work item path accepts the issue key in place of the numeric id.

Note:

Four different things are called a task. A work item with a work type named "task" is a backlog item. A subtask is a checklist line on a work item. A task under /projects/{project}/tasks is a kanban card. A todo under /todos is an unchecked line in a Drive document that mentions you.

Time

ResourceWhat it isWhere you reach it
WorklogMinutes one employee worked on one project on one day. It can also point at a task and a work item./worklogs
TimerA running stopwatch on a work item or an event. It is deleted when it is discarded or its minutes are booked./timers

Both collections return only your own rows unless you name other users. See Filters that default to you.

Drive

Drive items, folders and documents live in a drive, and a drive belongs to an owner: a project, a customer, the organisation, or one user. For those, the owner type decides which permission and which token scope apply. Notes need a drive scope in your token, but the record a note is attached to decides whether you may read or write it. Todos need the project_management grant. See Scopes and permissions.

ResourceWhat it isWhere you reach it
Drive itemA document or file in a drive, with its title, folder, tags and sharing./drive-items
Drive folderA folder in a drive. Items and subfolders can take their access from it./drive-folders
Drive documentThe body of a document, in Markdown. The drive item points at it./drive-documents
NoteA free-text note on a project, a customer or a work item./notes
TodoAn unchecked task-list line in a document that mentions you. plnnrly rebuilds these from the document, so a todo has no stable id across edits./todos

Drive items also have comments and files, under /drive-items/{drive_item}/comments and /drive-items/{drive_item}/files.

Customers

ResourceWhat it isWhere you reach it
CustomerThe record that projects, contacts, subscriptions and sales invoices hang off./customers
ContactA customer's contact person, or an employee's emergency contact. Emergency contacts are visible only to that employee./contacts
Contact roleThe list a contact's function is picked from./contact-roles
Customer categoryThe categories customers are grouped by./customer-categories

Billing

ResourceWhat it isWhere you reach it
Sales invoiceWhat a customer is billed. Its totals are the sum of its rows./sales-invoices
Sales invoice rowOne line on a sales invoice./sales-invoices/{sales_invoice}/rows
Customer subscriptionA recurring agreement with one customer. A renewal turns it into a sales invoice./customer-subscriptions
Subscription itemOne line on a customer subscription./customer-subscriptions/{customer_subscription}/items
Subscription typeA template that new subscriptions start from./subscription-types
Subscription type itemOne template line, copied onto a subscription when the type is picked./subscription-types/{subscription_type}/items
Subscription productThe catalogue of what subscriptions can bill for./subscription-products
InvoiceA legacy invoice header from before sales invoices. It can be read and created, not changed./invoices

Leave

ResourceWhat it isWhere you reach it
AbsenceA period an employee was away from work./absences
HolidayA recurring named day off. It has no date of its own./holidays
Free dayOne date the organisation is closed, made from a holiday or added by hand./free-days
Check-inOne attendance record, from clocking in to clocking out./checkins
Leave balance changeOne entry in an employee's leave balance, in minutes. A negative value is a leave request, a positive one is a grant./furlough-balance-mutations

Planning

An event is one block on a user's agenda, at /events. It can point at a kanban task, so time can be logged against it. A recurring series is one event with recurrence fields. Its occurrences are not records of their own, unless one was split off from the series in plnnrly.

Like worklogs and timers, /events returns only your own rows unless you name other users.

Organisation

ResourceWhat it isWhere you reach it
UserA member of your organisation. Read-only./users, and /me for yourself
Company branchOne of your organisation's own locations. Customers are assigned to it./company-branches

The API does not create, change or delete users. Roles, permissions and teams are not in the API at all.

Configuration

ResourceWhat it isWhere you reach it
WorkflowA named set of statuses and the moves allowed between them. A project's workflow_id names the workflow its work items move through, and can be null./workflows
Workflow statusOne status in a workflow, the column a work item sits in./workflow-statuses
Workflow transitionOne allowed move from one status to another./workflow-transitions
Work typeThe type a work item is filed under, such as bug or story./work-types
LabelA coloured tag for work items. Each label belongs to one project./labels

Changing a work item's status is an action, not a field write. See Actions and state changes.

How records point at each other

A record points at another through a foreign key, usually named after the relation, with the related record next to it. On a work item row from GET /work-items:

JSON
{
  "sprint_id": 31,
  "sprint": { "id": 31 }
  // 33 more fields: id, issue_key, title, priority, due_date, estimation, remaining_estimate, order, column_order, version, created_at, updated_at, project_id, task_id, workflow_status_id, work_type_id, parent_id, assignee_id, reporter_id, web_url, workflow_status, parent, assignee, reporter, work_type, comments_count, subtasks_count, attachments_count, child_work_items_count, labels_count, drive_items_count, links_count, links
}

The related record stays a bare {"id": …} until you name it in include. A few relations are always filled in, such as the customer on a project. See Views and includes.

Some fields can point at one of several kinds of record. They come as a {name}_type and {name}_id pair, plus the record itself. A Drive item's owner, for example:

JSON
{
  "owner_type": "project",
  "owner_id": 12,
  "owner": { "id": 12 }
  // 23 more fields: id, title, group, kind, source, folder_id, drive_folder, content_record_type, content_record_id, content_record, order_column, created_by, archived_by, inherits_permissions, general_access, access, created_at, updated_at, deleted_at, comments_count, files_count, tags_count, links
}

The type is always a short name, such as project, customer, organization, user, work_item or event, never an internal class name. The schema page of each resource lists the names its fields can hold. To filter on such a pair, send both halves; see Paired filters.

Areas your organisation may not have

Two areas exist only when your organisation has the feature behind them:

AreaResources
BillingSales invoices and their rows, customer subscriptions and their items, subscription types and their items, subscription products, and legacy invoices
Configuration (the sprints feature)Workflows, workflow statuses, workflow transitions, work types and labels

Sprints and work items are always there, with or without the sprints feature.

Without the feature, every operation in that area answers 404 endpoint-not-found, and GET / does not list it. Call GET / first if your integration has to work for more than one organisation.

The MCP & API switches that turn the whole API on or off are a separate thing. See For administrators.