AurionAI Docs

SLA Management

Configure SLA policies, track compliance, and manage escalations via the Aurion API.

⚠️ Preview — not yet in the public API

The endpoints on this page are part of the AurionAI helpdesk and are currently accessible only through an authenticated dashboard session. They are not yet exposed through public API keys — a request authenticated with X-API-Key returns 403. Public API-key access is planned. The reference below documents the intended contract.

SLA Management

The SLA API (v2) lets you define service level agreement policies with response and resolution time targets, automated escalations, and compliance analytics.

Plan requirement: Core SLA management — policies, targets, escalations, instances, and the deadline preview — is available on all plans. SLA analytics (compliance summary, trends, breaches) requires the Professional plan or higher. OLA management requires the Enterprise plan.

List SLA Policies

limit defaults to 50 (range 1–100); offset defaults to 0. Soft-deleted (archived) policies are hidden by default — pass include_archived=true (or status=archived) to include them.

cURL
curl "https://apps.aurionai.net/api/v2/sla/policies?limit=50&offset=0" \
  -H "X-API-Key: itsm_sk_live_xxxx"

Response:

{
  "items": [
    {
      "id": "9b2c1f6a-3d4e-4a1b-8c2d-7e6f5a4b3c2d",
      "name": "Standard Support",
      "description": "Default SLA for all tickets",
      "business_hours_id": "5f1e2d3c-4b5a-6978-8a9b-0c1d2e3f4a5b",
      "conditions": {
        "all": [
          {"field": "priority", "operator": "in", "value": ["medium", "low"]}
        ]
      },
      "priority_order": 0,
      "is_default": true,
      "status": "active",
      "target_count": 2,
      "escalation_count": 1,
      "created_at": "2026-03-08T09:00:00Z",
      "updated_at": "2026-03-08T09:00:00Z"
    }
  ],
  "total": 3,
  "limit": 50,
  "offset": 0
}

Each list item also carries target_count and escalation_count. Fetch a single policy (below) to retrieve its full targets and escalations arrays.

Get SLA Policy

Retrieve a single SLA policy by ID, including its targets and escalations. The policy_id must be a valid UUID — a non-UUID path returns 422; an unknown ID returns 404 {"detail": "SLA policy not found"}.

curl "https://apps.aurionai.net/api/v2/sla/policies/9b2c1f6a-3d4e-4a1b-8c2d-7e6f5a4b3c2d" \
  -H "X-API-Key: itsm_sk_live_xxxx"

Response:

{
  "id": "9b2c1f6a-3d4e-4a1b-8c2d-7e6f5a4b3c2d",
  "name": "Standard Support",
  "description": "Default SLA for all tickets",
  "business_hours_id": "5f1e2d3c-4b5a-6978-8a9b-0c1d2e3f4a5b",
  "conditions": {
    "all": [
      {"field": "priority", "operator": "in", "value": ["medium", "low"]}
    ]
  },
  "priority_order": 0,
  "is_default": true,
  "status": "active",
  "created_at": "2026-03-08T09:00:00Z",
  "updated_at": "2026-03-08T09:00:00Z",
  "targets": [
    {
      "id": "3a4b5c6d-7e8f-4091-a2b3-c4d5e6f7a8b9",
      "priority": "medium",
      "first_response_minutes": 240,
      "resolution_minutes": 1440,
      "next_response_minutes": null
    }
  ],
  "escalations": [
    {
      "id": "1d2e3f4a-5b6c-4d7e-8f90-a1b2c3d4e5f6",
      "name": "Notify lead near breach",
      "trigger_type": "threshold",
      "trigger_percent": 80,
      "target_metric": "resolution",
      "priority_filter": ["high", "urgent"],
      "action_type": "notify",
      "action_config": {},
      "sort_order": 0,
      "status": "active",
      "created_at": "2026-03-08T09:00:00Z"
    }
  ]
}

Create SLA Policy

Returns 201 Created with the full policy detail. conditions is an object, not an array — use the {"all": [...]} form (a legacy flat form like {"priority": ["high"]} is also accepted).

