Skip to content

API Reference

This page shows the generated contract summary for the public API surface. For practical integration guidance, use the dedicated endpoint guides in the sidebar.

Generated Overview

Public API

This summary is generated from the public API contract. Use the endpoint guides in the sidebar for examples, sequencing, and integration advice.

AnalyticsService

/public-api/publicapi.v1.AnalyticsService

ListCatalog

Lists authorized entities, fields, relationships, operations and limits.

POST /public-api/publicapi.v1.AnalyticsService/ListCatalog
Request: AnalyticsCatalogRequest Response: AnalyticsCatalogResponse

ExecuteQuery

Executes a typed current-state aggregate or bounded record projection. No saved widget, executable code, history or implicit status filters.

POST /public-api/publicapi.v1.AnalyticsService/ExecuteQuery
Request: AnalyticsQueryRequest Response: AnalyticsQueryResponse

ExecuteSQL

Parses restricted SQL into the typed current-state query contract, then executes that contract. Submitted SQL is never sent to the database.

POST /public-api/publicapi.v1.AnalyticsService/ExecuteSQL
Request: AnalyticsSQLRequest Response: AnalyticsSQLResponse

Workspace

/public-api/publicapi.v1.Workspace

Me

Returns the authenticated workspace and API key context.

POST /public-api/publicapi.v1.Workspace/Me
Request: MeRequest Response: MeResponse

GetCompanyProfile

Returns the authenticated workspace's public company profile: the legal and contact details a company publishes on customer-facing documents, plus its primary customer portal URL. Read-only.

POST /public-api/publicapi.v1.Workspace/GetCompanyProfile
Request: GetCompanyProfileRequest Response: GetCompanyProfileResponse

Problem

/public-api/publicapi.v1.Problem

CreateProblem

Creates a general or template-backed problem. Customer is optional unless the template contains advanced tasks. This operation is not idempotent.

POST /public-api/publicapi.v1.Problem/CreateProblem
Request: CreateProblemRequest Response: CreateProblemResponse

GetProblem

Reads bounded problem detail without marking the actor's inbox as seen.

POST /public-api/publicapi.v1.Problem/GetProblem
Request: GetProblemRequest Response: GetProblemResponse

ListProblems

Lists problems visible to the API key actor, with bounded pagination. page defaults to 1 and page_size defaults to 25.

POST /public-api/publicapi.v1.Problem/ListProblems
Request: ListProblemsRequest Response: ListProblemsResponse

UpdateProblem

Updates supported everyday fields without performing lifecycle transitions.

POST /public-api/publicapi.v1.Problem/UpdateProblem
Request: UpdateProblemRequest Response: UpdateProblemResponse

AddProblemComment

Appends a plain-text comment attributed to the API key actor's member and notifies the problem's subscribers. This operation is not idempotent.

POST /public-api/publicapi.v1.Problem/AddProblemComment
Request: AddProblemCommentRequest Response: AddProblemCommentResponse

UpdateProblemStatus

Applies coarse lifecycle transitions (resolve, close, archive) that UpdateProblem deliberately excludes. Resolution may be blocked when the problem has incomplete tasks or manual solving is disabled.

POST /public-api/publicapi.v1.Problem/UpdateProblemStatus
Request: UpdateProblemStatusRequest Response: UpdateProblemStatusResponse

WorkOrder

/public-api/publicapi.v1.WorkOrder

CreateWorkOrder

Creates a customer work order, optionally inheriting a template. Explicit title, description and location override defaults; tasks are appended. This operation is not idempotent.

POST /public-api/publicapi.v1.WorkOrder/CreateWorkOrder
Request: CreateWorkOrderRequest Response: CreateWorkOrderResponse

GetWorkOrder

Owner-workspace only. Returns a bounded summary and one page of tasks.

POST /public-api/publicapi.v1.WorkOrder/GetWorkOrder
Request: GetWorkOrderRequest Response: GetWorkOrderResponse

PrepareWorkOrder

Lists populated customer locations visible through the actor's current Customer View. Use the returned labels to ask which location to select.

POST /public-api/publicapi.v1.WorkOrder/PrepareWorkOrder
Request: PrepareWorkOrderRequest Response: PrepareWorkOrderResponse

ListWorkOrders

Lists at most page_size work orders visible to the API key actor. page_size defaults to 100 and may be filtered by status or customer.

POST /public-api/publicapi.v1.WorkOrder/ListWorkOrders
Request: ListWorkOrdersRequest Response: ListWorkOrdersResponse

UpdateWorkOrder

Updates a work order while preserving customer access rules.

POST /public-api/publicapi.v1.WorkOrder/UpdateWorkOrder
Request: UpdateWorkOrderRequest Response: UpdateWorkOrderResponse

CompleteWorkOrder

Marks a work order completed. Blocked when the work order has incomplete tasks or advanced tasks. Terminal and not idempotent; completing an already-completed work order returns it unchanged without re-emitting.

POST /public-api/publicapi.v1.WorkOrder/CompleteWorkOrder
Request: CompleteWorkOrderRequest Response: CompleteWorkOrderResponse

CancelWorkOrder

Marks a work order cancelled. Terminal and not idempotent; cancelling an already-terminal work order returns it unchanged without re-emitting.

POST /public-api/publicapi.v1.WorkOrder/CancelWorkOrder
Request: CancelWorkOrderRequest Response: CancelWorkOrderResponse

Catalog

/public-api/publicapi.v1.Catalog

ListProducts

Lists active products available to the API key actor.

POST /public-api/publicapi.v1.Catalog/ListProducts
Request: ListProductsRequest Response: ListProductsResponse

ListDiscounts

Lists active discounts available to the API key actor.

POST /public-api/publicapi.v1.Catalog/ListDiscounts
Request: ListDiscountsRequest Response: ListDiscountsResponse

GetProduct

Returns a single catalog product by its stable identifier.

POST /public-api/publicapi.v1.Catalog/GetProduct
Request: GetProductRequest Response: GetProductResponse

CreateProduct

Creates a catalog product for external ERP/PIM synchronization. This operation is not idempotent and repeated calls create duplicate products.

