Admin
List Support Agents
Lists every support seat — active and revoked — one page at a time, for the support settings. A seat is a central sku.io user with a support role; the role decides what they may do (`admin` reaches these settings endpoints, `agent` works tickets, `viewer` only reads and leaves internal notes). `is_effective` is what the access checks actually use: the seat is active AND the user is a super admin AND the user has not been deleted. `is_deleted` is true when the seat's user was removed from sku.io — the seat stays in this list (so a revoked or orphaned seat is never invisible) but grants nothing until that user is restored.
Create Support Agent
Grants a support seat to an existing central sku.io user, looked up by email. If that user already has a seat (including a revoked one) the seat is re-activated and its role replaced with the one sent — this is also how you restore a revoked agent. The seat only takes effect (`is_effective`) once the user is a super admin; a seat for a non-super-admin is stored but grants nothing until they are one. The email lookup skips deleted users, so a seat cannot be granted to one (422). No notification email is sent.
Update Support Agent
Partially updates a support seat: change the role, edit the profile, set the notification flags, or re-activate a revoked seat with `is_active: true`. Only the fields you send change; sending `null` for a nullable field clears it.
Delete Support Agent
Revokes a support seat. The revoke is soft: the seat row stays, with its profile and notification flags, and `is_active` becomes false, so it still appears in List Support Agents (use `filter[is_active]=false`) and can be restored later with Update Support Agent (`is_active: true`) or by granting the same email again. Tickets assigned to the agent are left as they are.
List Support Groups
Lists the support groups, each with `tickets_count` — the number of tickets of any status that carry the group's key. Exactly one group is the default (`is_default`), the one new tickets land in when nothing else picks a group.
Create Support Group
Creates a support group. The `key` is the stable identifier tickets carry (`group_key`) and is what rules, filters and the ticket endpoints use; it cannot be changed later while any ticket references it.
Update Support Group
Partially updates a support group. Only the fields you send change.
Delete Support Group
Deletes a support group. Tickets are never reassigned: the delete is refused with 422 (under `group`) while any ticket of any status still carries the group's key — move those tickets to another group first. The default group cannot be deleted either; make another group the default first.
List SLA Policies
Lists the SLA policies, each with its per-priority targets (minutes), its business-hours calendar, its warning fraction, `tickets_count` (tickets on this policy) and `tenants_count` (accounts whose settings override to this policy). If no default policy exists yet, one is created from the built-in defaults on the first call, so the list is never empty.
Create SLA Policy
Creates an SLA policy: per-priority first-response and resolution targets in minutes, optionally counted in business hours only, plus the fraction of a target at which the 'breaching soon' warning fires. Tickets pick up a policy from their account's settings, falling back to the default policy.
Update SLA Policy
Partially updates an SLA policy. Only the fields you send change. Due dates already stamped on existing tickets are not recalculated.
Delete SLA Policy
Deletes an SLA policy. Tickets on the policy and accounts whose settings override to it lose the reference and fall back to the default policy; their existing due dates are not recalculated. The default policy cannot be deleted: the request is refused with 422 (under `policy`) — make another policy the default first.
List Support Rules
Lists every automation rule — active and inactive, built-in and custom — in run order (`position`, then id). Not paginated; no filters.
Create Support Rule
Creates an automation rule: a trigger, a list of conditions that must all match, and a list of actions run in order. New rules are never built-in (`is_system: false`). When `position` is omitted the rule is placed after the last existing rule.
Get Rule Options
Returns the vocabulary an automation rule is composed from: the triggers, the condition fields (with their value type, the operators that fit them, and the allowed values for enum fields), the operators, the actions (with the value kind each expects and, where applicable, the allowed values), the customer notices, and the placeholders a message template may use. Use it to validate a rule client-side before creating or updating it; group and notice options reflect the current configuration.
Update Support Rule
Updates an automation rule. This is a partial update: any field you omit keeps its current value, and the merged result is validated exactly like a new rule. Sending `conditions` or `actions` replaces the whole list. Built-in rules (`is_system: true`) can be edited and switched off like any other; only deletion is refused.
Delete Support Rule
Permanently deletes a custom automation rule. Built-in rules (`is_system: true`) cannot be deleted — switch them off with Update Support Rule instead; attempting to delete one fails with a 422. Events the rule already recorded on tickets are kept. Returns an empty 204 response.
Reorder Support Rules
Sets the run order of the automation rules. The listed ids are renumbered 1, 2, 3, ... in the order given; any rule not listed keeps its relative order and is placed after the listed ones. Order matters across all triggers (position is global), and within a trigger it decides which matching rule runs first. Returns the full rule list in the new order, like List Support Rules.
Test Support Rule
Dry-runs a rule against an existing ticket: reports whether the rule's conditions match the ticket right now and which actions would run. Nothing is changed, sent, or recorded. The rule's `is_active` flag is ignored — an inactive rule can be tested.
List Support Macros
Lists every macro (canned reply) — shared and private alike — for administration. Agents see only shared macros plus their own through the agent endpoints.
Create Support Macro
Creates a macro: a canned reply with placeholders, an optional `/shortcut`, and optional ticket actions applied when an agent uses it. The caller is recorded as the author; macros default to shared.
Update Support Macro
Updates a macro. This is a partial update: every field is optional and anything you omit keeps its current value. Sending `body_text` without `body_html` regenerates the HTML body from the new text; sending `body_html: null` regenerates it from the current text. Sending `actions: null` (or an object whose values are all empty) removes the actions; sending `shortcut: null` removes the shortcut. The author does not change.
Delete Support Macro
Permanently deletes a macro. Agents can no longer pick or render it; replies already sent with it are unaffected. Returns an empty 204 response.
List Support Tenants
Lists every tenant (customer account) with its open-ticket count and a summary of its support settings — the SLA policy override, the default watchers, and agent notes. Use this to find a tenant before reading or updating its settings.
List Support Tenant Users
Lists the members of a tenant, ordered by name — the people who can be chosen as the tenant's default watchers. Not paginated; no filters.
Get Support Tenant Settings
Returns the support settings for one tenant: the default watchers (members added to every new ticket the tenant raises), the SLA policy override, and the agent notes. A tenant that has never been configured returns an empty watcher list and null for the override and notes.
Update Support Tenant Settings
Updates a tenant's support settings. This is a partial update: any field you omit keeps its current value. Send `sla_policy_id: null` or `notes: null` to clear those, and `default_watcher_user_ids: []` to remove every default watcher. Returns the settings after the write, in the same shape as Get Support Tenant Settings.
Get Support Email Status
Reports the state of the support email channel: the addresses in use, whether the inbound intake rule is provisioned at the mail provider, when mail last arrived, and the intake counters. There are no parameters.
Get AI Suggestion Settings
Returns the desk-wide AI suggestion settings: for each ticket property the model can suggest, what happens with its answer. These settings apply to every tenant — this is how the support desk itself behaves.
Update AI Suggestion Settings
Updates the desk-wide AI suggestion settings. Only the properties present in the payload change; anything left out keeps its current mode, so a caller that knows about three properties cannot silently reset a fourth. Unknown property keys and unknown modes are rejected.