FieldTypeRequiredNotes
namestringyes1–200 characters
descriptionstringno
business_hours_idstring (UUID)noBusiness-hours schedule the timers follow
conditionsobjectnoMatching rules, e.g. {"all": [{"field","operator","value"}]}
priority_orderintegernoEvaluation order; default 0
is_defaultbooleannoDefault false
statusenumnoactive | inactive | archived; default active
curl -X POST "https://apps.aurionai.net/api/v2/sla/policies" \
  -H "X-API-Key: itsm_sk_live_xxxx" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Critical Support",
    "description": "SLA for urgent and high-priority tickets",
    "business_hours_id": "5f1e2d3c-4b5a-6978-8a9b-0c1d2e3f4a5b",
    "conditions": {
      "all": [
        {"field": "priority", "operator": "in", "value": ["urgent", "high"]}
      ]
    },
    "priority_order": 1,
    "is_default": false,
    "status": "active"
  }'

Update SLA Policy

Partially update an existing policy. Only the fields you send are changed; any of the create-body fields (name, description, business_hours_id, conditions, priority_order, is_default, status) are accepted. Returns the updated policy detail.

curl -X PATCH "https://apps.aurionai.net/api/v2/sla/policies/9b2c1f6a-3d4e-4a1b-8c2d-7e6f5a4b3c2d" \
  -H "X-API-Key: itsm_sk_live_xxxx" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Critical Support (Updated)",
    "status": "inactive"
  }'

Delete SLA Policy

Soft-delete (archive) a policy. Returns 204 No Content on success. Returns 409 Conflict if the policy has active or paused SLA instances, and 422 if the path policy_id is not a valid UUID.

curl -X DELETE "https://apps.aurionai.net/api/v2/sla/policies/9b2c1f6a-3d4e-4a1b-8c2d-7e6f5a4b3c2d" \
  -H "X-API-Key: itsm_sk_live_xxxx"

Reorder SLA Policies

Set the evaluation order for policies. Policies are matched top-to-bottom; the first matching policy applies — each policy's priority_order is set to its index in the list. policy_ids must be a non-empty list of 1–100 UUIDs that all exist for the tenant. Returns 204 No Content on success; an unknown ID returns 422 {"detail": "Policy IDs not found: [...]"}.

curl -X POST "https://apps.aurionai.net/api/v2/sla/policies/reorder" \
  -H "X-API-Key: itsm_sk_live_xxxx" \
  -H "Content-Type: application/json" \
  -d '{
    "policy_ids": [
      "c1d2e3f4-a5b6-4789-9012-3456789abcde",
      "7e6f5a4b-3c2d-41e0-8f9a-0b1c2d3e4f5a",
      "9b2c1f6a-3d4e-4a1b-8c2d-7e6f5a4b3c2d"
    ]
  }'

Upsert SLA Target

A target is per priority: a single upsert sets the first-response and resolution clocks (and optionally the next-response clock) for one priority level, all expressed in minutes. Posting again for the same priority replaces that priority's target. Returns the upserted target; a non-existent policy_id returns 404, and a non-UUID policy_id returns 422.

FieldTypeRequiredNotes
priorityenumnolow | medium | high | urgent; default medium
first_response_minutesintegeryesMinutes until first agent response (≥ 0)
resolution_minutesintegeryesMinutes until the conversation is resolved (≥ 0)
next_response_minutesintegernoMinutes until the next agent response (≥ 0)
curl -X POST "https://apps.aurionai.net/api/v2/sla/policies/9b2c1f6a-3d4e-4a1b-8c2d-7e6f5a4b3c2d/targets" \
  -H "X-API-Key: itsm_sk_live_xxxx" \
  -H "Content-Type: application/json" \
  -d '{
    "priority": "urgent",
    "first_response_minutes": 15,
    "resolution_minutes": 240,
    "next_response_minutes": 60
  }'

Response:

{
  "id": "3a4b5c6d-7e8f-4091-a2b3-c4d5e6f7a8b9",
  "priority": "urgent",
  "first_response_minutes": 15,
  "resolution_minutes": 240,
  "next_response_minutes": 60
}

Delete SLA Target

Remove a specific target by its target ID. Returns 204 No Content on success, 404 if the target does not exist, and 422 if the path target_id is not a valid UUID.