POST /public-api/publicapi.v1.Catalog/CreateProduct
Request: CreateProductRequest Response: CreateProductResponse

UpdateProduct

Updates a catalog product by ID. Only supplied fields are changed.

POST /public-api/publicapi.v1.Catalog/UpdateProduct
Request: UpdateProductRequest Response: UpdateProductResponse

Quote

/public-api/publicapi.v1.Quote

CreateQuote

Creates a concept quote with product quantities and optional discounts. This operation is not idempotent and must not be blindly retried.

POST /public-api/publicapi.v1.Quote/CreateQuote
Request: CreateQuoteRequest Response: CreateQuoteResponse

GetQuote

Returns a quote by ID.

POST /public-api/publicapi.v1.Quote/GetQuote
Request: GetQuoteRequest Response: GetQuoteResponse

ListQuotes

Lists quotes belonging to one customer.

POST /public-api/publicapi.v1.Quote/ListQuotes
Request: ListQuotesRequest Response: ListQuotesResponse

ConfirmQuote

Confirms a concept quote and atomically creates its commercial order. Repeating the operation for an already-confirmed quote returns its order.

POST /public-api/publicapi.v1.Quote/ConfirmQuote
Request: ConfirmQuoteRequest Response: ConfirmQuoteResponse

UpdateQuote

Replaces the line items and discounts of a concept quote in one call. Guarded by expected_version optimistic concurrency; not request-idempotent.

POST /public-api/publicapi.v1.Quote/UpdateQuote
Request: UpdateQuoteRequest Response: UpdateQuoteResponse

DiscardQuote

Discards a concept quote. Confirmed quotes cannot be discarded.

POST /public-api/publicapi.v1.Quote/DiscardQuote
Request: DiscardQuoteRequest Response: DiscardQuoteResponse

Order

/public-api/publicapi.v1.Order

GetOrder

Returns a commercial order by ID.

POST /public-api/publicapi.v1.Order/GetOrder
Request: GetOrderRequest Response: GetOrderResponse

ListOrders

Lists commercial orders belonging to one customer.

POST /public-api/publicapi.v1.Order/ListOrders
Request: ListOrdersRequest Response: ListOrdersResponse

GetOrderCancellationImpact

Previews the payment-plan and refund impact of cancelling an order. Safe read-only operation that does not change order or payment state.

POST /public-api/publicapi.v1.Order/GetOrderCancellationImpact
Request: GetOrderCancellationImpactRequest Response: GetOrderCancellationImpactResponse

CancelOrder

Cancels an order and optionally issues a refund up to the refundable amount. Guarded by expected_version; the refund leg is idempotent per refund_request_id.

POST /public-api/publicapi.v1.Order/CancelOrder
Request: CancelOrderRequest Response: CancelOrderResponse

Payment

/public-api/publicapi.v1.Payment

CreatePayment

Creates a payment request. Reusing external_operation_id with the same request returns the original payment; different input is rejected.

POST /public-api/publicapi.v1.Payment/CreatePayment
Request: CreatePaymentRequest Response: CreatePaymentResponse

GetPayment

Returns a payment by ID.

POST /public-api/publicapi.v1.Payment/GetPayment
Request: GetPaymentRequest Response: GetPaymentResponse

ListPayments

Lists payments visible to the API key actor with bounded pagination.

POST /public-api/publicapi.v1.Payment/ListPayments
Request: ListPaymentsRequest Response: ListPaymentsResponse

RecordManualPayment

Records the new total amount received for a manual payment. The status is derived as partially paid or paid; provider-owned statuses cannot be set.

POST /public-api/publicapi.v1.Payment/RecordManualPayment
Request: RecordManualPaymentRequest Response: RecordManualPaymentResponse

CreateRefund

Creates a refund against a payment. Moves money; idempotent per request_id. Only Mollie and manual providers are supported; others are rejected.

POST /public-api/publicapi.v1.Payment/CreateRefund
Request: CreateRefundRequest Response: CreateRefundResponse

ListRefunds

Lists refunds visible to the API key actor with bounded pagination.

POST /public-api/publicapi.v1.Payment/ListRefunds
Request: ListRefundsRequest Response: ListRefundsResponse

Invoice

/public-api/publicapi.v1.Invoice

CreateInvoice

Creates or returns the provider draft for an immutable order revision. Reusing idempotency_key with different input is rejected.

POST /public-api/publicapi.v1.Invoice/CreateInvoice
Request: CreateInvoiceRequest Response: CreateInvoiceResponse

GetInvoice

Returns the provider draft for an immutable order revision. Keyed by order and integration, not by invoice ID.

POST /public-api/publicapi.v1.Invoice/GetInvoice
Request: GetInvoiceRequest Response: GetInvoiceResponse

ListInvoices

Lists invoices for one customer with bounded pagination.

POST /public-api/publicapi.v1.Invoice/ListInvoices
Request: ListInvoicesRequest Response: ListInvoicesResponse

ListAccountingConnections

Lists accounting provider connections and their capabilities for a customer. This is the discovery call before creating or sending an invoice.

POST /public-api/publicapi.v1.Invoice/ListAccountingConnections
Request: ListAccountingConnectionsRequest Response: ListAccountingConnectionsResponse

SendInvoice

Sends the provider invoice for an order revision to the customer. Triggers a real customer-facing provider send; idempotent per idempotency_key.

POST /public-api/publicapi.v1.Invoice/SendInvoice
Request: SendInvoiceRequest Response: SendInvoiceResponse

ProForma

/public-api/publicapi.v1.ProForma

CreateProForma

Generates or returns the pro-forma document for an immutable order revision. Idempotent per idempotency_key.

POST /public-api/publicapi.v1.ProForma/CreateProForma
Request: CreateProFormaRequest Response: CreateProFormaResponse

GetProForma

Returns a pro-forma document by its stable identifier.

POST /public-api/publicapi.v1.ProForma/GetProForma
Request: GetProFormaRequest Response: GetProFormaResponse

ListProFormas

Lists pro-forma documents for one customer with bounded pagination.

