Ga naar inhoud

Werk: projecten, taken, uren

Wat het bureau werkelijk doet, en wat het factureert: projecten met budgetten, taakborden en checklists, de timer en de weekstaat, en elk contactmoment op één tijdlijn.

99 endpoints, verdeeld over 4 groepen. Een recht geschreven als module.resource.action:own heeft een bereik: :own dekt rijen die van jou zijn, :any die van iedereen, en :any voldoet aan een controle op :own.

EndpointRecht
GET /projectsprojects.project.read
POST /projectsprojects.project.write
GET /projects/{project_id}projects.project.read
PATCH /projects/{project_id}projects.project.write
DELETE /projects/{project_id}projects.project.delete
GET /projects/dashboard-budgetsprojects.project.read
Parameters en schema’s per endpoint

List Projects

Recht: projects.project.read

Queryparameters:

NaamTypeBetekenis
limitinteger(default 50)
offsetinteger(default 0)
company_idstring
statusstringLifecycle status; comma-separate for several (‘active,on_hold’). Absent means every status, the archived ones included — the screen picks its own default, this endpoint does not.
qstring
unnamedbooleanOnly projects nobody named (create-then-edit rows never finished), or only named ones. Omitted returns both.
minebooleanOnly projects I’m assigned to (primary or not) (default false)
sortstringname | status | start_date | end_date | budget_hours | …, ’-’ desc
hoursbooleanInclude the budget burn-down; costs one grouped query (default false)
countbooleanCompute total; set false for name-only lookups (default true)

Antwoord: 200 · Page_ProjectRead_

Create Project

Recht: projects.project.write

Request body: ProjectCreate

Antwoord: 201 · ProjectRead

Get Project

Recht: projects.project.read

Padparameters: project_id

Queryparameters:

NaamTypeBetekenis
hoursbooleanInclude the budget burn-down for the current period; one extra query (default false)

Antwoord: 200 · ProjectRead

Update Project

Recht: projects.project.write

Padparameters: project_id

Request body: ProjectUpdate

Antwoord: 200 · ProjectRead

Delete Project

Recht: projects.project.delete

Padparameters: project_id

Antwoord: 204

Dashboard Budgets — The budgeted active projects burning hottest — the My Day tile, already sorted and cut.

Recht: projects.project.read

Queryparameters:

NaamTypeBetekenis
limitinteger(default 4)

Antwoord: 200 · DashboardBudgetProject[]

EndpointRecht
GET /taskstasks.task.read
POST /taskstasks.task.create
GET /tasks/{task_id}tasks.task.read
PATCH /tasks/{task_id}tasks.task.write
DELETE /tasks/{task_id}tasks.task.delete
GET /tasks/{task_id}/ai-statustasks.task.read
POST /tasks/{task_id}/checkliststasks.task.write
PATCH /tasks/{task_id}/checklists/{checklist_id}tasks.task.write
DELETE /tasks/{task_id}/checklists/{checklist_id}tasks.task.write
POST /tasks/{task_id}/checklists/{checklist_id}/duplicatetasks.task.write
POST /tasks/{task_id}/checklists/{checklist_id}/itemstasks.task.write
PATCH /tasks/{task_id}/checklists/{checklist_id}/items/{item_id}tasks.task.write
DELETE /tasks/{task_id}/checklists/{checklist_id}/items/{item_id}tasks.task.write
POST /tasks/{task_id}/checklists/{checklist_id}/items/ordertasks.task.write
POST /tasks/{task_id}/checklists/ordertasks.task.write
POST /tasks/{task_id}/commentstasks.comment.write
PATCH /tasks/{task_id}/comments/{comment_id}tasks.comment.write
DELETE /tasks/{task_id}/comments/{comment_id}tasks.comment.write
PUT /tasks/{task_id}/labelstasks.task.write
POST /tasks/{task_id}/linkstasks.task.write
DELETE /tasks/{task_id}/links/{link_id}tasks.task.write
GET /tasks/checklist-templatestasks.task.write
POST /tasks/checklist-templatestasks.checklist_template.write
PATCH /tasks/checklist-templates/{template_id}tasks.checklist_template.write
DELETE /tasks/checklist-templates/{template_id}tasks.checklist_template.write
GET /tasks/dashboard-groupstasks.task.read
GET /tasks/dashboard-minetasks.task.read
GET /tasks/labelstasks.task.read
POST /tasks/labelstasks.label.write
PATCH /tasks/labels/{label_id}tasks.label.write
DELETE /tasks/labels/{label_id}tasks.label.write
GET /tasks/minetasks.task.read
POST /tasks/recurrence/previewtasks.task.write
GET /tasks/schedulestasks.schedule.read
POST /tasks/schedulestasks.schedule.write
GET /tasks/schedules/{schedule_id}tasks.schedule.read
PATCH /tasks/schedules/{schedule_id}tasks.schedule.write
DELETE /tasks/schedules/{schedule_id}tasks.schedule.write
POST /tasks/schedules/{schedule_id}/log-timetime.entry.write
GET /tasks/statusestasks.task.read
POST /tasks/statusestasks.status.write
PATCH /tasks/statuses/{status_id}tasks.status.write
DELETE /tasks/statuses/{status_id}tasks.status.write
GET /tasks/templatestasks.template.apply
POST /tasks/templatestasks.template.write
GET /tasks/templates/{template_id}tasks.template.apply
PATCH /tasks/templates/{template_id}tasks.template.write
DELETE /tasks/templates/{template_id}tasks.template.write
POST /tasks/templates/{template_id}/applytasks.template.apply
Parameters en schema’s per endpoint

