Your CRM, connected
DoWEB · SuperOffice MCP
Connect your AI to SuperOffice. Search as yourself and request supported CRM changes with your installation’s policies and permissions.
Remote MCP endpoint:
https://so-mcp.demo.doweb.dk/mcp
Reads use your SuperOffice access. Supported writes use the system user after authorization checks. Marketing dispatch has an explicit policy exception; video reservation uses your connected account. Administrator onboarding is required for system writes.
Operation availability
Record, table and field permissions vary by record and are checked on every call. Listed operations and held licenses do not guarantee access to a particular record.
Administration 15
Read custom fields metadata or known records
Read custom table row metadata or known records
Read custom table schema metadata or known records
Read email flow metadata or known records
Read form metadata or known records
Create or update a user group, including retirement/restoration using deleted. Requires admin-users and application UserAgent access. First administration_read(kind=groups) for IDs. Membership and primary-group changes use administration.user.manage.v1. Physical group deletion is not supported by SuperOffice; retirement preserves references.
Read groups metadata or known records
Read list items metadata or known records
Read lists metadata or known records
Read mailing metadata or known records
Set an existing documented preference value without changing scope or deleting lower-level overrides. Requires admin-preferences. First administration_read(preference,id); only plain scalar/list values with published preference-description validation are accepted. Security, URL, script, authentication and unknown preference types require dedicated adapters.
Read preference metadata or known records
Read roles metadata or known records
Update an existing internal user: names, signature, retirement, primary/secondary groups and role. Requires admin-users; changing role also requires admin-role. Application UserAgent access must be activated by SuperOffice. First administration_read(user), groups and roles. Login credentials and license allocation are not accepted.
Read user metadata or known records
Appointments & tasks 16
Create a timed appointment using an Appointment or Phone task from appointment_options. title is the heading; description is stored independently in native Agenda and returned as agenda by get_appointment. Optional alarm.enabled activates or disables the native reminder; alarm.leadTimeMinutes sets its lead time, or the diary default is used. Omitted alarm keeps the existing disabled behavior. Explicit alarm settings and supplied text are verified after saving; inspect the retained ID on an unknown outcome instead of recreating. Omit associateId for your own diary, or supply an active colleague for secretary booking after appointment_defaults(taskId, associateId). Your access to that diary is rechecked before saving. ToDo/checklist types cannot represent calendar intervals. No invitations, recurrence, publication or video meetings during creation. Use the recurrence tools on the saved appointment for an authorized colleague diary. Standalone update/delete use your current record and field permissions in the target diary. Video and invitation tools currently require your own diary.
Read appointment defaults under the initiating user
Delete a standalone appointment or task in any diary after verifying your current SuperOffice read and delete rights. Create or update permission alone never authorizes deletion. Recurrence, invitations, guides, links, publication and video meetings are excluded because their related effects need separate authorization.
Read Appointments & tasks by ID
Review meeting recipients and occurrences before invitation sending
Add participants and SEND meeting invitations through SuperOffice. This is the separately policy-controlled invitation tool; configure confirm to require browser approval. FIRST appointment_invitation_prepare with exact participants and bind reviewHash. Supports internal associates, existing CRM persons with verified email, and external email addresses without a CRM person. Starts from an owned meeting/finite series with no other participants; use the first series occurrence. Creates internal diary invitations without email and sends email to the explicit person/external recipients where supported; native acceptance is not delivery confirmation. No automatic resend.
Correct title, description, agenda, internal notes, location, time, task, completion, company/person links and custom fields on a non-recurring SuperOffice meeting you organize, preserving existing participants and video. FIRST appointment_meeting_prepare with identical changes and explicit sendEmailToParticipants, then bind reviewHash. Completion and company/person corrections require sendEmailToParticipants=false. Checks every affected internal diary. Native Save updates the booking; optional email only to existing email-enabled participants. No automatic retry after uncertain results.
Review one recurring occurrence and identify diary/participant effects
Update the time, title, description or completion of exactly one recurring occurrence in your own diary. FIRST appointment_occurrence_prepare with scope=this_occurrence and identical changes; bind reviewHash. Uses native OnlyThis, preserves remaining series, sends no invitations. Other participants, assignments, publication, guides and video effects are excluded and identified by preparation. Never use this to change the recurrence pattern.
Read appointment options under the initiating user
Preview finite recurrence dates and conflicts
Make an existing meeting recurring in your own or an authorized colleague diary, with 2–52 occurrences. Supply associateId for the colleague in both preparation and write. FIRST appointment_recurrence_prepare with identical pattern inputs; review targetDiary, dates, conflicts and affectedRecords, then bind datesHash and returned timeZone. Native recurrence uses that zone; UTC is fixed UTC. Requires diary-insert permission and writable Recurrence. Start before inviting participants; existing video link is preserved. No invitation emails are sent.
Authoritative diary/calendar/schedule search via the appointment archive. My diary uses whoami.associate_id as our_contact_id; appointments linked to my company use company_id. start_date/end_date filter native activity dates (ActiveDate), inclusive YYYY-MM-DD; these can differ from planned dates for checklist or completed activities. Returned startDate/endDate are authoritative planned values; date/time are derived from them. Pagination retains native archive order. Returned diary clocks already use your SuperOffice timezone; follow timeZone.notice and do not apply another UTC conversion. Use get_appointment for full timestamps/details. Do not substitute list_user_activities for diary queries. All CRM matching uses archive providers; results preserve native cells, missing/restricted values and live pagination.
Update a standalone appointment or task in any diary where your current SuperOffice record and changed-field permissions allow it. Preserves the existing diary owner; associateId reassignment is not supported. Outlook-owned appointments allow only completed when that field is writable; relation and meeting fields require a separate external-ownership workflow. Read with entity_get first. For one recurring occurrence use appointment_occurrence_prepare then appointment_occurrence_update_v1. Dates must retain end after start. For existing owned meetings with participants/video use appointment_meeting_prepare then appointment_meeting_update_v1. Guides require separate authorization.
Create a video-meeting reservation for a standalone appointment in your own diary. FIRST appointment_video_status to check your connected provider. Add video before participants/recurrence. Explicit identity exception: SuperOffice forbids system-user reservation creation, so this step uses your OAuth session; the appointment saves as system user. Both identities are audited. Does not send invitations. Partial reservations are recorded and never automatically repeated.
Check the user video-provider connection
Archive search 3
Archive providers
Archive schema
Archive search
Automation 1
Pause or stop a reviewed email flow; start only a flow whose execution effects have been verified. Requires admin-email-flow and flow status rights. First administration_read(email_flow,id) for definitionHash. Starting nonempty flows is rejected until every step, enrolled participant and external effect has a verified adapter. Arbitrary scripts and event execution are not accepted.
Companies 9
List activities linked to a known contact, newest first. Resolve contact_id through its get/search tool first. Includes activity types offered by its native archive (appointments/documents and, where applicable, chats/mailings/forms).
Create a company as the system user after caller permission checks. First call entity_prepare(entity=company); use its required fields, defaults and selectable list IDs. Pass values plus an idempotency key.
Read and review the person manifest for known-company deletion
Soft-delete a known company and its reviewed people as the system user. REQUIRED: company_delete_prepare(id), review and supply its complete personIds array (max 200). Checks independent human delete rights for every person and compares full company membership against the executing identity before submission. Both company and person delete policies apply. ERP-connected companies/people are excluded; no permanent purge or separate activity deletion is called.
Search external company sources through SuperOffice enrichment; does NOT search CRM companies. Use search_companies for CRM records. Country is ISO-2 or defaults to the user home country. Returns external suggestions without creating or enriching CRM records.
Read Companies by ID
Get obligatory fields, defaults and list choices for company
Search CRM companies by name, ID, owner or list values. For my company use whoami.company_id; for companies I manage use whoami.associate_id as our_contact_id. Use get_company for full known-ID details. All CRM matching uses archive providers; results preserve native cells, missing/restricted values and live pagination.
Update a company as the system user after caller permission checks. First call entity_prepare(entity=company, id); use its required fields, defaults and selectable list IDs. Pass changes and id plus an idempotency key.
CRMScript 5
Creation blocked until all default relationships and functional effects have verified user permission adapters.
Disabled by ENABLE_CRMSCRIPT=false. Enable only after SuperOffice activates the API access.
Deletion blocked: cascading effects require explicit permission evidence for related records.
Disabled by ENABLE_CRMSCRIPT=false. Enable only after SuperOffice activates the API access.
Script execution requires verified authorization of its record changes and external effects.
Disabled by ENABLE_CRMSCRIPT=false. Enable only after SuperOffice activates the API access.
Read CRMScript by ID
Disabled by ENABLE_CRMSCRIPT=false. Enable only after SuperOffice activates the API access.
Saving script source can change scheduled, included, and public execution paths; their effects require verified authorization.
Disabled by ENABLE_CRMSCRIPT=false. Enable only after SuperOffice activates the API access.
Custom fields 1
Create, edit or delete a user-defined field definition, or publish a reviewed entity layout. First administration_read(kind=custom_fields,owner) for definitions and layoutHash. Create requires fieldType and values.fieldLabel. Changes are drafts until publish. Publishing applies ALL pending fields for owner and requires the exact reviewed layoutHash; field IDs change after publication. Value writes belong to entity create/update customFields.
Custom tables 1
Create/update/delete one row in a tenant extra table (y_* only). First administration_read(custom_table_schema,table), then known row/default metadata. Values use exact x_* field names and invariant encodings from schema, including real list/reference IDs. Requires explicit row/table/field rights or the documented Edit tables functional right, with writable schema fields. Explicit denials always win; schemas without verifiable authority are rejected. No core tables, SQL or bulk operations.
Document templates 2
Read document template defaults, required inputs, metadata and optional file content
Create or edit a document template including its file content. FIRST template_prepare(kind=document,id optional) for current metadata, default storage plugin and languages. Creation requires values.name, filename, content and pluginId; update requires id and metadata values or complete replacement content. Preserve template variables. UTF-8 text/HTML or base64 binary, maximum 128 KiB. Requires human admin-lists/admin-all authority; explicit denials win. Writes as system user; shared-template changes affect future uses. Does not send email. Durable phases report a saved template whose file upload failed.
Documents 11
Read physical document bytes as the initiating human
Create a document as the system user after caller permission checks. First call entity_prepare(entity=document); use its required fields, defaults and selectable list IDs. Pass values plus an idempotency key. Creates the document card only. Selected template content is checked under human OAuth before creation. Physical content still requires document_generate_prepare then document.generate.v1, or document.upload.v1; do not report a usable file until that succeeds.
Delete a known document: FIRST remove its physical file, then delete the CRM entity only after confirmed file-deletion success. First entity_get(document,id) to review the target. Requires the human’s entity-delete permission; this is the agreed authority for physical deletion too. Executes both steps as system user. File failure preserves the entity. execution_status/audit retain each phase; partial or unknown outcomes require reconciliation before a new request. Does not follow plugin URLs or run plugin UI actions.
Preview native document generation using the human identity and selected template
Generate and store a document from its selected SuperOffice template. FIRST choose a template using entity_prepare/list_values, create the document entity with a matching filename extension, then document_generate_prepare to review original generated bytes and obtain reviewHash. Supports text/HTML and Office Open XML (DOCX/XLSX/PPTX) using native substitution under human OAuth; file storage executes as system user. Creates physical content only when absent, maximum 2 MiB. Does not send email. Download with document_content, edit and replace using document.upload.v1 and the download hash.
Read Documents by ID
Read document content converted to Markdown as the initiating human
Get obligatory fields, defaults and list choices for document
Search CRM files, including email. is_email=true matches every email template; document_template means one specific tenant-defined template and must not be used to find all email. Resolve template names/IDs using list_values(list=doctmpl). Linked company/person filters do not mean sender/author. Use document_id for known metadata and get_document_markdown to read content; get_document_contents for the original file. All CRM matching uses archive providers; results preserve native cells, missing/restricted values and live pagination.
Update a document as the system user after caller permission checks. First call entity_prepare(entity=document, id); use its required fields, defaults and selectable list IDs. Pass changes and id plus an idempotency key.
Upload original file bytes to a known document. FIRST entity_get to review the document. New physical files use overwrite=false; for replacement FIRST document_content and pass its expectedSha256 with overwrite=true. Original filename and format are preserved. UTF-8 for text, base64 for DOCX/PDF/binary, maximum 2 MiB. Requires human document/Name write rights; writes as system user. Does not convert Office files or send mail. Repository locking/versioning needs a checkout workflow. Hash checks detect edits but are not atomic with upload.
Domain guidance 1
Read the static domain map or live core-entity preparation
Email templates 2
Read email template defaults, required inputs, metadata and optional file content
Create or edit a email template including its file content. FIRST template_prepare(kind=email,id optional) for current metadata, default storage plugin and languages. Creation requires values.name, filename, content and pluginId; update requires id and metadata values or complete replacement content. Preserve template variables. UTF-8 text/HTML or base64 binary, maximum 128 KiB. Requires human admin-lists/admin-all authority; explicit denials win. Writes as system user; shared-template changes affect future uses. Does not send email. Durable phases report a saved template whose file upload failed.
Lists 10
Create or edit the business standard list. FIRST standard_list_prepare(kind=business,id optional). Creation needs values.name. Updates use a known id. Supports name, tooltip, ordering and retirement; task/category inputs also expose typed options. Requires human list administration; writes as system user. Shared defaults affect future CRM use. No CRM deletion or invitation sending.
Create or edit the category standard list. FIRST standard_list_prepare(kind=category,id optional). Creation needs values.name and values.categoryGroup. Updates use a known id. Supports name, tooltip, ordering and retirement; task/category inputs also expose typed options. Requires human list administration; writes as system user. Shared defaults affect future CRM use. No CRM deletion or invitation sending.
Create or edit the company interest standard list. FIRST standard_list_prepare(kind=company_interest,id optional). Creation needs values.name. Updates use a known id. Supports name, tooltip, ordering and retirement; task/category inputs also expose typed options. Requires human list administration; writes as system user. Shared defaults affect future CRM use. No CRM deletion or invitation sending.
Create custom lists or create/update list items; rename, rank and retire/restore custom lists and items. First administration_read(kind=lists), then list_items for IDs. Requires admin-lists or documented admin-all. Use deleted=true to retire without deleting CRM references. Standard-list items with extra typed properties require their specific adapter.
Create or edit the person interest standard list. FIRST standard_list_prepare(kind=person_interest,id optional). Creation needs values.name. Updates use a known id. Supports name, tooltip, ordering and retirement; task/category inputs also expose typed options. Requires human list administration; writes as system user. Shared defaults affect future CRM use. No CRM deletion or invitation sending.
Read standard list items, required inputs and defaults
Create or edit the task standard list. FIRST standard_list_prepare(kind=task,id optional). Creation needs values.name and values.type. Updates use a known id. Supports name, tooltip, ordering and retirement; task/category inputs also expose typed options. Requires human list administration; writes as system user. Shared defaults affect future CRM use. No CRM deletion or invitation sending.
Get selectable metadata list values
Read current list/template group visibility for editing
Set user-group visibility for task types, categories, business, company/person interests and document/email templates. FIRST list_visibility_prepare(kind,id), review existing groups and bind reviewHash. Pass the COMPLETE selectedGroupIds; [] hides the item. New items often need this before users can select them. Requires human list administration. Writes as system user; does not modify CRM record access.
Marketing 4
Create an inactive form shell or update name, description, expiry and submission limit, or deactivate a form. Requires forms-cal. First administration_read(form,id) for current configuration. Create requires name. Activation requires a dedicated submission-effects adapter and is not accepted by this operation.
Create or update a draft mailing without sending it. Requires a mailing user license. First administration_read(mailing) for defaults, then archive_search for existing message IDs. Create requires values.description; optional messageId/fromAddr/replyAddr. Scheduled, sending or completed mailings cannot be edited through this adapter.
Reload and send a known marketing mailing as the installation system user. REQUIRED: id and reloadRecipients=true; optionally bind expectedMessageId. Explicit policy-authorized exception: the initiating user needs a valid CRM grant but no personal mailing license or recipient-level send permission. Allow sends, confirm requires browser approval, deny blocks. Review the mailing using administration_read where readable. Native reload may change recipients; approval authorizes the mailing action, not a frozen audience. Never resubmit an unknown outcome. Success means dispatch accepted, NOT confirmed delivery.
Read a known mailing message without access-verification keys
People 8
List activities linked to a known person, newest first. Resolve person_id through its get/search tool first. Includes activity types offered by its native archive (appointments/documents and, where applicable, chats/mailings/forms).
Create a person as the system user after caller permission checks. First call entity_prepare(entity=person); use its required fields, defaults and selectable list IDs. Pass values plus an idempotency key.
Soft-delete a known person using SuperOffice’s native recycle-bin behavior. First entity_get(person,id). Requires record delete permission, including SuperOffice’s employee protection. Does not call permanent purge or delete related activities. SuperOffice retention controls subsequent removal.
Read People by ID
Get obligatory fields, defaults and list choices for person
Find explicit current project memberships for a person, one project per page row with roles, raw tenant status, end_date and href. Excludes card-owner/root-only links and former members. There is no universal active/ended status; interpret returned status/end_date. Resolve person_id first (whoami for me).
Search CRM people by name, company or exact email. For colleagues use whoami.company_id. Use get_person for full details. Retired people are excluded unless include_retired=true. All CRM matching uses archive providers; results preserve native cells, missing/restricted values and live pagination.
Update a person as the system user after caller permission checks. First call entity_prepare(entity=person, id); use its required fields, defaults and selectable list IDs. Pass changes and id plus an idempotency key.
Project members 6
Add a project member. First call membership_prepare for the parent and valid PMembType roles; use membership_search to find existing membership IDs. Requires projectId, personId and projectMemberTypeId. Checks parent, component and person/company permissions; membership changes do not send invitations.
Remove a project member. First call membership_prepare for the parent and valid PMembType roles; use membership_search to find existing membership IDs. Checks parent, component and person/company permissions; membership changes do not send invitations.
Read Project members by ID
Get required membership fields and selectable roles
Search parent membership through archives
Update the role or comment of a project member. First call membership_prepare for the parent and valid PMembType roles; use membership_search to find existing membership IDs. Checks parent, component and person/company permissions; membership changes do not send invitations.
Projects 8
List activities linked to a known project, newest first. Resolve project_id through its get/search tool first. Includes activity types offered by its native archive (appointments/documents and, where applicable, chats/mailings/forms).
Create a project as the system user after caller permission checks. First call entity_prepare(entity=project); use its required fields, defaults and selectable list IDs. Pass values plus an idempotency key.
Delete a known project using native SuperOffice deletion, which removes or detaches owned components. Project membership rows may survive with projectId=0. First entity_get(project,id). Requires current delete authority and writable membership collection metadata; explicit component denials win. Published records, guides, ERP links, general links and events need separate effect adapters. Does not call related activity/person/company deletion methods.
Read Projects by ID
List current explicit project members plus the card owner as is_root=true on page 0. Root is a forward-only annotation, with no membership row; it is not automatically included by reverse membership tools. Former links are not retained. Includes roles and href.
Get obligatory fields, defaults and list choices for project
Search projects by name, ID, owner or is_guided; at least one is required. Sorted by name. Use get_project for details and list_project_activities for linked activity. Status names are tenant-defined. All CRM matching uses archive providers; results preserve native cells, missing/restricted values and live pagination.
Update a project as the system user after caller permission checks. First call entity_prepare(entity=project, id); use its required fields, defaults and selectable list IDs. Pass changes and id plus an idempotency key.
Sale stakeholders 6
Add a sale stakeholder. First call membership_prepare for the parent and valid stakeholderrole roles; use membership_search to find existing membership IDs. Requires saleId, personId or companyId and stakeholderRoleId. Checks parent, component and person/company permissions; membership changes do not send invitations.
Remove a sale stakeholder. First call membership_prepare for the parent and valid stakeholderrole roles; use membership_search to find existing membership IDs. Checks parent, component and person/company permissions; membership changes do not send invitations.
Read Sale stakeholders by ID
Get required membership fields and selectable roles
Search parent membership through archives
Update the role or comment of a sale stakeholder. First call membership_prepare for the parent and valid stakeholderrole roles; use membership_search to find existing membership IDs. Checks parent, component and person/company permissions; membership changes do not send invitations.
Sales 10
List activities linked to a known sale, newest first. Resolve sale_id through its get/search tool first. Includes activity types offered by its native archive (appointments/documents and, where applicable, chats/mailings/forms).
Create a sale as the system user after caller permission checks. First call entity_prepare(entity=sale); use its required fields, defaults and selectable list IDs. Pass values plus an idempotency key.
Delete a known sale using native SuperOffice deletion, which removes or detaches owned components. Project membership rows may survive with projectId=0. First entity_get(sale,id). Requires current delete authority and writable membership collection metadata; explicit component denials win. Published records, guides, ERP links, general links and quotes need separate effect adapters. Does not call related activity/person/company deletion methods.
Read Sales by ID
Read ordered pipeline stages/probabilities, current and next stage plus href. Call only after get_sale returned has_guide=true; an absent guide returns an explicit error.
Get obligatory fields, defaults and list choices for sale
Search sales with at least one filter. Heading is a prefix match. Resolve company/person IDs first; my sales uses whoami.associate_id as our_contact_id. Open includes stalled; closed includes won/lost. Use get_sale for full details, guide status and href. Broaden restrictive filters when nothing matches. All CRM matching uses archive providers; results preserve native cells, missing/restricted values and live pagination.
Find current explicit stakeholder sales for exactly one person_id or company_id; company scope includes its people. Distinct from the sale primary-person filter. status=all/open/closed filters the sale, not membership history. No former links. Returns sale href and matching roles; resolve IDs first.
List current explicit sale stakeholders plus the card main contact as is_root=true on page 0. Root is a forward-only annotation, with no membership row; it is not automatically included by reverse membership tools. Former links are not retained. Includes roles and href.
Update a sale as the system user after caller permission checks. First call entity_prepare(entity=sale, id); use its required fields, defaults and selectable list IDs. Pass changes and id plus an idempotency key.
Selections 5
Create an empty static company/person selection. Pass values.name, optionally description, postit, completed and categoryId from list_values(list=searchCat). Uses human defaults for visibility and type; SuperOffice assigns the system user as owner because the default owner field is read-only.
Delete a selection and its own membership links, preserving the referenced CRM records. Requires selection delete permission. First entity_get(selection,id); a selection used in a combined selection must be detached from that definition before deletion. Does not execute DeleteEntities or DeleteContacts.
Read Selections by ID
Add or remove explicit company/person members of a static selection. First entity_get(selection,id) to check its type; resolve contactId and optional personId using archive_search. Every person must belong to its contact. Does not delete the CRM records. Maximum 100 members per request.
Update selection name, description, notes, category or completion without changing membership or search criteria. Read selection with entity_get and obtain category IDs using list_values(list=searchCat).
Service messages 7
Email an existing EXTERNAL plain-text ticket message to explicitly listed CRM persons. Requires an active Service user license plus ticket/message rights. First entity_get the message and each recipient; email must match a readable person email. Prepare/create messages with notification-aware ticket_message tools; notifyOwner controls those saves separately. For every attachment FIRST service_attachment_content, then supply the complete attachments manifest with attachmentId and sha256. No reply template or automatic consent override. Sending is irreversible; inspect all To/Cc/Bcc and body before submitting.
Upload a NEW file and attach it to a known Service ticket message. Requires id, filename, MIME contentType and original file content (UTF-8 or base64, maximum 2 MiB). Read the message first. Verifies message Body/parent write rights and explicit attachment denials. Existing arbitrary attachment IDs are not accepted. Set notifyOwner to control the owner notification. External messages expose the attachment in Customer Centre; this does not send a customer reply. Durable phases retain attachment ID on partial failure.
Download an attachment of a readable Service message
Add an internal plain-text message to a known ticket. Requires ticketId and body; read the ticket first with entity_get. Checks current parent-ticket and message-field rights. Set notifyOwner to control owner notifications. Does not send customer email; use message.send.v1 for an explicitly addressed external message.
Delete a plain-text service message after checking message and parent-ticket authority. Messages with attachments or recorded time require additional effect authorization. Removing a sent message does not recall delivered email.
Read Service messages by ID
Update the body, language or customer visibility of a plain-text service message. Read the current message first. External visibility makes the message visible in the Customer Centre; it does not send customer email. Set notifyOwner to control owner notifications. Notification-aware saves preserve current hidden fields but have a non-atomic final read/save.
Service reply templates 2
Read unparsed Service reply-template content by ID and language; writes are not yet supported
Service reply template creation/editing is unavailable: the current supported SDK and Service APIs expose retrieval but no save method. A supported write API and template access-control evidence are required; CRMScript is disabled.
Service reply template creation/editing is unavailable: the current supported SDK and Service APIs expose retrieval but no save method. A supported write API and template access-control evidence are required; CRMScript is disabled.
Service tickets 8
Create a ticket as the system user after caller permission checks. First call entity_prepare(entity=ticket); use its required fields, defaults and selectable list IDs. Pass values plus an idempotency key. Set notifyOwner explicitly to send or suppress owner notifications. Saves preserve current hidden fields, but notification-aware updates cannot be made atomic by this API.
Delete an empty ticket after verifying delete rights and confirming it has no messages or attachments. Delete or explicitly reconcile related messages first; deletion of populated tickets requires authorization of all component effects.
Read Service tickets by ID
Read ticket conversation summaries newest first: author/date/security/sentiment/attachment count/badge. Message text is NOT included; use get_ticket_message with returned IDs. Default limit 25, max 100. has_more=true means older messages (often the original problem) are omitted; do not describe the capped list as complete. get_ticket_metadata.num_messages is the recorded total.
Get obligatory fields, defaults and list choices for ticket
Native ranked free-text ticket METADATA search, not message bodies. All query words must match the same ticket. Query is passed unchanged and native ranking retained; use short specific names/company/subject words in the tenant language. Prefer search_tickets for known structured criteria, then get_ticket to inspect a conversation. All CRM matching uses archive providers; results preserve native cells, missing/restricted values and live pagination.
Search ticket bookkeeping, not conversation bodies. Closed tickets are excluded by default; use status=closed or all explicitly. unassigned cannot be combined with our_contact_id. Category name/ID includes its visible subtree. My tickets uses whoami.associate_id as our_contact_id. Call get_ticket for conversation summaries or get_ticket_metadata for full bookkeeping. All CRM matching uses archive providers; results preserve native cells, missing/restricted values and live pagination.
Update a ticket as the system user after caller permission checks. First call entity_prepare(entity=ticket, id); use its required fields, defaults and selectable list IDs. Pass changes and id plus an idempotency key. Set notifyOwner explicitly to send or suppress owner notifications. Saves preserve current hidden fields, but notification-aware updates cannot be made atomic by this API.
User identity 2
List activities linked to a known user, newest first. Resolve associate_id with whoami first. This is NOT diary/calendar/schedule data; use search_appointments instead.
Call FIRST for every my/our query. Returns your associate, person and company IDs, name/email, role, primary group, Service user ID and tenant context. Company ID identifies your company; associate ID identifies ownership; person ID identifies memberships/stakeholders.