POST /public-api/publicapi.v1.ProForma/ListProFormas
Request: ListProFormasRequest Response: ListProFormasResponse

Appointment

/public-api/publicapi.v1.Appointment

CreateAppointment

Creates a direct appointment on a round-robin or choose-user agenda. This operation is not idempotent and must not be blindly retried.

POST /public-api/publicapi.v1.Appointment/CreateAppointment
Request: CreateAppointmentRequest Response: CreateAppointmentResponse

GetAppointment

Reads one appointment by its stable ID. Returns not found when the appointment is outside the caller's appointment and customer visibility.

POST /public-api/publicapi.v1.Appointment/GetAppointment
Request: GetAppointmentRequest Response: GetAppointmentResponse

ListAppointments

Lists appointments whose scheduled start falls inside a required time window, with optional agenda, member, customer and status filters. Results are capped at page_size; has_more reports whether the window held more.

POST /public-api/publicapi.v1.Appointment/ListAppointments
Request: ListAppointmentsRequest Response: ListAppointmentsResponse

ListCustomerAppointments

Lists every visible appointment for one customer, newest scheduled first.

POST /public-api/publicapi.v1.Appointment/ListCustomerAppointments
Request: ListCustomerAppointmentsRequest Response: ListCustomerAppointmentsResponse

ListAvailableAppointmentSlots

Lists bookable start times for one active agenda on one local calendar day and appointment type. Manual-routing agendas are not bookable this way.

POST /public-api/publicapi.v1.Appointment/ListAvailableAppointmentSlots
Request: ListAvailableAppointmentSlotsRequest Response: ListAvailableAppointmentSlotsResponse

ListAgendas

Lists agendas the caller can read, exposing only the fields needed to book: strategy, timezone, slot durations and allowed appointment types.

POST /public-api/publicapi.v1.Appointment/ListAgendas
Request: ListAgendasRequest Response: ListAgendasResponse

ListAppointmentTypes

Lists appointment types and their default and allowed durations.

POST /public-api/publicapi.v1.Appointment/ListAppointmentTypes
Request: ListAppointmentTypesRequest Response: ListAppointmentTypesResponse

ListAgendaEligibleMembers

Lists the members eligible to be assigned appointments on one agenda.

POST /public-api/publicapi.v1.Appointment/ListAgendaEligibleMembers
Request: ListAgendaEligibleMembersRequest Response: ListAgendaEligibleMembersResponse

ListAppointmentResultCodes

Lists the active visit result codes selectable for one appointment.

POST /public-api/publicapi.v1.Appointment/ListAppointmentResultCodes
Request: ListAppointmentResultCodesRequest Response: ListAppointmentResultCodesResponse

UpdateAppointment

Reschedules or edits a scheduled, locally created direct appointment. Only scheduled appointments on direct-scheduling agendas can be changed. This operation is not idempotent and must not be blindly retried.

POST /public-api/publicapi.v1.Appointment/UpdateAppointment
Request: UpdateAppointmentRequest Response: UpdateAppointmentResponse

CancelAppointment

Cancels a scheduled, locally created direct appointment and reopens any linked work order. Cancelling an already-cancelled appointment succeeds.

POST /public-api/publicapi.v1.Appointment/CancelAppointment
Request: CancelAppointmentRequest Response: CancelAppointmentResponse

RecordAppointmentResult

Records a visit result on an appointment and completes it. Idempotent per request_id: replaying the same request_id with identical feedback returns the recorded result; reusing it with different feedback is rejected.

POST /public-api/publicapi.v1.Appointment/RecordAppointmentResult
Request: RecordAppointmentResultRequest Response: RecordAppointmentResultResponse

ActionRequest

/public-api/publicapi.v1.ActionRequest

CreateManualActionRequest

Creates a manual customer action request. This operation is not idempotent.

POST /public-api/publicapi.v1.ActionRequest/CreateManualActionRequest
Request: CreateManualActionRequestRequest Response: CreateManualActionRequestResponse

GetActionRequest

Returns a single action request by its stable identifier. Read-only.

POST /public-api/publicapi.v1.ActionRequest/GetActionRequest
Request: GetActionRequestRequest Response: GetActionRequestResponse

ListActionRequests

Lists at most page_size action requests visible to the API key actor, newest first. page defaults to 1 and page_size defaults to 25. Optionally filtered by customer or status. Read-only.

POST /public-api/publicapi.v1.ActionRequest/ListActionRequests
Request: ListActionRequestsRequest Response: ListActionRequestsResponse

CancelActionRequest

Cancels a pending action request so it can no longer be completed by the customer. Cancelling an already-terminal request is rejected. This operation is not idempotent.

POST /public-api/publicapi.v1.ActionRequest/CancelActionRequest
Request: CancelActionRequestRequest Response: CancelActionRequestResponse

ResendActionRequestNotification

Resends the action request notification to the customer over SMS and/or email and returns a fresh customer portal URL. This delivers real messages and is not idempotent; repeated calls send repeated messages.

POST /public-api/publicapi.v1.ActionRequest/ResendActionRequestNotification
Request: ResendActionRequestNotificationRequest Response: ResendActionRequestNotificationResponse

Member

/public-api/publicapi.v1.Member

GetMember

Gets workspace membership, not a global account or effective View claims.

POST /public-api/publicapi.v1.Member/GetMember
Request: GetMemberRequest Response: GetMemberResponse

ListMembers

Lists at most page_size members in the authenticated workspace. page_size defaults to 100.

POST /public-api/publicapi.v1.Member/ListMembers
Request: ListMembersRequest Response: ListMembersResponse

ReplaceMemberRoles

Replaces all roles assigned to a member. Team memberships are unchanged.

POST /public-api/publicapi.v1.Member/ReplaceMemberRoles
Request: ReplaceMemberRolesRequest Response: ReplaceMemberRolesResponse

ListMemberInvitations

Lists pending email invitations only, newest first; no reusable link tokens. Returns at most page_size (default 100), with truncation indicated.

POST /public-api/publicapi.v1.Member/ListMemberInvitations
Request: ListMemberInvitationsRequest Response: ListMemberInvitationsResponse