List Tasks

Recht: tasks.task.read

Queryparameters:

NaamTypeBetekenis
limitinteger(default 50)
offsetinteger(default 0)
company_idstring
project_idstring
unlinkedbooleanOnly tasks with no client and no project (default false)
assignee_user_idstring
assignee_contact_idstring
statusstringA configured status key
label_idstring
dueoverdue · today · week
due_fromstringDeadline window start (the Agenda feed)
due_tostringDeadline window end (inclusive)
qstring
unnamedbooleanOnly tasks nobody named (create-then-edit rows never finished), or only named ones. Omitted returns both.
sortstringtitle | due_date | priority | status | assignee | …, ’-’ desc
metabooleanInclude label/checklist/comment aggregates (default true)
hoursbooleanInclude the hour budget’s burn (logged/remaining minutes); costs one grouped query. Omitted for a caller without time.entry.read rather than refused. (default false)
countbooleanCompute total; set false for name-only lookups (default true)

Antwoord: 200 · Page_TaskListItem_

Create Task

Recht: tasks.task.create

Request body: TaskCreate

Antwoord: 201 · TaskRead

Get Task — The full card: labels, checklists, comments and recent activity included.

Recht: tasks.task.read

Padparameters: task_id

Antwoord: 200 · TaskDetail

Update Task

Recht: tasks.task.write

Padparameters: task_id

Request body: TaskUpdate

Antwoord: 200 · TaskRead

Delete Task

Recht: tasks.task.delete

Padparameters: task_id

Antwoord: 204

