slug defaults to a slugified name and must be unique in the workspace. defaultLocale is always added to enabledLocales.
The Zingasolve endpoints — publish documentation (spaces, chapters, articles, per-locale draft → publish) and run the helpdesk (tickets, support areas, FAQs) from your own systems. Authenticate with a zk_ key carrying data:read / data:write:*. Every write runs the same services the console does, so a publish gets its canonical URL and search/AI indexing, and a new ticket gets its number, SLA and auto-assignment.
A space is one manual / help centre, published to its own micro-site.
| Name | In | Type | Req | Description |
|---|---|---|---|---|
limit | query | integer | Page size (1-200, default 50) | |
offset | query | integer | Rows to skip |
slug defaults to a slugified name and must be unique in the workspace. defaultLocale is always added to enabledLocales.
| Name | In | Type | Req | Description |
|---|---|---|---|---|
space_id | path | string | yes | Space id |
Updatable: name, description, defaultLocale, enabledLocales, visibility (public|authenticated|restricted), status (active|archived), settings.
| Name | In | Type | Req | Description |
|---|---|---|---|---|
space_id | path | string | yes | Space id |
| Name | In | Type | Req | Description |
|---|---|---|---|---|
space_id | path | string | yes | Space id |
Collections are the (nestable) chapters inside a space. Slugs are sibling-scoped.
Flat list ordered by depth then sortOrder; path + depth let you rebuild the tree.
| Name | In | Type | Req | Description |
|---|---|---|---|---|
spaceId | query | string | yes | The documentation space |
limit | query | integer | Page size (1-200, default 50) | |
offset | query | integer | Rows to skip |
name is stored as the space default-locale translation unless locale is given.
| Name | In | Type | Req | Description |
|---|---|---|---|---|
collection_id | path | string | yes | Chapter id |
Rename, re-slug, re-parent or reorder. Re-parenting recomputes path + depth.
| Name | In | Type | Req | Description |
|---|---|---|---|---|
collection_id | path | string | yes | Chapter id |
| Name | In | Type | Req | Description |
|---|---|---|---|---|
collection_id | path | string | yes | Chapter id |
Articles plus their per-locale content: read the working copy, save a draft, publish an immutable version.
| Name | In | Type | Req | Description |
|---|---|---|---|---|
spaceId | query | string | yes | The documentation space |
collectionId | query | string | Narrow to one chapter | |
status | query | string | draft|published|archived | |
q | query | string | Slug substring | |
limit | query | integer | Page size (1-200, default 50) | |
offset | query | integer | Rows to skip |
Creates a draft shell and seeds its default-locale head. Nothing is public until you publish.
Includes the per-locale heads in translations.
| Name | In | Type | Req | Description |
|---|---|---|---|---|
article_id | path | string | yes | Article id |
Updatable: slug, collectionId, visibility, status (draft|published|archived), sortOrder, isReusable. Reindexes search + AI grounding.
| Name | In | Type | Req | Description |
|---|---|---|---|---|
article_id | path | string | yes | Article id |
| Name | In | Type | Req | Description |
|---|---|---|---|---|
article_id | path | string | yes | Article id |
The draft if there is one, else the published version; hasUnpublishedChanges says whether they differ.
| Name | In | Type | Req | Description |
|---|---|---|---|---|
article_id | path | string | yes | Article id |
locale | query | string | Language code (defaults to the article's) |
Writes the draft slot (version 0) for one locale. Publishes nothing.
| Name | In | Type | Req | Description |
|---|---|---|---|---|
article_id | path | string | yes | Article id |
Freezes an immutable version, mints the canonical slug (old slug → 301), reindexes search/AI and refreshes @[include] edges. Byte-identical content is deduped. locale must be enabled on the space.
| Name | In | Type | Req | Description |
|---|---|---|---|---|
article_id | path | string | yes | Article id |
The departments tickets route to — SLA clocks, default priority, escalation ceiling.
Partial update — only the fields you send change.
| Name | In | Type | Req | Description |
|---|---|---|---|---|
domain_id | path | string | yes | Support area id |
| Name | In | Type | Req | Description |
|---|---|---|---|---|
domain_id | path | string | yes | Support area id |
Open, track and work tickets — numbering, SLA, auto-assignment and the timeline are identical to the console.
status takes any ticket status or open_active; assigneeUserId=unassigned returns the queue.
| Name | In | Type | Req | Description |
|---|---|---|---|---|
status | query | string | open|pending|on_hold|resolved|closed|open_active | |
domainId | query | string | One support area | |
assigneeUserId | query | string | User id, or 'unassigned' | |
priority | query | string | low|normal|high|urgent | |
q | query | string | Subject substring or ticket number | |
limit | query | integer | Page size (1-200, default 50) | |
offset | query | integer | Rows to skip |
Numbered, SLA computed from the support area, auto-assigned, requester emailed. source defaults to api.
Includes the events timeline and, when the ticket has a thread, messages.
| Name | In | Type | Req | Description |
|---|---|---|---|---|
ticket_id | path | string | yes | Ticket id |
subject, status (open|pending|on_hold|resolved|closed), priority, domainId. Moving domain recomputes SLA and re-runs auto-assign.
| Name | In | Type | Req | Description |
|---|---|---|---|---|
ticket_id | path | string | yes | Ticket id |
Omit userId to let routing pick the best available agent.
| Name | In | Type | Req | Description |
|---|---|---|---|---|
ticket_id | path | string | yes | Ticket id |
Raises the level (capped at the area's maxLevel) and reassigns to higher expertise.
| Name | In | Type | Req | Description |
|---|---|---|---|---|
ticket_id | path | string | yes | Ticket id |
Internal by default; isInternal: false makes it customer-visible.
| Name | In | Type | Req | Description |
|---|---|---|---|---|
ticket_id | path | string | yes | Ticket id |
Queues an agent reply into the ticket's conversation. 400 no_conversation when the ticket has no thread.
| Name | In | Type | Req | Description |
|---|---|---|---|---|
ticket_id | path | string | yes | Ticket id |
The curated Q&A base — suggested during ticket intake, served on the docs site, and grounding for the AI assistant.
| Name | In | Type | Req | Description |
|---|---|---|---|---|
status | query | string | draft|published | |
q | query | string | Question substring | |
limit | query | integer | Page size (1-200, default 50) | |
offset | query | integer | Rows to skip |
| Name | In | Type | Req | Description |
|---|---|---|---|---|
faq_id | path | string | yes | FAQ id |
Partial update — only the fields you send change.
| Name | In | Type | Req | Description |
|---|---|---|---|---|
faq_id | path | string | yes | FAQ id |
| Name | In | Type | Req | Description |
|---|---|---|---|---|
faq_id | path | string | yes | FAQ id |