RevokeMemberInvitation

Revokes a pending email invitation. Repeating returns not found.

POST /public-api/publicapi.v1.Member/RevokeMemberInvitation
Request: RevokeMemberInvitationRequest Response: RevokeMemberInvitationResponse

RemoveMember

Removes a workspace member entirely, revoking their access to the workspace. The actor cannot remove their own membership. This operation is destructive and not idempotent; a removed member no longer exists.

POST /public-api/publicapi.v1.Member/RemoveMember
Request: RemoveMemberRequest Response: RemoveMemberResponse

Role

/public-api/publicapi.v1.Role

GetRole

Gets administrative grants, not effective operational or customer access.

POST /public-api/publicapi.v1.Role/GetRole
Request: GetRoleRequest Response: GetRoleResponse

CreateRole

Creates a custom role. Omitted access grants no administrative permissions. Roles can also select Customer Views; this does not configure those Views. Not idempotent.

POST /public-api/publicapi.v1.Role/CreateRole
Request: CreateRoleRequest Response: CreateRoleResponse

UpdateRole

Replaces custom role access and flags. Access must be explicit; {} removes all administrative grants. Empty description preserves the existing value. System and owner roles cannot be updated through this public operation. Not idempotent; existing and requested grants must fit the delegation ceiling.

POST /public-api/publicapi.v1.Role/UpdateRole
Request: UpdateRoleRequest Response: UpdateRoleResponse

ListRoles

Lists at most page_size roles in the authenticated workspace. page_size defaults to 100.

POST /public-api/publicapi.v1.Role/ListRoles
Request: ListRolesRequest Response: ListRolesResponse

Team

/public-api/publicapi.v1.Team

GetTeam

POST /public-api/publicapi.v1.Team/GetTeam
Request: GetTeamRequest Response: GetTeamResponse

UpdateTeam

Updates non-empty supplied fields; omitted fields are preserved. Does not replace membership. Description cannot be cleared by this operation.

POST /public-api/publicapi.v1.Team/UpdateTeam
Request: UpdateTeamRequest Response: UpdateTeamResponse

AddTeamMember

Adds one workspace member without replacing other teams or roles.

POST /public-api/publicapi.v1.Team/AddTeamMember
Request: AddTeamMemberRequest Response: AddTeamMemberResponse

RemoveTeamMember

Removes one team membership, not the workspace member or their roles.

POST /public-api/publicapi.v1.Team/RemoveTeamMember
Request: RemoveTeamMemberRequest Response: RemoveTeamMemberResponse

ListTeams

Lists at most page_size teams in the authenticated workspace. page_size defaults to 100.

POST /public-api/publicapi.v1.Team/ListTeams
Request: ListTeamsRequest Response: ListTeamsResponse

CreateTeam

Creates a team in the authenticated workspace.

POST /public-api/publicapi.v1.Team/CreateTeam
Request: CreateTeamRequest Response: CreateTeamResponse

WorkspaceInvitation

/public-api/publicapi.v1.WorkspaceInvitation

EmailMemberInvitation

Emails a single-use workspace invitation. Duplicate pending invitations fail; this operation is not idempotent.

POST /public-api/publicapi.v1.WorkspaceInvitation/EmailMemberInvitation
Request: EmailMemberInvitationRequest Response: EmailMemberInvitationResponse

CreateInviteLink

Creates a reusable workspace invitation link. The token is returned once. This operation is not idempotent and must not be blindly retried.

POST /public-api/publicapi.v1.WorkspaceInvitation/CreateInviteLink
Request: CreateInviteLinkRequest Response: CreateInviteLinkResponse

Customer

/public-api/publicapi.v1.Customer

GetCustomer

Returns a customer by ID.

POST /public-api/publicapi.v1.Customer/GetCustomer
Request: GetCustomerRequest Response: GetCustomerResponse

CreateCustomer

Creates a customer from the supplied fields. Contacts are not a public API resource.

POST /public-api/publicapi.v1.Customer/CreateCustomer
Request: CreateCustomerRequest Response: CreateCustomerResponse

PatchCustomerDataFields

Patches customer data fields without replacing unspecified fields.

POST /public-api/publicapi.v1.Customer/PatchCustomerDataFields
Request: PatchCustomerDataFieldsRequest Response: PatchCustomerDataFieldsResponse

CreateCustomerDocumentUpload

Creates a short-lived signed upload URL for a customer document.

POST /public-api/publicapi.v1.Customer/CreateCustomerDocumentUpload
Request: CreateCustomerDocumentUploadRequest Response: CreateCustomerDocumentUploadResponse

CompleteCustomerDocumentUpload

Finalizes a previously-created customer document upload.

POST /public-api/publicapi.v1.Customer/CompleteCustomerDocumentUpload
Request: CompleteCustomerDocumentUploadRequest Response: CompleteCustomerDocumentUploadResponse

ListCustomerDocuments

Lists customer documents.

POST /public-api/publicapi.v1.Customer/ListCustomerDocuments
Request: ListCustomerDocumentsRequest Response: ListCustomerDocumentsResponse

GetCustomerDocumentDownloadLink

Returns a short-lived download URL for a customer document.

POST /public-api/publicapi.v1.Customer/GetCustomerDocumentDownloadLink
Request: GetCustomerDocumentDownloadLinkRequest Response: GetCustomerDocumentDownloadLinkResponse

CreateCustomerPhotoUpload

Creates a short-lived signed upload URL for a customer photo.

POST /public-api/publicapi.v1.Customer/CreateCustomerPhotoUpload
Request: CreateCustomerPhotoUploadRequest Response: CreateCustomerPhotoUploadResponse

CompleteCustomerPhotoUpload

Finalizes a previously-created customer photo upload.

POST /public-api/publicapi.v1.Customer/CompleteCustomerPhotoUpload
Request: CompleteCustomerPhotoUploadRequest Response: CompleteCustomerPhotoUploadResponse

ListCustomerPhotos

Lists customer photos.

POST /public-api/publicapi.v1.Customer/ListCustomerPhotos
Request: ListCustomerPhotosRequest Response: ListCustomerPhotosResponse