curl -X DELETE "https://apps.aurionai.net/api/v2/sla/targets/3a4b5c6d-7e8f-4091-a2b3-c4d5e6f7a8b9" \
  -H "X-API-Key: itsm_sk_live_xxxx"

Escalation Rules

Automatically escalate when an SLA target is at risk. Escalations are attached to a policy and fire when the elapsed time crosses trigger_percent of the chosen target_metric's deadline. Escalation management is core SLA functionality (available on all plans).

Create Escalation

Returns 201 Created with the escalation. A non-existent policy_id returns 404; a non-UUID policy_id returns 422.

FieldTypeRequiredNotes
namestringyes1–200 characters
trigger_typeenumnoOnly threshold; default threshold
trigger_percentintegernoPercent of the target elapsed before firing, 1–500; default 100
target_metricenumnofirst_response | resolution | next_response; default resolution
priority_filterarray of enum | nullnoRestrict to priorities low/medium/high/urgent
action_typeenumnonotify | reassign | change_priority | notify_and_reassign; default notify
action_configobjectnoAction-specific configuration; default {}
sort_orderintegernoEvaluation order; default 0
statusenumnoactive | inactive; default active
curl -X POST "https://apps.aurionai.net/api/v2/sla/policies/9b2c1f6a-3d4e-4a1b-8c2d-7e6f5a4b3c2d/escalations" \
  -H "X-API-Key: itsm_sk_live_xxxx" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Notify lead near breach",
    "trigger_type": "threshold",
    "trigger_percent": 80,
    "target_metric": "resolution",
    "priority_filter": ["high", "urgent"],
    "action_type": "notify",
    "action_config": {},
    "sort_order": 0,
    "status": "active"
  }'

Update Escalation

Partially update an existing escalation rule — send any subset of name, trigger_type, trigger_percent, target_metric, priority_filter, action_type, action_config, sort_order, status. An empty body returns 422 {"detail": "No fields to update"}. Returns the updated escalation; 404 if it does not exist, 422 if the path escalation_id is not a valid UUID.

curl -X PATCH "https://apps.aurionai.net/api/v2/sla/escalations/1d2e3f4a-5b6c-4d7e-8f90-a1b2c3d4e5f6" \
  -H "X-API-Key: itsm_sk_live_xxxx" \
  -H "Content-Type: application/json" \
  -d '{
    "trigger_percent": 90,
    "action_type": "notify_and_reassign",
    "status": "active"
  }'

action_type accepts notify, reassign, change_priority, or notify_and_reassign. status accepts active or inactive.

Delete Escalation

Returns 204 No Content on success, 404 if the escalation does not exist, and 422 if the path escalation_id is not a valid UUID.

curl -X DELETE "https://apps.aurionai.net/api/v2/sla/escalations/1d2e3f4a-5b6c-4d7e-8f90-a1b2c3d4e5f6" \
  -H "X-API-Key: itsm_sk_live_xxxx"

SLA Instances

Track active SLA timers across conversations. Each instance is one row per target type (a conversation governed by a policy with both first-response and resolution targets has two instance rows). Filter with conversation_id, state, and/or policy_id. limit defaults to 50 (range 1–200); offset defaults to 0.

curl "https://apps.aurionai.net/api/v2/sla/instances?state=active&limit=10" \
  -H "X-API-Key: itsm_sk_live_xxxx"

Response:

{
  "items": [
    {
      "id": "a7b8c9d0-e1f2-4a3b-8c4d-5e6f7a8b9c0d",
      "conversation_id": "f0e1d2c3-b4a5-4968-8778-695a4b3c2d1e",
      "sla_policy_id": "9b2c1f6a-3d4e-4a1b-8c2d-7e6f5a4b3c2d",
      "target_type": "first_response",
      "state": "active",
      "deadline_at": "2026-03-08T14:00:00Z",
      "started_at": "2026-03-08T10:00:00Z",
      "paused_at": null,
      "completed_at": null,
      "elapsed_minutes": 45.0,
      "target_minutes": 240,
      "priority": "medium",
      "metadata": {},
      "created_at": "2026-03-08T10:00:00Z",
      "updated_at": "2026-03-08T10:45:00Z"
    }
  ],
  "total": 1,
  "limit": 10,
  "offset": 0
}

