Prologue
Getting started
Basic concepts
App development
ExApp development
Server development
Digging deeper
AI & Machine Learning
APIs & Integration
Users & Authentication
Groupware & Workflows
Search & Discovery
Development Tools
Server Internals
App publishing and maintenance
Interface & interaction design
HTML/CSS guidelines
Clients and Client APIs
Desktop Clients
Nextcloud latest Developer Manual
Digging deeper
Edit on GitHub
Digging deeper
AI & Machine Learning
Context Chat
Implementing a content provider for Context Chat
Task Processing
Consuming the Task Processing API
Implementing a TaskProcessing provider
Provider and task type registration
Machine Translation
Consuming the Translation API
Implementing a Translation provider
Provider registration
Speech-To-Text
Consuming the Speech-To-Text API
Implementing a Speech-To-Text provider
Provider with user context
Provider registration
Text Processing
Consuming the Text Processing API
Implementing a TextProcessing provider
Provider registration
Text-To-Image
Consuming the Text-To-Image API
Implementing a Text-To-Image provider
Provider registration
APIs & Integration
API reference
PHP public API
PHP unstable API
REST APIs
Modifying the CORS headers
Relation of REST and OCS
HTTP Client
Acquiring a HTTP Client
HEAD request
GET request
POST request
PUT request
DELETE request
OPTIONS request
Error handling
JavaScript APIs
npm packages
Events
Global variables
Dashboard
Register a dashboard widget
Provide a user interface
Dashboard API
Email
Basic usage
Inline attachments
Notifications
Public Pages
Concept
Implementing an API called from a public share page
Implementing an authenticated public page
Talk Integration
Check for Talk existence
Create a conversation
Delete a conversation
Web Host Metadata
Writing a handler
Handler registration
Users & Authentication
User management
Creating users
Modifying users
User session information
User objects
User migration
Register a migrator
Profile
Register a profile action
User Status
Query Status
Updating the status programmatically
Out-of-office periods
Access data from within a Nextcloud App via OCP
Listening to events
Common data structure
OpenID Connect (Oidc)
Getting the login token
Token exchange
Generating a token if Nextcloud is the provider
Two-factor providers
Implementing a simple two-factor auth provider
Register the provider state
Registering a two-factor auth provider
Providing an icon (optional)
Provide personal settings (optional)
Make a provider activatable by the admin (optional)
Make a provider deactivatable by the admin (optional)
Groupware & Workflows
Groupware integration
Calendar integration
Integration of custom calendar providers
Contacts Menu
Mail Provider Interface
Nextcloud Flow
Entities
Operations
Configuration Component
Projects
Register a resource provider
Provide a user interface
Search & Discovery
Search
Concept overview
Simple search providers
Advanced search provider
External search provider
Provider registration
Handling search requests
Declare in-app search
Privacy
Reference providers
Display link previews
Use the Smart Picker in your app
Use the Smart Picker in clients
Register a reference provider
Extend link preview support
Extend the Smart Picker
Files Metadata
Concept overview
Consuming the Files Metadata API
Live & Background Events
Read metadata using occ command
Update metadata using PROPPATCH
Delete metadata using PROPPATCH
Retrieve metadata using PROPFIND
WebDAV SEARCH based on metadata
Metadata Query Helper
Development Tools
Debugging
Debug mode
Identifying errors
Debugging variables
Using a PHP debugger (XDebug)
Debugging JavaScript
Debugging HTML and templates
Debugging SQL queries
Using alternative app directories
Profiler
Get the app
Enable the app
Disable the app
Using the app
Contributing
Continuous Integration
Linting
Static analysis
NPM
npm build
npm run dev, npm run watch
npm test
npm run lint (optional)
Performance considerations
PHP Performance
Database performance
Cached data
Getting help
Classloader
Server autoloading
App autoloading
PSR
PSR-0: Autoloading
PSR-3: Logger Interface
PSR-4: Autoloading
PSR-11: Container Interface
PSR-20: Clock
Server Internals
Config & Preferences
AppConfig
UserConfig
Lexicon
Settings
Declarative settings
Settings form
Section
Registering Settings and Sections
Security
Rate Limiting
Remote Host Validation
Trusted domain
Setup checks
Register a setup check
Define a setup check
Repair steps
Creating a repair step
Register a repair-step
Repair-step types
Deadlocks
Understanding the locking situation
Mitigations
References
Snowflake IDs
Store a Snowflake ID in database
Generate a Snowflake ID
Decode a Snowflake ID
Working with time
Methods
Open Metrics exporter
Register a new exporter
Implement a new exporter
WebDAV collection preload events
Overview
When the event is emitted
Subscribing to the event in a plugin
Built-in examples
Best practices
Phone number util
Convert input into standard format
Get the country code for a region
☁️ latest
☁️ Versions
latest
stable
32
31