GetCustomerPhotoDownloadLink

Returns a short-lived download URL for a customer photo.

POST /public-api/publicapi.v1.Customer/GetCustomerPhotoDownloadLink
Request: GetCustomerPhotoDownloadLinkRequest Response: GetCustomerPhotoDownloadLinkResponse

CreateCustomerComment

Creates an internal customer comment/memo.

POST /public-api/publicapi.v1.Customer/CreateCustomerComment
Request: CreateCustomerCommentRequest Response: CreateCustomerCommentResponse

SetCustomerJourneyStatus

Sets a customer's status on a journey track. Manual-mode statuses apply immediately; approval-mode statuses open an approval request instead of applying, so check applied and pending_approval in the response. automation_only statuses are rejected.

POST /public-api/publicapi.v1.Customer/SetCustomerJourneyStatus
Request: SetCustomerJourneyStatusRequest Response: SetCustomerJourneyStatusResponse

ClearCustomerJourneyStatus

Clears a customer's status on a journey track.

POST /public-api/publicapi.v1.Customer/ClearCustomerJourneyStatus
Request: ClearCustomerJourneyStatusRequest Response: ClearCustomerJourneyStatusResponse

LookupCustomersByIdentifier

Looks up customers by an email address or phone number, returning each matching customer with its current journey statuses. Results are limited to customers the API key can access, so an empty list does not prove the identifier is unknown.

POST /public-api/publicapi.v1.Customer/LookupCustomersByIdentifier
Request: LookupCustomersByIdentifierRequest Response: LookupCustomersByIdentifierResponse

PatchCustomer

Updates a customer's editable top-level fields. Only supplied fields change: omit a field to preserve it. Assignee and team lists replace the current assignments when nonempty; send the matching clear flag to remove all assignees or teams. A nonempty list takes precedence over its clear flag. Custom data fields are not modified here; use PatchCustomerDataFields for those. This operation is not idempotent and must not be blindly retried.

POST /public-api/publicapi.v1.Customer/PatchCustomer
Request: PatchCustomerRequest Response: PatchCustomerResponse

ListCustomerComments

Lists a customer's internal comment thread: top-level comments each with their replies nested. Read-only; only comments the API key's member can read are returned.

POST /public-api/publicapi.v1.Customer/ListCustomerComments
Request: ListCustomerCommentsRequest Response: ListCustomerCommentsResponse

ListCustomerCommentHistory

Lists the saved edit history of a single customer comment. Each entry is a prior body with the time it was superseded. Read-only.

POST /public-api/publicapi.v1.Customer/ListCustomerCommentHistory
Request: ListCustomerCommentHistoryRequest Response: ListCustomerCommentHistoryResponse

ListCustomerTimelineEvents

Lists a customer's activity timeline: audit and lifecycle events recorded against the customer. Entries are limited by the API key member's audit and order visibility, so the timeline may be partial. Read-only.

POST /public-api/publicapi.v1.Customer/ListCustomerTimelineEvents
Request: ListCustomerTimelineEventsRequest Response: ListCustomerTimelineEventsResponse

Contact

/public-api/publicapi.v1.Contact

GetContact

Returns a contact by ID.

POST /public-api/publicapi.v1.Contact/GetContact
Request: GetContactRequest Response: GetContactResponse

ListContacts

Lists contacts in the workspace, with optional free-text search over name, email, and phone number, and page-based pagination.

POST /public-api/publicapi.v1.Contact/ListContacts
Request: ListContactsRequest Response: ListContactsResponse

CreateContact

Creates a contact, or returns the existing contact when the supplied email or phone already identifies one. At least one of name, email, or phone is required. Because a matching identifier returns the existing contact, this operation is idempotent by identifier.

POST /public-api/publicapi.v1.Contact/CreateContact
Request: CreateContactRequest Response: CreateContactResponse

UpdateContact

Updates a contact's editable fields. Only supplied fields change: omit a field to leave it unchanged, or send an empty string to clear it.

POST /public-api/publicapi.v1.Contact/UpdateContact
Request: UpdateContactRequest Response: UpdateContactResponse

Journey

/public-api/publicapi.v1.Journey

ListJourneyConfig

Lists the workspace journey tracks and their statuses, limited to the tracks the API key's member can read.

POST /public-api/publicapi.v1.Journey/ListJourneyConfig
Request: ListJourneyConfigRequest Response: ListJourneyConfigResponse

DataField

/public-api/publicapi.v1.DataField

ListDataFields

Lists customer data field definitions for the workspace.

POST /public-api/publicapi.v1.DataField/ListDataFields
Request: ListDataFieldsRequest Response: ListDataFieldsResponse

CustomerEvent

/public-api/publicapi.v1.CustomerEvent

CreateCustomerEvent

Adds an externally-observed event to a customer timeline.

POST /public-api/publicapi.v1.CustomerEvent/CreateCustomerEvent
Request: CreateCustomerEventRequest Response: CreateCustomerEventResponse

Correspondence

/public-api/publicapi.v1.Correspondence

AddCorrespondenceMessage

Ingests a single inbound or outbound message into a contact conversation. Messages are deduplicated per conversation by message_external_id.

POST /public-api/publicapi.v1.Correspondence/AddCorrespondenceMessage
Request: AddCorrespondenceMessageRequest Response: AddCorrespondenceMessageResponse

ListCustomerMessages

Lists the most recent messages exchanged with a customer across their conversations, newest first and capped. Redacted messages report the redacted flag instead of their body. Read-only.

POST /public-api/publicapi.v1.Correspondence/ListCustomerMessages
Request: ListCustomerMessagesRequest Response: ListCustomerMessagesResponse

ListConversationMessages

Lists the messages in a single conversation belonging to a customer, newest first and capped, alongside a bounded conversation summary. Redacted messages report the redacted flag instead of their body. Read-only.

POST /public-api/publicapi.v1.Correspondence/ListConversationMessages
Request: ListConversationMessagesRequest Response: ListConversationMessagesResponse

AdvancedTaskService