Get Task Ai Status — Just the “is schakl still filling this in?” flag (#327).

Recht: tasks.task.read

Padparameters: task_id

Antwoord: 200 · TaskAIStatusRead

Add Checklist

Recht: tasks.task.write

Padparameters: task_id

Request body: ChecklistCreate

Antwoord: 201 · ChecklistRead

PATCH /api/v1/tasks/{task_id}/checklists/{checklist_id}

Section titled “PATCH /api/v1/tasks/{task_id}/checklists/{checklist_id}”

Update Checklist

Recht: tasks.task.write

Padparameters: task_id, checklist_id

Request body: ChecklistUpdate

Antwoord: 200 · ChecklistRead

DELETE /api/v1/tasks/{task_id}/checklists/{checklist_id}

Section titled “DELETE /api/v1/tasks/{task_id}/checklists/{checklist_id}”

Delete Checklist

Recht: tasks.task.write

Padparameters: task_id, checklist_id

Antwoord: 204

POST /api/v1/tasks/{task_id}/checklists/{checklist_id}/duplicate

Section titled “POST /api/v1/tasks/{task_id}/checklists/{checklist_id}/duplicate”

Duplicate Checklist — Copy a checklist beside its source, items and all — a second run of the same steps.

Recht: tasks.task.write

Padparameters: task_id, checklist_id

Request body: ChecklistDuplicate

Antwoord: 201 · ChecklistRead

POST /api/v1/tasks/{task_id}/checklists/{checklist_id}/items

Section titled “POST /api/v1/tasks/{task_id}/checklists/{checklist_id}/items”

Add Checklist Item

Recht: tasks.task.write

Padparameters: task_id, checklist_id

Request body: ChecklistItemCreate

Antwoord: 201 · ChecklistItemRead

PATCH /api/v1/tasks/{task_id}/checklists/{checklist_id}/items/{item_id}

Section titled “PATCH /api/v1/tasks/{task_id}/checklists/{checklist_id}/items/{item_id}”

Update Checklist Item

Recht: tasks.task.write

Padparameters: task_id, checklist_id, item_id

Request body: ChecklistItemUpdate

Antwoord: 200 · ChecklistItemRead

DELETE /api/v1/tasks/{task_id}/checklists/{checklist_id}/items/{item_id}

Section titled “DELETE /api/v1/tasks/{task_id}/checklists/{checklist_id}/items/{item_id}”

Delete Checklist Item

Recht: tasks.task.write

Padparameters: task_id, checklist_id, item_id

Antwoord: 204

POST /api/v1/tasks/{task_id}/checklists/{checklist_id}/items/order

Section titled “POST /api/v1/tasks/{task_id}/checklists/{checklist_id}/items/order”

Reorder Checklist Items — Set the order of one checklist’s items in one call.

Recht: tasks.task.write

Padparameters: task_id, checklist_id

Request body: ChecklistItemOrder

Antwoord: 200 · ChecklistOrderRead

POST /api/v1/tasks/{task_id}/checklists/order

Section titled “POST /api/v1/tasks/{task_id}/checklists/order”

Reorder Checklists — Set the order of a task’s checklists in one call (ChecklistOrder for the contract).

Recht: tasks.task.write

Padparameters: task_id

Request body: ChecklistOrder

Antwoord: 200 · ChecklistOrderRead

Add Comment

Recht: tasks.comment.write

Padparameters: task_id

Request body: CommentCreate

Antwoord: 201 · CommentRead

PATCH /api/v1/tasks/{task_id}/comments/{comment_id}

Section titled “PATCH /api/v1/tasks/{task_id}/comments/{comment_id}”

Update Comment

Recht: tasks.comment.write

Padparameters: task_id, comment_id

Request body: CommentUpdate

Antwoord: 200 · CommentRead

DELETE /api/v1/tasks/{task_id}/comments/{comment_id}

Section titled “DELETE /api/v1/tasks/{task_id}/comments/{comment_id}”

Delete Comment

Recht: tasks.comment.write

Padparameters: task_id, comment_id

Antwoord: 204

Set Task Labels

Recht: tasks.task.write

Padparameters: task_id

Request body: TaskLabelsSet

Antwoord: 200 · LabelRead[]

Add Link

Recht: tasks.task.write

Padparameters: task_id

Request body: app__modules__tasks__schemas__LinkCreate

Antwoord: 201 · app__modules__tasks__schemas__LinkRead

Section titled “DELETE /api/v1/tasks/{task_id}/links/{link_id}”

Delete Link

Recht: tasks.task.write

Padparameters: task_id, link_id

Antwoord: 204

List Checklist Templates

Recht: tasks.task.write

Antwoord: 200 · ChecklistTemplateRead[]

Create Checklist Template

Recht: tasks.checklist_template.write

Request body: ChecklistTemplateCreate

Antwoord: 201 · ChecklistTemplateRead

PATCH /api/v1/tasks/checklist-templates/{template_id}

Section titled “PATCH /api/v1/tasks/checklist-templates/{template_id}”

Update Checklist Template

Recht: tasks.checklist_template.write

Padparameters: template_id

Request body: ChecklistTemplateUpdate

Antwoord: 200 · ChecklistTemplateRead

DELETE /api/v1/tasks/checklist-templates/{template_id}

Section titled “DELETE /api/v1/tasks/checklist-templates/{template_id}”

Delete Checklist Template

Recht: tasks.checklist_template.write

Padparameters: template_id

Antwoord: 204

Dashboard Groups — Open-task counts grouped by project, then company, in one compact query.

Recht: tasks.task.read

Antwoord: 200 · DashboardTaskGroup[]

Dashboard Mine — Compact personal task list for the dashboard tile.

Recht: tasks.task.read

Queryparameters:

NaamTypeBetekenis
limitinteger(default 20)

Antwoord: 200 · DashboardTaskItem[]

List Labels

Recht: tasks.task.read

Antwoord: 200 · LabelRead[]

Create Label

Recht: tasks.label.write

Request body: LabelCreate

Antwoord: 201 · LabelRead

Update Label

Recht: tasks.label.write

Padparameters: label_id

Request body: LabelUpdate

Antwoord: 200 · LabelRead

Delete Label

Recht: tasks.label.write

Padparameters: label_id

Antwoord: 204

My Open Tasks — Open/in-progress tasks assigned to the current user (My Day).

Recht: tasks.task.read

Queryparameters:

NaamTypeBetekenis
limitinteger(default 20)

Antwoord: 200 · TaskListItem[]

Preview Recurrence — What the rule being composed resolves to — “Volgende taak: za 13 sep 2026”.

Recht: tasks.task.write

Request body: RecurrencePreview

Antwoord: 200 · RecurrencePreviewRead

List Schedules

Recht: tasks.schedule.read

Queryparameters:

NaamTypeBetekenis
date_fromstring
date_tostring
user_idsstring[]
task_idstring

Antwoord: 200 · ScheduleItem[]

Create Schedule

Recht: tasks.schedule.write

Request body: ScheduleCreate

Antwoord: 201 · ScheduleRead

Get Schedule

Recht: tasks.schedule.read

Padparameters: schedule_id

Antwoord: 200 · ScheduleRead

PATCH /api/v1/tasks/schedules/{schedule_id}

Section titled “PATCH /api/v1/tasks/schedules/{schedule_id}”

Update Schedule

Recht: tasks.schedule.write

Padparameters: schedule_id

Request body: ScheduleUpdate

Antwoord: 200 · ScheduleRead

DELETE /api/v1/tasks/schedules/{schedule_id}

Section titled “DELETE /api/v1/tasks/schedules/{schedule_id}”

Delete Schedule

Recht: tasks.schedule.write

Padparameters: schedule_id

Antwoord: 204

POST /api/v1/tasks/schedules/{schedule_id}/log-time

Section titled “POST /api/v1/tasks/schedules/{schedule_id}/log-time”

Log Schedule Time

Recht: time.entry.write

Padparameters: schedule_id

Request body: ScheduleLogTime

Antwoord: 200 · ScheduleRead

List Statuses

Recht: tasks.task.read

Antwoord: 200 · StatusRead[]

Create Status

Recht: tasks.status.write

Request body: StatusCreate

Antwoord: 201 · StatusRead

Update Status

Recht: tasks.status.write

Padparameters: status_id

Request body: StatusUpdate

Antwoord: 200 · StatusRead

Delete Status

Recht: tasks.status.write

Padparameters: status_id

Antwoord: 204

List Templates

Recht: tasks.template.apply

Antwoord: 200 · app__modules__tasks__schemas__TemplateRead[]

Create Template

Recht: tasks.template.write

Request body: app__modules__tasks__schemas__TemplateCreate

Antwoord: 201 · app__modules__tasks__schemas__TemplateRead

Get Template

Recht: tasks.template.apply

Padparameters: template_id

Antwoord: 200 · app__modules__tasks__schemas__TemplateRead

PATCH /api/v1/tasks/templates/{template_id}

Section titled “PATCH /api/v1/tasks/templates/{template_id}”

Update Template

Recht: tasks.template.write

Padparameters: template_id

Request body: app__modules__tasks__schemas__TemplateUpdate

Antwoord: 200 · app__modules__tasks__schemas__TemplateRead

DELETE /api/v1/tasks/templates/{template_id}

Section titled “DELETE /api/v1/tasks/templates/{template_id}”

Delete Template

Recht: tasks.template.write

Padparameters: template_id

Antwoord: 204

POST /api/v1/tasks/templates/{template_id}/apply

Section titled “POST /api/v1/tasks/templates/{template_id}/apply”

Apply Template

Recht: tasks.template.apply

Padparameters: template_id

Request body: TemplateApply

Antwoord: 201 · TaskRead[]

EndpointRecht
GET /time/costtime.report.read
GET /time/daytime.entry.read
PUT /time/drafts/{entry_date}time.entry.write
DELETE /time/drafts/{entry_date}time.entry.write
GET /time/entriestime.entry.read
POST /time/entriestime.entry.write
GET /time/entries/{entry_id}time.entry.read
PATCH /time/entries/{entry_id}time.entry.write
DELETE /time/entries/{entry_id}time.entry.write
POST /time/entries/approvetime.entry.approve
POST /time/entries/invoicetime.entry.invoice
GET /time/entry-typestime.entry_type.read
POST /time/entry-typestime.entry_type.manage
PATCH /time/entry-types/{type_id}time.entry_type.manage
DELETE /time/entry-types/{type_id}time.entry_type.manage
GET /time/loggedtime.entry.read
GET /time/reporttime.report.read
GET /time/stats/productivitytime.report.read
GET /time/stats/revenuetime.report.read
GET /time/stats/team-summarytime.report.read
GET /time/summarytime.entry.read
GET /time/timertime.entry.read
POST /time/timer/starttime.entry.write
POST /time/timer/stoptime.entry.write
GET /time/timesheettime.entry.read
GET /time/workspacetime.entry.read
Parameters en schema’s per endpoint

Project Cost — A project’s cost from employee rates (#111). The service also demands leave.rate.read:any — the figure is salary-derived.

Recht: time.report.read

Queryparameters:

NaamTypeBetekenis
project_idstring · verplicht

Antwoord: 200 · ProjectCost

Day View — One day’s entries (calendar day view) plus total + billable minutes.

Recht: time.entry.read

Queryparameters:

NaamTypeBetekenis
datestring · verplicht
user_idstring

Antwoord: 200 · DayView

Upsert Draft — Upsert the caller’s own draft for a day. Author-only by construction.

Recht: time.entry.write

Padparameters: entry_date

Request body: TimeEntryDraftPayload

Antwoord: 200 · TimeEntryDraftRead

Delete Draft — Discard the caller’s own draft. Idempotent.

Recht: time.entry.write

Padparameters: entry_date

Antwoord: 204

List Entries

Recht: time.entry.read

Queryparameters:

NaamTypeBetekenis
limitinteger(default 50)
offsetinteger(default 0)
user_idstring
company_idstring
project_idstring
task_idstring
date_fromstring
date_tostring
entry_typestringFilter by entry type key
runningbooleanFilter running timers in/out; unset = both
all_usersbooleanThe whole team’s entries, not just mine. Free to anyone when the query names a company/project/task — those hours already show as a budget bar; managers only when it doesn’t. (default false)
sortstringdate | employee | company | project | task | minutes | …, ’-’ desc
countbooleanCompute total; set false for lightweight lookups (default true)

Antwoord: 200 · Page_TimeEntryRead_

Create Entry

Recht: time.entry.write

Request body: TimeEntryCreate

Antwoord: 201 · TimeEntryRead

Get Entry

Recht: time.entry.read

Padparameters: entry_id

Antwoord: 200 · TimeEntryRead

Update Entry

Recht: time.entry.write

Padparameters: entry_id

Request body: TimeEntryUpdate

Antwoord: 200 · TimeEntryRead

Delete Entry

Recht: time.entry.write

Padparameters: entry_id

Antwoord: 204

Approve Entries

Recht: time.entry.approve

Request body: EntryApproval

Antwoord: 200 · BulkResult

Invoice Entries

Recht: time.entry.invoice

Request body: EntryInvoiced

Antwoord: 200 · BulkResult

List Entry Types

Recht: time.entry_type.read

Queryparameters:

NaamTypeBetekenis
include_inactiveboolean(default false)

Antwoord: 200 · TimeEntryTypeRead[]

Create Entry Type

Recht: time.entry_type.manage

Request body: TimeEntryTypeCreate

Antwoord: 201 · TimeEntryTypeRead

Update Entry Type

Recht: time.entry_type.manage

Padparameters: type_id

Request body: TimeEntryTypeUpdate

Antwoord: 200 · TimeEntryTypeRead

Delete Entry Type

Recht: time.entry_type.manage

Padparameters: type_id

Antwoord: 204

Logged — Team-wide logged minutes for a company/project/task (budget burn-down).

Recht: time.entry.read

Queryparameters:

NaamTypeBetekenis
company_idstring
project_idstring
task_idstring
date_fromstring
date_tostring

Antwoord: 200 · LoggedSummary

Time Report — Org-wide entries with filter + sign-off totals, for the hours overview.

Recht: time.report.read

Queryparameters:

NaamTypeBetekenis
limitinteger(default 200)
offsetinteger(default 0)
user_idstring
company_idstring
project_idstring
date_fromstring
date_tostring
billableboolean
approvedboolean
invoicedboolean
entry_typestringFilter by entry type key
sortstringdate | employee | company | project | task | minutes | …, ’-’ desc

Antwoord: 200 · TimeReport

Productivity Stats — Per-employee hours/billable/approved aggregates (managers).

Recht: time.report.read

Queryparameters:

NaamTypeBetekenis
date_fromstring · verplicht
date_tostring · verplicht

Antwoord: 200 · ProductivityStats

Revenue Stats — Monthly omzet for the selected + previous year and the top clients (managers).

Recht: time.report.read

Queryparameters:

NaamTypeBetekenis
yearinteger · verplicht

Antwoord: 200 · RevenueStats

Team Time Summary — One-query hours + revenue payload for the manager dashboard tile.

Recht: time.report.read

Queryparameters:

NaamTypeBetekenis
date_fromstring · verplicht
date_tostring · verplicht

Antwoord: 200 · TeamTimeSummary

Summary

Recht: time.entry.read

Queryparameters:

NaamTypeBetekenis
datestring
user_idstring

Antwoord: 200 · TimeSummary

Current Timer

Recht: time.entry.read

Antwoord: 200 · TimeEntryRead

Start Timer

Recht: time.entry.write

Request body: TimerStart

Antwoord: 201 · TimeEntryRead

Stop Timer

Recht: time.entry.write

Antwoord: 200 · TimeEntryRead

Timesheet

Recht: time.entry.read

Queryparameters:

NaamTypeBetekenis
week_startstring · verplicht
user_idstring

Antwoord: 200 · Timesheet

Time Workspace — The interactive Hours screen in one request, reusing its weekly entry scan.

Recht: time.entry.read

Queryparameters:

NaamTypeBetekenis
week_startstring · verplicht
daystring · verplicht

Antwoord: 200 · TimeWorkspace

EndpointRecht
GET /interactionsinteractions.interaction.read
POST /interactionsinteractions.interaction.write
GET /interactions/{interaction_id}interactions.interaction.read
PATCH /interactions/{interaction_id}interactions.interaction.write
DELETE /interactions/{interaction_id}interactions.interaction.delete
POST /interactions/{interaction_id}/add-to-conversationinteractions.interaction.review
POST /interactions/{interaction_id}/approveinteractions.interaction.review
POST /interactions/{interaction_id}/rejectinteractions.interaction.review
POST /interactions/{interaction_id}/remapinteractions.interaction.review
GET /interactions/{interaction_id}/threadinteractions.interaction.read
POST /interactions/bulk/approveinteractions.interaction.review
POST /interactions/bulk/assigninteractions.interaction.review
POST /interactions/bulk/rejectinteractions.interaction.review
GET /interactions/kindsinteractions.kind.read
POST /interactions/kindsinteractions.kind.manage
PATCH /interactions/kinds/{kind_id}interactions.kind.manage
DELETE /interactions/kinds/{kind_id}interactions.kind.manage
POST /interactions/upload-emlinteractions.interaction.write
Parameters en schema’s per endpoint

List Interactions

Recht: interactions.interaction.read

Queryparameters:

NaamTypeBetekenis
company_idstring
project_idstring
task_idstring
contact_idstring
kindstring
statusstring
owner_user_idstring
minebooleanOnly my own rows — the review queue’s filter (default false)
includestringRoll-up: ‘tasks’ with project_id also returns the project’s tasks’ rows
qstringFree text over subject/snippet/body
date_fromstringOccurred on/after this org-local day
date_tostringOccurred on/before this org-local day
sortstringoccurred_at | subject | kind | contact | owner, ’-’ desc
limitinteger(default 20)
offsetinteger(default 0)
countbooleanCompute the total. False skips a second full pass over the filter. (default true)
with_bodybooleanInclude each row’s full body_text. Off by default — the list draws snippet. (default false)

Antwoord: 200 · Page_InteractionRead_

Create Interaction

Recht: interactions.interaction.write

Request body: InteractionCreate

Antwoord: 201 · InteractionRead

Get Interaction

Recht: interactions.interaction.read

Padparameters: interaction_id

Antwoord: 200 · InteractionRead

PATCH /api/v1/interactions/{interaction_id}

Section titled “PATCH /api/v1/interactions/{interaction_id}”

Update Interaction

Recht: interactions.interaction.write

Padparameters: interaction_id

Request body: InteractionUpdate

Antwoord: 200 · InteractionRead

DELETE /api/v1/interactions/{interaction_id}

Section titled “DELETE /api/v1/interactions/{interaction_id}”

Delete Interaction

Recht: interactions.interaction.delete

Padparameters: interaction_id

Antwoord: 204

POST /api/v1/interactions/{interaction_id}/add-to-conversation

Section titled “POST /api/v1/interactions/{interaction_id}/add-to-conversation”

Add Interaction To Conversation — Manually glue this gmail email onto another’s conversation (#272). Gated on .review like every gmail-row mutation — the service enforces strict mailbox ownership on both the row and the target.

Recht: interactions.interaction.review

Padparameters: interaction_id

Request body: InteractionAddToConversation

Antwoord: 200 · InteractionRead

POST /api/v1/interactions/{interaction_id}/approve

Section titled “POST /api/v1/interactions/{interaction_id}/approve”

Approve Interaction

Recht: interactions.interaction.review

Padparameters: interaction_id

Request body: InteractionApprove

Antwoord: 200 · InteractionRead

POST /api/v1/interactions/{interaction_id}/reject

Section titled “POST /api/v1/interactions/{interaction_id}/reject”

Reject Interaction

Recht: interactions.interaction.review

Padparameters: interaction_id

Request body: InteractionReject

Antwoord: 204

POST /api/v1/interactions/{interaction_id}/remap

Section titled “POST /api/v1/interactions/{interaction_id}/remap”

Remap Interaction

Recht: interactions.interaction.review

Padparameters: interaction_id

Request body: InteractionRemap

Antwoord: 200 · InteractionRead

GET /api/v1/interactions/{interaction_id}/thread

Section titled “GET /api/v1/interactions/{interaction_id}/thread”

Get Interaction Thread — The full conversation this interaction belongs to (#272), newest first — what the detail modal expands into. A row not in a conversation is its own one-message thread.

Recht: interactions.interaction.read

Padparameters: interaction_id

Antwoord: 200 · InteractionRead[]

Bulk Approve Interactions — Approve a selection, optionally filing all of it in one step.

Recht: interactions.interaction.review

Request body: InteractionBulkApprove

Antwoord: 200 · InteractionBulkResult

Bulk Assign Interactions — File a selection without approving it — the batch form of remap, so it re-files logged rows too. An absent link field leaves every row’s own alone.

Recht: interactions.interaction.review

Request body: InteractionBulkAssign

Antwoord: 200 · InteractionBulkResult

Bulk Reject Interactions — Reject a selection. Permanent per row: the metadata goes and the message is suppressed, so a re-poll never resurrects it.

Recht: interactions.interaction.review

Request body: InteractionBulkReject

Antwoord: 200 · InteractionBulkResult

List Interaction Kinds

Recht: interactions.kind.read

Queryparameters:

NaamTypeBetekenis
include_inactiveboolean(default false)

Antwoord: 200 · InteractionKindDefRead[]

Create Interaction Kind

Recht: interactions.kind.manage

Request body: InteractionKindDefCreate

Antwoord: 201 · InteractionKindDefRead

PATCH /api/v1/interactions/kinds/{kind_id}

Section titled “PATCH /api/v1/interactions/kinds/{kind_id}”

Update Interaction Kind

Recht: interactions.kind.manage

Padparameters: kind_id

Request body: InteractionKindDefUpdate

Antwoord: 200 · InteractionKindDefRead

DELETE /api/v1/interactions/kinds/{kind_id}

Section titled “DELETE /api/v1/interactions/kinds/{kind_id}”

Delete Interaction Kind

Recht: interactions.kind.manage

Padparameters: kind_id

Antwoord: 204

Upload Interaction Eml — Log an exported email as a contactmoment (#262).

Recht: interactions.interaction.write

Request body: Body_upload_interaction_eml_api_v1_interactions_upload_eml_post

Antwoord: 201 · InteractionEmlUploadRead