Ga naar inhoud

Platform

Alles wat overal doorheen loopt: de organisatiegegevens die een client als eerste ophaalt, bestanden, meldingen, automatiseringsregels, AI, eigen velden, spreadsheets en bulkbewerkingen.

165 endpoints, verdeeld over 14 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
POST /ai/assist/writeai.use
POST /ai/assistantai.use
POST /ai/companies/{company_id}/digestai.use
GET /ai/reportsai.use
POST /ai/reportsai.use
GET /ai/reports/{report_id}ai.use
PUT /ai/reports/{report_id}ai.use
DELETE /ai/reports/{report_id}ai.use
POST /ai/reports/generateai.use
GET /ai/settingsai.settings.manage
PUT /ai/settingsai.settings.manage
DELETE /ai/settingsai.settings.manage
POST /ai/settings/modelsai.settings.manage
POST /ai/settings/testai.settings.manage
POST /ai/time/parseai.use
POST /ai/time/reconstructai.use
POST /ai/time/transcribeai.use
GET /ai/usageai.settings.manage
Parameters en schema’s per endpoint

Writing Assist

Recht: ai.use

Request body: WritingAssistRequest

Antwoord: 200

Assistant

Recht: ai.use

Request body: AssistantRequest

Antwoord: 200

POST /api/v1/ai/companies/{company_id}/digest

Section titled “POST /api/v1/ai/companies/{company_id}/digest”

Company Digest

Recht: ai.use

Padparameters: company_id

Request body: DigestRequest

Antwoord: 200

List Reports

Recht: ai.use

Queryparameters:

NaamTypeBetekenis
company_idstring

Antwoord: 200 · ReportRead[]

Create Report

Recht: ai.use

Request body: ReportCreate

Antwoord: 201 · ReportRead

Get Report

Recht: ai.use

Padparameters: report_id

Antwoord: 200 · ReportRead

Update Report

Recht: ai.use

Padparameters: report_id

Request body: ReportUpdate

Antwoord: 200 · ReportRead

Delete Report

Recht: ai.use

Padparameters: report_id

Antwoord: 204

Generate Report

Recht: ai.use

Request body: ReportGenerateRequest

Antwoord: 200

Get Ai Settings

Recht: ai.settings.manage

Antwoord: 200 · AISettingsRead

Save Ai Settings

Recht: ai.settings.manage

Request body: AISettingsWrite

Antwoord: 200 · AISettingsRead

Delete Ai Settings

Recht: ai.settings.manage

Antwoord: 204

List Ai Models — Live model listing for the settings picker — a settings-page helper like the test button, so a provider failure comes back as data, never a 500.

Recht: ai.settings.manage

Request body: AIModelsRequest

Antwoord: 200 · AIModelsResult

Test Ai Settings

Recht: ai.settings.manage

Antwoord: 200 · AITestResult

Time Parse

Recht: ai.use

Request body: TimeParseRequest

Antwoord: 200 · TimeParseResult

Time Reconstruct

Recht: ai.use

Request body: TimeReconstructRequest

Antwoord: 200 · TimeReconstructResult