Get SLA Instance

Retrieve a single SLA instance by ID (same flat shape as the list rows above). Returns 404 {"detail": "SLA instance not found"} if it does not exist, and 422 if the path instance_id is not a valid UUID.

curl "https://apps.aurionai.net/api/v2/sla/instances/a7b8c9d0-e1f2-4a3b-8c4d-5e6f7a8b9c0d" \
  -H "X-API-Key: itsm_sk_live_xxxx"

List SLA Instance Events

Retrieve the state-transition event log for an instance, newest first. limit defaults to 100 (range 1–500). Returns a JSON array (no pagination envelope). Returns 422 if the path instance_id is not a valid UUID.

curl "https://apps.aurionai.net/api/v2/sla/instances/a7b8c9d0-e1f2-4a3b-8c4d-5e6f7a8b9c0d/events?limit=100" \
  -H "X-API-Key: itsm_sk_live_xxxx"

Response:

[
  {
    "id": "b2c3d4e5-f6a7-4b8c-9d0e-1f2a3b4c5d6e",
    "instance_id": "a7b8c9d0-e1f2-4a3b-8c4d-5e6f7a8b9c0d",
    "event_type": "paused",
    "old_state": "active",
    "new_state": "paused",
    "triggered_by": "system",
    "metadata": {},
    "created_at": "2026-03-08T11:30:00Z"
  }
]

Run Escalations

Manually trigger an escalation sweep across the tenant's active SLA instances. Rate-limited to 5 requests/hour and protected by a distributed lock — a concurrent run returns 409 {"detail": "Another escalation run is in progress"}. Requires the tenant_admin role or higher (not available to read-only members).

curl -X POST "https://apps.aurionai.net/api/v2/sla/run-escalations" \
  -H "X-API-Key: itsm_sk_live_xxxx"

Response:

{
  "run_at": "2026-03-08T12:00:00Z",
  "scanned_conversations": 42,
  "triggered_escalations": 3,
  "actions_executed": 3,
  "errors": [],
  "sla_instances_breached": 1,
  "ola_instances_breached": 0
}

Preview Deadline

Calculate a projected SLA deadline based on a business-hours schedule, start time, and duration. Useful for showing estimated deadlines before creating a conversation. start_at is an ISO-8601 datetime and duration_minutes must be ≥ 0. Returns 404 {"detail": "Business-hours schedule not found"} if business_hours_id does not resolve.

curl -X POST "https://apps.aurionai.net/api/v2/sla/preview-deadline" \
  -H "X-API-Key: itsm_sk_live_xxxx" \
  -H "Content-Type: application/json" \
  -d '{
    "business_hours_id": "5f1e2d3c-4b5a-6978-8a9b-0c1d2e3f4a5b",
    "start_at": "2026-03-08T09:00:00Z",
    "duration_minutes": 240
  }'

Response:

{
  "start_at": "2026-03-08T09:00:00Z",
  "due_at": "2026-03-08T17:00:00Z",
  "timezone": "Europe/Brussels"
}

SLA Analytics

All analytics endpoints require the Professional plan or higher. Dates are YYYY-MM-DD; a malformed date returns 422.

Compliance Summary

start_date, end_date, and policy_id are all optional.

curl "https://apps.aurionai.net/api/v2/sla/analytics/summary?start_date=2026-03-01&end_date=2026-03-08" \
  -H "X-API-Key: itsm_sk_live_xxxx"

Response:

{
  "total_instances": 120,
  "met_count": 110,
  "breached_count": 6,
  "active_count": 3,
  "paused_count": 1,
  "cancelled_count": 0,
  "compliance_percent": 94.8
}

start_date and end_date are both required, and start_date must be before end_date (otherwise 422). granularity is day (default) or week. Returns a JSON array of trend points (no pagination envelope).

curl "https://apps.aurionai.net/api/v2/sla/analytics/trends?start_date=2026-02-01&end_date=2026-03-08&granularity=week" \
  -H "X-API-Key: itsm_sk_live_xxxx"

Response:

[
  {"period": "2026-02-01", "total": 30, "met": 28, "breached": 2}
]

Breach Analysis

