OMI-SPEC-010: Platform API
Status
Draft
Version: 0.1
Purpose
The Platform API defines how external applications, plugins, automation tools, and publishing platforms interact with the Open Manuscript Initiative (OMI).
The API is designed around semantic scholarly objects rather than files.
Design Principles
The Platform API follows these principles:
- API First
- Object Oriented
- Event Driven
- Platform Independent
- Versioned
- Secure
- Extensible
API Layers
Applications
↓
REST API
↓
Event API
↓
Plugin API
↓
OMI Core
Core Resources
The API exposes scholarly objects.
Examples:
- Documents
- Sections
- Paragraphs
- Anchors
- Annotations
- Citations
- Metadata
- Reviews
- Datasets
- Authors
- Affiliations
- Publication Profiles
REST API
Typical endpoints include:
GET /documents
POST /documents
GET /documents/{id}
PATCH /documents/{id}
DELETE /documents/{id}
Objects are exchanged as structured JSON.
Object API
Every scholarly object follows a common interface.
Example:
GET /objects/{id}
Response:
{
"id": "omi:citation:8f5a21",
"type": "Citation",
"version": 4,
"metadata": {},
"relationships": {}
}
Event API
OMI publishes events describing changes within the manuscript.
Examples:
- DocumentCreated
- DocumentOpened
- ObjectCreated
- ObjectUpdated
- AnchorCreated
- AnnotationAdded
- CitationValidated
- ReviewSubmitted
- PublicationStarted
- PublicationCompleted
Plugins subscribe to events rather than modifying the Core directly.
Plugin API
Plugins interact with OMI through stable interfaces.
Examples:
register()
activate()
deactivate()
dispose()
Plugins never access internal implementation details.
Rendering API
Publication renderers implement a common interface.
Example:
render(document, profile)
Possible outputs:
- HTML
- EPUB
- DOCX
- JATS XML
- Markdown
Validation API
Validation services may inspect scholarly objects.
Examples:
- Metadata validation
- Citation validation
- Accessibility validation
- Discipline-specific validation
Validation produces structured reports.
Authentication
Possible authentication methods include:
- OAuth 2.1
- OpenID Connect
- API Tokens
- Service Accounts
Authentication methods are implementation-dependent.
Authorization
Permissions may be granted at different levels.
Examples:
- Read Document
- Edit Metadata
- Create Annotation
- Submit Review
- Publish
- Manage Plugins
Authorization should support role-based and object-level access control.
Versioning
The API is versioned.
Example:
/api/v1/
/api/v2/
Breaking changes require a new API version.
Webhooks
External systems may subscribe to events.
Examples:
POST
DocumentPublished
↓
https://journal.example/webhook
Supported events may include:
- publication completed
- review submitted
- manuscript accepted
- metadata updated
Batch Operations
The API should support batch processing.
Examples:
- validate all citations
- regenerate metadata
- export all publication formats
- import object collections
Search API
Search is semantic rather than textual.
Examples:
author = "Smith"
↓
all manuscripts
citation DOI = ...
↓
all references
object type = Figure
↓
all figures
Interoperability
Future integrations include:
- OJS
- OMP
- OPS
- Crossref
- DataCite
- ORCID
- Zenodo
- GitHub
- n8n
- Zotero
Future Work
Future specifications will define:
- Graph API
- Query Language
- Object API
- Synchronisation API
- AI Extension API
Summary
The OMI Platform API provides a stable, versioned, and object-oriented interface for scholarly communication.
Rather than exposing files, the API exposes semantic scholarly objects, enabling interoperability across publishing systems, repositories, automation platforms, and future scholarly infrastructures.