octoprint.schema
- class octoprint.schema.BaseModel
- model_computed_fields: ClassVar[Dict[str, ComputedFieldInfo]] = {}
A dictionary of computed field names and their corresponding ComputedFieldInfo objects.
- model_config: ClassVar[ConfigDict] = {'use_enum_values': True, 'validate_default': True}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
octoprint.schema.config
- class octoprint.schema.config.Config(*, accessControl: AccessControlConfig = AccessControlConfig(salt=None, userManager='octoprint.access.users.FilebasedUserManager', groupManager='octoprint.access.groups.FilebasedGroupManager', permissionManager='octoprint.access.permissions.PermissionManager', userfile=None, groupfile=None, autologinLocal=False, localNetworks=['127.0.0.0/8', '::1/128'], autologinAs=None, autologinHeadsupAcknowledged=False, trustBasicAuthentication=False, checkBasicAuthenticationPassword=True, trustRemoteUser=False, remoteUserHeader='REMOTE_USER', trustRemoteGroups=False, remoteGroupsHeader='REMOTE_GROUPS', remoteGroupsMapping={}, addRemoteUsers=False, defaultReauthenticationTimeout=5), api: ApiConfig = ApiConfig(allowCrossOrigin=False), appearance: AppearanceConfig = AppearanceConfig(name='', color='default', colorTransparent=False, colorIcon=True, defaultLanguage='_default', showFahrenheitAlso=False, fuzzyTimes=True, closeModalsWithClick=True, showInternalFilename=True, components=ComponentConfig(order=ComponentOrderConfig(navbar=['settings', 'systemmenu', 'plugin_announcements', 'plugin_logging_seriallog', 'plugin_logging_plugintimingslog', 'plugin_pi_support', 'plugin_health_check', 'login'], sidebar=['plugin_firmware_check_warning', 'plugin_firmware_check_info', 'connection', 'state', 'files'], tab=['temperature', 'control', 'plugin_gcodeviewer', 'terminal', 'timelapse'], settings=['section_printer', 'serial', 'printerprofiles', 'temperatures', 'terminalfilters', 'gcodescripts', 'section_features', 'features', 'webcam', 'accesscontrol', 'plugin_gcodeviewer', 'api', 'plugin_appkeys', 'section_octoprint', 'server', 'folders', 'appearance', 'plugin_logging', 'plugin_pluginmanager', 'plugin_softwareupdate', 'plugin_announcements', 'plugin_eventmanager', 'plugin_backup', 'plugin_tracking', 'plugin_errortracking', 'plugin_pi_support'], usersettings=['access', 'interface'], wizard=['plugin_softwareupdate_update', 'plugin_backup', 'plugin_corewizard_acl', 'plugin_corewizard_onlinecheck'], about=['about', 'plugin_pi_support', 'supporters', 'authors', 'changelog', 'license', 'thirdparty', 'plugin_pluginmanager', 'plugin_achievements', 'plugin_achievements_2', 'systeminfo'], generic=[]), disabled=ComponentDisabledConfig(navbar=[], sidebar=[], tab=[], settings=[], usersettings=[], wizard=[], about=[], generic=[]))), controls: List[ControlConfig | ContainerConfig] = [], devel: DevelConfig = DevelConfig(stylesheet='css', cache=DevelCacheConfig(enabled=True, preemptive=True), webassets=DevelWebassetsConfig(bundle=True, clean_on_startup=True, minify=True, minify_plugins=False), useFrozenDictForPrinterState=True, showLoadingAnimation=True, sockJsConnectTimeout=30.0, pluginTimings=False, enableRateLimiter=True, enableCsrfProtection=True), estimation: EstimationConfig = EstimationConfig(printTime=PrintTimeEstimationConfig(statsWeighingUntil=0.5, validityRange=0.15, forceDumbFromPercent=0.3, forceDumbAfterMin=30.0, stableThreshold=60)), events: EventsConfig = EventsConfig(enabled=True, subscriptions=[]), feature: FeatureConfig = FeatureConfig(temperatureGraph=True, sdSupport=True, keyboardControl=True, pollWatched=False, modelSizeDetection=True, rememberFileFolder=False, printStartConfirmation=False, printCancelConfirmation=True, uploadOverwriteConfirmation=True, autoUppercaseBlacklist=['M117', 'M118', 'M707', 'M708'], g90InfluencesExtruder=False, enforceReallyUniversalFilenames=False, enableDragDropUpload=True), folder: FolderConfig = FolderConfig(uploads=None, timelapse=None, timelapse_tmp=None, logs=None, virtualSd=None, watched=None, plugins=None, slicingProfiles=None, printerProfiles=None, scripts=None, translations=None, generated=None, data=None), gcodeAnalysis: GcodeAnalysisConfig = GcodeAnalysisConfig(maxExtruders=10, throttle_normalprio=0.01, throttle_highprio=0.0, throttle_lines=100, runAt='idle', bedZ=0.0), plugins: PluginsConfig = PluginsConfig(disabled=[], forced_compatible=[], sorting_order={}, flags={}), printerParameters: PrinterParametersConfig = PrinterParametersConfig(pauseTriggers=[]), printerProfiles: PrinterProfilesConfig = PrinterProfilesConfig(default=None), scripts: ScriptsConfig = ScriptsConfig(gcode=GcodeScriptsConfig(afterPrinterConnected=None, beforePrinterDisconnected=None, beforePrintStarted=None, afterPrintCancelled="; disable motors\nM84\n\n;disable all heaters\n{% snippet 'disable_hotends' %}\n{% snippet 'disable_bed' %}\n;disable fan\nM106 S0", afterPrintDone=None, beforePrintPaused=None, afterPrintResumed=None, beforeToolChange=None, afterToolChange=None, snippets={'disable_hotends': '{% if printer_profile.extruder.sharedNozzle %}M104 T0 S0\n{% else %}{% for tool in range(printer_profile.extruder.count) %}M104 T{{ tool }} S0\n{% endfor %}{% endif %}', 'disable_bed': '{% if printer_profile.heatedBed %}M140 S0\n{% endif %}'})), serial: SerialConfig = SerialConfig(port=None, baudrate=None, exclusive=True, lowLatency=False, autoconnect=False, autorefresh=True, autorefreshInterval=1, log=False, timeout=SerialTimeoutConfig(detectionFirst=10.0, detectionConsecutive=2.0, connection=10.0, communication=30.0, communicationBusy=3.0, temperature=5.0, temperatureTargetSet=2.0, temperatureAutoreport=2.0, sdStatus=1.0, sdStatusAutoreport=1.0, posAutoreport=5.0, resendOk=0.5, baudrateDetectionPause=1.0, positionLogWait=10.0), maxCommunicationTimeouts=SerialMaxTimeouts(idle=2, printing=5, long=5), maxWritePasses=5, additionalPorts=[], additionalBaudrates=[], blacklistedPorts=[], blacklistedBaudrates=[], longRunningCommands=['G4', 'G28', 'G29', 'G30', 'G32', 'M400', 'M226', 'M600'], blockedCommands=['M0', 'M1'], ignoredCommands=[], pausingCommands=['M0', 'M1', 'M25'], emergencyCommands=['M112', 'M108', 'M410'], checksumRequiringCommands=['M110'], helloCommand='M110 N0', suppressSecondHello=False, disconnectOnErrors=True, ignoreErrorsFromFirmware=False, terminalLogSize=20, lastLineBufferSize=50, logResends=True, supportResendsWithoutOk='detect', logPositionOnPause=True, logPositionOnCancel=False, abortHeatupOnCancel=True, waitForStartOnConnect=False, waitToLoadSdFileList=True, alwaysSendChecksum=False, neverSendChecksum=False, sendChecksumWithUnknownCommands=False, unknownCommandsNeedAck=False, sdRelativePath=False, sdAlwaysAvailable=False, sdLowerCase=False, sdCancelCommand='M25', maxNotSdPrinting=2, swallowOkAfterResend=True, repetierTargetTemp=False, externalHeatupDetection=True, supportWait=True, ignoreIdenticalResends=False, identicalResendsCountdown=7, supportFAsCommand=False, firmwareDetection=True, blockWhileDwelling=False, useParityWorkaround='detect', maxConsecutiveResends=10, sendM112OnError=True, disableSdPrintingDetection=False, ackMax=1, sanityCheckTools=True, notifySuppressedCommands='warn', capabilities=SerialCapabilities(autoreport_temp=True, autoreport_sdstatus=True, autoreport_pos=True, busy_protocol=True, emergency_parser=True, extended_m20=True, lfn_write=True), resendRatioThreshold=10, resendRatioStart=100, ignoreEmptyPorts=False, encoding='ascii', enableShutdownActionCommand=False, triggerOkForM29=True), server: ServerConfig = ServerConfig(host=None, port=5000, firstRun=True, startOnceInSafeMode=False, ignoreIncompleteStartup=False, seenWizards={}, secretKey=None, heartbeat=900, reverseProxy=ReverseProxyConfig(prefixHeader=None, schemeHeader=None, hostHeader=None, serverHeader=None, portHeader=None, prefixFallback=None, schemeFallback=None, hostFallback=None, serverFallback=None, portFallback=None, trustedProxies=[], trustLocalhostProxies=True), uploads=UploadsConfig(maxSize=1073741824, nameSuffix='name', pathSuffix='path'), maxSize=102400, commands=CommandsConfig(systemShutdownCommand=None, systemRestartCommand=None, serverRestartCommand=None, localPipCommand=None), onlineCheck=OnlineCheckConfig(enabled=None, interval=900, host='1.1.1.1', port=53, name='octoprint.org'), pluginBlacklist=PluginBlacklistConfig(enabled=None, url='https://plugins.octoprint.org/blacklist.json', ttl=900, timeout=3.05), pythonEolCheck=PythonEolCheckConfig(enabled=True, url='https://get.octoprint.org/python-eol', ttl=1440, fallback={'3.7': PythonEolEntry(date='2023-06-27', last_octoprint='1.11.*'), '3.8': PythonEolEntry(date='2024-10-31', last_octoprint=None)}), diskspace=DiskspaceConfig(warning=524288000, critical=209715200), preemptiveCache=PreemptiveCacheConfig(exceptions=[], until=7), ipCheck=IpCheckConfig(enabled=True, trustedSubnets=[]), allowFraming=False, cookies=CookiesConfig(secure=False, samesite='Lax'), allowedLoginRedirectPaths=[]), slicing: SlicingConfig = SlicingConfig(enabled=True, defaultSlicer=None, defaultProfiles={}), system: SystemConfig = SystemConfig(actions=[]), temperature: TemperatureConfig = TemperatureConfig(profiles=[TemperatureProfile(name='ABS', extruder=210, bed=100), TemperatureProfile(name='PLA', extruder=180, bed=60)], cutoff=30, sendAutomatically=False, sendAutomaticallyAfter=1), terminalFilters: List[TerminalFilterEntry] = [TerminalFilterEntry(name='Suppress temperature messages', regex='(Send: (N\\d+\\s+)?M105)|(Recv:\\s+(ok\\s+([PBN]\\d+\\s+)*)?([BCLPR]|T\\d*):-?\\d+)'), TerminalFilterEntry(name='Suppress SD status messages', regex='(Send: (N\\d+\\s+)?M27)|(Recv: SD printing byte)|(Recv: Not SD printing)'), TerminalFilterEntry(name='Suppress position messages', regex='(Send:\\s+(N\\d+\\s+)?M114)|(Recv:\\s+(ok\\s+)?X:[+-]?([0-9]*[.])?[0-9]+\\s+Y:[+-]?([0-9]*[.])?[0-9]+\\s+Z:[+-]?([0-9]*[.])?[0-9]+\\s+E\\d*:[+-]?([0-9]*[.])?[0-9]+).*'), TerminalFilterEntry(name='Suppress wait responses', regex='Recv: wait'), TerminalFilterEntry(name='Suppress processing responses', regex='Recv: (echo:\\s*)?busy:\\s*processing')], webcam: WebcamConfig = WebcamConfig(webcamEnabled=True, timelapseEnabled=True, ffmpeg=None, ffmpegThreads=1, ffmpegVideoCodec='libx264', bitrate='10000k', watermark=True, ffmpegCommandline='{ffmpeg} -framerate {fps} -i "{input}" -vcodec {videocodec} -threads {threads} -b:v {bitrate} -f {containerformat} -y {filters} "{output}"', ffmpegThumbnailCommandline='{ffmpeg} -sseof -1 -i "{input}" -update 1 -q:v 0.7 "{output}"', timelapse=TimelapseConfig(type='off', fps=25, postRoll=0, renderAfterPrint='always', options=TimelapseOptions(interval=None, capturePostRoll=None, retractionZHop=None)), cleanTmpAfterDays=7, defaultWebcam='classic', snapshotWebcam='classic'))
- accessControl: AccessControlConfig
- appearance: AppearanceConfig
- controls: List[ControlConfig | ContainerConfig]
- devel: DevelConfig
- estimation: EstimationConfig
- events: EventsConfig
- feature: FeatureConfig
- folder: FolderConfig
- gcodeAnalysis: GcodeAnalysisConfig
- model_computed_fields: ClassVar[Dict[str, ComputedFieldInfo]] = {}
A dictionary of computed field names and their corresponding ComputedFieldInfo objects.
- model_config: ClassVar[ConfigDict] = {'use_enum_values': True, 'validate_default': True}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- model_fields: ClassVar[Dict[str, FieldInfo]] = {'accessControl': FieldInfo(annotation=AccessControlConfig, required=False, default=AccessControlConfig(salt=None, userManager='octoprint.access.users.FilebasedUserManager', groupManager='octoprint.access.groups.FilebasedGroupManager', permissionManager='octoprint.access.permissions.PermissionManager', userfile=None, groupfile=None, autologinLocal=False, localNetworks=['127.0.0.0/8', '::1/128'], autologinAs=None, autologinHeadsupAcknowledged=False, trustBasicAuthentication=False, checkBasicAuthenticationPassword=True, trustRemoteUser=False, remoteUserHeader='REMOTE_USER', trustRemoteGroups=False, remoteGroupsHeader='REMOTE_GROUPS', remoteGroupsMapping={}, addRemoteUsers=False, defaultReauthenticationTimeout=5)), 'api': FieldInfo(annotation=ApiConfig, required=False, default=ApiConfig(allowCrossOrigin=False)), 'appearance': FieldInfo(annotation=AppearanceConfig, required=False, default=AppearanceConfig(name='', color='default', colorTransparent=False, colorIcon=True, defaultLanguage='_default', showFahrenheitAlso=False, fuzzyTimes=True, closeModalsWithClick=True, showInternalFilename=True, components=ComponentConfig(order=ComponentOrderConfig(navbar=['settings', 'systemmenu', 'plugin_announcements', 'plugin_logging_seriallog', 'plugin_logging_plugintimingslog', 'plugin_pi_support', 'plugin_health_check', 'login'], sidebar=['plugin_firmware_check_warning', 'plugin_firmware_check_info', 'connection', 'state', 'files'], tab=['temperature', 'control', 'plugin_gcodeviewer', 'terminal', 'timelapse'], settings=['section_printer', 'serial', 'printerprofiles', 'temperatures', 'terminalfilters', 'gcodescripts', 'section_features', 'features', 'webcam', 'accesscontrol', 'plugin_gcodeviewer', 'api', 'plugin_appkeys', 'section_octoprint', 'server', 'folders', 'appearance', 'plugin_logging', 'plugin_pluginmanager', 'plugin_softwareupdate', 'plugin_announcements', 'plugin_eventmanager', 'plugin_backup', 'plugin_tracking', 'plugin_errortracking', 'plugin_pi_support'], usersettings=['access', 'interface'], wizard=['plugin_softwareupdate_update', 'plugin_backup', 'plugin_corewizard_acl', 'plugin_corewizard_onlinecheck'], about=['about', 'plugin_pi_support', 'supporters', 'authors', 'changelog', 'license', 'thirdparty', 'plugin_pluginmanager', 'plugin_achievements', 'plugin_achievements_2', 'systeminfo'], generic=[]), disabled=ComponentDisabledConfig(navbar=[], sidebar=[], tab=[], settings=[], usersettings=[], wizard=[], about=[], generic=[])))), 'controls': FieldInfo(annotation=List[Union[ControlConfig, ContainerConfig]], required=False, default=[]), 'devel': FieldInfo(annotation=DevelConfig, required=False, default=DevelConfig(stylesheet='css', cache=DevelCacheConfig(enabled=True, preemptive=True), webassets=DevelWebassetsConfig(bundle=True, clean_on_startup=True, minify=True, minify_plugins=False), useFrozenDictForPrinterState=True, showLoadingAnimation=True, sockJsConnectTimeout=30.0, pluginTimings=False, enableRateLimiter=True, enableCsrfProtection=True)), 'estimation': FieldInfo(annotation=EstimationConfig, required=False, default=EstimationConfig(printTime=PrintTimeEstimationConfig(statsWeighingUntil=0.5, validityRange=0.15, forceDumbFromPercent=0.3, forceDumbAfterMin=30.0, stableThreshold=60))), 'events': FieldInfo(annotation=EventsConfig, required=False, default=EventsConfig(enabled=True, subscriptions=[])), 'feature': FieldInfo(annotation=FeatureConfig, required=False, default=FeatureConfig(temperatureGraph=True, sdSupport=True, keyboardControl=True, pollWatched=False, modelSizeDetection=True, rememberFileFolder=False, printStartConfirmation=False, printCancelConfirmation=True, uploadOverwriteConfirmation=True, autoUppercaseBlacklist=['M117', 'M118', 'M707', 'M708'], g90InfluencesExtruder=False, enforceReallyUniversalFilenames=False, enableDragDropUpload=True)), 'folder': FieldInfo(annotation=FolderConfig, required=False, default=FolderConfig(uploads=None, timelapse=None, timelapse_tmp=None, logs=None, virtualSd=None, watched=None, plugins=None, slicingProfiles=None, printerProfiles=None, scripts=None, translations=None, generated=None, data=None)), 'gcodeAnalysis': FieldInfo(annotation=GcodeAnalysisConfig, required=False, default=GcodeAnalysisConfig(maxExtruders=10, throttle_normalprio=0.01, throttle_highprio=0.0, throttle_lines=100, runAt='idle', bedZ=0.0)), 'plugins': FieldInfo(annotation=PluginsConfig, required=False, default=PluginsConfig(disabled=[], forced_compatible=[], sorting_order={}, flags={})), 'printerParameters': FieldInfo(annotation=PrinterParametersConfig, required=False, default=PrinterParametersConfig(pauseTriggers=[])), 'printerProfiles': FieldInfo(annotation=PrinterProfilesConfig, required=False, default=PrinterProfilesConfig(default=None)), 'scripts': FieldInfo(annotation=ScriptsConfig, required=False, default=ScriptsConfig(gcode=GcodeScriptsConfig(afterPrinterConnected=None, beforePrinterDisconnected=None, beforePrintStarted=None, afterPrintCancelled="; disable motors\nM84\n\n;disable all heaters\n{% snippet 'disable_hotends' %}\n{% snippet 'disable_bed' %}\n;disable fan\nM106 S0", afterPrintDone=None, beforePrintPaused=None, afterPrintResumed=None, beforeToolChange=None, afterToolChange=None, snippets={'disable_hotends': '{% if printer_profile.extruder.sharedNozzle %}M104 T0 S0\n{% else %}{% for tool in range(printer_profile.extruder.count) %}M104 T{{ tool }} S0\n{% endfor %}{% endif %}', 'disable_bed': '{% if printer_profile.heatedBed %}M140 S0\n{% endif %}'}))), 'serial': FieldInfo(annotation=SerialConfig, required=False, default=SerialConfig(port=None, baudrate=None, exclusive=True, lowLatency=False, autoconnect=False, autorefresh=True, autorefreshInterval=1, log=False, timeout=SerialTimeoutConfig(detectionFirst=10.0, detectionConsecutive=2.0, connection=10.0, communication=30.0, communicationBusy=3.0, temperature=5.0, temperatureTargetSet=2.0, temperatureAutoreport=2.0, sdStatus=1.0, sdStatusAutoreport=1.0, posAutoreport=5.0, resendOk=0.5, baudrateDetectionPause=1.0, positionLogWait=10.0), maxCommunicationTimeouts=SerialMaxTimeouts(idle=2, printing=5, long=5), maxWritePasses=5, additionalPorts=[], additionalBaudrates=[], blacklistedPorts=[], blacklistedBaudrates=[], longRunningCommands=['G4', 'G28', 'G29', 'G30', 'G32', 'M400', 'M226', 'M600'], blockedCommands=['M0', 'M1'], ignoredCommands=[], pausingCommands=['M0', 'M1', 'M25'], emergencyCommands=['M112', 'M108', 'M410'], checksumRequiringCommands=['M110'], helloCommand='M110 N0', suppressSecondHello=False, disconnectOnErrors=True, ignoreErrorsFromFirmware=False, terminalLogSize=20, lastLineBufferSize=50, logResends=True, supportResendsWithoutOk='detect', logPositionOnPause=True, logPositionOnCancel=False, abortHeatupOnCancel=True, waitForStartOnConnect=False, waitToLoadSdFileList=True, alwaysSendChecksum=False, neverSendChecksum=False, sendChecksumWithUnknownCommands=False, unknownCommandsNeedAck=False, sdRelativePath=False, sdAlwaysAvailable=False, sdLowerCase=False, sdCancelCommand='M25', maxNotSdPrinting=2, swallowOkAfterResend=True, repetierTargetTemp=False, externalHeatupDetection=True, supportWait=True, ignoreIdenticalResends=False, identicalResendsCountdown=7, supportFAsCommand=False, firmwareDetection=True, blockWhileDwelling=False, useParityWorkaround='detect', maxConsecutiveResends=10, sendM112OnError=True, disableSdPrintingDetection=False, ackMax=1, sanityCheckTools=True, notifySuppressedCommands='warn', capabilities=SerialCapabilities(autoreport_temp=True, autoreport_sdstatus=True, autoreport_pos=True, busy_protocol=True, emergency_parser=True, extended_m20=True, lfn_write=True), resendRatioThreshold=10, resendRatioStart=100, ignoreEmptyPorts=False, encoding='ascii', enableShutdownActionCommand=False, triggerOkForM29=True)), 'server': FieldInfo(annotation=ServerConfig, required=False, default=ServerConfig(host=None, port=5000, firstRun=True, startOnceInSafeMode=False, ignoreIncompleteStartup=False, seenWizards={}, secretKey=None, heartbeat=900, reverseProxy=ReverseProxyConfig(prefixHeader=None, schemeHeader=None, hostHeader=None, serverHeader=None, portHeader=None, prefixFallback=None, schemeFallback=None, hostFallback=None, serverFallback=None, portFallback=None, trustedProxies=[], trustLocalhostProxies=True), uploads=UploadsConfig(maxSize=1073741824, nameSuffix='name', pathSuffix='path'), maxSize=102400, commands=CommandsConfig(systemShutdownCommand=None, systemRestartCommand=None, serverRestartCommand=None, localPipCommand=None), onlineCheck=OnlineCheckConfig(enabled=None, interval=900, host='1.1.1.1', port=53, name='octoprint.org'), pluginBlacklist=PluginBlacklistConfig(enabled=None, url='https://plugins.octoprint.org/blacklist.json', ttl=900, timeout=3.05), pythonEolCheck=PythonEolCheckConfig(enabled=True, url='https://get.octoprint.org/python-eol', ttl=1440, fallback={'3.7': PythonEolEntry(date='2023-06-27', last_octoprint='1.11.*'), '3.8': PythonEolEntry(date='2024-10-31', last_octoprint=None)}), diskspace=DiskspaceConfig(warning=524288000, critical=209715200), preemptiveCache=PreemptiveCacheConfig(exceptions=[], until=7), ipCheck=IpCheckConfig(enabled=True, trustedSubnets=[]), allowFraming=False, cookies=CookiesConfig(secure=False, samesite='Lax'), allowedLoginRedirectPaths=[])), 'slicing': FieldInfo(annotation=SlicingConfig, required=False, default=SlicingConfig(enabled=True, defaultSlicer=None, defaultProfiles={})), 'system': FieldInfo(annotation=SystemConfig, required=False, default=SystemConfig(actions=[])), 'temperature': FieldInfo(annotation=TemperatureConfig, required=False, default=TemperatureConfig(profiles=[TemperatureProfile(name='ABS', extruder=210, bed=100), TemperatureProfile(name='PLA', extruder=180, bed=60)], cutoff=30, sendAutomatically=False, sendAutomaticallyAfter=1)), 'terminalFilters': FieldInfo(annotation=List[TerminalFilterEntry], required=False, default=[TerminalFilterEntry(name='Suppress temperature messages', regex='(Send: (N\\d+\\s+)?M105)|(Recv:\\s+(ok\\s+([PBN]\\d+\\s+)*)?([BCLPR]|T\\d*):-?\\d+)'), TerminalFilterEntry(name='Suppress SD status messages', regex='(Send: (N\\d+\\s+)?M27)|(Recv: SD printing byte)|(Recv: Not SD printing)'), TerminalFilterEntry(name='Suppress position messages', regex='(Send:\\s+(N\\d+\\s+)?M114)|(Recv:\\s+(ok\\s+)?X:[+-]?([0-9]*[.])?[0-9]+\\s+Y:[+-]?([0-9]*[.])?[0-9]+\\s+Z:[+-]?([0-9]*[.])?[0-9]+\\s+E\\d*:[+-]?([0-9]*[.])?[0-9]+).*'), TerminalFilterEntry(name='Suppress wait responses', regex='Recv: wait'), TerminalFilterEntry(name='Suppress processing responses', regex='Recv: (echo:\\s*)?busy:\\s*processing')]), 'webcam': FieldInfo(annotation=WebcamConfig, required=False, default=WebcamConfig(webcamEnabled=True, timelapseEnabled=True, ffmpeg=None, ffmpegThreads=1, ffmpegVideoCodec='libx264', bitrate='10000k', watermark=True, ffmpegCommandline='{ffmpeg} -framerate {fps} -i "{input}" -vcodec {videocodec} -threads {threads} -b:v {bitrate} -f {containerformat} -y {filters} "{output}"', ffmpegThumbnailCommandline='{ffmpeg} -sseof -1 -i "{input}" -update 1 -q:v 0.7 "{output}"', timelapse=TimelapseConfig(type='off', fps=25, postRoll=0, renderAfterPrint='always', options=TimelapseOptions(interval=None, capturePostRoll=None, retractionZHop=None)), cleanTmpAfterDays=7, defaultWebcam='classic', snapshotWebcam='classic'))}
Metadata about the fields defined on the model, mapping of field names to [FieldInfo][pydantic.fields.FieldInfo] objects.
This replaces Model.__fields__ from Pydantic V1.
- plugins: PluginsConfig
- printerParameters: PrinterParametersConfig
- printerProfiles: PrinterProfilesConfig
- scripts: ScriptsConfig
- serial: SerialConfig
- server: ServerConfig
- slicing: SlicingConfig
- system: SystemConfig
- temperature: TemperatureConfig
- terminalFilters: List[TerminalFilterEntry]
- webcam: WebcamConfig
- class octoprint.schema.config.access_control.AccessControlConfig(*, salt: str | None = None, userManager: str = 'octoprint.access.users.FilebasedUserManager', groupManager: str = 'octoprint.access.groups.FilebasedGroupManager', permissionManager: str = 'octoprint.access.permissions.PermissionManager', userfile: str | None = None, groupfile: str | None = None, autologinLocal: bool = False, localNetworks: List[str] = ['127.0.0.0/8', '::1/128'], autologinAs: str | None = None, autologinHeadsupAcknowledged: bool = False, trustBasicAuthentication: bool = False, checkBasicAuthenticationPassword: bool = True, trustRemoteUser: bool = False, remoteUserHeader: str = 'REMOTE_USER', trustRemoteGroups: bool = False, remoteGroupsHeader: str = 'REMOTE_GROUPS', remoteGroupsMapping: Dict[str, str] = {}, addRemoteUsers: bool = False, defaultReauthenticationTimeout: int = 5)
- addRemoteUsers: bool
If a remote user is not found, add them. Use this only if all users from the remote system can use OctoPrint.
- autologinAs: str | None
The name of the user to automatically log on clients originating from localNetworks as. Must be the name of one of your configured users.
- autologinHeadsupAcknowledged: bool
Whether the user has acknowledged the heads-up about the importance of a correct reverse proxy configuration in the presence of autologin.
- autologinLocal: bool
If set to true, will automatically log on clients originating from any of the networks defined in localNetworks as the user defined in autologinAs.
- checkBasicAuthenticationPassword: bool
Whether to also check the password provided through Basic Authentication, if the Basic Authentication header is to be trusted. Disabling this will only match the user name in the Basic Authentication header and login the user without further checks, thus disable with caution.
- defaultReauthenticationTimeout: int
Default timeout after which to require reauthentication by a user for dangerous changes, in minutes. Defaults to 5 minutes. Set to 0 to disable reauthentication requirements (SECURITY IMPACT!).
- groupManager: str
groups.yaml in the default configuration folder).
- Type:
The group manager implementation to use for accessing group information. Currently only a filebased user manager is implemented which stores configured groups in a YAML file (Default
- groupfile: str | None
The YAML group file to use. If left out defaults to groups.yaml in the default configuration folder.
- localNetworks: List[str]
A list of networks or IPs for which an automatic logon as the user defined in autologinAs will take place. If available OctoPrint will evaluate the X-Forwarded-For HTTP header for determining the client’s IP address. Defaults to anything originating from localhost.
- model_computed_fields: ClassVar[Dict[str, ComputedFieldInfo]] = {}
A dictionary of computed field names and their corresponding ComputedFieldInfo objects.
- model_config: ClassVar[ConfigDict] = {'use_enum_values': True, 'validate_default': True}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- model_fields: ClassVar[Dict[str, FieldInfo]] = {'addRemoteUsers': FieldInfo(annotation=bool, required=False, default=False, description='If a remote user is not found, add them. Use this only if all users from the remote system can use OctoPrint.'), 'autologinAs': FieldInfo(annotation=Union[str, NoneType], required=False, default=None, description='The name of the user to automatically log on clients originating from `localNetworks` as. Must be the name of one of your configured users.'), 'autologinHeadsupAcknowledged': FieldInfo(annotation=bool, required=False, default=False, description='Whether the user has acknowledged the heads-up about the importance of a correct reverse proxy configuration in the presence of autologin.'), 'autologinLocal': FieldInfo(annotation=bool, required=False, default=False, description='If set to true, will automatically log on clients originating from any of the networks defined in `localNetworks` as the user defined in `autologinAs`.'), 'checkBasicAuthenticationPassword': FieldInfo(annotation=bool, required=False, default=True, description='Whether to also check the password provided through Basic Authentication, if the Basic Authentication header is to be trusted. Disabling this will only match the user name in the Basic Authentication header and login the user without further checks, thus disable with caution.'), 'defaultReauthenticationTimeout': FieldInfo(annotation=int, required=False, default=5, description='Default timeout after which to require reauthentication by a user for dangerous changes, in minutes. Defaults to 5 minutes. Set to 0 to disable reauthentication requirements (SECURITY IMPACT!).'), 'groupManager': FieldInfo(annotation=str, required=False, default='octoprint.access.groups.FilebasedGroupManager', description='The group manager implementation to use for accessing group information. Currently only a filebased user manager is implemented which stores configured groups in a YAML file (Default: `groups.yaml` in the default configuration folder).'), 'groupfile': FieldInfo(annotation=Union[str, NoneType], required=False, default=None, description='The YAML group file to use. If left out defaults to `groups.yaml` in the default configuration folder.'), 'localNetworks': FieldInfo(annotation=List[str], required=False, default=['127.0.0.0/8', '::1/128'], description="A list of networks or IPs for which an automatic logon as the user defined in `autologinAs` will take place. If available OctoPrint will evaluate the `X-Forwarded-For` HTTP header for determining the client's IP address. Defaults to anything originating from localhost."), 'permissionManager': FieldInfo(annotation=str, required=False, default='octoprint.access.permissions.PermissionManager', description='The permission manager implementation to use.'), 'remoteGroupsHeader': FieldInfo(annotation=str, required=False, default='REMOTE_GROUPS', description="Header used by the reverse proxy to convey the authenticated user's groups."), 'remoteGroupsMapping': FieldInfo(annotation=Dict[str, str], required=False, default={}, description='Mapping from groups in the header to groups in OctoPrint.'), 'remoteUserHeader': FieldInfo(annotation=str, required=False, default='REMOTE_USER', description='Header used by the reverse proxy to convey the authenticated user.'), 'salt': FieldInfo(annotation=Union[str, NoneType], required=False, default=None, description='Secret salt used for password hashing. **DO NOT TOUCH!** If changed you will no longer be able to log in with your existing accounts. Default unset, generated on first run.'), 'trustBasicAuthentication': FieldInfo(annotation=bool, required=False, default=False, description='Whether to trust Basic Authentication headers. If you have setup Basic Authentication in front of OctoPrint and the user names you use there match OctoPrint accounts, by setting this to true users will be logged into OctoPrint as the user during Basic Authentication. **ONLY ENABLE THIS** if your OctoPrint instance is only accessible through a connection locked down through Basic Authentication!'), 'trustRemoteGroups': FieldInfo(annotation=bool, required=False, default=False, description="Whether to trust remote groups headers. If you have setup authentication in front of OctoPrint and the groups names you use there match OctoPrint accounts, by setting this to true the user's groups will be set to the groups provided in the header. **ONLY ENABLE THIS** if your OctoPrint instance is only accessible through a connection locked down through an authenticating reverse proxy!"), 'trustRemoteUser': FieldInfo(annotation=bool, required=False, default=False, description='Whether to trust remote user headers. If you have setup authentication in front of OctoPrint and the user names you use there match OctoPrint accounts, by setting this to true users will be logged into OctoPrint as the user provided in the header. **ONLY ENABLE THIS** if your OctoPrint instance is only accessible through a connection locked down through an authenticating reverse proxy!'), 'userManager': FieldInfo(annotation=str, required=False, default='octoprint.access.users.FilebasedUserManager', description='The user manager implementation to use for accessing user information. Currently only a filebased user manager is implemented which stores configured accounts in a YAML file (Default: `users.yaml` in the default configuration folder).'), 'userfile': FieldInfo(annotation=Union[str, NoneType], required=False, default=None, description='The YAML user file to use. If left out defaults to `users.yaml` in the default configuration folder.')}
Metadata about the fields defined on the model, mapping of field names to [FieldInfo][pydantic.fields.FieldInfo] objects.
This replaces Model.__fields__ from Pydantic V1.
- remoteGroupsHeader: str
Header used by the reverse proxy to convey the authenticated user’s groups.
- salt: str | None
Secret salt used for password hashing. DO NOT TOUCH! If changed you will no longer be able to log in with your existing accounts. Default unset, generated on first run.
- trustBasicAuthentication: bool
Whether to trust Basic Authentication headers. If you have setup Basic Authentication in front of OctoPrint and the user names you use there match OctoPrint accounts, by setting this to true users will be logged into OctoPrint as the user during Basic Authentication. ONLY ENABLE THIS if your OctoPrint instance is only accessible through a connection locked down through Basic Authentication!
- trustRemoteGroups: bool
Whether to trust remote groups headers. If you have setup authentication in front of OctoPrint and the groups names you use there match OctoPrint accounts, by setting this to true the user’s groups will be set to the groups provided in the header. ONLY ENABLE THIS if your OctoPrint instance is only accessible through a connection locked down through an authenticating reverse proxy!
- trustRemoteUser: bool
Whether to trust remote user headers. If you have setup authentication in front of OctoPrint and the user names you use there match OctoPrint accounts, by setting this to true users will be logged into OctoPrint as the user provided in the header. ONLY ENABLE THIS if your OctoPrint instance is only accessible through a connection locked down through an authenticating reverse proxy!
- class octoprint.schema.config.api.ApiConfig(*, allowCrossOrigin: bool = False)
-
- model_computed_fields: ClassVar[Dict[str, ComputedFieldInfo]] = {}
A dictionary of computed field names and their corresponding ComputedFieldInfo objects.
- model_config: ClassVar[ConfigDict] = {'use_enum_values': True, 'validate_default': True}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- model_fields: ClassVar[Dict[str, FieldInfo]] = {'allowCrossOrigin': FieldInfo(annotation=bool, required=False, default=False, description='Whether to allow cross origin access to the API or not.')}
Metadata about the fields defined on the model, mapping of field names to [FieldInfo][pydantic.fields.FieldInfo] objects.
This replaces Model.__fields__ from Pydantic V1.
- class octoprint.schema.config.appearance.AppearanceConfig(*, name: str = '', color: ColorEnum = ColorEnum.default, colorTransparent: bool = False, colorIcon: bool = True, defaultLanguage: str = '_default', showFahrenheitAlso: bool = False, fuzzyTimes: bool = True, closeModalsWithClick: bool = True, showInternalFilename: bool = True, components: ComponentConfig = ComponentConfig(order=ComponentOrderConfig(navbar=['settings', 'systemmenu', 'plugin_announcements', 'plugin_logging_seriallog', 'plugin_logging_plugintimingslog', 'plugin_pi_support', 'plugin_health_check', 'login'], sidebar=['plugin_firmware_check_warning', 'plugin_firmware_check_info', 'connection', 'state', 'files'], tab=['temperature', 'control', 'plugin_gcodeviewer', 'terminal', 'timelapse'], settings=['section_printer', 'serial', 'printerprofiles', 'temperatures', 'terminalfilters', 'gcodescripts', 'section_features', 'features', 'webcam', 'accesscontrol', 'plugin_gcodeviewer', 'api', 'plugin_appkeys', 'section_octoprint', 'server', 'folders', 'appearance', 'plugin_logging', 'plugin_pluginmanager', 'plugin_softwareupdate', 'plugin_announcements', 'plugin_eventmanager', 'plugin_backup', 'plugin_tracking', 'plugin_errortracking', 'plugin_pi_support'], usersettings=['access', 'interface'], wizard=['plugin_softwareupdate_update', 'plugin_backup', 'plugin_corewizard_acl', 'plugin_corewizard_onlinecheck'], about=['about', 'plugin_pi_support', 'supporters', 'authors', 'changelog', 'license', 'thirdparty', 'plugin_pluginmanager', 'plugin_achievements', 'plugin_achievements_2', 'systeminfo'], generic=[]), disabled=ComponentDisabledConfig(navbar=[], sidebar=[], tab=[], settings=[], usersettings=[], wizard=[], about=[], generic=[])))
-
- colorTransparent: bool
Makes the color of the navigation bar “transparent”. In case your printer uses acrylic for its frame 😉.
- components: ComponentConfig
Configures the order and availability of the UI components.
- defaultLanguage: str
Default language of OctoPrint. If left unset OctoPrint will try to match up available languages with the user’s browser settings.
- model_computed_fields: ClassVar[Dict[str, ComputedFieldInfo]] = {}
A dictionary of computed field names and their corresponding ComputedFieldInfo objects.
- model_config: ClassVar[ConfigDict] = {'use_enum_values': True, 'validate_default': True}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- model_fields: ClassVar[Dict[str, FieldInfo]] = {'closeModalsWithClick': FieldInfo(annotation=bool, required=False, default=True), 'color': FieldInfo(annotation=ColorEnum, required=False, default=<ColorEnum.default: 'default'>, description='Use this to color the navigation bar.'), 'colorIcon': FieldInfo(annotation=bool, required=False, default=True), 'colorTransparent': FieldInfo(annotation=bool, required=False, default=False, description='Makes the color of the navigation bar "transparent". In case your printer uses acrylic for its frame 😉.'), 'components': FieldInfo(annotation=ComponentConfig, required=False, default=ComponentConfig(order=ComponentOrderConfig(navbar=['settings', 'systemmenu', 'plugin_announcements', 'plugin_logging_seriallog', 'plugin_logging_plugintimingslog', 'plugin_pi_support', 'plugin_health_check', 'login'], sidebar=['plugin_firmware_check_warning', 'plugin_firmware_check_info', 'connection', 'state', 'files'], tab=['temperature', 'control', 'plugin_gcodeviewer', 'terminal', 'timelapse'], settings=['section_printer', 'serial', 'printerprofiles', 'temperatures', 'terminalfilters', 'gcodescripts', 'section_features', 'features', 'webcam', 'accesscontrol', 'plugin_gcodeviewer', 'api', 'plugin_appkeys', 'section_octoprint', 'server', 'folders', 'appearance', 'plugin_logging', 'plugin_pluginmanager', 'plugin_softwareupdate', 'plugin_announcements', 'plugin_eventmanager', 'plugin_backup', 'plugin_tracking', 'plugin_errortracking', 'plugin_pi_support'], usersettings=['access', 'interface'], wizard=['plugin_softwareupdate_update', 'plugin_backup', 'plugin_corewizard_acl', 'plugin_corewizard_onlinecheck'], about=['about', 'plugin_pi_support', 'supporters', 'authors', 'changelog', 'license', 'thirdparty', 'plugin_pluginmanager', 'plugin_achievements', 'plugin_achievements_2', 'systeminfo'], generic=[]), disabled=ComponentDisabledConfig(navbar=[], sidebar=[], tab=[], settings=[], usersettings=[], wizard=[], about=[], generic=[])), description='Configures the order and availability of the UI components.'), 'defaultLanguage': FieldInfo(annotation=str, required=False, default='_default', description="Default language of OctoPrint. If left unset OctoPrint will try to match up available languages with the user's browser settings."), 'fuzzyTimes': FieldInfo(annotation=bool, required=False, default=True), 'name': FieldInfo(annotation=str, required=False, default='', description='Use this to give your OctoPrint instance a name. It will be displayed in the title bar (as "<Name> [OctoPrint]") and in the navigation bar (as "OctoPrint: <>")'), 'showFahrenheitAlso': FieldInfo(annotation=bool, required=False, default=False), 'showInternalFilename': FieldInfo(annotation=bool, required=False, default=True, description='Show the internal filename in the files sidebar, if necessary.')}
Metadata about the fields defined on the model, mapping of field names to [FieldInfo][pydantic.fields.FieldInfo] objects.
This replaces Model.__fields__ from Pydantic V1.
- class octoprint.schema.config.appearance.ColorEnum(value)
An enumeration.
- blue = 'blue'
- default = 'default'
- green = 'green'
- orange = 'orange'
- red = 'red'
- violet = 'violet'
- yellow = 'yellow'
- class octoprint.schema.config.appearance.ComponentConfig(*, order: ComponentOrderConfig = ComponentOrderConfig(navbar=['settings', 'systemmenu', 'plugin_announcements', 'plugin_logging_seriallog', 'plugin_logging_plugintimingslog', 'plugin_pi_support', 'plugin_health_check', 'login'], sidebar=['plugin_firmware_check_warning', 'plugin_firmware_check_info', 'connection', 'state', 'files'], tab=['temperature', 'control', 'plugin_gcodeviewer', 'terminal', 'timelapse'], settings=['section_printer', 'serial', 'printerprofiles', 'temperatures', 'terminalfilters', 'gcodescripts', 'section_features', 'features', 'webcam', 'accesscontrol', 'plugin_gcodeviewer', 'api', 'plugin_appkeys', 'section_octoprint', 'server', 'folders', 'appearance', 'plugin_logging', 'plugin_pluginmanager', 'plugin_softwareupdate', 'plugin_announcements', 'plugin_eventmanager', 'plugin_backup', 'plugin_tracking', 'plugin_errortracking', 'plugin_pi_support'], usersettings=['access', 'interface'], wizard=['plugin_softwareupdate_update', 'plugin_backup', 'plugin_corewizard_acl', 'plugin_corewizard_onlinecheck'], about=['about', 'plugin_pi_support', 'supporters', 'authors', 'changelog', 'license', 'thirdparty', 'plugin_pluginmanager', 'plugin_achievements', 'plugin_achievements_2', 'systeminfo'], generic=[]), disabled: ComponentDisabledConfig = ComponentDisabledConfig(navbar=[], sidebar=[], tab=[], settings=[], usersettings=[], wizard=[], about=[], generic=[]))
- disabled: ComponentDisabledConfig
Disabled components per container. If a component is included here it will not be included in OctoPrint’s UI at all. Note that this might mean that critical functionality will not be available if no replacement is registered.
- model_computed_fields: ClassVar[Dict[str, ComputedFieldInfo]] = {}
A dictionary of computed field names and their corresponding ComputedFieldInfo objects.
- model_config: ClassVar[ConfigDict] = {'use_enum_values': True, 'validate_default': True}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- model_fields: ClassVar[Dict[str, FieldInfo]] = {'disabled': FieldInfo(annotation=ComponentDisabledConfig, required=False, default=ComponentDisabledConfig(navbar=[], sidebar=[], tab=[], settings=[], usersettings=[], wizard=[], about=[], generic=[]), description="Disabled components per container. If a component is included here it will not be included in OctoPrint's UI at all. Note that this might mean that critical functionality will not be available if no replacement is registered."), 'order': FieldInfo(annotation=ComponentOrderConfig, required=False, default=ComponentOrderConfig(navbar=['settings', 'systemmenu', 'plugin_announcements', 'plugin_logging_seriallog', 'plugin_logging_plugintimingslog', 'plugin_pi_support', 'plugin_health_check', 'login'], sidebar=['plugin_firmware_check_warning', 'plugin_firmware_check_info', 'connection', 'state', 'files'], tab=['temperature', 'control', 'plugin_gcodeviewer', 'terminal', 'timelapse'], settings=['section_printer', 'serial', 'printerprofiles', 'temperatures', 'terminalfilters', 'gcodescripts', 'section_features', 'features', 'webcam', 'accesscontrol', 'plugin_gcodeviewer', 'api', 'plugin_appkeys', 'section_octoprint', 'server', 'folders', 'appearance', 'plugin_logging', 'plugin_pluginmanager', 'plugin_softwareupdate', 'plugin_announcements', 'plugin_eventmanager', 'plugin_backup', 'plugin_tracking', 'plugin_errortracking', 'plugin_pi_support'], usersettings=['access', 'interface'], wizard=['plugin_softwareupdate_update', 'plugin_backup', 'plugin_corewizard_acl', 'plugin_corewizard_onlinecheck'], about=['about', 'plugin_pi_support', 'supporters', 'authors', 'changelog', 'license', 'thirdparty', 'plugin_pluginmanager', 'plugin_achievements', 'plugin_achievements_2', 'systeminfo'], generic=[]), description='Defines the order of the components within their respective containers.')}
Metadata about the fields defined on the model, mapping of field names to [FieldInfo][pydantic.fields.FieldInfo] objects.
This replaces Model.__fields__ from Pydantic V1.
- order: ComponentOrderConfig
Defines the order of the components within their respective containers.
- class octoprint.schema.config.appearance.ComponentDisabledConfig(*, navbar: List[str] = [], sidebar: List[str] = [], tab: List[str] = [], settings: List[str] = [], usersettings: List[str] = [], wizard: List[str] = [], about: List[str] = [], generic: List[str] = [])
-
- model_computed_fields: ClassVar[Dict[str, ComputedFieldInfo]] = {}
A dictionary of computed field names and their corresponding ComputedFieldInfo objects.
- model_config: ClassVar[ConfigDict] = {'use_enum_values': True, 'validate_default': True}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- model_fields: ClassVar[Dict[str, FieldInfo]] = {'about': FieldInfo(annotation=List[str], required=False, default=[], description='Disabled about dialog items.'), 'generic': FieldInfo(annotation=List[str], required=False, default=[], description='Disabled generic items.'), 'navbar': FieldInfo(annotation=List[str], required=False, default=[], description='Disabled navbar items.'), 'settings': FieldInfo(annotation=List[str], required=False, default=[], description='Disabled settings.'), 'sidebar': FieldInfo(annotation=List[str], required=False, default=[], description='Disabled sidebar items.'), 'tab': FieldInfo(annotation=List[str], required=False, default=[], description='Disabled tabs.'), 'usersettings': FieldInfo(annotation=List[str], required=False, default=[], description='Disabled user settings.'), 'wizard': FieldInfo(annotation=List[str], required=False, default=[], description='Disabled wizards.')}
Metadata about the fields defined on the model, mapping of field names to [FieldInfo][pydantic.fields.FieldInfo] objects.
This replaces Model.__fields__ from Pydantic V1.
Disabled navbar items.
- class octoprint.schema.config.appearance.ComponentOrderConfig(*, navbar: List[str] = ['settings', 'systemmenu', 'plugin_announcements', 'plugin_logging_seriallog', 'plugin_logging_plugintimingslog', 'plugin_pi_support', 'plugin_health_check', 'login'], sidebar: List[str] = ['plugin_firmware_check_warning', 'plugin_firmware_check_info', 'connection', 'state', 'files'], tab: List[str] = ['temperature', 'control', 'plugin_gcodeviewer', 'terminal', 'timelapse'], settings: List[str] = ['section_printer', 'serial', 'printerprofiles', 'temperatures', 'terminalfilters', 'gcodescripts', 'section_features', 'features', 'webcam', 'accesscontrol', 'plugin_gcodeviewer', 'api', 'plugin_appkeys', 'section_octoprint', 'server', 'folders', 'appearance', 'plugin_logging', 'plugin_pluginmanager', 'plugin_softwareupdate', 'plugin_announcements', 'plugin_eventmanager', 'plugin_backup', 'plugin_tracking', 'plugin_errortracking', 'plugin_pi_support'], usersettings: List[str] = ['access', 'interface'], wizard: List[str] = ['plugin_softwareupdate_update', 'plugin_backup', 'plugin_corewizard_acl', 'plugin_corewizard_onlinecheck'], about: List[str] = ['about', 'plugin_pi_support', 'supporters', 'authors', 'changelog', 'license', 'thirdparty', 'plugin_pluginmanager', 'plugin_achievements', 'plugin_achievements_2', 'systeminfo'], generic: List[str] = [])
-
- model_computed_fields: ClassVar[Dict[str, ComputedFieldInfo]] = {}
A dictionary of computed field names and their corresponding ComputedFieldInfo objects.
- model_config: ClassVar[ConfigDict] = {'use_enum_values': True, 'validate_default': True}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- model_fields: ClassVar[Dict[str, FieldInfo]] = {'about': FieldInfo(annotation=List[str], required=False, default=['about', 'plugin_pi_support', 'supporters', 'authors', 'changelog', 'license', 'thirdparty', 'plugin_pluginmanager', 'plugin_achievements', 'plugin_achievements_2', 'systeminfo'], description='Order of about dialog items.'), 'generic': FieldInfo(annotation=List[str], required=False, default=[], description='Order of generic items.'), 'navbar': FieldInfo(annotation=List[str], required=False, default=['settings', 'systemmenu', 'plugin_announcements', 'plugin_logging_seriallog', 'plugin_logging_plugintimingslog', 'plugin_pi_support', 'plugin_health_check', 'login'], description='Order of navbar items.'), 'settings': FieldInfo(annotation=List[str], required=False, default=['section_printer', 'serial', 'printerprofiles', 'temperatures', 'terminalfilters', 'gcodescripts', 'section_features', 'features', 'webcam', 'accesscontrol', 'plugin_gcodeviewer', 'api', 'plugin_appkeys', 'section_octoprint', 'server', 'folders', 'appearance', 'plugin_logging', 'plugin_pluginmanager', 'plugin_softwareupdate', 'plugin_announcements', 'plugin_eventmanager', 'plugin_backup', 'plugin_tracking', 'plugin_errortracking', 'plugin_pi_support'], description='Order of settings.'), 'sidebar': FieldInfo(annotation=List[str], required=False, default=['plugin_firmware_check_warning', 'plugin_firmware_check_info', 'connection', 'state', 'files'], description='Order of sidebar items.'), 'tab': FieldInfo(annotation=List[str], required=False, default=['temperature', 'control', 'plugin_gcodeviewer', 'terminal', 'timelapse'], description='Order of tabs.'), 'usersettings': FieldInfo(annotation=List[str], required=False, default=['access', 'interface'], description='Order of user settings.'), 'wizard': FieldInfo(annotation=List[str], required=False, default=['plugin_softwareupdate_update', 'plugin_backup', 'plugin_corewizard_acl', 'plugin_corewizard_onlinecheck'], description='Order of wizards.')}
Metadata about the fields defined on the model, mapping of field names to [FieldInfo][pydantic.fields.FieldInfo] objects.
This replaces Model.__fields__ from Pydantic V1.
Order of navbar items.
- class octoprint.schema.config.controls.ContainerConfig
- children: List[ContainerConfig | ControlConfig]
A list of children controls or containers contained within this container.
- layout: LayoutEnum
The layout to use for laying out the contained children, either from top to bottom (vertical) or from left to right (horizontal).
- model_computed_fields: ClassVar[Dict[str, ComputedFieldInfo]] = {}
A dictionary of computed field names and their corresponding ComputedFieldInfo objects.
- model_config: ClassVar[ConfigDict] = {'use_enum_values': True, 'validate_default': True}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- model_fields: ClassVar[Dict[str, FieldInfo]] = {'children': FieldInfo(annotation=List[Union[ControlConfig, ContainerConfig]], required=False, default=[], description='A list of children controls or containers contained within this container.'), 'layout': FieldInfo(annotation=LayoutEnum, required=False, default=<LayoutEnum.vertical: 'vertical'>, description='The layout to use for laying out the contained children, either from top to bottom (`vertical`) or from left to right (`horizontal`).'), 'name': FieldInfo(annotation=Union[str, NoneType], required=False, default=None, description='A name to display above the container, basically a section header.')}
Metadata about the fields defined on the model, mapping of field names to [FieldInfo][pydantic.fields.FieldInfo] objects.
This replaces Model.__fields__ from Pydantic V1.
- class octoprint.schema.config.controls.ControlConfig(*, name: str, command: str | None = None, commands: List[str] | None = None, script: str | None = None, javascript: str | None = None, additionalClasses: str | None = None, enabled: str | None = None, input: List[ControlInputConfig] | None = [], regex: str | None = None, template: str | None = None, confirm: str | None = None)
- additionalClasses: str | None
Additional classes to apply to the button of a command, commands, script or javascript control, other than the default btn. Can be used to visually style the button, e.g. set to btn-danger to turn the button red.
- command: str | None
A single GCODE command to send to the printer. Will be rendered as a button which sends the command to the printer upon click. The button text will be the value of the name attribute. Mutually exclusive with commands and script. The rendered button be disabled if the printer is currently offline or printing or alternatively if the requirements defined via the enabled attribute are not met.
- commands: List[str] | None
A list of GCODE commands to send to the printer. Will be rendered as a button which sends the commands to the printer upon click. The button text will be the value of the name attribute. Mutually exclusive with command and script. The rendered button will be disabled if the printer is currently offline or printing or alternatively if the requirements defined via the enabled attribute are not met.
- confirm: str | None
A text to display to the user to confirm his button press. Can be used with sensitive custom controls like changing EEPROM values in order to prevent accidental clicks. The text will be displayed in a confirmation dialog.
- enabled: str | None
A JavaScript snippet returning either true or false determining whether the control should be enabled or not. This allows to override the default logic for the enable state of the control (disabled if printer is offline). The JavaScript snippet is eval’d and processed in a context where the control it is part of is provided as local variable data and the ControlViewModel is available as self.
- input: List[ControlInputConfig] | None
A list of definitions of input parameters for a command or commands, to be rendered as additional input fields. command/commands may contain placeholders to be replaced by the values obtained from the user for the defined input fields.
- javascript: str | None
A JavaScript snippet to be executed when the button rendered for command or commands is clicked. This allows to override the direct sending of the command or commands to the printer with more sophisticated behaviour. The JavaScript snippet is eval’d and processed in a context where the control it is part of is provided as local variable data and the ControlViewModel is available as self.
- model_computed_fields: ClassVar[Dict[str, ComputedFieldInfo]] = {}
A dictionary of computed field names and their corresponding ComputedFieldInfo objects.
- model_config: ClassVar[ConfigDict] = {'use_enum_values': True, 'validate_default': True}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- model_fields: ClassVar[Dict[str, FieldInfo]] = {'additionalClasses': FieldInfo(annotation=Union[str, NoneType], required=False, default=None, description='Additional classes to apply to the button of a `command`, `commands`, `script` or `javascript` control, other than the default `btn`. Can be used to visually style the button, e.g. set to `btn-danger` to turn the button red.'), 'command': FieldInfo(annotation=Union[str, NoneType], required=False, default=None, description='A single GCODE command to send to the printer. Will be rendered as a button which sends the command to the printer upon click. The button text will be the value of the `name` attribute. Mutually exclusive with `commands` and `script`. The rendered button be disabled if the printer is currently offline or printing or alternatively if the requirements defined via the `enabled` attribute are not met.'), 'commands': FieldInfo(annotation=Union[List[str], NoneType], required=False, default=None, description='A list of GCODE commands to send to the printer. Will be rendered as a button which sends the commands to the printer upon click. The button text will be the value of the `name` attribute. Mutually exclusive with `command` and `script`. The rendered button will be disabled if the printer is currently offline or printing or alternatively if the requirements defined via the `enabled` attribute are not met.'), 'confirm': FieldInfo(annotation=Union[str, NoneType], required=False, default=None, description='A text to display to the user to confirm his button press. Can be used with sensitive custom controls like changing EEPROM values in order to prevent accidental clicks. The text will be displayed in a confirmation dialog.'), 'enabled': FieldInfo(annotation=Union[str, NoneType], required=False, default=None, description="A JavaScript snippet returning either `true` or `false` determining whether the control should be enabled or not. This allows to override the default logic for the enable state of the control (disabled if printer is offline). The JavaScript snippet is `eval`'d and processed in a context where the control it is part of is provided as local variable `data` and the `ControlViewModel` is available as `self`."), 'input': FieldInfo(annotation=Union[List[ControlInputConfig], NoneType], required=False, default=[], description='A list of definitions of input parameters for a `command` or `commands`, to be rendered as additional input fields. `command`/`commands` may contain placeholders to be replaced by the values obtained from the user for the defined input fields.'), 'javascript': FieldInfo(annotation=Union[str, NoneType], required=False, default=None, description="A JavaScript snippet to be executed when the button rendered for `command` or `commands` is clicked. This allows to override the direct sending of the command or commands to the printer with more sophisticated behaviour. The JavaScript snippet is `eval`'d and processed in a context where the control it is part of is provided as local variable `data` and the `ControlViewModel` is available as `self`."), 'name': FieldInfo(annotation=str, required=True, description="The name of the control, will be displayed either on the button if it's a control sending a command or as a label for controls which only display output."), 'regex': FieldInfo(annotation=Union[str, NoneType], required=False, default=None, description='A [regular expression <re-syntax>](https://docs.python.org/3/library/re.html#regular-expression-syntax) to match against lines received from the printer to retrieve information from it (e.g. specific output). Together with `template` this allows rendition of received data from the printer within the UI.'), 'script': FieldInfo(annotation=Union[str, NoneType], required=False, default=None, description='The name of a full blown [GCODE script]() to send to the printer. Will be rendered as a button which sends the script to the printer upon click. The button text will be the value of the `name` attribute. Mutually exclusive with `command` and `commands`. The rendered button will be disabled if the printer is currently offline or printing or alternatively if the requirements defined via the `enabled` attribute are not met. Values of input parameters will be available in the template context under the `parameter` variable (e.g. an input parameter `speed` will be available in the script template as `parameter.speed`). On top of that all other variables defined in the [GCODE template context]() will be available.'), 'template': FieldInfo(annotation=Union[str, NoneType], required=False, default=None, description='A template to use for rendering the match of `regex`. May contain placeholders in [Python Format String Syntax](https://docs.python.org/3/library/string.html#formatstrings) for either named groups within the regex (e.g. `Temperature: {temperature}` for a regex `T:\\s*(?P<temperature>\\d+(\\.\\d*)`) or positional groups within the regex (e.g. `Position: X={0}, Y={1}, Z={2}, E={3}` for a regex `X:([0-9.]+) Y:([0-9.]+) Z:([0-9.]+) E:([0-9.]+)`).')}
Metadata about the fields defined on the model, mapping of field names to [FieldInfo][pydantic.fields.FieldInfo] objects.
This replaces Model.__fields__ from Pydantic V1.
- name: str
The name of the control, will be displayed either on the button if it’s a control sending a command or as a label for controls which only display output.
- regex: str | None
//docs.python.org/3/library/re.html#regular-expression-syntax) to match against lines received from the printer to retrieve information from it (e.g. specific output). Together with template this allows rendition of received data from the printer within the UI.
- Type:
A [regular expression <re-syntax>](https
- script: str | None
The name of a full blown [GCODE script]() to send to the printer. Will be rendered as a button which sends the script to the printer upon click. The button text will be the value of the name attribute. Mutually exclusive with command and commands. The rendered button will be disabled if the printer is currently offline or printing or alternatively if the requirements defined via the enabled attribute are not met. Values of input parameters will be available in the template context under the parameter variable (e.g. an input parameter speed will be available in the script template as parameter.speed). On top of that all other variables defined in the [GCODE template context]() will be available.
- template: str | None
{temperature}` for a regex T:s*(?P<temperature>d+(.d*)) or positional groups within the regex (e.g. Position: X={0}, Y={1}, Z={2}, E={3} for a regex X:([0-9.]+) Y:([0-9.]+) Z:([0-9.]+) E:([0-9.]+)).
- Type:
A template to use for rendering the match of regex. May contain placeholders in [Python Format String Syntax](https
- Type:
//docs.python.org/3/library/string.html#formatstrings) for either named groups within the regex (e.g. `Temperature
- class octoprint.schema.config.controls.ControlInputConfig(*, name: str, parameter: str, default: str | int | float | bool, slider: ControlSliderInputConfig | None = None)
-
- model_computed_fields: ClassVar[Dict[str, ComputedFieldInfo]] = {}
A dictionary of computed field names and their corresponding ComputedFieldInfo objects.
- model_config: ClassVar[ConfigDict] = {'use_enum_values': True, 'validate_default': True}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- model_fields: ClassVar[Dict[str, FieldInfo]] = {'default': FieldInfo(annotation=Union[str, int, float, bool], required=True), 'name': FieldInfo(annotation=str, required=True), 'parameter': FieldInfo(annotation=str, required=True), 'slider': FieldInfo(annotation=Union[ControlSliderInputConfig, NoneType], required=False, default=None)}
Metadata about the fields defined on the model, mapping of field names to [FieldInfo][pydantic.fields.FieldInfo] objects.
This replaces Model.__fields__ from Pydantic V1.
- parameter: str
Internal parameter name for the input field, used as a placeholder in command/commands.
- slider: ControlSliderInputConfig | None
If this attribute is included, instead of an input field a slider control will be rendered.
- class octoprint.schema.config.controls.ControlSliderInputConfig(*, min: int = 0, max: int = 255, step: int = 1)
-
- model_computed_fields: ClassVar[Dict[str, ComputedFieldInfo]] = {}
A dictionary of computed field names and their corresponding ComputedFieldInfo objects.
- model_config: ClassVar[ConfigDict] = {'use_enum_values': True, 'validate_default': True}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- model_fields: ClassVar[Dict[str, FieldInfo]] = {'max': FieldInfo(annotation=int, required=False, default=255), 'min': FieldInfo(annotation=int, required=False, default=0), 'step': FieldInfo(annotation=int, required=False, default=1)}
Metadata about the fields defined on the model, mapping of field names to [FieldInfo][pydantic.fields.FieldInfo] objects.
This replaces Model.__fields__ from Pydantic V1.
- class octoprint.schema.config.controls.LayoutEnum(value)
An enumeration.
- horizontal = 'horizontal'
- vertical = 'vertical'
- class octoprint.schema.config.devel.DevelCacheConfig(*, enabled: bool = True, preemptive: bool = True)
- enabled: bool
Whether to enable caching. Defaults to true. Setting it to false will cause the UI to always be fully rerendered on request to / on the server.
- model_computed_fields: ClassVar[Dict[str, ComputedFieldInfo]] = {}
A dictionary of computed field names and their corresponding ComputedFieldInfo objects.
- model_config: ClassVar[ConfigDict] = {'use_enum_values': True, 'validate_default': True}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- model_fields: ClassVar[Dict[str, FieldInfo]] = {'enabled': FieldInfo(annotation=bool, required=False, default=True), 'preemptive': FieldInfo(annotation=bool, required=False, default=True)}
Metadata about the fields defined on the model, mapping of field names to [FieldInfo][pydantic.fields.FieldInfo] objects.
This replaces Model.__fields__ from Pydantic V1.
- class octoprint.schema.config.devel.DevelConfig(*, stylesheet: StylesheetEnum = StylesheetEnum.css, cache: DevelCacheConfig = DevelCacheConfig(enabled=True, preemptive=True), webassets: DevelWebassetsConfig = DevelWebassetsConfig(bundle=True, clean_on_startup=True, minify=True, minify_plugins=False), useFrozenDictForPrinterState: bool = True, showLoadingAnimation: bool = True, sockJsConnectTimeout: float = 30, pluginTimings: bool = False, enableRateLimiter: bool = True, enableCsrfProtection: bool = True)
- cache: DevelCacheConfig
Settings for OctoPrint’s internal caching.
- enableCsrfProtection: bool
Enable or disable the CSRF protection. Careful, disabling this reduces security.
- enableRateLimiter: bool
Enable or disable the rate limiter. Careful, disabling this reduces security.
- model_computed_fields: ClassVar[Dict[str, ComputedFieldInfo]] = {}
A dictionary of computed field names and their corresponding ComputedFieldInfo objects.
- model_config: ClassVar[ConfigDict] = {'use_enum_values': True, 'validate_default': True}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- model_fields: ClassVar[Dict[str, FieldInfo]] = {'cache': FieldInfo(annotation=DevelCacheConfig, required=False, default=DevelCacheConfig(enabled=True, preemptive=True), description="Settings for OctoPrint's internal caching."), 'enableCsrfProtection': FieldInfo(annotation=bool, required=False, default=True, description='Enable or disable the CSRF protection. Careful, disabling this reduces security.'), 'enableRateLimiter': FieldInfo(annotation=bool, required=False, default=True, description='Enable or disable the rate limiter. Careful, disabling this reduces security.'), 'pluginTimings': FieldInfo(annotation=bool, required=False, default=False), 'showLoadingAnimation': FieldInfo(annotation=bool, required=False, default=True, description='Enable or disable the loading animation.'), 'sockJsConnectTimeout': FieldInfo(annotation=float, required=False, default=30), 'stylesheet': FieldInfo(annotation=StylesheetEnum, required=False, default=<StylesheetEnum.css: 'css'>, description='Settings for stylesheet preference. OctoPrint will prefer to use the stylesheet type specified here. Usually (on a production install) that will be the compiled css (default). Developers may specify less here too.'), 'useFrozenDictForPrinterState': FieldInfo(annotation=bool, required=False, default=True), 'webassets': FieldInfo(annotation=DevelWebassetsConfig, required=False, default=DevelWebassetsConfig(bundle=True, clean_on_startup=True, minify=True, minify_plugins=False), description="Settings for OctoPrint's web asset merging and minifying.")}
Metadata about the fields defined on the model, mapping of field names to [FieldInfo][pydantic.fields.FieldInfo] objects.
This replaces Model.__fields__ from Pydantic V1.
- stylesheet: StylesheetEnum
Settings for stylesheet preference. OctoPrint will prefer to use the stylesheet type specified here. Usually (on a production install) that will be the compiled css (default). Developers may specify less here too.
- webassets: DevelWebassetsConfig
Settings for OctoPrint’s web asset merging and minifying.
- class octoprint.schema.config.devel.DevelWebassetsConfig(*, bundle: bool = True, clean_on_startup: bool = True, minify: bool = True, minify_plugins: bool = False)
- bundle: bool
if this is set to false, no minification will take place regardless of the minify setting.
- Type:
If set to true, OctoPrint will merge all JS, all CSS and all Less files into one file per type to reduce request count. Setting it to false will load all assets individually. Note
- clean_on_startup: bool
Whether to delete generated web assets on server startup (forcing a regeneration).
- minify: bool
if bundle is set to false, no minification will take place either.
- Type:
If set to true, OctoPrint will the core and library javascript assets. Note
- minify_plugins: bool
if bundle or minify are set to false, no minification of the plugin assets will take place either.
- Type:
If set to true, OctoPrint will also minify the third party plugin javascript assets. Note
- model_computed_fields: ClassVar[Dict[str, ComputedFieldInfo]] = {}
A dictionary of computed field names and their corresponding ComputedFieldInfo objects.
- model_config: ClassVar[ConfigDict] = {'use_enum_values': True, 'validate_default': True}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- model_fields: ClassVar[Dict[str, FieldInfo]] = {'bundle': FieldInfo(annotation=bool, required=False, default=True, description='If set to true, OctoPrint will merge all JS, all CSS and all Less files into one file per type to reduce request count. Setting it to false will load all assets individually. Note: if this is set to false, no minification will take place regardless of the `minify` setting.'), 'clean_on_startup': FieldInfo(annotation=bool, required=False, default=True, description='Whether to delete generated web assets on server startup (forcing a regeneration).'), 'minify': FieldInfo(annotation=bool, required=False, default=True, description='If set to true, OctoPrint will the core and library javascript assets. Note: if `bundle` is set to false, no minification will take place either.'), 'minify_plugins': FieldInfo(annotation=bool, required=False, default=False, description='If set to true, OctoPrint will also minify the third party plugin javascript assets. Note: if `bundle` or `minify` are set to false, no minification of the plugin assets will take place either.')}
Metadata about the fields defined on the model, mapping of field names to [FieldInfo][pydantic.fields.FieldInfo] objects.
This replaces Model.__fields__ from Pydantic V1.
- class octoprint.schema.config.devel.StylesheetEnum(value)
An enumeration.
- css = 'css'
- less = 'less'
- class octoprint.schema.config.estimation.EstimationConfig(*, printTime: PrintTimeEstimationConfig = PrintTimeEstimationConfig(statsWeighingUntil=0.5, validityRange=0.15, forceDumbFromPercent=0.3, forceDumbAfterMin=30.0, stableThreshold=60))
- model_computed_fields: ClassVar[Dict[str, ComputedFieldInfo]] = {}
A dictionary of computed field names and their corresponding ComputedFieldInfo objects.
- model_config: ClassVar[ConfigDict] = {'use_enum_values': True, 'validate_default': True}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- model_fields: ClassVar[Dict[str, FieldInfo]] = {'printTime': FieldInfo(annotation=PrintTimeEstimationConfig, required=False, default=PrintTimeEstimationConfig(statsWeighingUntil=0.5, validityRange=0.15, forceDumbFromPercent=0.3, forceDumbAfterMin=30.0, stableThreshold=60), description='Parameters for the print time estimation during an ongoing print job.')}
Metadata about the fields defined on the model, mapping of field names to [FieldInfo][pydantic.fields.FieldInfo] objects.
This replaces Model.__fields__ from Pydantic V1.
- printTime: PrintTimeEstimationConfig
Parameters for the print time estimation during an ongoing print job.
- class octoprint.schema.config.estimation.PrintTimeEstimationConfig(*, statsWeighingUntil: float = 0.5, validityRange: float = 0.15, forceDumbFromPercent: float = 0.3, forceDumbAfterMin: float = 30.0, stableThreshold: int = 60)
- forceDumbAfterMin: float
If no estimate could be calculated until this many minutes into the print and no statistical data is available, use dumb linear estimate.
- forceDumbFromPercent: float
If no estimate could be calculated until this percentage and no statistical data is available, use dumb linear estimate. Value between 0 and 1.0.
- model_computed_fields: ClassVar[Dict[str, ComputedFieldInfo]] = {}
A dictionary of computed field names and their corresponding ComputedFieldInfo objects.
- model_config: ClassVar[ConfigDict] = {'use_enum_values': True, 'validate_default': True}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- model_fields: ClassVar[Dict[str, FieldInfo]] = {'forceDumbAfterMin': FieldInfo(annotation=float, required=False, default=30.0, description='If no estimate could be calculated until this many minutes into the print and no statistical data is available, use dumb linear estimate.'), 'forceDumbFromPercent': FieldInfo(annotation=float, required=False, default=0.3, description='If no estimate could be calculated until this percentage and no statistical data is available, use dumb linear estimate. Value between 0 and 1.0.'), 'stableThreshold': FieldInfo(annotation=int, required=False, default=60, description='Average fluctuation between individual calculated estimates to consider in stable range. Seconds of difference.'), 'statsWeighingUntil': FieldInfo(annotation=float, required=False, default=0.5, description="Until which percentage to do a weighted mixture of statistical duration (analysis or past prints) with the result from the calculated estimate if that's already available. Utilized to compensate for the fact that the earlier in a print job, the least accuracy even a stable calculated estimate provides."), 'validityRange': FieldInfo(annotation=float, required=False, default=0.15, description='Range the assumed percentage (based on current estimated statistical, calculated or mixed total vs elapsed print time so far) needs to be around the actual percentage for the result to be used.')}
Metadata about the fields defined on the model, mapping of field names to [FieldInfo][pydantic.fields.FieldInfo] objects.
This replaces Model.__fields__ from Pydantic V1.
- stableThreshold: int
Average fluctuation between individual calculated estimates to consider in stable range. Seconds of difference.
- statsWeighingUntil: float
Until which percentage to do a weighted mixture of statistical duration (analysis or past prints) with the result from the calculated estimate if that’s already available. Utilized to compensate for the fact that the earlier in a print job, the least accuracy even a stable calculated estimate provides.
- class octoprint.schema.config.events.EventSubscription(*, event: str, name: str | None = None, command: str, type: SubscriptionTypeEnum, enabled: bool = True, debug: bool = False)
- command: str
The command to execute when the event is triggered, either a GCODE or a system command.
- debug: bool
If set to true, OctoPrint will log the command after performing all placeholder replacements.
- model_computed_fields: ClassVar[Dict[str, ComputedFieldInfo]] = {}
A dictionary of computed field names and their corresponding ComputedFieldInfo objects.
- model_config: ClassVar[ConfigDict] = {'use_enum_values': True, 'validate_default': True}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- model_fields: ClassVar[Dict[str, FieldInfo]] = {'command': FieldInfo(annotation=str, required=True, description='The command to execute when the event is triggered, either a GCODE or a system command.'), 'debug': FieldInfo(annotation=bool, required=False, default=False, description='If set to `true`, OctoPrint will log the command after performing all placeholder replacements.'), 'enabled': FieldInfo(annotation=bool, required=False, default=True, description='Whether the event subscription should be enabled.'), 'event': FieldInfo(annotation=str, required=True, description='The event to subscribe to.'), 'name': FieldInfo(annotation=Union[str, NoneType], required=False, default=None, description='The event name to show on the UI'), 'type': FieldInfo(annotation=SubscriptionTypeEnum, required=True, description='The type of the command.')}
Metadata about the fields defined on the model, mapping of field names to [FieldInfo][pydantic.fields.FieldInfo] objects.
This replaces Model.__fields__ from Pydantic V1.
- type: SubscriptionTypeEnum
The type of the command.
- class octoprint.schema.config.events.EventsConfig(*, enabled: bool = True, subscriptions: List[EventSubscription] = [])
-
- model_computed_fields: ClassVar[Dict[str, ComputedFieldInfo]] = {}
A dictionary of computed field names and their corresponding ComputedFieldInfo objects.
- model_config: ClassVar[ConfigDict] = {'use_enum_values': True, 'validate_default': True}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- model_fields: ClassVar[Dict[str, FieldInfo]] = {'enabled': FieldInfo(annotation=bool, required=False, default=True, description='Whether event subscriptions should be enabled or not.'), 'subscriptions': FieldInfo(annotation=List[EventSubscription], required=False, default=[], description='A list of event subscriptions.')}
Metadata about the fields defined on the model, mapping of field names to [FieldInfo][pydantic.fields.FieldInfo] objects.
This replaces Model.__fields__ from Pydantic V1.
- subscriptions: List[EventSubscription]
A list of event subscriptions.
- class octoprint.schema.config.events.SubscriptionTypeEnum(value)
An enumeration.
- gcode = 'gcode'
- system = 'system'
- class octoprint.schema.config.feature.FeatureConfig(*, temperatureGraph: bool = True, sdSupport: bool = True, keyboardControl: bool = True, pollWatched: bool = False, modelSizeDetection: bool = True, rememberFileFolder: bool = False, printStartConfirmation: bool = False, printCancelConfirmation: bool = True, uploadOverwriteConfirmation: bool = True, autoUppercaseBlacklist: List[str] = ['M117', 'M118', 'M707', 'M708'], g90InfluencesExtruder: bool = False, enforceReallyUniversalFilenames: bool = False, enableDragDropUpload: bool = True)
- autoUppercaseBlacklist: List[str]
Commands that should never be auto-uppercased when sent to the printer through the Terminal tab.
- enforceReallyUniversalFilenames: bool
Replace all special characters and spaces with text equivalent to make them universally compatible. Most OS filesystems work fine with unicode characters, but just in case you can revert to the older behaviour by setting this to true.
- model_computed_fields: ClassVar[Dict[str, ComputedFieldInfo]] = {}
A dictionary of computed field names and their corresponding ComputedFieldInfo objects.
- model_config: ClassVar[ConfigDict] = {'use_enum_values': True, 'validate_default': True}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- model_fields: ClassVar[Dict[str, FieldInfo]] = {'autoUppercaseBlacklist': FieldInfo(annotation=List[str], required=False, default=['M117', 'M118', 'M707', 'M708'], description='Commands that should never be auto-uppercased when sent to the printer through the Terminal tab.'), 'enableDragDropUpload': FieldInfo(annotation=bool, required=False, default=True, description='Enable drag and drop upload overlay'), 'enforceReallyUniversalFilenames': FieldInfo(annotation=bool, required=False, default=False, description='Replace all special characters and spaces with text equivalent to make them universally compatible. Most OS filesystems work fine with unicode characters, but just in case you can revert to the older behaviour by setting this to true.'), 'g90InfluencesExtruder': FieldInfo(annotation=bool, required=False, default=False, description='Whether `G90`/`G91` also influence absolute/relative mode of extruders.'), 'keyboardControl': FieldInfo(annotation=bool, required=False, default=True, description='Whether to enable the keyboard control feature in the control tab.'), 'modelSizeDetection': FieldInfo(annotation=bool, required=False, default=True, description='Whether to enable model size detection and warning (true) or not (false).'), 'pollWatched': FieldInfo(annotation=bool, required=False, default=False, description="Whether to actively poll the watched folder (true) or to rely on the OS's file system notifications instead (false)."), 'printCancelConfirmation': FieldInfo(annotation=bool, required=False, default=True, description='Whether to show a confirmation on print cancelling (true) or not (false)'), 'printStartConfirmation': FieldInfo(annotation=bool, required=False, default=False, description='Whether to show a confirmation on print start (true) or not (false)'), 'rememberFileFolder': FieldInfo(annotation=bool, required=False, default=False, description='Whether to remember the selected folder on the file manager.'), 'sdSupport': FieldInfo(annotation=bool, required=False, default=True, description='Specifies whether support for SD printing and file management should be enabled.'), 'temperatureGraph': FieldInfo(annotation=bool, required=False, default=True, description='Whether to enable the temperature graph in the UI or not.'), 'uploadOverwriteConfirmation': FieldInfo(annotation=bool, required=False, default=True)}
Metadata about the fields defined on the model, mapping of field names to [FieldInfo][pydantic.fields.FieldInfo] objects.
This replaces Model.__fields__ from Pydantic V1.
- pollWatched: bool
Whether to actively poll the watched folder (true) or to rely on the OS’s file system notifications instead (false).
- class octoprint.schema.config.folder.FolderConfig(*, uploads: str | None = None, timelapse: str | None = None, timelapse_tmp: str | None = None, logs: str | None = None, virtualSd: str | None = None, watched: str | None = None, plugins: str | None = None, slicingProfiles: str | None = None, printerProfiles: str | None = None, scripts: str | None = None, translations: str | None = None, generated: str | None = None, data: str | None = None)
- data: str | None
Absolute path where to store additional data. Defaults to the data folder in OctoPrint’s base folder.
- generated: str | None
Absolute path where to store generated files. Defaults to the generated folder in OctoPrint’s base folder.
- logs: str | None
Absolute path where to store logs. Defaults to the logs folder in OctoPrint’s base folder.
- model_computed_fields: ClassVar[Dict[str, ComputedFieldInfo]] = {}
A dictionary of computed field names and their corresponding ComputedFieldInfo objects.
- model_config: ClassVar[ConfigDict] = {'use_enum_values': True, 'validate_default': True}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- model_fields: ClassVar[Dict[str, FieldInfo]] = {'data': FieldInfo(annotation=Union[str, NoneType], required=False, default=None, description="Absolute path where to store additional data. Defaults to the `data` folder in OctoPrint's base folder."), 'generated': FieldInfo(annotation=Union[str, NoneType], required=False, default=None, description="Absolute path where to store generated files. Defaults to the `generated` folder in OctoPrint's base folder."), 'logs': FieldInfo(annotation=Union[str, NoneType], required=False, default=None, description="Absolute path where to store logs. Defaults to the `logs` folder in OctoPrint's base folder."), 'plugins': FieldInfo(annotation=Union[str, NoneType], required=False, default=None, description="Absolute path where to locate and install single file plugins. Defaults to the `plugins` folder in OctoPrint's base folder."), 'printerProfiles': FieldInfo(annotation=Union[str, NoneType], required=False, default=None, description="Absolute path where to store printer profiles. Defaults to the `printerProfiles` folder in OctoPrint's base folder."), 'scripts': FieldInfo(annotation=Union[str, NoneType], required=False, default=None, description="Absolute path where to store (GCODE) scripts. Defaults to the `scripts` folder in OctoPrint's base folder."), 'slicingProfiles': FieldInfo(annotation=Union[str, NoneType], required=False, default=None, description="Absolute path where to store slicing profiles. Defaults to the `slicingProfiles` folder in OctoPrint's base folder."), 'timelapse': FieldInfo(annotation=Union[str, NoneType], required=False, default=None, description="Absolute path where to store finished timelase recordings. Defaults to the `timelapse` folder in OctoPrint's base folder."), 'timelapse_tmp': FieldInfo(annotation=Union[str, NoneType], required=False, default=None, description="Absolute path where to store temporary timelapse snapshots. Defaults to the `timelapse/tmp` folder in OctoPrint's base folder."), 'translations': FieldInfo(annotation=Union[str, NoneType], required=False, default=None, description="Absolute path where to store additional translations. Defaults to the `translations` folder in OctoPrint's base folder."), 'uploads': FieldInfo(annotation=Union[str, NoneType], required=False, default=None, description="Absolute path where to store gcode uploads. Defaults to the `uploads` folder in OctoPrint's base folder."), 'virtualSd': FieldInfo(annotation=Union[str, NoneType], required=False, default=None, description="Absolute path where to store the virtual printer's SD card files. Defaults to the `virtualSd` folder in OctoPrint's base folder."), 'watched': FieldInfo(annotation=Union[str, NoneType], required=False, default=None, description="Absolute path to the watched folder. Defaults to the `watched` folder in OctoPrint's base folder.")}
Metadata about the fields defined on the model, mapping of field names to [FieldInfo][pydantic.fields.FieldInfo] objects.
This replaces Model.__fields__ from Pydantic V1.
- plugins: str | None
Absolute path where to locate and install single file plugins. Defaults to the plugins folder in OctoPrint’s base folder.
- printerProfiles: str | None
Absolute path where to store printer profiles. Defaults to the printerProfiles folder in OctoPrint’s base folder.
- scripts: str | None
Absolute path where to store (GCODE) scripts. Defaults to the scripts folder in OctoPrint’s base folder.
- slicingProfiles: str | None
Absolute path where to store slicing profiles. Defaults to the slicingProfiles folder in OctoPrint’s base folder.
- timelapse: str | None
Absolute path where to store finished timelase recordings. Defaults to the timelapse folder in OctoPrint’s base folder.
- timelapse_tmp: str | None
Absolute path where to store temporary timelapse snapshots. Defaults to the timelapse/tmp folder in OctoPrint’s base folder.
- translations: str | None
Absolute path where to store additional translations. Defaults to the translations folder in OctoPrint’s base folder.
- uploads: str | None
Absolute path where to store gcode uploads. Defaults to the uploads folder in OctoPrint’s base folder.
- class octoprint.schema.config.gcode_analysis.GcodeAnalysisConfig(*, maxExtruders: int = 10, throttle_normalprio: float = 0.01, throttle_highprio: float = 0.0, throttle_lines: int = 100, runAt: RunAtEnum = RunAtEnum.idle, bedZ: float = 0.0)
-
- model_computed_fields: ClassVar[Dict[str, ComputedFieldInfo]] = {}
A dictionary of computed field names and their corresponding ComputedFieldInfo objects.
- model_config: ClassVar[ConfigDict] = {'use_enum_values': True, 'validate_default': True}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- model_fields: ClassVar[Dict[str, FieldInfo]] = {'bedZ': FieldInfo(annotation=float, required=False, default=0.0, description='Z position considered the location of the bed.'), 'maxExtruders': FieldInfo(annotation=int, required=False, default=10, description='Maximum number of extruders to support/to sanity check for.'), 'runAt': FieldInfo(annotation=RunAtEnum, required=False, default=<RunAtEnum.idle: 'idle'>, description='Whether to run the analysis only when idle (not printing), regardless of printing state or never.'), 'throttle_highprio': FieldInfo(annotation=float, required=False, default=0.0, description='Pause between each processed GCODE line batch in high priority mode (e.g. on fresh uploads), seconds.'), 'throttle_lines': FieldInfo(annotation=int, required=False, default=100, description='GCODE line batch size.'), 'throttle_normalprio': FieldInfo(annotation=float, required=False, default=0.01, description='Pause between each processed GCODE line batch in normal priority mode, seconds.')}
Metadata about the fields defined on the model, mapping of field names to [FieldInfo][pydantic.fields.FieldInfo] objects.
This replaces Model.__fields__ from Pydantic V1.
- runAt: RunAtEnum
Whether to run the analysis only when idle (not printing), regardless of printing state or never.
- class octoprint.schema.config.gcode_analysis.RunAtEnum(value)
An enumeration.
- always = 'always'
- idle = 'idle'
- never = 'never'
- class octoprint.schema.config.plugins.PluginsConfig(*, _disabled: List[str] = [], _forcedCompatible: List[str] = [], _sortingOrder: Dict[str, Dict[str, int]] = {}, _flags: Dict[str, List[str]] = {})
-
- forced_compatible: List[str]
Identifiers of plugins for which python compatibility information will be ignored and the plugin considered compatible in any case. Only for development, do NOT use in production.
- model_computed_fields: ClassVar[Dict[str, ComputedFieldInfo]] = {}
A dictionary of computed field names and their corresponding ComputedFieldInfo objects.
- model_config: ClassVar[ConfigDict] = {'use_enum_values': True, 'validate_default': True}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- model_fields: ClassVar[Dict[str, FieldInfo]] = {'disabled': FieldInfo(annotation=List[str], required=False, default=[], alias='_disabled', alias_priority=2, description='Identifiers of installed but disabled plugins.'), 'flags': FieldInfo(annotation=Dict[str, List[str]], required=False, default={}, alias='_flags', alias_priority=2, description='Configured flags for plugins by plugin identifier.'), 'forced_compatible': FieldInfo(annotation=List[str], required=False, default=[], alias='_forcedCompatible', alias_priority=2, description='Identifiers of plugins for which python compatibility information will be ignored and the plugin considered compatible in any case. Only for development, do **NOT** use in production.'), 'sorting_order': FieldInfo(annotation=Dict[str, Dict[str, int]], required=False, default={}, alias='_sortingOrder', alias_priority=2, description='Custom sorting of hooks and implementations provided by plugins. Two-tiered dictionary structure, plugin identifier mapping to a dictionary of order overrides mapped by sorting context/hook name.')}
Metadata about the fields defined on the model, mapping of field names to [FieldInfo][pydantic.fields.FieldInfo] objects.
This replaces Model.__fields__ from Pydantic V1.
- class octoprint.schema.config.printer_parameters.PrinterParametersConfig(*, pauseTriggers: List[str] = [])
- model_computed_fields: ClassVar[Dict[str, ComputedFieldInfo]] = {}
A dictionary of computed field names and their corresponding ComputedFieldInfo objects.
- model_config: ClassVar[ConfigDict] = {'use_enum_values': True, 'validate_default': True}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- class octoprint.schema.config.printer_profiles.PrinterProfilesConfig(*, default: str | None = None)
-
- model_computed_fields: ClassVar[Dict[str, ComputedFieldInfo]] = {}
A dictionary of computed field names and their corresponding ComputedFieldInfo objects.
- model_config: ClassVar[ConfigDict] = {'use_enum_values': True, 'validate_default': True}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- model_fields: ClassVar[Dict[str, FieldInfo]] = {'default': FieldInfo(annotation=Union[str, NoneType], required=False, default=None, description='Name of the printer profile to default to.')}
Metadata about the fields defined on the model, mapping of field names to [FieldInfo][pydantic.fields.FieldInfo] objects.
This replaces Model.__fields__ from Pydantic V1.
- class octoprint.schema.config.scripts.GcodeScriptsConfig(*, afterPrinterConnected: str | None = None, beforePrinterDisconnected: str | None = None, beforePrintStarted: str | None = None, afterPrintCancelled: str | None = "; disable motors\nM84\n\n;disable all heaters\n{% snippet 'disable_hotends' %}\n{% snippet 'disable_bed' %}\n;disable fan\nM106 S0", afterPrintDone: str | None = None, beforePrintPaused: str | None = None, afterPrintResumed: str | None = None, beforeToolChange: str | None = None, afterToolChange: str | None = None, snippets: Dict[str, str] = {'disable_bed': '{% if printer_profile.heatedBed %}M140 S0\n{% endif %}', 'disable_hotends': '{% if printer_profile.extruder.sharedNozzle %}M104 T0 S0\n{% else %}{% for tool in range(printer_profile.extruder.count) %}M104 T{{ tool }} S0\n{% endfor %}{% endif %}'})
-
- model_computed_fields: ClassVar[Dict[str, ComputedFieldInfo]] = {}
A dictionary of computed field names and their corresponding ComputedFieldInfo objects.
- model_config: ClassVar[ConfigDict] = {'use_enum_values': True, 'validate_default': True}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- model_fields: ClassVar[Dict[str, FieldInfo]] = {'afterPrintCancelled': FieldInfo(annotation=Union[str, NoneType], required=False, default="; disable motors\nM84\n\n;disable all heaters\n{% snippet 'disable_hotends' %}\n{% snippet 'disable_bed' %}\n;disable fan\nM106 S0"), 'afterPrintDone': FieldInfo(annotation=Union[str, NoneType], required=False, default=None), 'afterPrintResumed': FieldInfo(annotation=Union[str, NoneType], required=False, default=None), 'afterPrinterConnected': FieldInfo(annotation=Union[str, NoneType], required=False, default=None), 'afterToolChange': FieldInfo(annotation=Union[str, NoneType], required=False, default=None), 'beforePrintPaused': FieldInfo(annotation=Union[str, NoneType], required=False, default=None), 'beforePrintStarted': FieldInfo(annotation=Union[str, NoneType], required=False, default=None), 'beforePrinterDisconnected': FieldInfo(annotation=Union[str, NoneType], required=False, default=None), 'beforeToolChange': FieldInfo(annotation=Union[str, NoneType], required=False, default=None), 'snippets': FieldInfo(annotation=Dict[str, str], required=False, default={'disable_hotends': '{% if printer_profile.extruder.sharedNozzle %}M104 T0 S0\n{% else %}{% for tool in range(printer_profile.extruder.count) %}M104 T{{ tool }} S0\n{% endfor %}{% endif %}', 'disable_bed': '{% if printer_profile.heatedBed %}M140 S0\n{% endif %}'})}
Metadata about the fields defined on the model, mapping of field names to [FieldInfo][pydantic.fields.FieldInfo] objects.
This replaces Model.__fields__ from Pydantic V1.
- class octoprint.schema.config.scripts.ScriptsConfig(*, gcode: GcodeScriptsConfig = GcodeScriptsConfig(afterPrinterConnected=None, beforePrinterDisconnected=None, beforePrintStarted=None, afterPrintCancelled="; disable motors\nM84\n\n;disable all heaters\n{% snippet 'disable_hotends' %}\n{% snippet 'disable_bed' %}\n;disable fan\nM106 S0", afterPrintDone=None, beforePrintPaused=None, afterPrintResumed=None, beforeToolChange=None, afterToolChange=None, snippets={'disable_hotends': '{% if printer_profile.extruder.sharedNozzle %}M104 T0 S0\n{% else %}{% for tool in range(printer_profile.extruder.count) %}M104 T{{ tool }} S0\n{% endfor %}{% endif %}', 'disable_bed': '{% if printer_profile.heatedBed %}M140 S0\n{% endif %}'}))
- gcode: GcodeScriptsConfig
- model_computed_fields: ClassVar[Dict[str, ComputedFieldInfo]] = {}
A dictionary of computed field names and their corresponding ComputedFieldInfo objects.
- model_config: ClassVar[ConfigDict] = {'use_enum_values': True, 'validate_default': True}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- model_fields: ClassVar[Dict[str, FieldInfo]] = {'gcode': FieldInfo(annotation=GcodeScriptsConfig, required=False, default=GcodeScriptsConfig(afterPrinterConnected=None, beforePrinterDisconnected=None, beforePrintStarted=None, afterPrintCancelled="; disable motors\nM84\n\n;disable all heaters\n{% snippet 'disable_hotends' %}\n{% snippet 'disable_bed' %}\n;disable fan\nM106 S0", afterPrintDone=None, beforePrintPaused=None, afterPrintResumed=None, beforeToolChange=None, afterToolChange=None, snippets={'disable_hotends': '{% if printer_profile.extruder.sharedNozzle %}M104 T0 S0\n{% else %}{% for tool in range(printer_profile.extruder.count) %}M104 T{{ tool }} S0\n{% endfor %}{% endif %}', 'disable_bed': '{% if printer_profile.heatedBed %}M140 S0\n{% endif %}'}))}
Metadata about the fields defined on the model, mapping of field names to [FieldInfo][pydantic.fields.FieldInfo] objects.
This replaces Model.__fields__ from Pydantic V1.
- class octoprint.schema.config.serial.AlwaysDetectNeverEnum(value)
An enumeration.
- always = 'always'
- detect = 'detect'
- never = 'never'
- class octoprint.schema.config.serial.InfoWarnNeverEnum(value)
An enumeration.
- info = 'info'
- never = 'never'
- warn = 'warn'
- class octoprint.schema.config.serial.SerialCapabilities(*, autoreport_temp: bool = True, autoreport_sdstatus: bool = True, autoreport_pos: bool = True, busy_protocol: bool = True, emergency_parser: bool = True, extended_m20: bool = True, lfn_write: bool = True)
- autoreport_pos: bool
Whether to enable position autoreport in the firmware if its support is detected
- autoreport_sdstatus: bool
Whether to enable SD printing autoreport in the firmware if its support is detected
- autoreport_temp: bool
Whether to enable temperature autoreport in the firmware if its support is detected
- busy_protocol: bool
Whether to shorten the communication timeout if the firmware seems to support the busy protocol
- emergency_parser: bool
Whether to send emergency commands out of band if the firmware seems to support the emergency parser
- extended_m20: bool
Whether to request extended M20 (file list) output from the firmware if its support is detected
- lfn_write: bool
Whether to enable long filename support for SD card writes if the firmware reports support for it
- model_computed_fields: ClassVar[Dict[str, ComputedFieldInfo]] = {}
A dictionary of computed field names and their corresponding ComputedFieldInfo objects.
- model_config: ClassVar[ConfigDict] = {'use_enum_values': True, 'validate_default': True}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- model_fields: ClassVar[Dict[str, FieldInfo]] = {'autoreport_pos': FieldInfo(annotation=bool, required=False, default=True, description='Whether to enable position autoreport in the firmware if its support is detected'), 'autoreport_sdstatus': FieldInfo(annotation=bool, required=False, default=True, description='Whether to enable SD printing autoreport in the firmware if its support is detected'), 'autoreport_temp': FieldInfo(annotation=bool, required=False, default=True, description='Whether to enable temperature autoreport in the firmware if its support is detected'), 'busy_protocol': FieldInfo(annotation=bool, required=False, default=True, description='Whether to shorten the communication timeout if the firmware seems to support the busy protocol'), 'emergency_parser': FieldInfo(annotation=bool, required=False, default=True, description='Whether to send emergency commands out of band if the firmware seems to support the emergency parser'), 'extended_m20': FieldInfo(annotation=bool, required=False, default=True, description='Whether to request extended M20 (file list) output from the firmware if its support is detected'), 'lfn_write': FieldInfo(annotation=bool, required=False, default=True, description='Whether to enable long filename support for SD card writes if the firmware reports support for it')}
Metadata about the fields defined on the model, mapping of field names to [FieldInfo][pydantic.fields.FieldInfo] objects.
This replaces Model.__fields__ from Pydantic V1.
- class octoprint.schema.config.serial.SerialConfig(*, port: str | None = None, baudrate: int | None = None, exclusive: bool = True, lowLatency: bool = False, autoconnect: bool = False, autorefresh: bool = True, autorefreshInterval: int = 1, log: bool = False, timeout: SerialTimeoutConfig = SerialTimeoutConfig(detectionFirst=10.0, detectionConsecutive=2.0, connection=10.0, communication=30.0, communicationBusy=3.0, temperature=5.0, temperatureTargetSet=2.0, temperatureAutoreport=2.0, sdStatus=1.0, sdStatusAutoreport=1.0, posAutoreport=5.0, resendOk=0.5, baudrateDetectionPause=1.0, positionLogWait=10.0), maxCommunicationTimeouts: SerialMaxTimeouts = SerialMaxTimeouts(idle=2, printing=5, long=5), maxWritePasses: int = 5, additionalPorts: List[str] = [], additionalBaudrates: List[int] = [], blacklistedPorts: List[str] = [], blacklistedBaudrates: List[int] = [], longRunningCommands: List[str] = ['G4', 'G28', 'G29', 'G30', 'G32', 'M400', 'M226', 'M600'], blockedCommands: List[str] = ['M0', 'M1'], ignoredCommands: List[str] = [], pausingCommands: List[str] = ['M0', 'M1', 'M25'], emergencyCommands: List[str] = ['M112', 'M108', 'M410'], checksumRequiringCommands: List[str] = ['M110'], helloCommand: str = 'M110 N0', suppressSecondHello: bool = False, disconnectOnErrors: bool = True, ignoreErrorsFromFirmware: bool = False, terminalLogSize: int = 20, lastLineBufferSize: int = 50, logResends: bool = True, supportResendsWithoutOk: AlwaysDetectNeverEnum = 'detect', logPositionOnPause: bool = True, logPositionOnCancel: bool = False, abortHeatupOnCancel: bool = True, waitForStartOnConnect: bool = False, waitToLoadSdFileList: bool = True, alwaysSendChecksum: bool = False, neverSendChecksum: bool = False, sendChecksumWithUnknownCommands: bool = False, unknownCommandsNeedAck: bool = False, sdRelativePath: bool = False, sdAlwaysAvailable: bool = False, sdLowerCase: bool = False, sdCancelCommand: str = 'M25', maxNotSdPrinting: int = 2, swallowOkAfterResend: bool = True, repetierTargetTemp: bool = False, externalHeatupDetection: bool = True, supportWait: bool = True, ignoreIdenticalResends: bool = False, identicalResendsCountdown: int = 7, supportFAsCommand: bool = False, firmwareDetection: bool = True, blockWhileDwelling: bool = False, useParityWorkaround: AlwaysDetectNeverEnum = 'detect', maxConsecutiveResends: int = 10, sendM112OnError: bool = True, disableSdPrintingDetection: bool = False, ackMax: int = 1, sanityCheckTools: bool = True, notifySuppressedCommands: InfoWarnNeverEnum = 'warn', capabilities: SerialCapabilities = SerialCapabilities(autoreport_temp=True, autoreport_sdstatus=True, autoreport_pos=True, busy_protocol=True, emergency_parser=True, extended_m20=True, lfn_write=True), resendRatioThreshold: int = 10, resendRatioStart: int = 100, ignoreEmptyPorts: bool = False, encoding: str = 'ascii', enableShutdownActionCommand: bool = False, triggerOkForM29: bool = True)
-
- additionalBaudrates: List[int]
Use this to define additional baud rates to offer for connecting to serial ports. Must be a valid integer
- additionalPorts: List[str]
//docs.python.org/3/library/glob.html)
- Type:
Use this to define additional patterns to consider for serial port listing. Must be a valid [“glob” pattern](http
- alwaysSendChecksum: bool
Specifies whether OctoPrint should send linenumber + checksum with every printer command. Needed for successful communication with Repetier firmware.
- autorefresh: bool
Whether to automatically refresh the port list while no connection is established
- autorefreshInterval: int
Interval in seconds at which to refresh the port list while no connection is established
- baudrate: int | None
The default baudrate to use to connect to the printer. If unset or set to 0, the baudrate will be auto-detected.
- blockWhileDwelling: bool
Whether to block all sending to the printer while a G4 (dwell) command is active (true, repetier) or not (false).
- blockedCommands: List[str]
Commands which should not be sent to the printer, e.g. because they are known to block serial communication until physical interaction with the printer as is the case on most firmwares with the default M0 and M1.
- capabilities: SerialCapabilities
- enableShutdownActionCommand: bool
Whether to enable support for the shutdown action command, allowing the printer to shut down OctoPrint and the system it’s running on.
- encoding: str
//docs.python.org/3/library/codecs.html#standard-encodings).
- Type:
Encoding to use when talking to a machine. ascii limits access to characters 0-127, latin_1 enables access to the “extended” ascii characters 0-255. Other values can be used, see [Python’s standard encodings](https
- externalHeatupDetection: bool
Whether to enable external heatup detection (to detect heatup triggered e.g. through the printer’s LCD panel or while printing from SD) or not. Causes issues with Repetier’s “first ok then response” approach to communication, so disable for printers running Repetier firmware.
- firmwareDetection: bool
Whether to attempt to auto detect the firmware of the printer and adjust settings accordingly (true) or not and rely on manual configuration (false).
- identicalResendsCountdown: int
If ignoreIdenticalResends is true, how many consecutive identical resends to ignore.
- ignoreIdenticalResends: bool
Whether to ignore identical resends from the printer (true, repetier) or not (false).
- ignoredCommands: List[str]
Commands which should not be sent to the printer and just silently ignored. An example of when you may wish to use this could be useful if you wish to manually change a filament on M600, by using that as a Pausing command.
- log: bool
might decrease performance)
- Type:
Whether to log whole communication to serial.log (warning
- logResends: bool
Whether to log resends to octoprint.log or not. Invaluable debug tool without performance impact, leave on if possible please.
- longRunningCommands: List[str]
Commands which are known to take a long time to be acknowledged by the firmware, e.g. homing, dwelling, auto leveling etc.
- maxCommunicationTimeouts: SerialMaxTimeouts
- maxWritePasses: int
Maximum number of write attempts to serial during which nothing can be written before the communication with the printer is considered dead and OctoPrint will disconnect with an error
- model_computed_fields: ClassVar[Dict[str, ComputedFieldInfo]] = {}
A dictionary of computed field names and their corresponding ComputedFieldInfo objects.
- model_config: ClassVar[ConfigDict] = {'use_enum_values': True, 'validate_default': True}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- model_fields: ClassVar[Dict[str, FieldInfo]] = {'abortHeatupOnCancel': FieldInfo(annotation=bool, required=False, default=True), 'ackMax': FieldInfo(annotation=int, required=False, default=1), 'additionalBaudrates': FieldInfo(annotation=List[int], required=False, default=[], description='Use this to define additional baud rates to offer for connecting to serial ports. Must be a valid integer'), 'additionalPorts': FieldInfo(annotation=List[str], required=False, default=[], description='Use this to define additional patterns to consider for serial port listing. Must be a valid ["glob" pattern](http://docs.python.org/3/library/glob.html)'), 'alwaysSendChecksum': FieldInfo(annotation=bool, required=False, default=False, description='Specifies whether OctoPrint should send linenumber + checksum with every printer command. Needed for successful communication with Repetier firmware.'), 'autoconnect': FieldInfo(annotation=bool, required=False, default=False, description='Whether to try to automatically connect to the printer on startup or not'), 'autorefresh': FieldInfo(annotation=bool, required=False, default=True, description='Whether to automatically refresh the port list while no connection is established'), 'autorefreshInterval': FieldInfo(annotation=int, required=False, default=1, description='Interval in seconds at which to refresh the port list while no connection is established'), 'baudrate': FieldInfo(annotation=Union[int, NoneType], required=False, default=None, description='The default baudrate to use to connect to the printer. If unset or set to 0, the baudrate will be auto-detected.'), 'blacklistedBaudrates': FieldInfo(annotation=List[int], required=False, default=[]), 'blacklistedPorts': FieldInfo(annotation=List[str], required=False, default=[]), 'blockWhileDwelling': FieldInfo(annotation=bool, required=False, default=False, description='Whether to block all sending to the printer while a G4 (dwell) command is active (true, repetier) or not (false).'), 'blockedCommands': FieldInfo(annotation=List[str], required=False, default=['M0', 'M1'], description='Commands which should not be sent to the printer, e.g. because they are known to block serial communication until physical interaction with the printer as is the case on most firmwares with the default M0 and M1.'), 'capabilities': FieldInfo(annotation=SerialCapabilities, required=False, default=SerialCapabilities(autoreport_temp=True, autoreport_sdstatus=True, autoreport_pos=True, busy_protocol=True, emergency_parser=True, extended_m20=True, lfn_write=True)), 'checksumRequiringCommands': FieldInfo(annotation=List[str], required=False, default=['M110'], description='Commands which need to always be send with a checksum.'), 'disableSdPrintingDetection': FieldInfo(annotation=bool, required=False, default=False), 'disconnectOnErrors': FieldInfo(annotation=bool, required=False, default=True, description='Whether to disconnect from the printer on errors or not.'), 'emergencyCommands': FieldInfo(annotation=List[str], required=False, default=['M112', 'M108', 'M410']), 'enableShutdownActionCommand': FieldInfo(annotation=bool, required=False, default=False, description="Whether to enable support for the shutdown action command, allowing the printer to shut down OctoPrint and the system it's running on."), 'encoding': FieldInfo(annotation=str, required=False, default='ascii', description='Encoding to use when talking to a machine. `ascii` limits access to characters 0-127, `latin_1` enables access to the "extended" ascii characters 0-255. Other values can be used, see [Python\'s standard encodings](https://docs.python.org/3/library/codecs.html#standard-encodings).'), 'exclusive': FieldInfo(annotation=bool, required=False, default=True, description='Whether to request the serial port exclusively or not'), 'externalHeatupDetection': FieldInfo(annotation=bool, required=False, default=True, description='Whether to enable external heatup detection (to detect heatup triggered e.g. through the printer\'s LCD panel or while printing from SD) or not. Causes issues with Repetier\'s "first ok then response" approach to communication, so disable for printers running Repetier firmware.'), 'firmwareDetection': FieldInfo(annotation=bool, required=False, default=True, description='Whether to attempt to auto detect the firmware of the printer and adjust settings accordingly (true) or not and rely on manual configuration (false).'), 'helloCommand': FieldInfo(annotation=str, required=False, default='M110 N0', description='Command to send in order to initiate a handshake with the printer.'), 'identicalResendsCountdown': FieldInfo(annotation=int, required=False, default=7, description='If `ignoreIdenticalResends` is true, how many consecutive identical resends to ignore.'), 'ignoreEmptyPorts': FieldInfo(annotation=bool, required=False, default=False), 'ignoreErrorsFromFirmware': FieldInfo(annotation=bool, required=False, default=False, description='Whether to completely ignore errors from the firmware or not.'), 'ignoreIdenticalResends': FieldInfo(annotation=bool, required=False, default=False, description='Whether to ignore identical resends from the printer (true, repetier) or not (false).'), 'ignoredCommands': FieldInfo(annotation=List[str], required=False, default=[], description='Commands which should not be sent to the printer and just silently ignored. An example of when you may wish to use this could be useful if you wish to manually change a filament on M600, by using that as a Pausing command.'), 'lastLineBufferSize': FieldInfo(annotation=int, required=False, default=50), 'log': FieldInfo(annotation=bool, required=False, default=False, description='Whether to log whole communication to serial.log (warning: might decrease performance)'), 'logPositionOnCancel': FieldInfo(annotation=bool, required=False, default=False), 'logPositionOnPause': FieldInfo(annotation=bool, required=False, default=True), 'logResends': FieldInfo(annotation=bool, required=False, default=True, description='Whether to log resends to octoprint.log or not. Invaluable debug tool without performance impact, leave on if possible please.'), 'longRunningCommands': FieldInfo(annotation=List[str], required=False, default=['G4', 'G28', 'G29', 'G30', 'G32', 'M400', 'M226', 'M600'], description='Commands which are known to take a long time to be acknowledged by the firmware, e.g. homing, dwelling, auto leveling etc.'), 'lowLatency': FieldInfo(annotation=bool, required=False, default=False, description='Whether to request low latency mode on the serial port or not'), 'maxCommunicationTimeouts': FieldInfo(annotation=SerialMaxTimeouts, required=False, default=SerialMaxTimeouts(idle=2, printing=5, long=5)), 'maxConsecutiveResends': FieldInfo(annotation=int, required=False, default=10), 'maxNotSdPrinting': FieldInfo(annotation=int, required=False, default=2), 'maxWritePasses': FieldInfo(annotation=int, required=False, default=5, description='Maximum number of write attempts to serial during which nothing can be written before the communication with the printer is considered dead and OctoPrint will disconnect with an error'), 'neverSendChecksum': FieldInfo(annotation=bool, required=False, default=False), 'notifySuppressedCommands': FieldInfo(annotation=InfoWarnNeverEnum, required=False, default='warn'), 'pausingCommands': FieldInfo(annotation=List[str], required=False, default=['M0', 'M1', 'M25'], description='Commands which should cause OctoPrint to pause any ongoing prints.'), 'port': FieldInfo(annotation=Union[str, NoneType], required=False, default=None, description='The default port to use to connect to the printer. If unset or set to `AUTO`, the port will be auto-detected.'), 'repetierTargetTemp': FieldInfo(annotation=bool, required=False, default=False, description='Whether the printer sends repetier style target temperatures in the format `TargetExtr0:<temperature>` instead of attaching that information to the regular `M105` responses.'), 'resendRatioStart': FieldInfo(annotation=int, required=False, default=100), 'resendRatioThreshold': FieldInfo(annotation=int, required=False, default=10, description='Percentage of resend requests among all sent lines that should be considered critical.'), 'sanityCheckTools': FieldInfo(annotation=bool, required=False, default=True), 'sdAlwaysAvailable': FieldInfo(annotation=bool, required=False, default=False, description="Whether to always assume that an SD card is present in the printer. Needed by some firmwares which don't report the SD card status properly."), 'sdCancelCommand': FieldInfo(annotation=str, required=False, default='M25'), 'sdLowerCase': FieldInfo(annotation=bool, required=False, default=False), 'sdRelativePath': FieldInfo(annotation=bool, required=False, default=False, description='Specifies whether firmware expects relative paths for selecting SD files.'), 'sendChecksumWithUnknownCommands': FieldInfo(annotation=bool, required=False, default=False, description='Specifies whether OctoPrint should also send linenumber + checksum with commands that are *not* detected as valid GCODE (as in, they do not match the regular expression `^\\s*([GM]\\d+|T)`).'), 'sendM112OnError': FieldInfo(annotation=bool, required=False, default=True), 'supportFAsCommand': FieldInfo(annotation=bool, required=False, default=False, description='Whether to support `F` on its own as a valid GCODE command (true) or not (false).'), 'supportResendsWithoutOk': FieldInfo(annotation=AlwaysDetectNeverEnum, required=False, default='detect', description='Whether to support resends without follow-up ok or not.'), 'supportWait': FieldInfo(annotation=bool, required=False, default=True), 'suppressSecondHello': FieldInfo(annotation=bool, required=False, default=False, description='Whether to suppress the second hello command. Might be required for some printer configurations with custom hello commands.'), 'swallowOkAfterResend': FieldInfo(annotation=bool, required=False, default=True), 'terminalLogSize': FieldInfo(annotation=int, required=False, default=20), 'timeout': FieldInfo(annotation=SerialTimeoutConfig, required=False, default=SerialTimeoutConfig(detectionFirst=10.0, detectionConsecutive=2.0, connection=10.0, communication=30.0, communicationBusy=3.0, temperature=5.0, temperatureTargetSet=2.0, temperatureAutoreport=2.0, sdStatus=1.0, sdStatusAutoreport=1.0, posAutoreport=5.0, resendOk=0.5, baudrateDetectionPause=1.0, positionLogWait=10.0), description='Timeouts used for the serial connection to the printer, you might want to adjust these if you are experiencing connection problems'), 'triggerOkForM29': FieldInfo(annotation=bool, required=False, default=True, description='Whether to automatically trigger an ok for `M29` (a lot of versions of this command are buggy and the response skips on the ok).'), 'unknownCommandsNeedAck': FieldInfo(annotation=bool, required=False, default=False, description='Specifies whether OctoPrint should also use up acknowledgments (`ok`) for commands that are *not* detected as valid GCODE (as in, they do not match the regular expression `^\\s*([GM]\\d+|T)`).'), 'useParityWorkaround': FieldInfo(annotation=AlwaysDetectNeverEnum, required=False, default='detect'), 'waitForStartOnConnect': FieldInfo(annotation=bool, required=False, default=False, description='Whether OctoPrint should wait for the `start` response from the printer before trying to send commands during connect.'), 'waitToLoadSdFileList': FieldInfo(annotation=bool, required=False, default=True, description='Specifies whether OctoPrint should wait to load the SD card file list until the first firmware capability report is processed.')}
Metadata about the fields defined on the model, mapping of field names to [FieldInfo][pydantic.fields.FieldInfo] objects.
This replaces Model.__fields__ from Pydantic V1.
- notifySuppressedCommands: InfoWarnNeverEnum
- port: str | None
The default port to use to connect to the printer. If unset or set to AUTO, the port will be auto-detected.
- repetierTargetTemp: bool
Whether the printer sends repetier style target temperatures in the format TargetExtr0:<temperature> instead of attaching that information to the regular M105 responses.
- resendRatioThreshold: int
Percentage of resend requests among all sent lines that should be considered critical.
- sdAlwaysAvailable: bool
Whether to always assume that an SD card is present in the printer. Needed by some firmwares which don’t report the SD card status properly.
- sendChecksumWithUnknownCommands: bool
Specifies whether OctoPrint should also send linenumber + checksum with commands that are not detected as valid GCODE (as in, they do not match the regular expression ^s*([GM]d+|T)).
- supportFAsCommand: bool
Whether to support F on its own as a valid GCODE command (true) or not (false).
- supportResendsWithoutOk: AlwaysDetectNeverEnum
Whether to support resends without follow-up ok or not.
- suppressSecondHello: bool
Whether to suppress the second hello command. Might be required for some printer configurations with custom hello commands.
- timeout: SerialTimeoutConfig
Timeouts used for the serial connection to the printer, you might want to adjust these if you are experiencing connection problems
- triggerOkForM29: bool
Whether to automatically trigger an ok for M29 (a lot of versions of this command are buggy and the response skips on the ok).
- unknownCommandsNeedAck: bool
Specifies whether OctoPrint should also use up acknowledgments (ok) for commands that are not detected as valid GCODE (as in, they do not match the regular expression ^s*([GM]d+|T)).
- useParityWorkaround: AlwaysDetectNeverEnum
- class octoprint.schema.config.serial.SerialMaxTimeouts(*, idle: int = 2, printing: int = 5, long: int = 5)
-
- model_computed_fields: ClassVar[Dict[str, ComputedFieldInfo]] = {}
A dictionary of computed field names and their corresponding ComputedFieldInfo objects.
- model_config: ClassVar[ConfigDict] = {'use_enum_values': True, 'validate_default': True}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- model_fields: ClassVar[Dict[str, FieldInfo]] = {'idle': FieldInfo(annotation=int, required=False, default=2, description='Max. timeouts when the printer is idle'), 'long': FieldInfo(annotation=int, required=False, default=5, description='Max. timeouts when a long running command is active'), 'printing': FieldInfo(annotation=int, required=False, default=5, description='Max. timeouts when the printer is printing')}
Metadata about the fields defined on the model, mapping of field names to [FieldInfo][pydantic.fields.FieldInfo] objects.
This replaces Model.__fields__ from Pydantic V1.
- class octoprint.schema.config.serial.SerialTimeoutConfig(*, detectionFirst: float = 10.0, detectionConsecutive: float = 2.0, connection: float = 10.0, communication: float = 30.0, communicationBusy: float = 3.0, temperature: float = 5.0, temperatureTargetSet: float = 2.0, temperatureAutoreport: float = 2.0, sdStatus: float = 1.0, sdStatusAutoreport: float = 1.0, posAutoreport: float = 5.0, resendOk: float = 0.5, baudrateDetectionPause: float = 1.0, positionLogWait: float = 10.0)
-
- communicationBusy: float
Timeout during serial communication when busy protocol support is detected, in seconds
- model_computed_fields: ClassVar[Dict[str, ComputedFieldInfo]] = {}
A dictionary of computed field names and their corresponding ComputedFieldInfo objects.
- model_config: ClassVar[ConfigDict] = {'use_enum_values': True, 'validate_default': True}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- model_fields: ClassVar[Dict[str, FieldInfo]] = {'baudrateDetectionPause': FieldInfo(annotation=float, required=False, default=1.0), 'communication': FieldInfo(annotation=float, required=False, default=30.0, description='Timeout during serial communication, in seconds'), 'communicationBusy': FieldInfo(annotation=float, required=False, default=3.0, description='Timeout during serial communication when busy protocol support is detected, in seconds'), 'connection': FieldInfo(annotation=float, required=False, default=10.0, description='Timeout for waiting to establish a connection with the selected port, in seconds'), 'detectionConsecutive': FieldInfo(annotation=float, required=False, default=2.0), 'detectionFirst': FieldInfo(annotation=float, required=False, default=10.0), 'posAutoreport': FieldInfo(annotation=float, required=False, default=5.0), 'positionLogWait': FieldInfo(annotation=float, required=False, default=10.0), 'resendOk': FieldInfo(annotation=float, required=False, default=0.5), 'sdStatus': FieldInfo(annotation=float, required=False, default=1.0, description='Timeout after which to query the SD status while SD printing'), 'sdStatusAutoreport': FieldInfo(annotation=float, required=False, default=1.0), 'temperature': FieldInfo(annotation=float, required=False, default=5.0, description='Timeout after which to query temperature when no target is set'), 'temperatureAutoreport': FieldInfo(annotation=float, required=False, default=2.0), 'temperatureTargetSet': FieldInfo(annotation=float, required=False, default=2.0, description='Timeout after which to query temperature when a target is set')}
Metadata about the fields defined on the model, mapping of field names to [FieldInfo][pydantic.fields.FieldInfo] objects.
This replaces Model.__fields__ from Pydantic V1.
- class octoprint.schema.config.server.CommandsConfig(*, systemShutdownCommand: str | None = None, systemRestartCommand: str | None = None, serverRestartCommand: str | None = None, localPipCommand: str | None = None)
- localPipCommand: str | None
pip command associated with OctoPrint, used for installing plugins and updates, if unset (default) the command will be autodetected based on the current python executable - unless you have a really special setup this is the right way to do it and there should be no need to ever touch this setting.
- model_computed_fields: ClassVar[Dict[str, ComputedFieldInfo]] = {}
A dictionary of computed field names and their corresponding ComputedFieldInfo objects.
- model_config: ClassVar[ConfigDict] = {'use_enum_values': True, 'validate_default': True}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- model_fields: ClassVar[Dict[str, FieldInfo]] = {'localPipCommand': FieldInfo(annotation=Union[str, NoneType], required=False, default=None, description='pip command associated with OctoPrint, used for installing plugins and updates, if unset (default) the command will be autodetected based on the current python executable - unless you have a really special setup this is the right way to do it and there should be no need to ever touch this setting.'), 'serverRestartCommand': FieldInfo(annotation=Union[str, NoneType], required=False, default=None, description='Command to restart OctoPrint.'), 'systemRestartCommand': FieldInfo(annotation=Union[str, NoneType], required=False, default=None, description='Command to restart the system OctoPrint is running on.'), 'systemShutdownCommand': FieldInfo(annotation=Union[str, NoneType], required=False, default=None, description='Command to shut down the system OctoPrint is running on.')}
Metadata about the fields defined on the model, mapping of field names to [FieldInfo][pydantic.fields.FieldInfo] objects.
This replaces Model.__fields__ from Pydantic V1.
- class octoprint.schema.config.server.CookiesConfig(*, secure: bool = False, samesite: SameSiteEnum | None = SameSiteEnum.lax)
- model_computed_fields: ClassVar[Dict[str, ComputedFieldInfo]] = {}
A dictionary of computed field names and their corresponding ComputedFieldInfo objects.
- model_config: ClassVar[ConfigDict] = {'use_enum_values': True, 'validate_default': True}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- model_fields: ClassVar[Dict[str, FieldInfo]] = {'samesite': FieldInfo(annotation=Union[SameSiteEnum, NoneType], required=False, default=<SameSiteEnum.lax: 'Lax'>, description='`SameSite` setting to use on the cookies. Possible values are `None`, `Lax` and `Strict`. Defaults to `Lax`. Be advised that if forced unset, this has security implications as many browsers now default to `Lax` unless you configure cookies to be set with `Secure` flag set, explicitly set `SameSite` setting here and also serve OctoPrint over https. The `Lax` setting is known to cause with embedding OctoPrint in frames. See also ["Feature: Cookies default to SameSite=Lax"](https://www.chromestatus.com/feature/5088147346030592), ["Feature: Reject insecure SameSite=None cookies"](https://www.chromestatus.com/feature/5633521622188032) and [issue #3482](https://github.com/OctoPrint/OctoPrint/issues/3482).'), 'secure': FieldInfo(annotation=bool, required=False, default=False, description='Whether to set the `Secure` flag to true on cookies. Only set to true if you are running OctoPrint behind a reverse proxy taking care of SSL termination.')}
Metadata about the fields defined on the model, mapping of field names to [FieldInfo][pydantic.fields.FieldInfo] objects.
This replaces Model.__fields__ from Pydantic V1.
- samesite: SameSiteEnum | None
//www.chromestatus.com/feature/5088147346030592), [“Feature: Reject insecure SameSite=None cookies”](https://www.chromestatus.com/feature/5633521622188032) and [issue #3482](https://github.com/OctoPrint/OctoPrint/issues/3482).
- Type:
SameSite setting to use on the cookies. Possible values are None, Lax and Strict. Defaults to Lax. Be advised that if forced unset, this has security implications as many browsers now default to Lax unless you configure cookies to be set with Secure flag set, explicitly set SameSite setting here and also serve OctoPrint over https. The Lax setting is known to cause with embedding OctoPrint in frames. See also [“Feature
- Type:
Cookies default to SameSite=Lax”](https
- class octoprint.schema.config.server.DiskspaceConfig(*, warning: int = 524288000, critical: int = 209715200)
- critical: int
Threshold (bytes) after which to consider disk space becoming critical, defaults to 200MB.
- model_computed_fields: ClassVar[Dict[str, ComputedFieldInfo]] = {}
A dictionary of computed field names and their corresponding ComputedFieldInfo objects.
- model_config: ClassVar[ConfigDict] = {'use_enum_values': True, 'validate_default': True}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- model_fields: ClassVar[Dict[str, FieldInfo]] = {'critical': FieldInfo(annotation=int, required=False, default=209715200, description='Threshold (bytes) after which to consider disk space becoming critical, defaults to 200MB.'), 'warning': FieldInfo(annotation=int, required=False, default=524288000, description='Threshold (bytes) after which to consider disk space becoming sparse, defaults to 500MB.')}
Metadata about the fields defined on the model, mapping of field names to [FieldInfo][pydantic.fields.FieldInfo] objects.
This replaces Model.__fields__ from Pydantic V1.
- class octoprint.schema.config.server.IpCheckConfig(*, enabled: bool = True, trustedSubnets: List[str] = [])
-
- model_computed_fields: ClassVar[Dict[str, ComputedFieldInfo]] = {}
A dictionary of computed field names and their corresponding ComputedFieldInfo objects.
- model_config: ClassVar[ConfigDict] = {'use_enum_values': True, 'validate_default': True}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- model_fields: ClassVar[Dict[str, FieldInfo]] = {'enabled': FieldInfo(annotation=bool, required=False, default=True, description='Whether to enable the check.'), 'trustedSubnets': FieldInfo(annotation=List[str], required=False, default=[], description='Additional non-local subnets to consider trusted, in CIDR notation, e.g. `192.168.1.0/24`.')}
Metadata about the fields defined on the model, mapping of field names to [FieldInfo][pydantic.fields.FieldInfo] objects.
This replaces Model.__fields__ from Pydantic V1.
- class octoprint.schema.config.server.OnlineCheckConfig(*, enabled: bool | None = None, interval: int = 900, host: str = '1.1.1.1', port: int = 53, name: str = 'octoprint.org')
- enabled: bool | None
Whether the online check is enabled. Ships unset, the user will be asked to make a decision as part of the setup wizard.
- interval: int
Interval in which to check for online connectivity (in seconds), defaults to 15 minutes.
- model_computed_fields: ClassVar[Dict[str, ComputedFieldInfo]] = {}
A dictionary of computed field names and their corresponding ComputedFieldInfo objects.
- model_config: ClassVar[ConfigDict] = {'use_enum_values': True, 'validate_default': True}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- model_fields: ClassVar[Dict[str, FieldInfo]] = {'enabled': FieldInfo(annotation=Union[bool, NoneType], required=False, default=None, description='Whether the online check is enabled. Ships unset, the user will be asked to make a decision as part of the setup wizard.'), 'host': FieldInfo(annotation=str, required=False, default='1.1.1.1', description="DNS host against which to check, defaults to Cloudflare's DNS."), 'interval': FieldInfo(annotation=int, required=False, default=900, description='Interval in which to check for online connectivity (in seconds), defaults to 15 minutes.'), 'name': FieldInfo(annotation=str, required=False, default='octoprint.org', description="Host name for which to check name resolution, defaults to OctoPrint's main domain."), 'port': FieldInfo(annotation=int, required=False, default=53, description='DNS port against which to check, defaults to the standard DNS port.')}
Metadata about the fields defined on the model, mapping of field names to [FieldInfo][pydantic.fields.FieldInfo] objects.
This replaces Model.__fields__ from Pydantic V1.
- class octoprint.schema.config.server.PluginBlacklistConfig(*, enabled: bool | None = None, url: str = 'https://plugins.octoprint.org/blacklist.json', ttl: int = 900, timeout: float = 3.05)
- enabled: bool | None
Whether use of the blacklist is enabled. If unset, the user will be asked to make a decision as part of the setup wizard.
- model_computed_fields: ClassVar[Dict[str, ComputedFieldInfo]] = {}
A dictionary of computed field names and their corresponding ComputedFieldInfo objects.
- model_config: ClassVar[ConfigDict] = {'use_enum_values': True, 'validate_default': True}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- model_fields: ClassVar[Dict[str, FieldInfo]] = {'enabled': FieldInfo(annotation=Union[bool, NoneType], required=False, default=None, description='Whether use of the blacklist is enabled. If unset, the user will be asked to make a decision as part of the setup wizard.'), 'timeout': FieldInfo(annotation=float, required=False, default=3.05, description='Timeout for fetching the blacklist, in seconds (default: 3.05 seconds).'), 'ttl': FieldInfo(annotation=int, required=False, default=900, description='Time to live of the cached blacklist, in seconds (default: 15 minutes).'), 'url': FieldInfo(annotation=str, required=False, default='https://plugins.octoprint.org/blacklist.json', description='The URL from which to fetch the blacklist.')}
Metadata about the fields defined on the model, mapping of field names to [FieldInfo][pydantic.fields.FieldInfo] objects.
This replaces Model.__fields__ from Pydantic V1.
- class octoprint.schema.config.server.PreemptiveCacheConfig(*, exceptions: List[str] = [], until: int = 7)
-
- model_computed_fields: ClassVar[Dict[str, ComputedFieldInfo]] = {}
A dictionary of computed field names and their corresponding ComputedFieldInfo objects.
- model_config: ClassVar[ConfigDict] = {'use_enum_values': True, 'validate_default': True}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- model_fields: ClassVar[Dict[str, FieldInfo]] = {'exceptions': FieldInfo(annotation=List[str], required=False, default=[], description='Which server paths to exclude from the preemptive cache, e.g. `/some/path`.'), 'until': FieldInfo(annotation=int, required=False, default=7, description='How many days to leave unused entries in the preemptive cache config.')}
Metadata about the fields defined on the model, mapping of field names to [FieldInfo][pydantic.fields.FieldInfo] objects.
This replaces Model.__fields__ from Pydantic V1.
- class octoprint.schema.config.server.PythonEolCheckConfig(*, enabled: bool = True, url: str = 'https://get.octoprint.org/python-eol', ttl: int = 1440, fallback: Dict[str, PythonEolEntry] = {'3.7': {'date': '2023-06-27', 'last_octoprint': '1.11.*'}, '3.8': {'date': '2024-10-31'}})
-
- fallback: Dict[str, PythonEolEntry]
Fallback data for Python EOL data, in case the online check fails.
- model_computed_fields: ClassVar[Dict[str, ComputedFieldInfo]] = {}
A dictionary of computed field names and their corresponding ComputedFieldInfo objects.
- model_config: ClassVar[ConfigDict] = {'use_enum_values': True, 'validate_default': True}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- model_fields: ClassVar[Dict[str, FieldInfo]] = {'enabled': FieldInfo(annotation=bool, required=False, default=True, description='Whether to enable the Python EOL warning.'), 'fallback': FieldInfo(annotation=Dict[str, PythonEolEntry], required=False, default={'3.7': {'date': '2023-06-27', 'last_octoprint': '1.11.*'}, '3.8': {'date': '2024-10-31'}}, description='Fallback data for Python EOL data, in case the online check fails.'), 'ttl': FieldInfo(annotation=int, required=False, default=1440, description='Time to live of the cached Python EOL data, in minutes (default: 24 hours).'), 'url': FieldInfo(annotation=str, required=False, default='https://get.octoprint.org/python-eol', description='URL to fetch the Python EOL data from.')}
Metadata about the fields defined on the model, mapping of field names to [FieldInfo][pydantic.fields.FieldInfo] objects.
This replaces Model.__fields__ from Pydantic V1.
- class octoprint.schema.config.server.PythonEolEntry(*, date: str, last_octoprint: str | None = None)
-
- last_octoprint: str | None
The last OctoPrint version that will support this Python version, optional.
- model_computed_fields: ClassVar[Dict[str, ComputedFieldInfo]] = {}
A dictionary of computed field names and their corresponding ComputedFieldInfo objects.
- model_config: ClassVar[ConfigDict] = {'use_enum_values': True, 'validate_default': True}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- model_fields: ClassVar[Dict[str, FieldInfo]] = {'date': FieldInfo(annotation=str, required=True, description='The date when the Python version will reach EOL, in format YYYY-MM-DD.'), 'last_octoprint': FieldInfo(annotation=Union[str, NoneType], required=False, default=None, description='The last OctoPrint version that will support this Python version, optional.')}
Metadata about the fields defined on the model, mapping of field names to [FieldInfo][pydantic.fields.FieldInfo] objects.
This replaces Model.__fields__ from Pydantic V1.
- class octoprint.schema.config.server.ReverseProxyConfig(*, prefixHeader: str | None = None, schemeHeader: str | None = None, hostHeader: str | None = None, serverHeader: str | None = None, portHeader: str | None = None, prefixFallback: str | None = None, schemeFallback: str | None = None, hostFallback: str | None = None, serverFallback: str | None = None, portFallback: str | None = None, trustedProxies: List[str] = [], trustLocalhostProxies: bool = True)
- hostFallback: str | None
Use this option to define an optional forced host under which to run OctoPrint. This should only be needed if you want to run OctoPrint behind a reverse proxy with a different hostname than OctoPrint itself but can’t configure said reverse proxy to send a host HTTP header (X-Forwarded-Host by default, see above) with forwarded requests.
- hostHeader: str | None
The request header from which to determine the host under which OctoPrint is served by the reverse proxy.
- model_computed_fields: ClassVar[Dict[str, ComputedFieldInfo]] = {}
A dictionary of computed field names and their corresponding ComputedFieldInfo objects.
- model_config: ClassVar[ConfigDict] = {'use_enum_values': True, 'validate_default': True}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- model_fields: ClassVar[Dict[str, FieldInfo]] = {'hostFallback': FieldInfo(annotation=Union[str, NoneType], required=False, default=None, description="Use this option to define an optional forced host under which to run OctoPrint. This should only be needed if you want to run OctoPrint behind a reverse proxy with a different hostname than OctoPrint itself but can't configure said reverse proxy to send a host HTTP header (X-Forwarded-Host by default, see above) with forwarded requests."), 'hostHeader': FieldInfo(annotation=Union[str, NoneType], required=False, default=None, description='The request header from which to determine the host under which OctoPrint is served by the reverse proxy.'), 'portFallback': FieldInfo(annotation=Union[str, NoneType], required=False, default=None), 'portHeader': FieldInfo(annotation=Union[str, NoneType], required=False, default=None), 'prefixFallback': FieldInfo(annotation=Union[str, NoneType], required=False, default=None, description="Use this option to define an optional URL prefix (with a leading /, so absolute to your server's root) under which to run OctoPrint. This should only be needed if you want to run OctoPrint behind a reverse proxy under a different root endpoint than `/` and can't configure said reverse proxy to send a prefix HTTP header (X-Script-Name by default, see above) with forwarded requests."), 'prefixHeader': FieldInfo(annotation=Union[str, NoneType], required=False, default=None, description='The request header from which to determine the URL prefix under which OctoPrint is served by the reverse proxy.'), 'schemeFallback': FieldInfo(annotation=Union[str, NoneType], required=False, default=None, description="Use this option to define an optional forced scheme (http or https) under which to run OctoPrint. This should only be needed if you want to run OctoPrint behind a reverse proxy that also does HTTPS determination but can't configure said reverse proxy to send a scheme HTTP header (X-Scheme by default, see above) with forwarded requests."), 'schemeHeader': FieldInfo(annotation=Union[str, NoneType], required=False, default=None, description='The request header from which to determine the scheme (http or https) under which a specific request to OctoPrint was made to the reverse proxy.'), 'serverFallback': FieldInfo(annotation=Union[str, NoneType], required=False, default=None), 'serverHeader': FieldInfo(annotation=Union[str, NoneType], required=False, default=None), 'trustLocalhostProxies': FieldInfo(annotation=bool, required=False, default=True, description='Whether to trust the local machine to act as a reverse proxy. Defaults to true, will ensure that `127.0.0.0/8` and `::1` will always be considered to be included in `trustedProxies`. If you want to explicitly disable trusting the local machine, set this to false and don\'t include the local machine in trustedProxies (as in, don\'t include "127.0.0.1", "127.0.0.0/8" or "::1").'), 'trustedProxies': FieldInfo(annotation=List[str], required=False, default=[], description="List of trusted proxy servers for which to ignore the IP address when trying to determine the connecting client's IP address. A reverse proxy on the same machine as OctoPrint (e.g. as found on OctoPi) will be handled correctly by default through `trustLocalhostProxies`, further proxies in front of that you'll have to add yourself here.")}
Metadata about the fields defined on the model, mapping of field names to [FieldInfo][pydantic.fields.FieldInfo] objects.
This replaces Model.__fields__ from Pydantic V1.
- prefixFallback: str | None
Use this option to define an optional URL prefix (with a leading /, so absolute to your server’s root) under which to run OctoPrint. This should only be needed if you want to run OctoPrint behind a reverse proxy under a different root endpoint than / and can’t configure said reverse proxy to send a prefix HTTP header (X-Script-Name by default, see above) with forwarded requests.
- prefixHeader: str | None
The request header from which to determine the URL prefix under which OctoPrint is served by the reverse proxy.
- schemeFallback: str | None
Use this option to define an optional forced scheme (http or https) under which to run OctoPrint. This should only be needed if you want to run OctoPrint behind a reverse proxy that also does HTTPS determination but can’t configure said reverse proxy to send a scheme HTTP header (X-Scheme by default, see above) with forwarded requests.
- schemeHeader: str | None
The request header from which to determine the scheme (http or https) under which a specific request to OctoPrint was made to the reverse proxy.
- trustLocalhostProxies: bool
Whether to trust the local machine to act as a reverse proxy. Defaults to true, will ensure that 127.0.0.0/8 and ::1 will always be considered to be included in trustedProxies. If you want to explicitly disable trusting the local machine, set this to false and don’t include the local machine in trustedProxies (as in, don’t include “127.0.0.1”, “127.0.0.0/8” or “::1”).
- trustedProxies: List[str]
List of trusted proxy servers for which to ignore the IP address when trying to determine the connecting client’s IP address. A reverse proxy on the same machine as OctoPrint (e.g. as found on OctoPi) will be handled correctly by default through trustLocalhostProxies, further proxies in front of that you’ll have to add yourself here.
- class octoprint.schema.config.server.SameSiteEnum(value)
An enumeration.
- lax = 'Lax'
- none = 'None'
- strict = 'Strict'
- class octoprint.schema.config.server.ServerConfig(*, host: str | None = None, port: int = 5000, firstRun: bool = True, startOnceInSafeMode: bool = False, ignoreIncompleteStartup: bool = False, seenWizards: Dict[str, str] = {}, secretKey: str | None = None, heartbeat: int = 900, reverseProxy: ReverseProxyConfig = ReverseProxyConfig(prefixHeader=None, schemeHeader=None, hostHeader=None, serverHeader=None, portHeader=None, prefixFallback=None, schemeFallback=None, hostFallback=None, serverFallback=None, portFallback=None, trustedProxies=[], trustLocalhostProxies=True), uploads: UploadsConfig = UploadsConfig(maxSize=1073741824, nameSuffix='name', pathSuffix='path'), maxSize: int = 102400, commands: CommandsConfig = CommandsConfig(systemShutdownCommand=None, systemRestartCommand=None, serverRestartCommand=None, localPipCommand=None), onlineCheck: OnlineCheckConfig = OnlineCheckConfig(enabled=None, interval=900, host='1.1.1.1', port=53, name='octoprint.org'), pluginBlacklist: PluginBlacklistConfig = PluginBlacklistConfig(enabled=None, url='https://plugins.octoprint.org/blacklist.json', ttl=900, timeout=3.05), pythonEolCheck: PythonEolCheckConfig = PythonEolCheckConfig(enabled=True, url='https://get.octoprint.org/python-eol', ttl=1440, fallback={'3.7': PythonEolEntry(date='2023-06-27', last_octoprint='1.11.*'), '3.8': PythonEolEntry(date='2024-10-31', last_octoprint=None)}), diskspace: DiskspaceConfig = DiskspaceConfig(warning=524288000, critical=209715200), preemptiveCache: PreemptiveCacheConfig = PreemptiveCacheConfig(exceptions=[], until=7), ipCheck: IpCheckConfig = IpCheckConfig(enabled=True, trustedSubnets=[]), allowFraming: bool = False, cookies: CookiesConfig = CookiesConfig(secure=False, samesite='Lax'), allowedLoginRedirectPaths: List[str] = [])
- allowFraming: bool
Whether to allow OctoPrint to be embedded in a frame or not. Note that depending on your setup you might have to set SameSite to None, Secure to true and serve OctoPrint through a reverse proxy that enables https for cookies and thus logging in to work.
- allowedLoginRedirectPaths: List[str]
List of paths that are allowed to be used as redirect targets for the login page, in addition to the default ones (/, /recovery/ and /plugin/appkeys/auth/)
- commands: CommandsConfig
Commands to restart/shutdown octoprint or the system it’s running on.
- cookies: CookiesConfig
Settings for further configuration of the cookies that OctoPrint sets (login, remember me, …).
- diskspace: DiskspaceConfig
Settings of when to display what disk space warning.
- firstRun: bool
If this option is true, OctoPrint will show the First Run wizard and set the setting to false after that completes.
- host: str | None
Use this option to define the host to which to bind the server. If unset, OctoPrint will attempt to bind on all available interfaces, IPv4 and v6 unless either is disabled.
- ignoreIncompleteStartup: bool
Set this to true to make OctoPrint ignore incomplete startups. Helpful for development.
- ipCheck: IpCheckConfig
Configuration of the client IP check to warn about connections from external networks.
- model_computed_fields: ClassVar[Dict[str, ComputedFieldInfo]] = {}
A dictionary of computed field names and their corresponding ComputedFieldInfo objects.
- model_config: ClassVar[ConfigDict] = {'use_enum_values': True, 'validate_default': True}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- model_fields: ClassVar[Dict[str, FieldInfo]] = {'allowFraming': FieldInfo(annotation=bool, required=False, default=False, description='Whether to allow OctoPrint to be embedded in a frame or not. Note that depending on your setup you might have to set SameSite to None, Secure to true and serve OctoPrint through a reverse proxy that enables https for cookies and thus logging in to work.'), 'allowedLoginRedirectPaths': FieldInfo(annotation=List[str], required=False, default=[], description='List of paths that are allowed to be used as redirect targets for the login page, in addition to the default ones (`/`, `/recovery/` and `/plugin/appkeys/auth/`)'), 'commands': FieldInfo(annotation=CommandsConfig, required=False, default=CommandsConfig(systemShutdownCommand=None, systemRestartCommand=None, serverRestartCommand=None, localPipCommand=None), description="Commands to restart/shutdown octoprint or the system it's running on."), 'cookies': FieldInfo(annotation=CookiesConfig, required=False, default=CookiesConfig(secure=False, samesite='Lax'), description='Settings for further configuration of the cookies that OctoPrint sets (login, remember me, ...).'), 'diskspace': FieldInfo(annotation=DiskspaceConfig, required=False, default=DiskspaceConfig(warning=524288000, critical=209715200), description='Settings of when to display what disk space warning.'), 'firstRun': FieldInfo(annotation=bool, required=False, default=True, description='If this option is true, OctoPrint will show the First Run wizard and set the setting to false after that completes.'), 'heartbeat': FieldInfo(annotation=int, required=False, default=900), 'host': FieldInfo(annotation=Union[str, NoneType], required=False, default=None, description='Use this option to define the host to which to bind the server. If unset, OctoPrint will attempt to bind on all available interfaces, IPv4 and v6 unless either is disabled.'), 'ignoreIncompleteStartup': FieldInfo(annotation=bool, required=False, default=False, description='Set this to true to make OctoPrint ignore incomplete startups. Helpful for development.'), 'ipCheck': FieldInfo(annotation=IpCheckConfig, required=False, default=IpCheckConfig(enabled=True, trustedSubnets=[]), description='Configuration of the client IP check to warn about connections from external networks.'), 'maxSize': FieldInfo(annotation=int, required=False, default=102400, description='Maximum size of requests other than file uploads in bytes, defaults to 100KB.'), 'onlineCheck': FieldInfo(annotation=OnlineCheckConfig, required=False, default=OnlineCheckConfig(enabled=None, interval=900, host='1.1.1.1', port=53, name='octoprint.org'), description='Configuration of the regular online connectivity check.'), 'pluginBlacklist': FieldInfo(annotation=PluginBlacklistConfig, required=False, default=PluginBlacklistConfig(enabled=None, url='https://plugins.octoprint.org/blacklist.json', ttl=900, timeout=3.05), description='Configuration of the plugin blacklist.'), 'port': FieldInfo(annotation=int, required=False, default=5000, description='Use this option to define the port to which to bind the server.'), 'preemptiveCache': FieldInfo(annotation=PreemptiveCacheConfig, required=False, default=PreemptiveCacheConfig(exceptions=[], until=7), description='Configuration of the preemptive cache.'), 'pythonEolCheck': FieldInfo(annotation=PythonEolCheckConfig, required=False, default=PythonEolCheckConfig(enabled=True, url='https://get.octoprint.org/python-eol', ttl=1440, fallback={'3.7': PythonEolEntry(date='2023-06-27', last_octoprint='1.11.*'), '3.8': PythonEolEntry(date='2024-10-31', last_octoprint=None)}), description='Configuration of the Python EOL warning.'), 'reverseProxy': FieldInfo(annotation=ReverseProxyConfig, required=False, default=ReverseProxyConfig(prefixHeader=None, schemeHeader=None, hostHeader=None, serverHeader=None, portHeader=None, prefixFallback=None, schemeFallback=None, hostFallback=None, serverFallback=None, portFallback=None, trustedProxies=[], trustLocalhostProxies=True), description="Settings if OctoPrint is running behind a reverse proxy (haproxy, nginx, apache, ...) that doesn't correctly set the [required headers](https://community.octoprint.org/t/reverse-proxy-configuration-examples/1107). These are necessary in order to make OctoPrint generate correct external URLs so that AJAX requests and download URLs work, and so that client IPs are read correctly."), 'secretKey': FieldInfo(annotation=Union[str, NoneType], required=False, default=None, description='Secret key for encrypting cookies and such, randomly generated on first run.'), 'seenWizards': FieldInfo(annotation=Dict[str, str], required=False, default={}), 'startOnceInSafeMode': FieldInfo(annotation=bool, required=False, default=False, description='If this option is true, OctoPrint will enable safe mode on the next server start and reset the setting to false'), 'uploads': FieldInfo(annotation=UploadsConfig, required=False, default=UploadsConfig(maxSize=1073741824, nameSuffix='name', pathSuffix='path'), description='Settings for file uploads to OctoPrint, such as maximum allowed file size and header suffixes to use for streaming uploads. OctoPrint does some nifty things internally in order to allow streaming of large file uploads to the application rather than just storing them in memory. For that it needs to do some rewriting of the incoming upload HTTP requests, storing the uploaded file to a temporary location on disk and then sending an internal request to the application containing the original filename and the location of the temporary file.')}
Metadata about the fields defined on the model, mapping of field names to [FieldInfo][pydantic.fields.FieldInfo] objects.
This replaces Model.__fields__ from Pydantic V1.
- onlineCheck: OnlineCheckConfig
Configuration of the regular online connectivity check.
- pluginBlacklist: PluginBlacklistConfig
Configuration of the plugin blacklist.
- preemptiveCache: PreemptiveCacheConfig
Configuration of the preemptive cache.
- pythonEolCheck: PythonEolCheckConfig
Configuration of the Python EOL warning.
- reverseProxy: ReverseProxyConfig
//community.octoprint.org/t/reverse-proxy-configuration-examples/1107). These are necessary in order to make OctoPrint generate correct external URLs so that AJAX requests and download URLs work, and so that client IPs are read correctly.
- Type:
Settings if OctoPrint is running behind a reverse proxy (haproxy, nginx, apache, …) that doesn’t correctly set the [required headers](https
- startOnceInSafeMode: bool
If this option is true, OctoPrint will enable safe mode on the next server start and reset the setting to false
- uploads: UploadsConfig
Settings for file uploads to OctoPrint, such as maximum allowed file size and header suffixes to use for streaming uploads. OctoPrint does some nifty things internally in order to allow streaming of large file uploads to the application rather than just storing them in memory. For that it needs to do some rewriting of the incoming upload HTTP requests, storing the uploaded file to a temporary location on disk and then sending an internal request to the application containing the original filename and the location of the temporary file.
- class octoprint.schema.config.server.UploadsConfig(*, maxSize: int = 1073741824, nameSuffix: str = 'name', pathSuffix: str = 'path')
-
- model_computed_fields: ClassVar[Dict[str, ComputedFieldInfo]] = {}
A dictionary of computed field names and their corresponding ComputedFieldInfo objects.
- model_config: ClassVar[ConfigDict] = {'use_enum_values': True, 'validate_default': True}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- model_fields: ClassVar[Dict[str, FieldInfo]] = {'maxSize': FieldInfo(annotation=int, required=False, default=1073741824, description='Maximum size of uploaded files in bytes, defaults to 1GB.'), 'nameSuffix': FieldInfo(annotation=str, required=False, default='name', description='Suffix used for storing the filename in the file upload headers when streaming uploads.'), 'pathSuffix': FieldInfo(annotation=str, required=False, default='path', description='Suffix used for storing the path to the temporary file in the file upload headers when streaming uploads.')}
Metadata about the fields defined on the model, mapping of field names to [FieldInfo][pydantic.fields.FieldInfo] objects.
This replaces Model.__fields__ from Pydantic V1.
- class octoprint.schema.config.slicing.SlicingConfig(*, enabled: bool = True, defaultSlicer: str | None = None, defaultProfiles: Dict[str, str] = {})
- defaultProfiles: Dict[str, str]
Default slicing profiles per slicer, maps slicer identifier to profile identifier.
- model_computed_fields: ClassVar[Dict[str, ComputedFieldInfo]] = {}
A dictionary of computed field names and their corresponding ComputedFieldInfo objects.
- model_config: ClassVar[ConfigDict] = {'use_enum_values': True, 'validate_default': True}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- model_fields: ClassVar[Dict[str, FieldInfo]] = {'defaultProfiles': FieldInfo(annotation=Dict[str, str], required=False, default={}, description='Default slicing profiles per slicer, maps slicer identifier to profile identifier.'), 'defaultSlicer': FieldInfo(annotation=Union[str, NoneType], required=False, default=None, description='Default slicer to use.'), 'enabled': FieldInfo(annotation=bool, required=False, default=True, description='Whether to enable slicing support or not.')}
Metadata about the fields defined on the model, mapping of field names to [FieldInfo][pydantic.fields.FieldInfo] objects.
This replaces Model.__fields__ from Pydantic V1.
- class octoprint.schema.config.system.ActionConfig(*, action: str, name: str | None = None, command: str | None = None, async_: bool = False, confirm: str | None = None)
- action: str
The identifier used internally to identify the action. Set to divider to generate a divider in the menu.
- command: str | None
The command to execute when the action is selected. Must be set if the action is not a divider.
- model_computed_fields: ClassVar[Dict[str, ComputedFieldInfo]] = {}
A dictionary of computed field names and their corresponding ComputedFieldInfo objects.
- model_config: ClassVar[ConfigDict] = {'use_enum_values': True, 'validate_default': True}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- model_fields: ClassVar[Dict[str, FieldInfo]] = {'action': FieldInfo(annotation=str, required=True, description='The identifier used internally to identify the action. Set to `divider` to generate a divider in the menu.'), 'async_': FieldInfo(annotation=bool, required=False, default=False, alias='async', alias_priority=2, description='Whether to run the command asynchronously.'), 'command': FieldInfo(annotation=Union[str, NoneType], required=False, default=None, description='The command to execute when the action is selected. Must be set if the action is not a divider.'), 'confirm': FieldInfo(annotation=Union[str, NoneType], required=False, default=None, description='An optional confirmation message to show before executing the command.'), 'name': FieldInfo(annotation=Union[str, NoneType], required=False, default=None, description='The name of the action that will be shown on the menu. Must be set if the action is not a divider.')}
Metadata about the fields defined on the model, mapping of field names to [FieldInfo][pydantic.fields.FieldInfo] objects.
This replaces Model.__fields__ from Pydantic V1.
- class octoprint.schema.config.system.SystemConfig(*, actions: List[ActionConfig] = [])
- actions: List[ActionConfig]
A list of system actions to show in the UI.
- model_computed_fields: ClassVar[Dict[str, ComputedFieldInfo]] = {}
A dictionary of computed field names and their corresponding ComputedFieldInfo objects.
- model_config: ClassVar[ConfigDict] = {'use_enum_values': True, 'validate_default': True}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- model_fields: ClassVar[Dict[str, FieldInfo]] = {'actions': FieldInfo(annotation=List[ActionConfig], required=False, default=[], description='A list of system actions to show in the UI.')}
Metadata about the fields defined on the model, mapping of field names to [FieldInfo][pydantic.fields.FieldInfo] objects.
This replaces Model.__fields__ from Pydantic V1.
- class octoprint.schema.config.temperature.TemperatureConfig(*, profiles: List[TemperatureProfile] = [TemperatureProfile(name='ABS', extruder=210, bed=100), TemperatureProfile(name='PLA', extruder=180, bed=60)], cutoff: int = 30, sendAutomatically: bool = False, sendAutomaticallyAfter: int = 1)
-
- model_computed_fields: ClassVar[Dict[str, ComputedFieldInfo]] = {}
A dictionary of computed field names and their corresponding ComputedFieldInfo objects.
- model_config: ClassVar[ConfigDict] = {'use_enum_values': True, 'validate_default': True}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- model_fields: ClassVar[Dict[str, FieldInfo]] = {'cutoff': FieldInfo(annotation=int, required=False, default=30, description='Cut off time for the temperature data, in minutes.'), 'profiles': FieldInfo(annotation=List[TemperatureProfile], required=False, default=[TemperatureProfile(name='ABS', extruder=210, bed=100), TemperatureProfile(name='PLA', extruder=180, bed=60)], description='Temperature profiles to offer in the UI for quick pre-heating.'), 'sendAutomatically': FieldInfo(annotation=bool, required=False, default=False, description='Whether to send new temperature settings made in the UI automatically.'), 'sendAutomaticallyAfter': FieldInfo(annotation=int, required=False, default=1, description='After what time to send the new temperature settings automatically, in seconds.')}
Metadata about the fields defined on the model, mapping of field names to [FieldInfo][pydantic.fields.FieldInfo] objects.
This replaces Model.__fields__ from Pydantic V1.
- profiles: List[TemperatureProfile]
Temperature profiles to offer in the UI for quick pre-heating.
- class octoprint.schema.config.temperature.TemperatureProfile(*, name: str, extruder: int, bed: int)
-
- model_computed_fields: ClassVar[Dict[str, ComputedFieldInfo]] = {}
A dictionary of computed field names and their corresponding ComputedFieldInfo objects.
- model_config: ClassVar[ConfigDict] = {'use_enum_values': True, 'validate_default': True}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- model_fields: ClassVar[Dict[str, FieldInfo]] = {'bed': FieldInfo(annotation=int, required=True, description='Bed temperature to set with the profile.'), 'extruder': FieldInfo(annotation=int, required=True, description='Hotend temperature to set with the profile.'), 'name': FieldInfo(annotation=str, required=True, description='Name of the profile.')}
Metadata about the fields defined on the model, mapping of field names to [FieldInfo][pydantic.fields.FieldInfo] objects.
This replaces Model.__fields__ from Pydantic V1.
- class octoprint.schema.config.terminalfilters.TerminalFilterEntry(*, name: str, regex: str)
- model_computed_fields: ClassVar[Dict[str, ComputedFieldInfo]] = {}
A dictionary of computed field names and their corresponding ComputedFieldInfo objects.
- model_config: ClassVar[ConfigDict] = {'use_enum_values': True, 'validate_default': True}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- model_fields: ClassVar[Dict[str, FieldInfo]] = {'name': FieldInfo(annotation=str, required=True, description='The name of the filter.'), 'regex': FieldInfo(annotation=str, required=True, description='The regular expression to match. Use [JavaScript regular expressions](https://developer.mozilla.org/en/docs/Web/JavaScript/Guide/Regular_Expressions).')}
Metadata about the fields defined on the model, mapping of field names to [FieldInfo][pydantic.fields.FieldInfo] objects.
This replaces Model.__fields__ from Pydantic V1.
- class octoprint.schema.config.webcam.RenderAfterPrintEnum(value)
An enumeration.
- always = 'always'
- failure = 'failure'
- off = 'off'
- success = 'success'
- class octoprint.schema.config.webcam.TimelapseConfig(*, type: TimelapseTypeEnum = TimelapseTypeEnum.off, fps: int = 25, postRoll: int = 0, renderAfterPrint: RenderAfterPrintEnum = RenderAfterPrintEnum.always, options: TimelapseOptions = TimelapseOptions(interval=None, capturePostRoll=None, retractionZHop=None))
-
- model_computed_fields: ClassVar[Dict[str, ComputedFieldInfo]] = {}
A dictionary of computed field names and their corresponding ComputedFieldInfo objects.
- model_config: ClassVar[ConfigDict] = {'use_enum_values': True, 'validate_default': True}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- model_fields: ClassVar[Dict[str, FieldInfo]] = {'fps': FieldInfo(annotation=int, required=False, default=25, description='The framerate at which to render the movie.'), 'options': FieldInfo(annotation=TimelapseOptions, required=False, default=TimelapseOptions(interval=None, capturePostRoll=None, retractionZHop=None), description='Additional options depending on the timelapse type.'), 'postRoll': FieldInfo(annotation=int, required=False, default=0, description='The number of seconds in the rendered video to add after a finished print. The exact way how the additional images will be recorded depends on timelapse type. `zchange` timelapses will take one final picture and add it `fps * postRoll` times. `timed` timelapses continue to record just like at the beginning, so the recording will continue another `fps * postRoll * interval` seconds. This behaviour can be overridden by setting the `capturePostRoll` option to `false`, in which case the post roll will be created identically to `zchange` mode.'), 'renderAfterPrint': FieldInfo(annotation=RenderAfterPrintEnum, required=False, default=<RenderAfterPrintEnum.always: 'always'>, description='Determines whether rendering the timelapse should be done automatically after the print is finished. This can be done always, only after successful prints, only after failed prints, or never.'), 'type': FieldInfo(annotation=TimelapseTypeEnum, required=False, default=<TimelapseTypeEnum.off: 'off'>, description='The timelapse type.')}
Metadata about the fields defined on the model, mapping of field names to [FieldInfo][pydantic.fields.FieldInfo] objects.
This replaces Model.__fields__ from Pydantic V1.
- options: TimelapseOptions
Additional options depending on the timelapse type.
- postRoll: int
The number of seconds in the rendered video to add after a finished print. The exact way how the additional images will be recorded depends on timelapse type. zchange timelapses will take one final picture and add it fps * postRoll times. timed timelapses continue to record just like at the beginning, so the recording will continue another fps * postRoll * interval seconds. This behaviour can be overridden by setting the capturePostRoll option to false, in which case the post roll will be created identically to zchange mode.
- renderAfterPrint: RenderAfterPrintEnum
Determines whether rendering the timelapse should be done automatically after the print is finished. This can be done always, only after successful prints, only after failed prints, or never.
- type: TimelapseTypeEnum
The timelapse type.
- class octoprint.schema.config.webcam.TimelapseOptions(*, interval: int | None = None, capturePostRoll: bool | None = None, retractionZHop: float | None = None)
- capturePostRoll: bool | None
Whether to capture the snapshots for the post roll (true) or just copy the last captured snapshot from the print over and over again (false).
- Type:
timed timelapses only
- interval: int | None
The interval which to leave between images in seconds.
- Type:
timed timelapses only
- model_computed_fields: ClassVar[Dict[str, ComputedFieldInfo]] = {}
A dictionary of computed field names and their corresponding ComputedFieldInfo objects.
- model_config: ClassVar[ConfigDict] = {'use_enum_values': True, 'validate_default': True}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- model_fields: ClassVar[Dict[str, FieldInfo]] = {'capturePostRoll': FieldInfo(annotation=Union[bool, NoneType], required=False, default=None, description='`timed` timelapses only: Whether to capture the snapshots for the post roll (true) or just copy the last captured snapshot from the print over and over again (false).'), 'interval': FieldInfo(annotation=Union[int, NoneType], required=False, default=None, description='`timed` timelapses only: The interval which to leave between images in seconds.'), 'retractionZHop': FieldInfo(annotation=Union[float, NoneType], required=False, default=None, description='`zchange` timelapses only: z-hop height during retractions to ignore for capturing snapshots.')}
Metadata about the fields defined on the model, mapping of field names to [FieldInfo][pydantic.fields.FieldInfo] objects.
This replaces Model.__fields__ from Pydantic V1.
- class octoprint.schema.config.webcam.TimelapseTypeEnum(value)
An enumeration.
- off = 'off'
- timed = 'timed'
- zchange = 'zchange'
- class octoprint.schema.config.webcam.WebcamConfig(*, webcamEnabled: bool = True, timelapseEnabled: bool = True, ffmpeg: str | None = None, ffmpegThreads: int = 1, ffmpegVideoCodec: str = 'libx264', bitrate: str = '10000k', watermark: bool = True, ffmpegCommandline: str = '{ffmpeg} -framerate {fps} -i "{input}" -vcodec {videocodec} -threads {threads} -b:v {bitrate} -f {containerformat} -y {filters} "{output}"', ffmpegThumbnailCommandline: str = '{ffmpeg} -sseof -1 -i "{input}" -update 1 -q:v 0.7 "{output}"', timelapse: TimelapseConfig = TimelapseConfig(type='off', fps=25, postRoll=0, renderAfterPrint='always', options=TimelapseOptions(interval=None, capturePostRoll=None, retractionZHop=None)), cleanTmpAfterDays: int = 7, defaultWebcam: str = 'classic', snapshotWebcam: str = 'classic')
- bitrate: str
The bitrate to use for rendering the timelapse video. This gets directly passed to ffmpeg.
- ffmpeg: str | None
Path to ffmpeg binary to use for creating timelapse recordings. Timelapse support will be disabled if not set.
- model_computed_fields: ClassVar[Dict[str, ComputedFieldInfo]] = {}
A dictionary of computed field names and their corresponding ComputedFieldInfo objects.
- model_config: ClassVar[ConfigDict] = {'use_enum_values': True, 'validate_default': True}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- model_fields: ClassVar[Dict[str, FieldInfo]] = {'bitrate': FieldInfo(annotation=str, required=False, default='10000k', description='The bitrate to use for rendering the timelapse video. This gets directly passed to ffmpeg.'), 'cleanTmpAfterDays': FieldInfo(annotation=int, required=False, default=7, description='After how many days unrendered timelapses will be deleted.'), 'defaultWebcam': FieldInfo(annotation=str, required=False, default='classic', description='The name of the default webcam'), 'ffmpeg': FieldInfo(annotation=Union[str, NoneType], required=False, default=None, description='Path to ffmpeg binary to use for creating timelapse recordings. Timelapse support will be disabled if not set.'), 'ffmpegCommandline': FieldInfo(annotation=str, required=False, default='{ffmpeg} -framerate {fps} -i "{input}" -vcodec {videocodec} -threads {threads} -b:v {bitrate} -f {containerformat} -y {filters} "{output}"'), 'ffmpegThreads': FieldInfo(annotation=int, required=False, default=1, description='Number of how many threads to instruct ffmpeg to use for encoding.'), 'ffmpegThumbnailCommandline': FieldInfo(annotation=str, required=False, default='{ffmpeg} -sseof -1 -i "{input}" -update 1 -q:v 0.7 "{output}"'), 'ffmpegVideoCodec': FieldInfo(annotation=str, required=False, default='libx264', description='Videocodec to be used for encoding.'), 'snapshotWebcam': FieldInfo(annotation=str, required=False, default='classic', description='The name of the default webcam to use for snapshots'), 'timelapse': FieldInfo(annotation=TimelapseConfig, required=False, default=TimelapseConfig(type='off', fps=25, postRoll=0, renderAfterPrint='always', options=TimelapseOptions(interval=None, capturePostRoll=None, retractionZHop=None)), description='The default timelapse settings.'), 'timelapseEnabled': FieldInfo(annotation=bool, required=False, default=True, description='Use this option to enable timelapse support via snapshot, e.g. via MJPG-Streamer. Timelapse support will be disabled if not set.'), 'watermark': FieldInfo(annotation=bool, required=False, default=True, description='Whether to include a "created with OctoPrint" watermark in the generated timelapse recordings.'), 'webcamEnabled': FieldInfo(annotation=bool, required=False, default=True, description='Use this option to enable display of a webcam stream in the UI, e.g. via MJPG-Streamer. Webcam support will be disabled if not set.')}
Metadata about the fields defined on the model, mapping of field names to [FieldInfo][pydantic.fields.FieldInfo] objects.
This replaces Model.__fields__ from Pydantic V1.
- timelapse: TimelapseConfig
The default timelapse settings.
- timelapseEnabled: bool
Use this option to enable timelapse support via snapshot, e.g. via MJPG-Streamer. Timelapse support will be disabled if not set.
octoprint.schema.webcam
- class octoprint.schema.webcam.RatioEnum(value)
An enumeration.
- four_three = '4:3'
- sixteen_nine = '16:9'
- class octoprint.schema.webcam.Webcam(*, name: str, displayName: str, canSnapshot: bool = False, snapshotDisplay: str = None, flipH: bool = False, flipV: bool = False, rotate90: bool = False, extras: dict = {}, compat: WebcamCompatibility | None = None)
-
- compat: WebcamCompatibility | None
A compatibility configuration to allow older clients to make use of this webcam
- model_computed_fields: ClassVar[Dict[str, ComputedFieldInfo]] = {}
A dictionary of computed field names and their corresponding ComputedFieldInfo objects.
- model_config: ClassVar[ConfigDict] = {'use_enum_values': True, 'validate_default': True}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- model_fields: ClassVar[Dict[str, FieldInfo]] = {'canSnapshot': FieldInfo(annotation=bool, required=False, default=False, description='Whether this webcam can take a snapshot.'), 'compat': FieldInfo(annotation=Union[WebcamCompatibility, NoneType], required=False, default=None, description='A compatibility configuration to allow older clients to make use of this webcam'), 'displayName': FieldInfo(annotation=str, required=True, description='Displayable name for this webcam'), 'extras': FieldInfo(annotation=dict, required=False, default={}, description='Unstructured data describing this webcam'), 'flipH': FieldInfo(annotation=bool, required=False, default=False, description='Whether to flip the webcam horizontally.'), 'flipV': FieldInfo(annotation=bool, required=False, default=False, description='Whether to flip the webcam vertically.'), 'name': FieldInfo(annotation=str, required=True, description='Identifier of this webcam'), 'rotate90': FieldInfo(annotation=bool, required=False, default=False, description='Whether to rotate the webcam 90° counter clockwise.'), 'snapshotDisplay': FieldInfo(annotation=str, required=False, default=None, description='Human readable information about how a snapshot is captured or a HTTP URL from which the snapshot is loaded (optional, only for user reference)')}
Metadata about the fields defined on the model, mapping of field names to [FieldInfo][pydantic.fields.FieldInfo] objects.
This replaces Model.__fields__ from Pydantic V1.
- class octoprint.schema.webcam.WebcamCompatibility(*, streamTimeout: int = 5, streamRatio: RatioEnum = RatioEnum.sixteen_nine, streamWebrtcIceServers: List[str] = ['stun:stun.l.google.com:19302'], cacheBuster: bool = False, stream: str, snapshot: str = None, snapshotTimeout: int = 5, snapshotSslValidation: bool = True)
-
- model_computed_fields: ClassVar[Dict[str, ComputedFieldInfo]] = {}
A dictionary of computed field names and their corresponding ComputedFieldInfo objects.
- model_config: ClassVar[ConfigDict] = {'use_enum_values': True, 'validate_default': True}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- model_fields: ClassVar[Dict[str, FieldInfo]] = {'cacheBuster': FieldInfo(annotation=bool, required=False, default=False, description='Whether the URL should be randomized to bust caches'), 'snapshot': FieldInfo(annotation=str, required=False, default=None, description='The URL to get the snapshot from'), 'snapshotSslValidation': FieldInfo(annotation=bool, required=False, default=True, description='Whether to validate SSL certificates when retrieving a snapshot'), 'snapshotTimeout': FieldInfo(annotation=int, required=False, default=5, description='The timeout when retrieving snapshots'), 'stream': FieldInfo(annotation=str, required=True, description='The URL to get an MJPEG stream from'), 'streamRatio': FieldInfo(annotation=RatioEnum, required=False, default=<RatioEnum.sixteen_nine: '16:9'>, description="The stream's native aspect ratio"), 'streamTimeout': FieldInfo(annotation=int, required=False, default=5, description='The timeout of the stream in seconds'), 'streamWebrtcIceServers': FieldInfo(annotation=List[str], required=False, default=['stun:stun.l.google.com:19302'], description='The WebRTC STUN and TURN servers')}
Metadata about the fields defined on the model, mapping of field names to [FieldInfo][pydantic.fields.FieldInfo] objects.
This replaces Model.__fields__ from Pydantic V1.