Time Transcribe — Speech to text for the quick-add field (#246).

Recht: ai.use

Request body: TimeTranscribeRequest

Antwoord: 200 · TimeTranscribeResult

Ai Usage

Recht: ai.settings.manage

Antwoord: 200 · AIUsageSummary

EndpointRecht
GET /automation/catalogautomation.rule.read
POST /automation/dry-runautomation.rule.write
GET /automation/rulesautomation.rule.read
POST /automation/rulesautomation.rule.write
GET /automation/rules/{rule_id}automation.rule.read
PATCH /automation/rules/{rule_id}automation.rule.write
DELETE /automation/rules/{rule_id}automation.rule.write
GET /automation/runsautomation.run.read
Parameters en schema’s per endpoint

Get Catalog — The trigger events and action types the rule editor may offer (code-defined).

Recht: automation.rule.read

Antwoord: 200 · CatalogRead

Dry Run — Evaluate a draft rule against a sample entity; executes nothing.

Recht: automation.rule.write

Request body: DryRunRequest

Antwoord: 200 · DryRunResult

List Rules

Recht: automation.rule.read

Antwoord: 200 · RuleRead[]

Create Rule

Recht: automation.rule.write

Request body: RuleCreate

Antwoord: 201 · RuleRead

Get Rule

Recht: automation.rule.read

Padparameters: rule_id

Antwoord: 200 · RuleRead

Update Rule

Recht: automation.rule.write

Padparameters: rule_id

Request body: RuleUpdate

Antwoord: 200 · RuleRead

Delete Rule

Recht: automation.rule.write

Padparameters: rule_id

Antwoord: 204

List Runs

Recht: automation.run.read

Queryparameters:

NaamTypeBetekenis
rule_idstring
limitinteger(default 50)
offsetinteger(default 0)

Antwoord: 200 · Page_RunRead_

EndpointRecht
POST /bulk/company/deletecompanies.company.delete
POST /bulk/company/updatecompanies.company.write
POST /bulk/contact/deletecontacts.contact.delete
POST /bulk/contact/updatecontacts.contact.write
POST /bulk/domain/deletedomains.domain.delete
POST /bulk/domain/updatedomains.domain.write
POST /bulk/interaction/deleteinteractions.interaction.delete
POST /bulk/invoice/deleteinvoicing.invoice.delete
POST /bulk/project/deleteprojects.project.delete
POST /bulk/project/updateprojects.project.write
POST /bulk/subscription/deletesubscriptions.subscription.delete
POST /bulk/subscription/updatesubscriptions.subscription.write
POST /bulk/task/deletetasks.task.delete
POST /bulk/task/updatetasks.task.write
POST /bulk/uptime_monitor/deleteuptime.monitor.write
POST /bulk/uptime_monitor/updateuptime.monitor.write
POST /bulk/website/deletewebsites.website.delete
POST /bulk/website/updatewebsites.website.write
Parameters en schema’s per endpoint

Bulk Delete Company — Delete a selection of company records. Permanent, and per row: the rows the batch could do are done, and the rest come back in failed.

Recht: companies.company.delete

Request body: BulkDeleteRequest

Antwoord: 200 · BulkActionResult

Bulk Update Company — Set fields on a selection of company records: status. Keys are the entity’s own stable column keys (the ones its CSV export uses). An absent key leaves every row’s own value alone; an explicit null clears it where the field allows that. Rows are independent — an ineligible one is reported in failed, never rolled back over the rest.

Recht: companies.company.write

Request body: BulkUpdateRequest

Antwoord: 200 · BulkActionResult

Bulk Delete Contact — Delete a selection of contact records. Permanent, and per row: the rows the batch could do are done, and the rest come back in failed.

Recht: contacts.contact.delete

Request body: BulkDeleteRequest

Antwoord: 200 · BulkActionResult

Bulk Update Contact — Set fields on a selection of contact records: company. Keys are the entity’s own stable column keys (the ones its CSV export uses). An absent key leaves every row’s own value alone; an explicit null clears it where the field allows that. Rows are independent — an ineligible one is reported in failed, never rolled back over the rest.

Recht: contacts.contact.write

Request body: BulkUpdateRequest

Antwoord: 200 · BulkActionResult

Bulk Delete Domain — Delete a selection of domain records. Permanent, and per row: the rows the batch could do are done, and the rest come back in failed.

Recht: domains.domain.delete

Request body: BulkDeleteRequest

Antwoord: 200 · BulkActionResult

Bulk Update Domain — Set fields on a selection of domain records: status, company, registrar_provider, dns_provider, email_provider, invoiceable, next_invoice_date. Keys are the entity’s own stable column keys (the ones its CSV export uses). An absent key leaves every row’s own value alone; an explicit null clears it where the field allows that. Rows are independent — an ineligible one is reported in failed, never rolled back over the rest.

Recht: domains.domain.write

Request body: BulkUpdateRequest

Antwoord: 200 · BulkActionResult

Bulk Delete Interaction — Delete a selection of interaction records. Permanent, and per row: the rows the batch could do are done, and the rest come back in failed.

Recht: interactions.interaction.delete

Request body: BulkDeleteRequest

Antwoord: 200 · BulkActionResult

Bulk Delete Invoice — Delete a selection of invoice records. Permanent, and per row: the rows the batch could do are done, and the rest come back in failed.

Recht: invoicing.invoice.delete

Request body: BulkDeleteRequest

Antwoord: 200 · BulkActionResult

Bulk Delete Project — Delete a selection of project records. Permanent, and per row: the rows the batch could do are done, and the rest come back in failed.

Recht: projects.project.delete

Request body: BulkDeleteRequest

Antwoord: 200 · BulkActionResult

Bulk Update Project — Set fields on a selection of project records: status, company, billable_default. Keys are the entity’s own stable column keys (the ones its CSV export uses). An absent key leaves every row’s own value alone; an explicit null clears it where the field allows that. Rows are independent — an ineligible one is reported in failed, never rolled back over the rest.

Recht: projects.project.write

Request body: BulkUpdateRequest

Antwoord: 200 · BulkActionResult

Bulk Delete Subscription — Delete a selection of subscription records. Permanent, and per row: the rows the batch could do are done, and the rest come back in failed.

Recht: subscriptions.subscription.delete

Request body: BulkDeleteRequest

Antwoord: 200 · BulkActionResult

Bulk Update Subscription — Set fields on a selection of subscription records: status, type, company. Keys are the entity’s own stable column keys (the ones its CSV export uses). An absent key leaves every row’s own value alone; an explicit null clears it where the field allows that. Rows are independent — an ineligible one is reported in failed, never rolled back over the rest.

Recht: subscriptions.subscription.write

Request body: BulkUpdateRequest

Antwoord: 200 · BulkActionResult

Bulk Delete Task — Delete a selection of task records. Permanent, and per row: the rows the batch could do are done, and the rest come back in failed.

Recht: tasks.task.delete

Request body: BulkDeleteRequest

Antwoord: 200 · BulkActionResult

Bulk Update Task — Set fields on a selection of task records: status, assignee, priority, project, company, due_date. Keys are the entity’s own stable column keys (the ones its CSV export uses). An absent key leaves every row’s own value alone; an explicit null clears it where the field allows that. Rows are independent — an ineligible one is reported in failed, never rolled back over the rest.

Recht: tasks.task.write

Request body: BulkUpdateRequest

Antwoord: 200 · BulkActionResult

Bulk Delete Uptime Monitor — Delete a selection of uptime_monitor records. Permanent, and per row: the rows the batch could do are done, and the rest come back in failed.

Recht: uptime.monitor.write

Request body: BulkDeleteRequest

Antwoord: 200 · BulkActionResult

Bulk Update Uptime Monitor — Set fields on a selection of uptime_monitor records: company. Keys are the entity’s own stable column keys (the ones its CSV export uses). An absent key leaves every row’s own value alone; an explicit null clears it where the field allows that. Rows are independent — an ineligible one is reported in failed, never rolled back over the rest.

Recht: uptime.monitor.write

Request body: BulkUpdateRequest

Antwoord: 200 · BulkActionResult

Bulk Delete Website — Delete a selection of website records. Permanent, and per row: the rows the batch could do are done, and the rest come back in failed.

Recht: websites.website.delete

Request body: BulkDeleteRequest

Antwoord: 200 · BulkActionResult

Bulk Update Website — Set fields on a selection of website records: hosting, uptime_enabled. Keys are the entity’s own stable column keys (the ones its CSV export uses). An absent key leaves every row’s own value alone; an explicit null clears it where the field allows that. Rows are independent — an ineligible one is reported in failed, never rolled back over the rest.

Recht: websites.website.write

Request body: BulkUpdateRequest

Antwoord: 200 · BulkActionResult

EndpointRecht
GET /custom-fields/definitionssettings.customfields.read
POST /custom-fields/definitionssettings.customfields.write
PATCH /custom-fields/definitions/{definition_id}settings.customfields.write
DELETE /custom-fields/definitions/{definition_id}settings.customfields.write
GET /custom-fields/definitions/batchsettings.customfields.read
GET /custom-fields/entity-typessettings.customfields.read
Parameters en schema’s per endpoint

List Definitions

Recht: settings.customfields.read

Queryparameters:

NaamTypeBetekenis
entity_typestring · verplicht
include_inactiveboolean(default false)

Antwoord: 200 · CustomFieldDefinitionRead[]

Create Definition

Recht: settings.customfields.write

Request body: CustomFieldDefinitionCreate

Antwoord: 201 · CustomFieldDefinitionRead

PATCH /api/v1/custom-fields/definitions/{definition_id}

Section titled “PATCH /api/v1/custom-fields/definitions/{definition_id}”

Update Definition

Recht: settings.customfields.write

Padparameters: definition_id

Request body: CustomFieldDefinitionUpdate

Antwoord: 200 · CustomFieldDefinitionRead

DELETE /api/v1/custom-fields/definitions/{definition_id}

Section titled “DELETE /api/v1/custom-fields/definitions/{definition_id}”

Delete Definition

Recht: settings.customfields.write

Padparameters: definition_id

Antwoord: 204

GET /api/v1/custom-fields/definitions/batch

Section titled “GET /api/v1/custom-fields/definitions/batch”

List Definitions Batch — Several entity types’ definitions in one call, keyed by entity type.

Recht: settings.customfields.read

Queryparameters:

NaamTypeBetekenis
entity_typestring[] · verplicht
include_inactiveboolean(default false)

Antwoord: 200 · object

List Entity Types

Recht: settings.customfields.read

Antwoord: 200 · array

EndpointRecht
GET /dashboard/prefsdashboard.prefs.read
PUT /dashboard/prefsdashboard.prefs.write
DELETE /dashboard/prefsdashboard.prefs.write
PUT /dashboard/prefs/defaultsettings.dashboard.manage
Parameters en schema’s per endpoint

Get Prefs — The effective layout for the current user: own row → org template → none.

Recht: dashboard.prefs.read

Antwoord: 200 · DashboardPrefs

Set Prefs

Recht: dashboard.prefs.write

Request body: DashboardPrefsUpdate

Antwoord: 200 · DashboardPrefs

Reset Prefs — Drop the personal layout; the user falls back to the org template.

Recht: dashboard.prefs.write

Antwoord: 204

Set Default Prefs — The org-wide template that members inherit (settings.dashboard.manage).

Recht: settings.dashboard.manage

Request body: DashboardPrefsUpdate

Antwoord: 200 · DashboardPrefs

EndpointRecht
GET /settings/emailsettings.email.manage
PUT /settings/emailsettings.email.manage
DELETE /settings/emailsettings.email.manage
GET /settings/email/templatessettings.email.manage
PUT /settings/email/templatessettings.email.manage
POST /settings/email/templates/testsettings.email.manage
POST /settings/email/testsettings.email.manage
Parameters en schema’s per endpoint

Get Email Settings — The org’s stored transport and the one actually sending (epic #199).

Recht: settings.email.manage

Antwoord: 200 · EmailSettingsRead

Save Email Settings

Recht: settings.email.manage

Request body: EmailSettingsWrite

Antwoord: 200 · EmailSettingsRead

Delete Email Settings

Recht: settings.email.manage

Antwoord: 204

List Email Templates

Recht: settings.email.manage

Antwoord: 200 · EmailTemplatesRead

Save Email Template — Upsert one (kind, locale) override; blank subject and body resets it to default.

Recht: settings.email.manage

Request body: EmailTemplateWrite

Antwoord: 200 · EmailTemplateItem

POST /api/v1/settings/email/templates/test

Section titled “POST /api/v1/settings/email/templates/test”

Test Email Template — Send a preview of the draft (or stored/default) to the acting admin.

Recht: settings.email.manage

Request body: EmailTemplateTest

Antwoord: 200 · EmailTestResult

Test Email Settings

Recht: settings.email.manage

Antwoord: 200 · EmailTestResult

EndpointRecht
GET /filesBewust open
POST /filesfiles.file.write
GET /files/{file_id}Bewust open
DELETE /files/{file_id}files.file.write
GET /files/{file_id}/publicBewust open
Parameters en schema’s per endpoint

List Files — The files attached to one entity (a task’s documents, a project’s documents).

Recht: Bewust open

Queryparameters:

NaamTypeBetekenis
entity_typestring · verplicht
entity_idstring · verplicht
include_inlineboolean(default false)

Antwoord: 200 · StoredFileRead[]

Upload File — Multipart upload. Size and content type are bounded by instance config.

Recht: files.file.write

Queryparameters:

NaamTypeBetekenis
entity_typestring
entity_idstring

Request body: Body_upload_file_api_v1_files_post

Antwoord: 201 · StoredFileRead

Serve File — Stream the bytes. Cross-tenant ids read as 404 (tenant-scoped row lookup).

Recht: Bewust open

Padparameters: file_id

Antwoord: 200

Delete File — Remove the row and its bytes. Branding/avatar files carry extra guards (service).

Recht: files.file.write

Padparameters: file_id

Antwoord: 204

Serve Public File — Anonymous serving for branding assets, org resolved strictly from the hostname.

Recht: Bewust open

Padparameters: file_id

Queryparameters:

NaamTypeBetekenis
sizeinteger
maskableboolean(default false)
bgstring(default #ffffff)

Antwoord: 200

EndpointRecht
GET /impex/company/columnscompanies.company.read
GET /impex/company/exportimpex.export, companies.company.read
POST /impex/company/importimpex.import, companies.company.write
POST /impex/company/inspectimpex.import, companies.company.write
GET /impex/contact/columnscontacts.contact.read
GET /impex/contact/exportimpex.export, contacts.contact.read
POST /impex/contact/importimpex.import, contacts.contact.write
POST /impex/contact/inspectimpex.import, contacts.contact.write
GET /impex/domain_tld_price/columnsdomains.tld_price.read
GET /impex/domain_tld_price/exportimpex.export, domains.tld_price.read
POST /impex/domain_tld_price/importimpex.import, domains.tld_price.manage
POST /impex/domain_tld_price/inspectimpex.import, domains.tld_price.manage
GET /impex/domain/columnsdomains.domain.read
GET /impex/domain/exportimpex.export, domains.domain.read
POST /impex/domain/importimpex.import, domains.domain.write
POST /impex/domain/inspectimpex.import, domains.domain.write
GET /impex/entitiesBewust open
GET /impex/hosting/columnshosting.hosting.read
GET /impex/hosting/exportimpex.export, hosting.hosting.read
POST /impex/hosting/importimpex.import, hosting.hosting.write
POST /impex/hosting/inspectimpex.import, hosting.hosting.write
GET /impex/project/columnsprojects.project.read
GET /impex/project/exportimpex.export, projects.project.read
POST /impex/project/importimpex.import, projects.project.write
POST /impex/project/inspectimpex.import, projects.project.write
GET /impex/subscription_template/columnssubscriptions.subscription.read
GET /impex/subscription_template/exportimpex.export, subscriptions.subscription.read
POST /impex/subscription_template/importimpex.import, subscriptions.template.manage
POST /impex/subscription_template/inspectimpex.import, subscriptions.template.manage
GET /impex/subscription_type/columnssubscriptions.subscription.read
GET /impex/subscription_type/exportimpex.export, subscriptions.subscription.read
POST /impex/subscription_type/importimpex.import, subscriptions.type.manage
POST /impex/subscription_type/inspectimpex.import, subscriptions.type.manage
GET /impex/subscription/columnssubscriptions.subscription.read
GET /impex/subscription/exportimpex.export, subscriptions.subscription.read
POST /impex/subscription/importimpex.import, subscriptions.subscription.write
POST /impex/subscription/inspectimpex.import, subscriptions.subscription.write
GET /impex/task/columnstasks.task.read
GET /impex/task/exportimpex.export, tasks.task.read
POST /impex/task/importimpex.import, tasks.task.write
POST /impex/task/inspectimpex.import, tasks.task.write
GET /impex/time_entry/columnstime.entry.read
GET /impex/time_entry/exportimpex.export, time.entry.read
POST /impex/time_entry/importimpex.import, time.entry.write
POST /impex/time_entry/inspectimpex.import, time.entry.write
GET /impex/uptime_monitor/columnsuptime.monitor.read
GET /impex/uptime_monitor/exportimpex.export, uptime.monitor.read
GET /impex/website/columnswebsites.website.read
GET /impex/website/exportimpex.export, websites.website.read
POST /impex/website/importimpex.import, websites.website.write
POST /impex/website/inspectimpex.import, websites.website.write
Parameters en schema’s per endpoint

Impex Columns Company — Every column a company import can write into: the entity’s own, those contributed by other modules, and this organisation’s custom fields — with the labels, types and aliases a mapping UI needs.

Recht: companies.company.read

Antwoord: 200 · ImpexColumnsResponse

Impex Export Company — Export the current filtered company list as CSV (UTF-8, BOM). Headers are stable column keys plus the tenant’s custom-field keys — the file re-imports into the same organisation unchanged.

Recht: impex.export, companies.company.read

Queryparameters:

NaamTypeBetekenis
qstringSearch, as on the list
statusstringStatus, as on the list
minebooleanOnly rows assigned to me (default false)
sortstringList sort key, ’-’ desc

Antwoord: 200

Impex Import Company — Import company rows from a spreadsheet, upserting on the first of client_number, name each row fills (max 2000 data rows per request). Accepts a CSV/TSV/Excel upload or a pasted block; the format is read from the content, not the filename.

Recht: impex.import, companies.company.write

Queryparameters:

NaamTypeBetekenis
dry_runbooleanValidate and report creates/updates/errors without writing anything. false applies the file all-or-nothing in one transaction. (default true)

Request body: Body_impex_import_company_api_v1_impex_company_import_post

Antwoord: 200 · ImportReport

Impex Inspect Company — Read an uploaded file and report what it is — format, worksheets, encoding, row count — plus each of its columns with sample cells and the suggested target column. Writes nothing and reads no records; returns a fingerprint the import repeats so a mapping cannot be applied to a different file.

Recht: impex.import, companies.company.write

Request body: Body_impex_inspect_company_api_v1_impex_company_inspect_post

Antwoord: 200 · ImpexInspectReport

Impex Columns Contact — Every column a contact import can write into: the entity’s own, those contributed by other modules, and this organisation’s custom fields — with the labels, types and aliases a mapping UI needs.

Recht: contacts.contact.read

Antwoord: 200 · ImpexColumnsResponse

Impex Export Contact — Export the current filtered contact list as CSV (UTF-8, BOM). Headers are stable column keys plus the tenant’s custom-field keys — the file re-imports into the same organisation unchanged.

Recht: impex.export, contacts.contact.read

Queryparameters:

NaamTypeBetekenis
qstringSearch, as on the list
company_idstring
sortstringList sort key, ’-’ desc

Antwoord: 200

Impex Import Contact — Import contact rows from a spreadsheet, upserting on the first of email each row fills (max 2000 data rows per request). Accepts a CSV/TSV/Excel upload or a pasted block; the format is read from the content, not the filename.

Recht: impex.import, contacts.contact.write

Queryparameters:

NaamTypeBetekenis
dry_runbooleanValidate and report creates/updates/errors without writing anything. false applies the file all-or-nothing in one transaction. (default true)

Request body: Body_impex_import_contact_api_v1_impex_contact_import_post

Antwoord: 200 · ImportReport

Impex Inspect Contact — Read an uploaded file and report what it is — format, worksheets, encoding, row count — plus each of its columns with sample cells and the suggested target column. Writes nothing and reads no records; returns a fingerprint the import repeats so a mapping cannot be applied to a different file.

Recht: impex.import, contacts.contact.write

Request body: Body_impex_inspect_contact_api_v1_impex_contact_inspect_post

Antwoord: 200 · ImpexInspectReport

GET /api/v1/impex/domain_tld_price/columns

Section titled “GET /api/v1/impex/domain_tld_price/columns”

Impex Columns Domain Tld Price — Every column a domain_tld_price import can write into: the entity’s own, those contributed by other modules, and this organisation’s custom fields — with the labels, types and aliases a mapping UI needs.

Recht: domains.tld_price.read

Antwoord: 200 · ImpexColumnsResponse

Impex Export Domain Tld Price — Export the current filtered domain_tld_price list as CSV (UTF-8, BOM). Headers are stable column keys plus the tenant’s custom-field keys — the file re-imports into the same organisation unchanged.

Recht: impex.export, domains.tld_price.read

Antwoord: 200

POST /api/v1/impex/domain_tld_price/import

Section titled “POST /api/v1/impex/domain_tld_price/import”

Impex Import Domain Tld Price — Import domain_tld_price rows from a spreadsheet, create-only (no natural key) (max 2000 data rows per request). Accepts a CSV/TSV/Excel upload or a pasted block; the format is read from the content, not the filename.

Recht: impex.import, domains.tld_price.manage

Queryparameters:

NaamTypeBetekenis
dry_runbooleanValidate and report creates/updates/errors without writing anything. false applies the file all-or-nothing in one transaction. (default true)

Request body: Body_impex_import_domain_tld_price_api_v1_impex_domain_tld_price_import_post

Antwoord: 200 · ImportReport

POST /api/v1/impex/domain_tld_price/inspect

Section titled “POST /api/v1/impex/domain_tld_price/inspect”

Impex Inspect Domain Tld Price — Read an uploaded file and report what it is — format, worksheets, encoding, row count — plus each of its columns with sample cells and the suggested target column. Writes nothing and reads no records; returns a fingerprint the import repeats so a mapping cannot be applied to a different file.

Recht: impex.import, domains.tld_price.manage

Request body: Body_impex_inspect_domain_tld_price_api_v1_impex_domain_tld_price_inspect_post

Antwoord: 200 · ImpexInspectReport

Impex Columns Domain — Every column a domain import can write into: the entity’s own, those contributed by other modules, and this organisation’s custom fields — with the labels, types and aliases a mapping UI needs.

Recht: domains.domain.read

Antwoord: 200 · ImpexColumnsResponse

Impex Export Domain — Export the current filtered domain list as CSV (UTF-8, BOM). Headers are stable column keys plus the tenant’s custom-field keys — the file re-imports into the same organisation unchanged.

Recht: impex.export, domains.domain.read

Queryparameters:

NaamTypeBetekenis
qstringSearch, as on the list
company_idstring
statusstringStatus, as on the list
registrar_provider_idstring
dns_provider_idstring
invoiceableboolean
sortstringList sort key, ’-’ desc

Antwoord: 200

Impex Import Domain — Import domain rows from a spreadsheet, upserting on the first of name each row fills (max 2000 data rows per request). Accepts a CSV/TSV/Excel upload or a pasted block; the format is read from the content, not the filename.

Recht: impex.import, domains.domain.write

Queryparameters:

NaamTypeBetekenis
dry_runbooleanValidate and report creates/updates/errors without writing anything. false applies the file all-or-nothing in one transaction. (default true)

Request body: Body_impex_import_domain_api_v1_impex_domain_import_post

Antwoord: 200 · ImportReport

Impex Inspect Domain — Read an uploaded file and report what it is — format, worksheets, encoding, row count — plus each of its columns with sample cells and the suggested target column. Writes nothing and reads no records; returns a fingerprint the import repeats so a mapping cannot be applied to a different file.

Recht: impex.import, domains.domain.write

Request body: Body_impex_inspect_domain_api_v1_impex_domain_inspect_post

Antwoord: 200 · ImpexInspectReport

List Impex Entities — The entity types with CSV support, for the Instellingen → Import & export screen.

Recht: Bewust open

Antwoord: 200 · ImpexEntityInfo[]

Impex Columns Hosting — Every column a hosting import can write into: the entity’s own, those contributed by other modules, and this organisation’s custom fields — with the labels, types and aliases a mapping UI needs.

Recht: hosting.hosting.read

Antwoord: 200 · ImpexColumnsResponse

Impex Export Hosting — Export the current filtered hosting list as CSV (UTF-8, BOM). Headers are stable column keys plus the tenant’s custom-field keys — the file re-imports into the same organisation unchanged.

Recht: impex.export, hosting.hosting.read

Queryparameters:

NaamTypeBetekenis
qstringSearch, as on the list
company_idstring
sortstringList sort key, ’-’ desc

Antwoord: 200

Impex Import Hosting — Import hosting rows from a spreadsheet, upserting on the first of name each row fills (max 2000 data rows per request). Accepts a CSV/TSV/Excel upload or a pasted block; the format is read from the content, not the filename.

Recht: impex.import, hosting.hosting.write

Queryparameters:

NaamTypeBetekenis
dry_runbooleanValidate and report creates/updates/errors without writing anything. false applies the file all-or-nothing in one transaction. (default true)

Request body: Body_impex_import_hosting_api_v1_impex_hosting_import_post

Antwoord: 200 · ImportReport

Impex Inspect Hosting — Read an uploaded file and report what it is — format, worksheets, encoding, row count — plus each of its columns with sample cells and the suggested target column. Writes nothing and reads no records; returns a fingerprint the import repeats so a mapping cannot be applied to a different file.

Recht: impex.import, hosting.hosting.write

Request body: Body_impex_inspect_hosting_api_v1_impex_hosting_inspect_post

Antwoord: 200 · ImpexInspectReport

Impex Columns Project — Every column a project import can write into: the entity’s own, those contributed by other modules, and this organisation’s custom fields — with the labels, types and aliases a mapping UI needs.

Recht: projects.project.read

Antwoord: 200 · ImpexColumnsResponse

Impex Export Project — Export the current filtered project list as CSV (UTF-8, BOM). Headers are stable column keys plus the tenant’s custom-field keys — the file re-imports into the same organisation unchanged.

Recht: impex.export, projects.project.read

Queryparameters:

NaamTypeBetekenis
qstringSearch, as on the list
statusstringStatus, as on the list
company_idstring
minebooleanOnly rows assigned to me (default false)
sortstringList sort key, ’-’ desc

Antwoord: 200

Impex Import Project — Import project rows from a spreadsheet, upserting on the first of name each row fills (max 2000 data rows per request). Accepts a CSV/TSV/Excel upload or a pasted block; the format is read from the content, not the filename.

Recht: impex.import, projects.project.write

Queryparameters:

NaamTypeBetekenis
dry_runbooleanValidate and report creates/updates/errors without writing anything. false applies the file all-or-nothing in one transaction. (default true)

Request body: Body_impex_import_project_api_v1_impex_project_import_post

Antwoord: 200 · ImportReport

Impex Inspect Project — Read an uploaded file and report what it is — format, worksheets, encoding, row count — plus each of its columns with sample cells and the suggested target column. Writes nothing and reads no records; returns a fingerprint the import repeats so a mapping cannot be applied to a different file.

Recht: impex.import, projects.project.write

Request body: Body_impex_inspect_project_api_v1_impex_project_inspect_post

Antwoord: 200 · ImpexInspectReport

GET /api/v1/impex/subscription_template/columns

Section titled “GET /api/v1/impex/subscription_template/columns”

Impex Columns Subscription Template — Every column a subscription_template import can write into: the entity’s own, those contributed by other modules, and this organisation’s custom fields — with the labels, types and aliases a mapping UI needs.

Recht: subscriptions.subscription.read

Antwoord: 200 · ImpexColumnsResponse

GET /api/v1/impex/subscription_template/export

Section titled “GET /api/v1/impex/subscription_template/export”

Impex Export Subscription Template — Export the current filtered subscription_template list as CSV (UTF-8, BOM). Headers are stable column keys plus the tenant’s custom-field keys — the file re-imports into the same organisation unchanged.

Recht: impex.export, subscriptions.subscription.read

Antwoord: 200

POST /api/v1/impex/subscription_template/import

Section titled “POST /api/v1/impex/subscription_template/import”

Impex Import Subscription Template — Import subscription_template rows from a spreadsheet, upserting on the first of name each row fills (max 2000 data rows per request). Accepts a CSV/TSV/Excel upload or a pasted block; the format is read from the content, not the filename.

Recht: impex.import, subscriptions.template.manage

Queryparameters:

NaamTypeBetekenis
dry_runbooleanValidate and report creates/updates/errors without writing anything. false applies the file all-or-nothing in one transaction. (default true)

Request body: Body_impex_import_subscription_template_api_v1_impex_subscription_template_import_post

Antwoord: 200 · ImportReport

POST /api/v1/impex/subscription_template/inspect

Section titled “POST /api/v1/impex/subscription_template/inspect”

Impex Inspect Subscription Template — Read an uploaded file and report what it is — format, worksheets, encoding, row count — plus each of its columns with sample cells and the suggested target column. Writes nothing and reads no records; returns a fingerprint the import repeats so a mapping cannot be applied to a different file.

Recht: impex.import, subscriptions.template.manage

Request body: Body_impex_inspect_subscription_template_api_v1_impex_subscription_template_inspect_post

Antwoord: 200 · ImpexInspectReport

GET /api/v1/impex/subscription_type/columns

Section titled “GET /api/v1/impex/subscription_type/columns”

Impex Columns Subscription Type — Every column a subscription_type import can write into: the entity’s own, those contributed by other modules, and this organisation’s custom fields — with the labels, types and aliases a mapping UI needs.

Recht: subscriptions.subscription.read

Antwoord: 200 · ImpexColumnsResponse

GET /api/v1/impex/subscription_type/export

Section titled “GET /api/v1/impex/subscription_type/export”

Impex Export Subscription Type — Export the current filtered subscription_type list as CSV (UTF-8, BOM). Headers are stable column keys plus the tenant’s custom-field keys — the file re-imports into the same organisation unchanged.

Recht: impex.export, subscriptions.subscription.read

Antwoord: 200

POST /api/v1/impex/subscription_type/import

Section titled “POST /api/v1/impex/subscription_type/import”

Impex Import Subscription Type — Import subscription_type rows from a spreadsheet, upserting on the first of key each row fills (max 2000 data rows per request). Accepts a CSV/TSV/Excel upload or a pasted block; the format is read from the content, not the filename.

Recht: impex.import, subscriptions.type.manage

Queryparameters:

NaamTypeBetekenis
dry_runbooleanValidate and report creates/updates/errors without writing anything. false applies the file all-or-nothing in one transaction. (default true)

Request body: Body_impex_import_subscription_type_api_v1_impex_subscription_type_import_post

Antwoord: 200 · ImportReport

POST /api/v1/impex/subscription_type/inspect

Section titled “POST /api/v1/impex/subscription_type/inspect”

Impex Inspect Subscription Type — Read an uploaded file and report what it is — format, worksheets, encoding, row count — plus each of its columns with sample cells and the suggested target column. Writes nothing and reads no records; returns a fingerprint the import repeats so a mapping cannot be applied to a different file.

Recht: impex.import, subscriptions.type.manage

Request body: Body_impex_inspect_subscription_type_api_v1_impex_subscription_type_inspect_post

Antwoord: 200 · ImpexInspectReport

Impex Columns Subscription — Every column a subscription import can write into: the entity’s own, those contributed by other modules, and this organisation’s custom fields — with the labels, types and aliases a mapping UI needs.

Recht: subscriptions.subscription.read

Antwoord: 200 · ImpexColumnsResponse

Impex Export Subscription — Export the current filtered subscription list as CSV (UTF-8, BOM). Headers are stable column keys plus the tenant’s custom-field keys — the file re-imports into the same organisation unchanged.

Recht: impex.export, subscriptions.subscription.read

Queryparameters:

NaamTypeBetekenis
statusstringStatus, as on the list
company_idstring
sortstringList sort key, ’-’ desc

Antwoord: 200

Impex Import Subscription — Import subscription rows from a spreadsheet, upserting on the first of name each row fills (max 2000 data rows per request). Accepts a CSV/TSV/Excel upload or a pasted block; the format is read from the content, not the filename.

Recht: impex.import, subscriptions.subscription.write

Queryparameters:

NaamTypeBetekenis
dry_runbooleanValidate and report creates/updates/errors without writing anything. false applies the file all-or-nothing in one transaction. (default true)

Request body: Body_impex_import_subscription_api_v1_impex_subscription_import_post

Antwoord: 200 · ImportReport

Impex Inspect Subscription — Read an uploaded file and report what it is — format, worksheets, encoding, row count — plus each of its columns with sample cells and the suggested target column. Writes nothing and reads no records; returns a fingerprint the import repeats so a mapping cannot be applied to a different file.

Recht: impex.import, subscriptions.subscription.write

Request body: Body_impex_inspect_subscription_api_v1_impex_subscription_inspect_post

Antwoord: 200 · ImpexInspectReport

Impex Columns Task — Every column a task import can write into: the entity’s own, those contributed by other modules, and this organisation’s custom fields — with the labels, types and aliases a mapping UI needs.

Recht: tasks.task.read

Antwoord: 200 · ImpexColumnsResponse

Impex Export Task — Export the current filtered task list as CSV (UTF-8, BOM). Headers are stable column keys plus the tenant’s custom-field keys — the file re-imports into the same organisation unchanged.

Recht: impex.export, tasks.task.read

Queryparameters:

NaamTypeBetekenis
qstringSearch, as on the list
statusstringStatus, as on the list
company_idstring
project_idstring
minebooleanOnly rows assigned to me (default false)
sortstringList sort key, ’-’ desc

Antwoord: 200

Impex Import Task — Import task rows from a spreadsheet, create-only (no natural key) (max 2000 data rows per request). Accepts a CSV/TSV/Excel upload or a pasted block; the format is read from the content, not the filename.

Recht: impex.import, tasks.task.write

Queryparameters:

NaamTypeBetekenis
dry_runbooleanValidate and report creates/updates/errors without writing anything. false applies the file all-or-nothing in one transaction. (default true)

Request body: Body_impex_import_task_api_v1_impex_task_import_post

Antwoord: 200 · ImportReport

Impex Inspect Task — Read an uploaded file and report what it is — format, worksheets, encoding, row count — plus each of its columns with sample cells and the suggested target column. Writes nothing and reads no records; returns a fingerprint the import repeats so a mapping cannot be applied to a different file.

Recht: impex.import, tasks.task.write

Request body: Body_impex_inspect_task_api_v1_impex_task_inspect_post

Antwoord: 200 · ImpexInspectReport

Impex Columns Time Entry — Every column a time_entry import can write into: the entity’s own, those contributed by other modules, and this organisation’s custom fields — with the labels, types and aliases a mapping UI needs.

Recht: time.entry.read

Antwoord: 200 · ImpexColumnsResponse

Impex Export Time Entry — Export the current filtered time_entry list as CSV (UTF-8, BOM). Headers are stable column keys plus the tenant’s custom-field keys — the file re-imports into the same organisation unchanged.

Recht: impex.export, time.entry.read

Queryparameters:

NaamTypeBetekenis
minebooleanOnly rows assigned to me (default false)
user_idstring
company_idstring
project_idstring
date_fromstringRows on/after this day
date_tostringRows on/before this day
sortstringList sort key, ’-’ desc

Antwoord: 200

Impex Import Time Entry — Import time_entry rows from a spreadsheet, create-only (no natural key) (max 2000 data rows per request). Accepts a CSV/TSV/Excel upload or a pasted block; the format is read from the content, not the filename.

Recht: impex.import, time.entry.write

Queryparameters:

NaamTypeBetekenis
dry_runbooleanValidate and report creates/updates/errors without writing anything. false applies the file all-or-nothing in one transaction. (default true)

Request body: Body_impex_import_time_entry_api_v1_impex_time_entry_import_post

Antwoord: 200 · ImportReport

Impex Inspect Time Entry — Read an uploaded file and report what it is — format, worksheets, encoding, row count — plus each of its columns with sample cells and the suggested target column. Writes nothing and reads no records; returns a fingerprint the import repeats so a mapping cannot be applied to a different file.

Recht: impex.import, time.entry.write

Request body: Body_impex_inspect_time_entry_api_v1_impex_time_entry_inspect_post

Antwoord: 200 · ImpexInspectReport

Impex Columns Uptime Monitor — Every column a uptime_monitor import can write into: the entity’s own, those contributed by other modules, and this organisation’s custom fields — with the labels, types and aliases a mapping UI needs.

Recht: uptime.monitor.read

Antwoord: 200 · ImpexColumnsResponse

Impex Export Uptime Monitor — Export the current filtered uptime_monitor list as CSV (UTF-8, BOM). Headers are stable column keys plus the tenant’s custom-field keys — the file re-imports into the same organisation unchanged.

Recht: impex.export, uptime.monitor.read

Queryparameters:

NaamTypeBetekenis
qstringSearch, as on the list
company_idstring

Antwoord: 200

Impex Columns Website — Every column a website import can write into: the entity’s own, those contributed by other modules, and this organisation’s custom fields — with the labels, types and aliases a mapping UI needs.

Recht: websites.website.read

Antwoord: 200 · ImpexColumnsResponse

Impex Export Website — Export the current filtered website list as CSV (UTF-8, BOM). Headers are stable column keys plus the tenant’s custom-field keys — the file re-imports into the same organisation unchanged.

Recht: impex.export, websites.website.read

Queryparameters:

NaamTypeBetekenis
qstringSearch, as on the list
company_idstring
hosting_idstring
uptime_enabledboolean
sortstringList sort key, ’-’ desc

Antwoord: 200

Impex Import Website — Import website rows from a spreadsheet, upserting on the first of domain each row fills (max 2000 data rows per request). Accepts a CSV/TSV/Excel upload or a pasted block; the format is read from the content, not the filename.

Recht: impex.import, websites.website.write

Queryparameters:

NaamTypeBetekenis
dry_runbooleanValidate and report creates/updates/errors without writing anything. false applies the file all-or-nothing in one transaction. (default true)

Request body: Body_impex_import_website_api_v1_impex_website_import_post

Antwoord: 200 · ImportReport

Impex Inspect Website — Read an uploaded file and report what it is — format, worksheets, encoding, row count — plus each of its columns with sample cells and the suggested target column. Writes nothing and reads no records; returns a fingerprint the import repeats so a mapping cannot be applied to a different file.

Recht: impex.import, websites.website.write

Request body: Body_impex_inspect_website_api_v1_impex_website_inspect_post

Antwoord: 200 · ImpexInspectReport

EndpointRecht
GET /meta/domain-probeBewust open
GET /meta/instanceBewust open
GET /meta/mcpBewust open
GET /meta/meBewust open
PATCH /meta/meBewust open
GET /meta/modulesBewust open
GET /meta/tenantBewust open
PATCH /meta/tenantsettings.branding.write
GET /meta/tenant/domainsettings.domain.read
POST /meta/tenant/domainsettings.domain.write
DELETE /meta/tenant/domainsettings.domain.write
POST /meta/tenant/domain/checksettings.domain.write
GET /healthGeen recht vereist
GET /health/readyGeen recht vereist
Parameters en schema’s per endpoint

Domain Probe — Answer, to whoever can reach this hostname, that this instance serves that org.

Recht: Bewust open

Queryparameters:

NaamTypeBetekenis
noncestring · verplicht

Antwoord: 200 · DomainProbe

Deployment Meta

Recht: Bewust open

Antwoord: 200 · InstanceMeta

Mcp Meta — The section catalog, read off the mounted server rather than rebuilt.

Recht: Bewust open

Antwoord: 200 · McpMeta

Me

Recht: Bewust open

Antwoord: 200 · MeInfo

Update Me — Update the current user’s own profile/preferences.

Recht: Bewust open

Request body: MeUpdate

Antwoord: 200 · MeInfo

Modules

Recht: Bewust open

Antwoord: 200 · ModulesMeta

Tenant Branding

Recht: Bewust open

Antwoord: 200 · TenantBranding

Update Tenant Branding — Update the org’s white-label settings. Applied on next render.

Recht: settings.branding.write

Request body: TenantBrandingUpdate

Antwoord: 200 · TenantBranding

Domain Status

Recht: settings.domain.read

Antwoord: 200 · app__core__domainflow__DomainStatus

Claim Domain

Recht: settings.domain.write

Request body: DomainClaim

Antwoord: 200 · app__core__domainflow__DomainStatus

Clear Domain — Remove the custom domain (and any pending claim). The org keeps resolving via <slug>.<base_domain> — the UI warns that this changes the org’s address.

Recht: settings.domain.write

Queryparameters:

NaamTypeBetekenis
pending_onlyboolean(default false)

Antwoord: 200 · app__core__domainflow__DomainStatus

Check Domain — Probe the current stage’s DNS/edge conditions, advance whatever they satisfy, and report each layer separately (ownership TXT, traffic DNS, hostname, certificate).

Recht: settings.domain.write

Antwoord: 200 · DomainCheckReport

Health — Liveness. Must stay cheap, dependency-free and unauthenticated: orchestrators poll it, and a probe that touches Postgres would restart a healthy API when the database blips. Readiness is a different question — see /health/ready.

Recht: Geen recht vereist

Antwoord: 200 · object

Health Ready — Readiness: can this instance actually serve? Checks Postgres, Redis and Alembic.

Recht: Geen recht vereist

Antwoord: 200

EndpointRecht
GET /nav/prefsnav.prefs.read
PUT /nav/prefsnav.prefs.write
DELETE /nav/prefsnav.prefs.write
PUT /nav/prefs/defaultsettings.nav.manage
Parameters en schema’s per endpoint

Get Prefs — The effective layout for the current user: own row → org default → none.

Recht: nav.prefs.read

Antwoord: 200 · NavPrefs

Set Prefs — A member’s personal order/visibility. Labels/groups are org config — stripped here.

Recht: nav.prefs.write

Request body: NavPrefsUpdate

Antwoord: 200 · NavPrefs

Reset Prefs — Drop the personal layout; the user falls back to the org default.

Recht: nav.prefs.write

Antwoord: 204

Set Default Prefs — The org-wide default that members inherit, plus tenant item/group labels (settings.nav.manage).

Recht: settings.nav.manage

Request body: NavPrefsUpdate

Antwoord: 200 · NavPrefs

EndpointRecht
GET /notificationsnotifications.notification.read
PATCH /notifications/{notification_id}notifications.notification.write
GET /notifications/activitynotifications.notification.read
GET /notifications/channelsnotifications.channels.manage_own
POST /notifications/channelsnotifications.channels.manage_own
PATCH /notifications/channels/{channel_id}notifications.channels.manage_own
DELETE /notifications/channels/{channel_id}notifications.channels.manage_own
POST /notifications/channels/{channel_id}/testnotifications.channels.manage_own
POST /notifications/mark-all-readnotifications.notification.write
GET /notifications/preferencesnotifications.notification.read
PUT /notifications/preferencesnotifications.notification.write
GET /notifications/preferences/defaultsnotifications.defaults.manage
PUT /notifications/preferences/defaultsnotifications.defaults.manage
GET /notifications/push/confignotifications.notification.read
GET /notifications/push/subscriptionsnotifications.notification.read
POST /notifications/push/subscriptionsnotifications.notification.write
DELETE /notifications/push/subscriptions/{subscription_id}notifications.notification.write
POST /notifications/push/testnotifications.notification.write
POST /notifications/push/unsubscribenotifications.notification.write
GET /notifications/unread-countnotifications.notification.read
GET /notifications/watchnotifications.notification.read
PUT /notifications/watchnotifications.notification.write
Parameters en schema’s per endpoint

List Notifications

Recht: notifications.notification.read

Queryparameters:

NaamTypeBetekenis
limitinteger(default 50)
offsetinteger(default 0)
unreadbooleantrue = unread only, false = read only
entity_typetask · project · company · leave_request · timesheet
sortstringcreated_at, ’-’ desc
countbooleanfalse skips the count query (docs/PERFORMANCE.md) (default true)

Antwoord: 200 · Page_NotificationRead_

PATCH /api/v1/notifications/{notification_id}

Section titled “PATCH /api/v1/notifications/{notification_id}”

Set Read — Reversible: read and unread are the same non-destructive toggle (docs/UX.md).

Recht: notifications.notification.write

Padparameters: notification_id

Request body: ReadUpdate

Antwoord: 200 · NotificationRead

Activity

Recht: notifications.notification.read

Queryparameters:

NaamTypeBetekenis
entity_typetask · project · company · leave_request · timesheet · verplicht
entity_idstring · verplicht
limitinteger(default 20)

Antwoord: 200 · app__modules__notifications__schemas__ActivityItem[]

List Channels

Recht: notifications.channels.manage_own

Antwoord: 200 · ChannelRead[]

Create Channel

Recht: notifications.channels.manage_own

Request body: ChannelCreate

Antwoord: 201 · ChannelRead

PATCH /api/v1/notifications/channels/{channel_id}

Section titled “PATCH /api/v1/notifications/channels/{channel_id}”

Update Channel

Recht: notifications.channels.manage_own

Padparameters: channel_id

Request body: ChannelUpdate

Antwoord: 200 · ChannelRead

DELETE /api/v1/notifications/channels/{channel_id}

Section titled “DELETE /api/v1/notifications/channels/{channel_id}”

Delete Channel

Recht: notifications.channels.manage_own

Padparameters: channel_id

Antwoord: 204

POST /api/v1/notifications/channels/{channel_id}/test

Section titled “POST /api/v1/notifications/channels/{channel_id}/test”

Test Channel — Send a test message and report the provider’s real error (#17).

Recht: notifications.channels.manage_own

Padparameters: channel_id

Antwoord: 200 · ChannelTestResult

Mark All Read

Recht: notifications.notification.write

Antwoord: 200 · MarkAllResult

Get Preferences — My effective matrix: what will actually happen on both channels, and who decided it.

Recht: notifications.notification.read

Antwoord: 200 · PreferenceMatrix

Set Preferences

Recht: notifications.notification.write

Request body: PreferenceUpdate

Antwoord: 200 · PreferenceMatrix

GET /api/v1/notifications/preferences/defaults

Section titled “GET /api/v1/notifications/preferences/defaults”

Get Default Preferences — What a member inherits before they override anything (org-wide), plus the shared rooms.

Recht: notifications.defaults.manage

Antwoord: 200 · PreferenceMatrix

PUT /api/v1/notifications/preferences/defaults

Section titled “PUT /api/v1/notifications/preferences/defaults”

Set Default Preferences

Recht: notifications.defaults.manage

Request body: PreferenceUpdate

Antwoord: 200 · PreferenceMatrix

Push Config — The org’s VAPID public key, minting the keypair on first use.

Recht: notifications.notification.read

Antwoord: 200 · PushConfig

GET /api/v1/notifications/push/subscriptions

Section titled “GET /api/v1/notifications/push/subscriptions”

List Push Subscriptions — This person’s registered devices. The endpoint and key material never come back — the row exists to be recognised and revoked, and returning it would hand any XSS a push target.

Recht: notifications.notification.read

Queryparameters:

NaamTypeBetekenis
endpointstringthe calling browser’s own endpoint, so its row can be marked current

Antwoord: 200 · PushSubscriptionRead[]

POST /api/v1/notifications/push/subscriptions

Section titled “POST /api/v1/notifications/push/subscriptions”

Register Push Subscription — Register (or refresh) the calling browser. Idempotent on the endpoint: the client re-presents it every session because endpoints rotate silently, and a rotated endpoint that nobody re-registered is a device that has stopped receiving without saying so.

Recht: notifications.notification.write

Request body: PushSubscriptionCreate

Antwoord: 201 · PushSubscriptionRead

DELETE /api/v1/notifications/push/subscriptions/{subscription_id}

Section titled “DELETE /api/v1/notifications/push/subscriptions/{subscription_id}”

Revoke Push Subscription

Recht: notifications.notification.write

Padparameters: subscription_id

Antwoord: 204

Test Push — Push a test notification to every device this person has registered.

Recht: notifications.notification.write

Antwoord: 200 · PushTestResult

POST /api/v1/notifications/push/unsubscribe

Section titled “POST /api/v1/notifications/push/unsubscribe”

Unsubscribe Push — Drop the device by the endpoint the browser itself holds — the only identifier it has after PushSubscription.unsubscribe(). Scoped to the caller, and silent on a miss: unsubscribing twice is not an error.

Recht: notifications.notification.write

Request body: PushUnsubscribe

Antwoord: 204

Unread Count — The bell’s badge. Comes from the API, never from counting the loaded page.

Recht: notifications.notification.read

Antwoord: 200 · UnreadCount

Get Watch

Recht: notifications.notification.read

Queryparameters:

NaamTypeBetekenis
entity_typetask · project · company · leave_request · timesheet · verplicht
entity_idstring · verplicht

Antwoord: 200 · WatchRead

Set Watch

Recht: notifications.notification.write

Request body: WatchUpdate

Antwoord: 200 · WatchRead

EndpointRecht
GET /prefsBewust open
PUT /prefsBewust open
Parameters en schema’s per endpoint

Get Prefs

Recht: Bewust open

Antwoord: 200 · UserPrefs

Set Prefs

Recht: Bewust open

Request body: UserPrefsUpdate

Antwoord: 200 · UserPrefs

EndpointRecht
GET /providerssettings.providers.read
POST /providerssettings.providers.manage
GET /providers/{provider_id}settings.providers.read
PATCH /providers/{provider_id}settings.providers.manage
DELETE /providers/{provider_id}settings.providers.manage
Parameters en schema’s per endpoint

List Providers

Recht: settings.providers.read

Queryparameters:

NaamTypeBetekenis
kindProviderKind
include_inactiveboolean(default false)

Antwoord: 200 · ProviderRead[]

Create Provider

Recht: settings.providers.manage

Request body: ProviderCreate

Antwoord: 201 · ProviderRead

Get Provider

Recht: settings.providers.read

Padparameters: provider_id

Antwoord: 200 · ProviderRead

Update Provider

Recht: settings.providers.manage

Padparameters: provider_id

Request body: ProviderUpdate

Antwoord: 200 · ProviderRead

Delete Provider

Recht: settings.providers.manage

Padparameters: provider_id

Antwoord: 204

EndpointRecht
GET /system/infosettings.system.read
Parameters en schema’s per endpoint

System Info — Diagnostics for the Settings → System screen (settings.system.read).

Recht: settings.system.read

Antwoord: 200 · SystemInfo