ITSM Core
Incidents, changes, problems, CMDB, SLA, service catalog, and knowledge base — full ITIL-aligned API reference.
Overview
FlowOS ITSM implements the core ITIL 4 service management processes. Every ITSM record is backed by a DB Studio table and exposed via a typed REST API. ITSM records trigger workflow events, generate audit log entries, and participate in SLA tracking automatically when created.
Incidents
Incidents represent unplanned service disruptions. They have a severity (P1–P4), status lifecycle, assignment, linked CMDB items, and participate in SLA tracking.
/api/v1/itsm/incidentsList incidents with filtering by severity, status, team
/api/v1/itsm/incidentsCreate a new incident
/api/v1/itsm/incidents/:idGet incident detail with timeline
/api/v1/itsm/incidents/:idUpdate incident fields
/api/v1/itsm/incidents/:id/resolveResolve incident (triggers resolved event)
/api/v1/itsm/incidents/:id/escalateEscalate severity or reassign team
/api/v1/itsm/incidents/:id/commentsAdd a timeline comment or work note
/api/v1/itsm/incidents/:id/linkLink to a problem, change, or CMDB item
Create an incident
POST /api/v1/itsm/incidents
{
"title": "API gateway latency spike — p99 > 5s",
"description": "Observed at 09:30 UTC. API gateway reporting p99 latency at 5.4s. Affecting checkout and search services.",
"severity": "P1",
"category": "infrastructure",
"impactedServices": ["checkout", "search"],
"assignedTeam": "infrastructure",
"assignedTo": "usr_alice",
"cmdbItems": ["ci_api_gateway_01"],
"tags": ["latency", "production"],
"source": "monitoring" // "monitoring" | "user_report" | "api" | "workflow"
}Incident schema
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
| id | string | required | — | Unique ID (inc_...) |
| number | string | optional | — | Human-readable number (INC-1042) |
| title | string | required | — | Short description of the incident |
| severity | enum | required | — | P1 | P2 | P3 | P4 |
| status | enum | optional | open | open | investigating | identified | monitoring | resolved | closed |
| assignedTeam | string | optional | — | Team slug responsible for resolution |
| assignedTo | string | optional | — | User ID of the assigned engineer |
| impactedServices | string[] | optional | — | List of impacted service names or IDs |
| cmdbItems | string[] | optional | — | CMDB configuration item IDs related to this incident |
| relatedProblems | string[] | optional | — | Linked problem IDs |
| relatedChanges | string[] | optional | — | Linked change IDs (potential root cause) |
| sla | object | optional | — | SLA state: { policy, dueAt, breached, remainingMs } |
| resolvedAt | timestamp | optional | — | Set when status transitions to resolved |
| rootCause | string | optional | — | Root cause description (filled on resolution) |
Incident events
These events fire on the platform event bus and can trigger workflows:
- •
incident.created— New incident opened - •
incident.updated— Any field changed - •
incident.escalated— Severity raised or team changed - •
incident.resolved— Status set to resolved - •
incident.sla_breached— SLA deadline passed without resolution - •
incident.comment_added— New timeline entry added
Change Management
Changes represent planned modifications to IT infrastructure or services. They have an approval workflow (CAB), a risk assessment, and a rollback plan.
/api/v1/itsm/changesList change requests
/api/v1/itsm/changesCreate a change request
/api/v1/itsm/changes/:idGet change detail with approvals and timeline
/api/v1/itsm/changes/:idUpdate change fields
/api/v1/itsm/changes/:id/submitSubmit for CAB review
/api/v1/itsm/changes/:id/approveApprove the change (CAB member)
/api/v1/itsm/changes/:id/rejectReject the change with a reason
/api/v1/itsm/changes/:id/implementMark implementation started
/api/v1/itsm/changes/:id/completeMark change completed
/api/v1/itsm/changes/:id/rollbackMark change rolled back
POST /api/v1/itsm/changes
{
"title": "Upgrade PostgreSQL from 15 to 16 on prod-db-01",
"type": "normal", // "standard" | "normal" | "emergency"
"category": "database",
"risk": "medium", // "low" | "medium" | "high" | "critical"
"impact": "medium",
"description": "Version upgrade to gain performance improvements and security patches.",
"implementationPlan": "1. Take snapshot. 2. Stop app servers. 3. Upgrade PG. 4. Run health checks. 5. Restart app servers.",
"rollbackPlan": "Restore from pre-upgrade snapshot. ETA: 20 minutes.",
"testPlan": "Run query performance benchmarks before and after. Validate replication.",
"scheduledStart": "2026-06-15T02:00:00Z",
"scheduledEnd": "2026-06-15T04:00:00Z",
"assignedTeam": "database",
"cabReviewers": ["usr_dba_lead", "usr_platform_mgr"]
}Problem Management
/api/v1/itsm/problemsList problems
/api/v1/itsm/problemsCreate a problem record
/api/v1/itsm/problems/:idUpdate problem fields
/api/v1/itsm/problems/:id/known-errorMark as known error with workaround
/api/v1/itsm/problems/:id/resolveResolve the problem
/api/v1/itsm/known-errorsList all known errors with workarounds
SLA Management
SLA policies define response and resolution time targets per severity/category. FlowOS automatically calculates SLA deadlines and fires breach events when thresholds are crossed.
/api/v1/itsm/sla-policiesList SLA policies
/api/v1/itsm/sla-policiesCreate an SLA policy
/api/v1/itsm/incidents/:id/slaGet SLA status for an incident
POST /api/v1/itsm/sla-policies
{
"name": "Enterprise P1 SLA",
"appliesTo": { "entityType": "incident", "severity": "P1" },
"businessHours": {
"timezone": "America/New_York",
"schedule": "24x7" // "24x7" | "business_hours" | custom schedule id
},
"targets": {
"firstResponse": { "hours": 0.25 }, // 15 minutes
"resolution": { "hours": 1 }
},
"escalations": [
{ "at": "50%", "action": "notify", "notify": ["assigned_team_lead"] },
{ "at": "75%", "action": "escalate", "escalateTo": "incident_manager" },
{ "at": "100%", "action": "breach", "triggerWorkflow": "wf_sla_breach_response" }
]
}CMDB
The Configuration Management Database stores configuration items (CIs) — hardware, software, services, and relationships between them.
/api/v1/cmdb/itemsList configuration items
/api/v1/cmdb/itemsCreate a CI
/api/v1/cmdb/items/:idGet CI with relationships
/api/v1/cmdb/items/:idUpdate CI attributes
/api/v1/cmdb/items/:id/relationshipsAdd a relationship to another CI
/api/v1/cmdb/topologyGet the full dependency graph as nodes/edges
Knowledge Base
/api/v1/knowledgeList articles with search and category filter
/api/v1/knowledgeCreate a knowledge article
/api/v1/knowledge/:idGet full article content
/api/v1/knowledge/:idUpdate article content or metadata
/api/v1/knowledge/searchFull-text semantic search across articles
// Semantic search
POST /api/v1/knowledge/search
{
"query": "how to reset VPN credentials for remote access",
"limit": 5,
"filters": { "category": "networking", "status": "published" }
}Service Catalog
/api/v1/catalog/itemsList service catalog items (public)
/api/v1/catalog/requestsSubmit a service request
/api/v1/catalog/requests/:idGet request status and approvals
POST /api/v1/catalog/requests
{
"catalogItemId": "cat_laptop_request",
"requestedBy": "usr_01HZ...",
"fields": {
"laptopModel": "MacBook Pro 16",
"justification": "Current laptop failing, impacting productivity",
"urgency": "high"
}
}catalog.request_submitted event to customize the fulfillment flow.CSAT Auto-Trigger
When a ticket created via the guest portal is resolved or closed, FlowOS automatically schedules a CSAT (Customer Satisfaction) survey email to the guest 30 minutes after resolution. Ratings are stored in csat_tokens and visible in the portal analytics dashboard.
- •Survey email is sent 30 minutes after
status = resolved | closed - •Star ratings 1–5 are captured via one-click email links
- •Guests can add a text comment on the CSAT page
- •Tokens expire after 30 days
/api/portal/public/:slug/csat/:ref?rating=X&token=YYYRecord rating from email click (returns HTML confirmation page)
/api/portal/public/:slug/csat/:refSubmit rating + comment (body: { token, rating, comment })
Guest Ticket Email Threading
When an agent adds a public note (not a work note) on a ticket that has a guestEmail in its metadata, FlowOS sends a magic-link email to the guest. The link opens a thread view where the guest can see the conversation and reply without logging in.
- •Magic link tokens are stored in
portal_thread_tokens— one per email sent - •Tokens expire after 30 days
- •Guest replies are added as public comments on the ticket
- •The assigned agent is notified by email when a guest replies
/api/portal/public/:slug/ticket/:ref/thread?token=ABCGet ticket thread — full public conversation history
/api/portal/public/:slug/ticket/:ref/comment?token=ABCAdd guest reply (body: { message })