Developing Plugins
- General Concepts
- Control Properties
- Mixins
- Hooks
- General Concepts
- Execution Order
- Available plugin hooks
- octoprint.access.permissions
- octoprint.access.users.factory
- octoprint.accesscontrol.keyvalidator
- octoprint.cli.commands
- octoprint.comm.protocol.firmware.info
- octoprint.comm.protocol.firmware.capabilities
- octoprint.comm.protocol.firmware.capability_report
- octoprint.comm.protocol.action
- octoprint.comm.protocol.atcommand.<phase>
- octoprint.comm.protocol.gcode.<phase>
- octoprint.comm.protocol.gcode.received
- octoprint.comm.protocol.gcode.error
- octoprint.comm.protocol.scripts
- octoprint.comm.protocol.temperatures.received
- octoprint.comm.transport.serial.additional_port_names
- octoprint.comm.transport.serial.factory
- octoprint.events.register_custom_events
- octoprint.filemanager.analysis.factory
- octoprint.filemanager.extension_tree
- octoprint.filemanager.preprocessor
- octoprint.plugin.backup.additional_excludes
- octoprint.plugin.backup.before_backup
- octoprint.plugin.backup.after_backup
- octoprint.plugin.backup.before_restore
- octoprint.plugin.backup.after_restore
- octoprint.plugin.pluginmanager.reconnect_hooks
- octoprint.plugin.softwareupdate.check_config
- octoprint.printer.additional_state_data
- octoprint.printer.factory
- octoprint.printer.handle_connect
- octoprint.printer.estimation.factory
- octoprint.printer.sdcardupload
- octoprint.server.api.after_request
- octoprint.server.api.before_request
- octoprint.server.http.access_validator
- octoprint.server.http.bodysize
- octoprint.server.http.routes
- octoprint.server.sockjs.authed
- octoprint.server.sockjs.register
- octoprint.server.sockjs.emit
- octoprint.system.additional_commands
- octoprint.systeminfo.additional_bundle_files
- octoprint.timelapse.extensions
- octoprint.ui.web.templatetypes
- octoprint.theming.<dialog>
- octoprint.timelapse.capture.pre
- octoprint.timelapse.capture.post
- Helpers
- Injected Properties
- Viewmodels
- Plugin Tutorial
- Saying hello: How to make the plugin actually do something
- Growing up: How to make it distributable
- Frontend fun: How to add functionality to OctoPrint’s web interface
- Settings Galore: How to make parts of your plugin user adjustable
- More frontend fun: Adding custom javascript to your frontend components
- Style matters: Injecting custom CSS into the page
- Where do we go from here?
- Distributing your plugin
- Migrating to Python 3