-
Notifications
You must be signed in to change notification settings - Fork 15
REST API OpenAPI
FreeITSM publishes a machine-readable OpenAPI 3.0.3 description of the whole REST API. Point any OpenAPI-aware tool at it to import every endpoint, generate a client library, or drive a test suite β no copying from the docs by hand.
Note
For a human, browsing walkthrough use the interactive docs page inside the product (System β API β Documentation, how to use it). The OpenAPI document is the same surface in a form tools consume.
Important
openapi.json is not the same file as spec.json β and it's an easy mix-up. api/v1/spec.json is FreeITSM's own internal catalogue format (the file a developer edits, described in Maintaining the API catalogue). openapi.json is the standard OpenAPI document generated from it β the format Postman and code generators understand. You edit spec.json; openapi.json regenerates itself. Nobody edits openapi.json by hand.
spec.json ββ(generator: api/v1/lib/openapi.php)βββΊ /api/v1/openapi.json
(our format, hand-edited) (standard OpenAPI, generated, tool-facing)
Every install serves the document from its own API, no key required (it is public documentation and contains no secrets β only the shape of the API):
| Format | URL |
|---|---|
| JSON (canonical) | https://your-server/api/v1/openapi.json |
| YAML | https://your-server/api/v1/openapi.yaml |
Both are the same document. JSON is the canonical form; YAML is provided for the tools and people who prefer it. Without URL rewriting the same content is at β¦/api/v1/openapi.php and β¦/api/v1/openapi.php?format=yaml.
The servers entry uses a relative URL (/api/v1), so the document is correct on every install without anyone editing a hostname β a tool resolves calls against wherever it fetched the document from.
- All 203 operations across the 15 modules, grouped by tag (Tickets, Assets, CMDB, Network Mapper, β¦).
-
Typed response schemas β roughly 200 reusable component schemas, referenced with
$ref. Every field the API returns is described with its type and nullability, so a generated client gets real model classes rather than untyped maps. -
Request bodies with worked examples for every
POST/PATCH, drawn from the same example set as the interactive docs. - Per-operation errors β the HTTP statuses and error codes each endpoint can return, so a client can branch on them.
- The security scheme β HTTP bearer authentication, applied to every operation.
-
The success code each operation actually returns β
201on creation,200otherwise β read from the handlers themselves rather than assumed.
Import by URL: Import β Link β paste https://your-server/api/v1/openapi.json. You get a collection with every endpoint, its parameters, and example bodies ready to send. Add your API key as a bearer token at the collection level.
Point either at the JSON URL to get a browsable reference. (These render the document; the in-product docs page is the one wired to run live calls against your install.)
Use openapi-generator or swagger-codegen against the JSON URL, e.g.:
openapi-generator-cli generate \
-i https://your-server/api/v1/openapi.json \
-g python -o ./freeitsm-clientThe typed schemas mean the generated models carry the real fields and types. Generators exist for C#, Python, TypeScript, Go, Java, PHP, Ruby and many more.
Because the document is generated from the live route table and verified against real responses (see how it's kept correct), it is safe to use as the contract in tests, or to stand up a mock server (e.g. Prism) from it.
The document is generated on each request from the route table, the docs catalogue and the typed schemas β it is not a file anyone edits by hand, so it always reflects the API the install is actually running. There is nothing to regenerate or republish after an upgrade.
- The version is 3.0.3, chosen for the widest tooling support.
- Dynamic JSON payloads β workflow conditions and actions, form field definitions, workflow-execution logs and trigger payloads β are described as open objects, because their inner shape varies by design.
- Request bodies are documented with worked examples and validated field-by-field by the API at call time; response bodies additionally carry full typed schemas.
See also: How the OpenAPI document is kept correct Β· REST API (how the API works) Β· Using the API documentation page.
FreeITSM β an open-source IT Service Management platform Β· github.com/edmozley/freeitsm Β· MIT licence
- Installation
- β° Scheduled tasks (cron jobs)
- Architecture
- AI Providers
- Internationalisation (i18n)
- Timezones & Time Handling
- Theming & Dark Mode
- β¨οΈ Command palette (βK)
- π Searching inside tickets
- π Attached documents
- MobileβFriendly
-
Security
- Layer 1 β which modules you can enter
- β³ π§© Module Access Control
- β³ π οΈ Module Access β Developer Guide
- Layer 2 β what you can administer
- β³ π Roles & Permissions
- β³ π οΈ Roles β Developer Guide
- β³ π€ Why capabilities are constants
- Layer 3 β the System module
- β³ π Admin Access Control
- Hardening
- β³ π Security review response 2026-08
- β³ π‘οΈ Security hardening 2026-08
- β³ π οΈ Security hardening 2026-08 β Developer Guide
- β³ π‘οΈ Round three β plain English
- β³ π οΈ Round three β Developer Guide
- Single Sign-On (SSO)
- ποΈ LDAP & Active Directory
- Browser Extension
- API Reference
-
π REST API β how it works
- β³ π« REST API: Tickets
- β³ π» REST API: Assets
- β³ π΄ REST API: Problems
- β³ π REST API: Changes
- β³ π REST API: Knowledge
- β³ β REST API: Tasks
- β³ ποΈ REST API: CMDB
- β³ π REST API: Contracts
- β³ ποΈ REST API: Calendar
- β³ πΏ REST API: Software
- β³ π¦ REST API: Service Status
- β³ βοΈ REST API: Morning Checks
- β³ π REST API: Forms
- β³ βοΈ REST API: Workflow
- β³ πΊοΈ REST API: Network Mapper
- β³ π§ Using the API docs page
- β³ π OpenAPI specification
- β³ β OpenAPI: kept correct
- β³ π οΈ Maintaining the catalogue
- Watchtower
-
Tickets
- β³ Mailbox Authentication
- β³ π€ Email send log
- β³ Basic IMAP mailboxes
- β³ Email rendering & images
- β³ SLA Management
- β³ WhatsApp channel
- β³ π¬ Web chat channel
- β³ π£ Slack channel
- β³ π Linking tickets
- β³ ποΈ Canned responses
- β³ βοΈ Limiting replies to particular senders
- β³ βοΈ Email signatures
- β³ π The public web address
- β³ π’ Ticket numbering
- β³ π Raising a ticket for someone else
- β³ π Merging tickets
- β³ β Splitting tickets
- β³ β Selecting several tickets
- β³ π οΈ Snoozing tickets β Developer Guide
- β³ π₯ Collision detection
- β³ β±οΈ Time tracking
- Problem Management
- Tasks
- Assets
- Knowledge
- Change Management
- Calendar
- Morning Checks
- Reporting
- Software
- Forms
- Contracts
- Service Status
- π Notifications
- π¨ War Room
- Self-Service Portal
- LMS
- Process Mapper
- CMDB
- Network Mapper
- Workflows
- Issue trackers (Jira, Azure DevOps)
- System
-
Overview
- β³ π Progress tracker
- β³ Concepts & vocabulary
- β³ Email routing & mailboxes
- β³ Settings: global vs per-company
- β³ Users & self-service
- β³ Staff cross-company access
- β³ Worked examples
- β³ Pitfalls & gotchas
- β³ Scope: what it's for
- β³ π οΈ Developer Guide (make a module multi-company)
- β³ ποΈ Case study: CMDB (a linked graph)
- β³ π§ͺ Test harness (prove it's isolated)