/public-api/publicapi.v1.AdvancedTaskService

ListAdvancedTaskInstances

Lists external advanced-task instances, pending by default.

POST /public-api/publicapi.v1.AdvancedTaskService/ListAdvancedTaskInstances
Request: ListAdvancedTaskInstancesRequest Response: ListAdvancedTaskInstancesResponse

UpdateAdvancedTaskInstance

Completes or reopens an external advanced-task instance.

POST /public-api/publicapi.v1.AdvancedTaskService/UpdateAdvancedTaskInstance
Request: UpdateAdvancedTaskInstanceRequest Response: UpdateAdvancedTaskInstanceResponse

AttachAdvancedTask

Attaches an external-type advanced-task definition to a problem or work order, creating a new pending instance. Exactly one parent must be given. Rejected when the parent is already terminal. Not idempotent.

POST /public-api/publicapi.v1.AdvancedTaskService/AttachAdvancedTask
Request: AttachAdvancedTaskRequest Response: AttachAdvancedTaskResponse

WorkOrderTemplate

/public-api/publicapi.v1.WorkOrderTemplate

ListWorkOrderTemplates

POST /public-api/publicapi.v1.WorkOrderTemplate/ListWorkOrderTemplates
Request: ListWorkOrderTemplatesRequest Response: ListWorkOrderTemplatesResponse

GetWorkOrderTemplate

POST /public-api/publicapi.v1.WorkOrderTemplate/GetWorkOrderTemplate
Request: GetWorkOrderTemplateRequest Response: GetWorkOrderTemplateResponse

CreateWorkOrderTemplate

Creates a template with manual tasks only. Not idempotent.

POST /public-api/publicapi.v1.WorkOrderTemplate/CreateWorkOrderTemplate
Request: CreateWorkOrderTemplateRequest Response: CreateWorkOrderTemplateResponse

ListWorkOrderTemplateLocationFields

Active location definitions, not customer location values.

POST /public-api/publicapi.v1.WorkOrderTemplate/ListWorkOrderTemplateLocationFields
Request: ListWorkOrderTemplateLocationFieldsRequest Response: ListWorkOrderTemplateLocationFieldsResponse

UpdateWorkOrderTemplate

Updates a template's descriptive fields only. Requires settings write access. Task lists cannot be edited through the public API.

POST /public-api/publicapi.v1.WorkOrderTemplate/UpdateWorkOrderTemplate
Request: UpdateWorkOrderTemplateRequest Response: UpdateWorkOrderTemplateResponse

ArchiveWorkOrderTemplate

Archives a template so it can no longer be selected, preserving its history. Requires settings full access. Effectively idempotent.

POST /public-api/publicapi.v1.WorkOrderTemplate/ArchiveWorkOrderTemplate
Request: ArchiveWorkOrderTemplateRequest Response: ArchiveWorkOrderTemplateResponse

RecordSearch

/public-api/publicapi.v1.RecordSearch

SearchCustomers

Searches customer title and reference only; never contacts or custom fields.

POST /public-api/publicapi.v1.RecordSearch/SearchCustomers
Request: SearchRecordsRequest Response: SearchCustomersResponse

SearchProblems

Searches non-archived problem titles using customer/reporter/assignee access.

POST /public-api/publicapi.v1.RecordSearch/SearchProblems
Request: SearchRecordsRequest Response: SearchProblemsResponse

SearchWorkOrders

Searches titles of readable, workspace-owned work orders.

POST /public-api/publicapi.v1.RecordSearch/SearchWorkOrders
Request: SearchRecordsRequest Response: SearchWorkOrdersResponse

SearchProducts

Searches product names and SKUs, including inactive products.

POST /public-api/publicapi.v1.RecordSearch/SearchProducts
Request: SearchRecordsRequest Response: SearchProductsResponse

SearchMembers

Searches effective workspace member names and account email, not global users.

POST /public-api/publicapi.v1.RecordSearch/SearchMembers
Request: SearchRecordsRequest Response: SearchMembersResponse

SearchTeams

POST /public-api/publicapi.v1.RecordSearch/SearchTeams
Request: SearchRecordsRequest Response: SearchTeamsResponse

SearchRoles

Discovery does not imply permission to delegate or assign a role.

POST /public-api/publicapi.v1.RecordSearch/SearchRoles
Request: SearchRecordsRequest Response: SearchRolesResponse

SearchInventoryLocations

Searches location names and codes, including inactive locations.

POST /public-api/publicapi.v1.RecordSearch/SearchInventoryLocations
Request: SearchRecordsRequest Response: SearchInventoryLocationsResponse

ProblemTemplate

/public-api/publicapi.v1.ProblemTemplate

ListProblemTemplates

Active usable templates only; bounded, stable-ID pagination.

POST /public-api/publicapi.v1.ProblemTemplate/ListProblemTemplates
Request: ListProblemTemplatesRequest Response: ListProblemTemplatesResponse

GetProblemTemplate

POST /public-api/publicapi.v1.ProblemTemplate/GetProblemTemplate
Request: GetProblemTemplateRequest Response: GetProblemTemplateResponse

CreateProblemTemplate

Creates a reusable template of manual text tasks. Does not create a problem, assign principals, block journeys, or run automation. Not idempotent.

POST /public-api/publicapi.v1.ProblemTemplate/CreateProblemTemplate
Request: CreateProblemTemplateRequest Response: CreateProblemTemplateResponse

ContentTemplate

/public-api/publicapi.v1.ContentTemplate

ListEmailTemplates

POST /public-api/publicapi.v1.ContentTemplate/ListEmailTemplates
Request: ContentTemplateListRequest Response: ContentTemplateListResponse

GetEmailTemplate

POST /public-api/publicapi.v1.ContentTemplate/GetEmailTemplate
Request: ContentTemplateGetRequest Response: ContentTemplateGetResponse

ListDocumentTemplates

POST /public-api/publicapi.v1.ContentTemplate/ListDocumentTemplates
Request: ContentTemplateListRequest Response: ContentTemplateListResponse

GetDocumentTemplate