start_date and end_date are optional. limit defaults to 50 (range 1–200); offset defaults to 0. Returns the standard { "items": [...], "total", "limit", "offset" } envelope.

curl "https://apps.aurionai.net/api/v2/sla/analytics/breaches?start_date=2026-03-01&limit=20&offset=0" \
  -H "X-API-Key: itsm_sk_live_xxxx"

Response:

{
  "items": [
    {
      "id": "a7b8c9d0-e1f2-4a3b-8c4d-5e6f7a8b9c0d",
      "conversation_id": "f0e1d2c3-b4a5-4968-8778-695a4b3c2d1e",
      "conversation_subject": "Cannot log in to portal",
      "policy_id": "9b2c1f6a-3d4e-4a1b-8c2d-7e6f5a4b3c2d",
      "policy_name": "Standard Support",
      "target_type": "resolution",
      "target_minutes": 1440,
      "elapsed_minutes": 1620.0,
      "priority": "medium",
      "started_at": "2026-03-01T09:00:00Z",
      "breached_at": "2026-03-02T12:00:00Z",
      "deadline_at": "2026-03-02T09:00:00Z"
    }
  ],
  "total": 6,
  "limit": 20,
  "offset": 0
}

OLA Policies

Operational Level Agreements (OLAs) track internal team commitments. OLA management requires the Enterprise plan.

List OLA Policies

limit defaults to 50 (range 1–100); offset defaults to 0. Optionally filter by status (active | inactive | archived).

curl "https://apps.aurionai.net/api/v2/sla/ola/policies?limit=50&offset=0" \
  -H "X-API-Key: itsm_sk_live_xxxx"

Response:

{
  "items": [
    {
      "id": "d4e5f6a7-b8c9-4d0e-8f1a-2b3c4d5e6f7a",
      "name": "Tier 2 escalation OLA",
      "description": "Internal handoff to the platform team",
      "internal_team_id": "8c9d0e1f-2a3b-4c5d-9e0f-1a2b3c4d5e6f",
      "target_minutes": 120,
      "business_hours_id": "5f1e2d3c-4b5a-6978-8a9b-0c1d2e3f4a5b",
      "status": "active",
      "created_at": "2026-03-08T09:00:00Z",
      "updated_at": "2026-03-08T09:00:00Z"
    }
  ],
  "total": 1,
  "limit": 50,
  "offset": 0
}

Create OLA Policy

Returns 201 Created with the created OLA policy.

FieldTypeRequiredNotes
namestringyes1–200 characters
descriptionstringno
internal_team_idstring (UUID)noTeam responsible for the commitment
target_minutesintegeryesCommitment target in minutes (≥ 1)
business_hours_idstring (UUID)noBusiness-hours schedule the timer follows
statusenumnoactive | inactive; default active
curl -X POST "https://apps.aurionai.net/api/v2/sla/ola/policies" \
  -H "X-API-Key: itsm_sk_live_xxxx" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Tier 2 escalation OLA",
    "description": "Internal handoff to the platform team",
    "internal_team_id": "8c9d0e1f-2a3b-4c5d-9e0f-1a2b3c4d5e6f",
    "target_minutes": 120,
    "business_hours_id": "5f1e2d3c-4b5a-6978-8a9b-0c1d2e3f4a5b",
    "status": "active"
  }'

Instance States

The instance state field (and the ?state= list filter) takes one of:

StateDescription
activeSLA timer is running
pausedTimer paused (e.g., awaiting customer response)
metThe target was met within its deadline
breachedThe target's deadline was exceeded
cancelledThe timer was cancelled before completion

Access Control

These endpoints are not gated by API-key scopes (there is no sla:* scope). While behind a dashboard session they are protected by role:

OperationsMinimum role
Read (list/get policies, instances, instance events, preview-deadline, analytics, OLA list)tenant_readonly and above — also tenant_user, supervisor, agent, tenant_admin, tenant_owner, super_admin
Write (create/update/delete policies, targets, escalations; reorder; create OLA; run escalations)tenant_admin, tenant_owner, or super_admin

Analytics endpoints additionally require the Professional plan; OLA endpoints additionally require the Enterprise plan (see the sections above).

On this page