POST /public-api/publicapi.v1.ContentTemplate/GetDocumentTemplate
Request: ContentTemplateGetRequest Response: ContentTemplateGetResponse

ListAdvancedTaskDefinitions

POST /public-api/publicapi.v1.ContentTemplate/ListAdvancedTaskDefinitions
Request: ContentTemplateListRequest Response: ContentTemplateListResponse

GetAdvancedTaskDefinition

POST /public-api/publicapi.v1.ContentTemplate/GetAdvancedTaskDefinition
Request: ContentTemplateGetRequest Response: ContentTemplateGetResponse

CreateEmailTemplate

Creates an operational email draft with literal subject/content defaults. Never publishes, assigns to a flow, renders remotely, or sends email. Not idempotent: retrying may conflict with an existing name.

POST /public-api/publicapi.v1.ContentTemplate/CreateEmailTemplate
Request: CreateEmailTemplateRequest Response: ContentTemplateGetResponse

CreateDocumentTemplate

Creates a blank one-page PDF draft to edit in document settings. Never publishes, generates a PDF, or assigns to a flow. Not idempotent.

POST /public-api/publicapi.v1.ContentTemplate/CreateDocumentTemplate
Request: CreateDocumentTemplateRequest Response: ContentTemplateGetResponse

Inventory

/public-api/publicapi.v1.Inventory

ListInventoryBalances

Includes inbound-only product/location pairs. Available is on_hand-reserved, never on_hand-reserved+inbound. Pages default to 1 and 25 items.

POST /public-api/publicapi.v1.Inventory/ListInventoryBalances
Request: ListInventoryBalancesRequest Response: ListInventoryBalancesResponse

ListInventoryMovements

POST /public-api/publicapi.v1.Inventory/ListInventoryMovements
Request: ListInventoryMovementsRequest Response: ListInventoryMovementsResponse

CreateInventoryLocation

Creates an active, non-default location. Not idempotent.

POST /public-api/publicapi.v1.Inventory/CreateInventoryLocation
Request: CreateInventoryLocationRequest Response: CreateInventoryLocationResponse

AdjustInventory

Requires exactly one explicit correction mode and a reason. Not idempotent, including target_available: intervening stock changes make retries unsafe.

POST /public-api/publicapi.v1.Inventory/AdjustInventory
Request: AdjustInventoryRequest Response: AdjustInventoryResponse

MoveInventory

Immediately moves available stock. Reuse the key only for the same request.

POST /public-api/publicapi.v1.Inventory/MoveInventory
Request: MoveInventoryRequest Response: MoveInventoryResponse

CreateInventoryReceipt

Receiving is a lifecycle: create a draft, add lines, then ReceiveInventory. Draft and line keys are workspace-scoped; changed payloads conflict.

POST /public-api/publicapi.v1.Inventory/CreateInventoryReceipt
Request: CreateInventoryReceiptRequest Response: CreateInventoryReceiptResponse

AddInventoryReceiptLine

POST /public-api/publicapi.v1.Inventory/AddInventoryReceiptLine
Request: AddInventoryReceiptLineRequest Response: AddInventoryReceiptLineResponse

ReceiveInventory

Posts an existing draft atomically. Repeating a posted receipt is safe. Add all lines before posting. No backorder linkage or evidence upload here.

POST /public-api/publicapi.v1.Inventory/ReceiveInventory
Request: ReceiveInventoryRequest Response: ReceiveInventoryResponse

GetInventoryReceipt

Bounded recovery read by receipt ID or its draft-creation idempotency key.

POST /public-api/publicapi.v1.Inventory/GetInventoryReceipt
Request: GetInventoryReceiptRequest Response: GetInventoryReceiptResponse

GetOrderInventorySummary

Summarizes required, reserved, and short quantities for one order, broken down by product and reserving location. Requires customer read access to the order's customer in addition to inventory read.

POST /public-api/publicapi.v1.Inventory/GetOrderInventorySummary
Request: GetOrderInventorySummaryRequest Response: GetOrderInventorySummaryResponse

ListOrderReservations

Lists the stock reservations backing one order, including per-line stock status. Requires customer read access to the order's customer.

POST /public-api/publicapi.v1.Inventory/ListOrderReservations
Request: ListOrderReservationsRequest Response: ListOrderReservationsResponse

ListOrderStockDemand

Lists workspace-wide unfulfilled order stock demand. Gated on inventory read only, so it exposes order and customer references across customers.

POST /public-api/publicapi.v1.Inventory/ListOrderStockDemand
Request: ListOrderStockDemandRequest Response: ListOrderStockDemandResponse

AllocateOrderStock

Commits and physically reserves stock for one order line at one location. Creating a shortage reservation requires confirm_shortage. Idempotent by key.

POST /public-api/publicapi.v1.Inventory/AllocateOrderStock
Request: AllocateOrderStockRequest Response: AllocateOrderStockResponse

CreateOrderReservation

Creates a multi-line reservation for an order at caller-chosen locations. Idempotent by key. Prefer AllocateOrderStock for shortage-aware allocation.

POST /public-api/publicapi.v1.Inventory/CreateOrderReservation
Request: CreateOrderReservationRequest Response: CreateOrderReservationResponse

ReleaseReservation

Releases a reservation and returns its reserved stock. State-convergent: releasing an already-released reservation returns its current status.

POST /public-api/publicapi.v1.Inventory/ReleaseReservation
Request: ReleaseReservationRequest Response: ReleaseReservationResponse

ConsumeReservation

Consumes an active reservation, permanently deducting on-hand and reserved stock. State-convergent: consuming an already-consumed reservation is a no-op.

POST /public-api/publicapi.v1.Inventory/ConsumeReservation
Request: ConsumeReservationRequest Response: ConsumeReservationResponse

ReturnInventory

Returns stock previously consumed against a reservation, crediting on-hand. Only valid against a consumed reservation. Idempotent by key.

POST /public-api/publicapi.v1.Inventory/ReturnInventory
Request: ReturnInventoryRequest Response: ReturnInventoryResponse

LookupProductIdentifier

Resolves a barcode or serial value to its product identifier. NotFound when the value is unknown in this workspace.

POST /public-api/publicapi.v1.Inventory/LookupProductIdentifier
Request: LookupProductIdentifierRequest Response: LookupProductIdentifierResponse

ListProductIdentifiers

Lists the registered barcode and serial identifiers for one product.

POST /public-api/publicapi.v1.Inventory/ListProductIdentifiers
Request: ListProductIdentifiersRequest Response: ListProductIdentifiersResponse

AddProductIdentifier

Registers a barcode or serial identifier for a product. Not idempotent; a duplicate value conflicts.

POST /public-api/publicapi.v1.Inventory/AddProductIdentifier
Request: AddProductIdentifierRequest Response: AddProductIdentifierResponse

DeleteProductIdentifier

Deletes a product identifier by ID. Destructive; NotFound when the identifier does not exist.

POST /public-api/publicapi.v1.Inventory/DeleteProductIdentifier
Request: DeleteProductIdentifierRequest Response: DeleteProductIdentifierResponse

StartInventoryTransfer

Starts an inter-location transfer, decrementing source stock immediately. In-transit transfers require a future expected_arrival_at and are completed later; direct transfers credit the destination at once. Not idempotent.

POST /public-api/publicapi.v1.Inventory/StartInventoryTransfer
Request: StartInventoryTransferRequest Response: StartInventoryTransferResponse

ListInventoryTransfers

Lists inter-location transfers, optionally filtered by status.

POST /public-api/publicapi.v1.Inventory/ListInventoryTransfers
Request: ListInventoryTransfersRequest Response: ListInventoryTransfersResponse

CompleteInventoryTransfer

Completes an in-transit transfer, crediting the destination. State-convergent: completing an already-completed transfer returns its current state.

POST /public-api/publicapi.v1.Inventory/CompleteInventoryTransfer
Request: CompleteInventoryTransferRequest Response: CompleteInventoryTransferResponse

CreateInventoryBackorder

Creates an inbound backorder tracking expected arrivals for a destination location. Idempotent by key.

POST /public-api/publicapi.v1.Inventory/CreateInventoryBackorder
Request: CreateInventoryBackorderRequest Response: CreateInventoryBackorderResponse

ListInventoryBackorders

Lists inbound backorders, optionally filtered by status.

POST /public-api/publicapi.v1.Inventory/ListInventoryBackorders
Request: ListInventoryBackordersRequest Response: ListInventoryBackordersResponse

UpdateInventoryBackorderEta

Updates the expected arrival time of an open backorder. Only valid while the backorder is open.

POST /public-api/publicapi.v1.Inventory/UpdateInventoryBackorderEta
Request: UpdateInventoryBackorderEtaRequest Response: UpdateInventoryBackorderEtaResponse

WorkflowAutomation

/public-api/publicapi.v1.WorkflowAutomation

ListWorkflowAutomations

Lists published workflow automations, newest first. Draft automations that were never published and archived automations are omitted.

POST /public-api/publicapi.v1.WorkflowAutomation/ListWorkflowAutomations
Request: ListWorkflowAutomationsRequest Response: ListWorkflowAutomationsResponse

GetWorkflowAutomation

Returns one published workflow automation and its current published version metadata. Responds not_found when the id has never been published.

POST /public-api/publicapi.v1.WorkflowAutomation/GetWorkflowAutomation
Request: GetWorkflowAutomationRequest Response: GetWorkflowAutomationResponse

PlatformCatalog

/public-api/publicapi.v1.PlatformCatalog

ListApps

Lists the apps installed in the workspace, capped and newest first.

POST /public-api/publicapi.v1.PlatformCatalog/ListApps
Request: ListAppsRequest Response: ListAppsResponse

ListFlowTypes

Lists flow types, optionally filtered to a single app, capped.

POST /public-api/publicapi.v1.PlatformCatalog/ListFlowTypes
Request: ListFlowTypesRequest Response: ListFlowTypesResponse

ListActionTypes

Lists action types, optionally filtered to a single app, capped.

POST /public-api/publicapi.v1.PlatformCatalog/ListActionTypes
Request: ListActionTypesRequest Response: ListActionTypesResponse

ListProductTypes

Lists product types, optionally filtered to a single app, capped.

POST /public-api/publicapi.v1.PlatformCatalog/ListProductTypes
Request: ListProductTypesRequest Response: ListProductTypesResponse

Usage

/public-api/publicapi.v1.Usage

ListUsageLogs

Lists at most page_size usage log entries, newest first, optionally filtered by usage type, status and a created-at time window. page_size defaults to 100 and is capped at 200.

POST /public-api/publicapi.v1.Usage/ListUsageLogs
Request: ListUsageLogsRequest Response: ListUsageLogsResponse

ListUsageTypes

Lists the usage types available to the workspace with their default per-unit pricing. Read-only.

POST /public-api/publicapi.v1.Usage/ListUsageTypes
Request: ListUsageTypesRequest Response: ListUsageTypesResponse

Action

/public-api/publicapi.v1.Action

ListActions

Lists the configured actions in the workspace, optionally filtered to a single action type, capped and newest first. Read-only.

POST /public-api/publicapi.v1.Action/ListActions
Request: ListActionsRequest Response: ListActionsResponse

Audit

/public-api/publicapi.v1.Audit

ListAuditEvents

Lists at most page_size audit events, newest first. page defaults to 1 and page_size defaults to 25 (capped at 100). Optionally filtered by customer, team, user, event name, actor type, a created-at window and a free-text query. Read-only.

POST /public-api/publicapi.v1.Audit/ListAuditEvents
Request: ListAuditEventsRequest Response: ListAuditEventsResponse

Document

/public-api/publicapi.v1.Document

GenerateCustomerDocumentPdf

Renders a published document template for a customer to a temporary PDF and returns a short-lived download URL. The template's current published configuration is used; raw template configuration cannot be supplied externally. This operation is not idempotent and produces a new document on every call.

POST /public-api/publicapi.v1.Document/GenerateCustomerDocumentPdf
Request: GenerateCustomerDocumentPdfRequest Response: GenerateCustomerDocumentPdfResponse