From 6c003e18fc9d1933e01f3e13fa9bb3eeead3d24a Mon Sep 17 00:00:00 2001 From: gosticks Date: Fri, 13 Nov 2020 22:35:04 +0000 Subject: [PATCH] =?UTF-8?q?Deploying=20to=20gh-pages=20from=20=20@=206fd9b?= =?UTF-8?q?289623dc4d31254e464b2e3181917dcaa93=20=F0=9F=9A=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- api.json | 3300 +++++++++++++++++++++++++++++++++++++++++++++++++++ favicon.png | Bin 0 -> 716 bytes index.html | 24 + 3 files changed, 3324 insertions(+) create mode 100644 api.json create mode 100644 favicon.png create mode 100644 index.html diff --git a/api.json b/api.json new file mode 100644 index 0000000..91970b2 --- /dev/null +++ b/api.json @@ -0,0 +1,3300 @@ +{ + "openapi": "3.0.2", + "info": { + "license": { + "name": "Creative Commons", + "url": "https://creativecommons.org/licenses/by/3.0" + }, + "title": "OctoPrint", + "description": "## About\n OctoPrint is an OpenSource community based 3D printer control system. This unofficial API definitions provides easy access to its exposed REST API and allows for easy client generation in languages supported by OpenAPI generators.\n\n For more information about OctoPrint visit the official webpage [here](https://octoprint.org)\n\n## Limitations\n - API documentation structure is currently still work in progress so the arrangement of the API endpoints in this documentation may change.\n\n- Currently this API definitions does not included bundled Plugins (see official API [here](https://docs.octoprint.org/en/master/bundledplugins/logging.html#sec-bundledplugins-logging-api))\n- Timelapse endpoint is missing - Slicing endpoint is missing - Wizard endpoint is missing - Push updates endpoint is missing", + "version": "0.8" + }, + "servers": [ + { + "url": "http://192.168.178.66:5000/api" + } + ], + "tags": [ + { + "name": "General", + "description": "General operations" + }, + { + "name": "User", + "description": "User operations" + }, + { + "name": "Groups", + "description": "User group management" + }, + { + "name": "Permissions", + "description": "Retrieve system permission settings" + }, + { + "name": "System", + "description": "OctoPrint system operations" + }, + { + "name": "Settings", + "description": "System settings" + }, + { + "name": "System Commands", + "description": "Manage and execute system commands" + }, + { + "name": "Languages", + "description": "Printer language configuration" + }, + { + "name": "Printer", + "description": "Printer operations" + }, + { + "name": "Job", + "description": "Control and monitor ongoing printer jobs" + }, + { + "name": "file", + "description": "File operations" + } + ], + "x-tagGroups": [ + { + "name": "General", + "tags": [ + "General" + ] + }, + { + "name": "Printer", + "tags": [ + "State", + "Jobs", + "Tool", + "Bed", + "Printhead", + "Chamber", + "SD Card", + "Profiles" + ] + }, + { + "name": "Files", + "tags": [ + "Files" + ] + }, + { + "name": "User Management & Access", + "tags": [ + "User", + "Groups", + "Permissions" + ] + }, + { + "name": "System", + "tags": [ + "System", + "Settings", + "System Commands", + "Languages" + ] + } + ], + "paths": { + "/login": { + "post": { + "tags": [ + "General", + "User" + ], + "summary": "Login", + "description": "Creates a login session or retrieves information about the currently existing session (“passive login”). Can be used in one of two ways: to login a user via username and password and create a persistent session (usually from a UI in the browser), or to retrieve information about the active user (from an existing session or an API key) via the passive flag. Will return a 200 OK with a login response on successful login, whether active or passive. The active (username/password) login may also return a 403 Forbidden in case of a username/password mismatch, unknown user or a deactivated account.", + "operationId": "login", + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "oneOf": [ + { + "$ref": "#/components/schemas/Login" + }, + { + "$ref": "#/components/schemas/PassiveLogin" + } + ] + } + } + } + }, + "responses": { + "200": { + "description": "Successful login", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/LoginResponse" + } + } + } + }, + "403": { + "description": "Username/password mismatch, unknown user or deactivated account" + } + } + } + }, + "/logout": { + "post": { + "tags": [ + "User", + "General" + ], + "summary": "Logout", + "description": "Ends the current login session of the current user", + "operationId": "logout", + "responses": { + "204": { + "description": "User logged out" + } + } + } + }, + "/currentuser": { + "get": { + "tags": [ + "User", + "General" + ], + "summary": "Current User", + "description": "Retrieves information about the current user.", + "operationId": "getCurrentUser", + "responses": { + "200": { + "description": "Current user object", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CurrentUser" + } + } + } + } + } + } + }, + "/version": { + "get": { + "summary": "Version", + "description": "Retrieve information regarding server and API version. Returns a JSON object with two keys, api containing the API version, server containing the server version, text containing the server version including the prefix ``OctoPrint `` (to determine that this is indeed a genuine OctoPrint instance).", + "operationId": "getVersion", + "tags": [ + "General", + "System" + ], + "responses": { + "200": { + "description": "OctoPrint server version", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "api": { + "type": "string" + }, + "server": { + "type": "string" + }, + "text": { + "type": "string" + } + } + } + } + } + } + } + } + }, + "/connection": { + "get": { + "summary": "Printer Connection", + "operationId": "getConnection", + "tags": [ + "General", + "System" + ], + "description": "Retrieve the current connection settings, including information regarding the available baudrates and serial ports and the current connection state.", + "responses": { + "200": { + "description": "Connection info object", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ConnectionInfo" + } + } + } + } + } + }, + "post": { + "summary": "Change Printer Connection", + "operationId": "setConnectionOptions", + "tags": [ + "General", + "System" + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "oneOf": [ + { + "$ref": "#/components/schemas/ConnectCmd" + }, + { + "$ref": "#/components/schemas/DisconnectCmd" + }, + { + "$ref": "#/components/schemas/FakeAckCmd" + } + ], + "discriminator": { + "propertyName": "command" + } + } + } + } + }, + "responses": { + "204": { + "description": "Printer connection settings changed" + }, + "400": { + "description": "If the selected port or baudrate for a connect command are not part of the available options." + } + } + } + }, + "/files": { + "get": { + "summary": "Retrieve all files", + "operationId": "getAllFiles", + "description": "Retrieve information regarding all files currently available and regarding the disk space still available locally in the system. By default only returns the files and folders in the root directory. If the query parameter `recursive` is provided and set to `true`, returns all files and folders.", + "tags": [ + "Files" + ], + "parameters": [ + { + "in": "query", + "name": "recursive", + "description": "If set to true, return all files and folders recursively. Otherwise only return items on same level.", + "required": false, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Returns a Retrieve response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RetrieveResponse" + } + } + } + } + } + } + }, + "/files/{location}": { + "get": { + "summary": "Retrieve files from specific location", + "operationId": "getAllFilesInLocation", + "description": "Retrieve information regarding all files currently available and regarding the disk space still available locally in the system. By default only returns the files and folders in the root directory. If the query parameter `recursive` is provided and set to `true`, returns all files and folders.", + "tags": [ + "Files" + ], + "parameters": [ + { + "$ref": "#/components/parameters/fileLocation" + }, + { + "$ref": "#/components/parameters/fileRecursive" + } + ], + "responses": { + "200": { + "description": "Returns a Retrieve Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RetrieveResponse" + } + } + } + } + } + }, + "post": { + "summary": "Upload file or create folder", + "operationId": "uploadFile", + "description": "Upload a file to the selected location or create a new empty folder on it.", + "tags": [ + "Files" + ], + "parameters": [ + { + "$ref": "#/components/parameters/fileLocation" + } + ], + "requestBody": { + "$ref": "#/components/requestBodies/File" + }, + "responses": { + "201": { + "description": "Created", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UploadResponse" + } + } + } + }, + "400": { + "description": "If no file or foldername are included in the request, userdata was provided but could not be parsed as JSON or the request is otherwise invalid." + }, + "404": { + "description": "If location is neither local nor sdcard or trying to upload to SD card and SD card support is disabled" + }, + "409": { + "description": "If the upload of the file would override the file that is currently being printed or if an upload to SD card was requested and the printer is either not operational or currently busy with a print job." + }, + "415": { + "description": "If the file is neither a gcode nor an stl file (or it is an stl file but slicing support is disabled)" + }, + "500": { + "description": "If the upload failed internally" + } + } + } + }, + "/files/{location}/{path}": { + "get": { + "summary": "Retrieve a specific file’s or folder’s information", + "operationId": "getFileOrFolder", + "description": "Retrieves the selected file’s or folder’s information.", + "tags": [ + "Files" + ], + "parameters": [ + { + "$ref": "#/components/parameters/fileLocation" + }, + { + "$ref": "#/components/parameters/filePath" + }, + { + "$ref": "#/components/parameters/fileRecursive" + } + ], + "responses": { + "200": { + "description": "Returns a Retrieve Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RetrieveResponse" + } + } + } + } + } + }, + "delete": { + "summary": "Delete a file or folder", + "operationId": "deleteFileOrFolder", + "description": "Delete the selected path on the selected location.", + "tags": [ + "Files" + ], + "parameters": [ + { + "$ref": "#/components/parameters/fileLocation" + }, + { + "$ref": "#/components/parameters/filePath" + } + ], + "responses": { + "204": { + "description": "File deleted" + }, + "404": { + "description": "If location is neither local nor sdcard or the requested file was not found" + }, + "409": { + "description": "If the file to be deleted is currently being printed" + } + } + } + }, + "/job": { + "get": { + "summary": "Retrieve information about the current job", + "operationId": "getCurrentJob", + "description": "Retrieve information about the current job (if there is one).", + "tags": [ + "Jobs" + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "job": { + "$ref": "#/components/schemas/JobInfo" + }, + "progress": { + "$ref": "#/components/schemas/ProgressInfo" + }, + "state": { + "type": "string", + "enum": [ + "Operational", + "Printing", + "Pausing", + "Paused", + "Cancelling", + "Error", + "Offline" + ] + } + }, + "description": "A textual representation of the current state of the job, i.e. “Operational”, “Printing”, “Pausing”, “Paused”, “Cancelling”, “Error” or “Offline”." + } + } + } + }, + "responses": { + "200": { + "description": "No error" + } + } + }, + "post": { + "summary": "Issue a job command", + "operationId": "sendJobCommand", + "description": "Job commands allow starting, pausing and cancelling print jobs.", + "tags": [ + "Jobs" + ], + "requestBody": { + "$ref": "#/components/requestBodies/JobCommand" + }, + "responses": { + "204": { + "description": "No error" + }, + "409": { + "description": "If the printer is not operational or the current print job state does not match the preconditions for the command." + } + } + } + }, + "/printer": { + "get": { + "summary": "Printer State", + "description": "Retrieves the current state of the printer.", + "operationId": "getPrinterState", + "tags": [ + "State" + ], + "parameters": [ + { + "$ref": "#/components/parameters/history" + }, + { + "$ref": "#/components/parameters/limit" + }, + { + "in": "query", + "name": "exclude", + "schema": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "temperature", + "sd", + "state" + ] + } + }, + "description": "An optional comma-separated list of fields to exclude from the response (e.g. if not needed by the client). Valid values to supply here are temperature, sd and state." + } + ], + "responses": { + "200": { + "description": "Current Printer state." + }, + "409": { + "description": "If the printer is not operational." + } + } + } + }, + "/printer/tool": { + "get": { + "summary": "Retrieve the current tool state", + "operationId": "getToolState", + "description": "Retrieves the current temperature data (actual, target and offset) plus optionally a (limited) history (actual, target, timestamp) for all of the printer’s available tools. It’s also possible to retrieve the temperature history by supplying the history query parameter set to true. The amount of returned history data points can be limited using the limit query parameter.", + "tags": [ + "Tool", + "State" + ], + "parameters": [ + { + "$ref": "#/components/parameters/history" + }, + { + "$ref": "#/components/parameters/limit" + } + ], + "responses": { + "200": { + "description": "Current tool status with optional history", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "history": { + "type": "array", + "items": { + "type": "object", + "properties": { + "time": { + "type": "integer" + } + }, + "additionalProperties": { + "$ref": "#/components/schemas/TemperatureProbe" + }, + "example": { + "tool1": { + "actual": 250 + }, + "tool2": { + "actual": 200, + "target": 215 + } + } + } + } + }, + "additionalProperties": { + "$ref": "#/components/schemas/TemperatureProbe" + } + } + } + } + }, + "409": { + "description": "If the printer is not operational." + } + } + }, + "post": { + "summary": "Issue a tool command", + "operationId": "sendToolCmd", + "description": "Tool commands allow setting the temperature and temperature offsets for the printer’s tools (hotends), selecting the current tool and extruding/retracting from the currently selected tool.", + "tags": [ + "Tool" + ], + "requestBody": { + "$ref": "#/components/requestBodies/PrinterToolCommand" + }, + "responses": { + "204": { + "description": "No Error" + }, + "400": { + "description": "If targets or offsets contains a property or tool contains a value not matching the format tool{n}, the target/offset temperature, extrusion amount or flow rate factor is not a valid number or outside of the supported range, or if the request is otherwise invalid." + }, + "409": { + "description": "If the printer is not operational or – in case of select or extrude – currently printing." + } + } + } + }, + "/printer/bed": { + "get": { + "summary": "Retrieve the current bed state", + "operationId": "getBedState", + "tags": [ + "Bed", + "State" + ], + "description": "Retrieves the current temperature data (actual, target and offset) plus optionally a (limited) history (actual, target, timestamp) for the printer’s heated bed. It’s also possible to retrieve the temperature history by supplying the history query parameter set to true. The amount of returned history data points can be limited using the limit query parameter.", + "parameters": [ + { + "$ref": "#/components/parameters/history" + }, + { + "$ref": "#/components/parameters/limit" + } + ], + "responses": { + "200": { + "description": "Current bed status with optional history", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "bed": { + "$ref": "#/components/schemas/TemperatureProbe" + }, + "history": { + "type": "array", + "items": { + "type": "object", + "properties": { + "time": { + "type": "integer" + }, + "bed": { + "$ref": "#/components/schemas/TemperatureProbe" + } + }, + "example": { + "time": 1395651928, + "bed": { + "actual": 50.221, + "target": 70 + } + } + } + } + } + } + } + } + }, + "409": { + "description": "If the printer is not operational or the selected printer profile does not have a heated bed." + } + } + }, + "post": { + "summary": "Issue a bed command", + "operationId": "sendBedCmd", + "description": "Bed commands allow setting the temperature and temperature offsets for the printer’s heated bed.", + "tags": [ + "Bed" + ], + "requestBody": { + "$ref": "#/components/requestBodies/PrinterBedCommand" + }, + "responses": { + "204": { + "description": "No Error" + }, + "400": { + "description": "If target or offset is not a valid number or outside of the supported range, or if the request is otherwise invalid." + }, + "409": { + "description": "If the printer is not operational or the selected printer profile does not have a heated bed." + } + } + } + }, + "/printer/chamber": { + "get": { + "summary": "Retrieve the current chamber state", + "operationId": "getChamberState", + "description": "Retrieves the current temperature data (actual, target and offset) plus optionally a (limited) history (actual, target, timestamp) for the printer’s heated chamber.\nIt’s also possible to retrieve the temperature history by supplying the history query parameter set to true. The amount of returned history data points can be limited using the limit query parameter.", + "tags": [ + "Chamber", + "State" + ], + "parameters": [ + { + "$ref": "#/components/parameters/history" + }, + { + "$ref": "#/components/parameters/limit" + } + ], + "responses": { + "200": { + "description": "Current chamber status with optional history", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "chamber": { + "$ref": "#/components/schemas/TemperatureProbe" + }, + "history": { + "type": "array", + "items": { + "type": "object", + "properties": { + "time": { + "type": "integer" + }, + "chamber": { + "$ref": "#/components/schemas/TemperatureProbe" + } + }, + "example": { + "time": 1395651928, + "bed": { + "actual": 50.221, + "target": 70 + } + } + } + } + } + } + } + } + }, + "409": { + "description": "If the printer is not operational or the selected printer profile does not have a heated chamber." + } + } + }, + "post": { + "summary": "Issue a bed command", + "operationId": "sendChamberCmd", + "description": "Chamber commands allow setting the temperature and temperature offsets for the printer’s heated chamber.", + "tags": [ + "Chamber" + ], + "requestBody": { + "$ref": "#/components/requestBodies/PrinterChamberCommand" + }, + "responses": { + "204": { + "description": "No Error" + }, + "400": { + "description": "If target or offset is not a valid number or outside of the supported range, or if the request is otherwise invalid." + }, + "409": { + "description": "If the printer is not operational or the selected printer profile does not have a heated chamber." + } + } + } + }, + "/printer/sd": { + "get": { + "summary": "Retrieve the current SD state", + "operationId": "getSdState", + "description": "Retrieves the current state of the printer’s SD card. For this request no authentication is needed.\nIf SD support has been disabled in OctoPrint’s settings, a 404 Not Found is returned.\nReturns a 200 OK with an SD State Response in the body upon success.", + "tags": [ + "SD Card", + "State" + ], + "responses": { + "200": { + "description": "SD State Response", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "ready": { + "type": "boolean" + } + } + } + } + } + }, + "409": { + "description": "If SD support has been disabled in OctoPrint’s config." + } + } + }, + "post": { + "summary": "Issue an SD command", + "operationId": "sendSdCmd", + "description": "SD commands allow initialization, refresh and release of the printer’s SD card (if available).", + "tags": [ + "SD Card" + ], + "requestBody": { + "$ref": "#/components/requestBodies/PrinterSdCommand" + }, + "responses": { + "204": { + "description": "No error" + }, + "409": { + "description": "If a refresh or release command is issued but the SD card has not been initialized (e.g. via init." + } + } + } + }, + "/printer/command/custom": { + "get": { + "summary": "Retrieve custom controls", + "operationId": "getCustomControls", + "description": "Retrieves the custom controls as configured in config.yaml.\nPlease refer to the documentation of custom controls on what data structure to expect here.", + "tags": [ + "Command" + ], + "responses": { + "200": { + "description": "Custom Controls", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "controls": { + "type": "array", + "items": { + "type": "object", + "additionalProperties": true + } + } + } + } + } + } + } + } + } + }, + "/printer/command": { + "post": { + "summary": "Send an arbitrary command to the printer", + "operationId": "sendPrinterCmd", + "description": "Sends any command to the printer via the serial interface. Should be used with some care as some commands can interfere with or even stop a running print job.", + "tags": [ + "Command" + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ArbitraryPrinterCmd" + } + } + } + }, + "responses": { + "204": { + "description": "No error" + } + } + } + }, + "/printerprofiles": { + "get": { + "summary": "Retrieve all printer profiles", + "operationId": "getPrinterProfiles", + "description": "Retrieves a list of all configured printer profiles.", + "tags": [ + "Profiles" + ], + "responses": { + "200": { + "description": "List of available printer profiles", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "profiles": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Profile" + } + } + } + } + } + } + } + } + }, + "post": { + "summary": "Add a new printer profile", + "operationId": "addNewPrinterProfile", + "description": "Adds a new printer profile based on either the current default profile or the profile identified in basedOn. The provided profile data will be merged with the profile data from the base profile.", + "tags": [ + "Profiles" + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "profile" + ], + "properties": { + "basedOn": { + "type": "string" + }, + "profile": { + "$ref": "#/components/schemas/Profile", + "required": false + } + } + } + } + } + }, + "responses": { + "200": { + "description": "Profile saved.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "profile": { + "$ref": "#/components/schemas/Profile" + } + } + } + } + } + } + } + } + }, + "/printerprofiles/{identifier}": { + "get": { + "summary": "Retrieve a single printer profile", + "operationId": "getPrinterProfile", + "description": "Retrieves an existing single printer profile.", + "tags": [ + "Profiles" + ], + "parameters": [ + { + "$ref": "#/components/parameters/profileIdentifier" + } + ], + "responses": { + "200": { + "description": "List of available printer profiles", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Profile" + } + } + } + }, + "404": { + "description": "The profile does not exist" + } + } + }, + "post": { + "summary": "Update an existing printer profile", + "operationId": "updatePrinterProfile", + "description": "Adds a new printer profile based on either the current default profile or the profile identified in basedOn. The provided profile data will be merged with the profile data from the base profile.", + "tags": [ + "Profiles" + ], + "parameters": [ + { + "$ref": "#/components/parameters/profileIdentifier" + } + ], + "requestBody": { + "$ref": "#/components/requestBodies/PrinterProfileChange" + }, + "responses": { + "200": { + "description": "Profile saved.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "profile": { + "$ref": "#/components/schemas/Profile" + } + } + } + } + } + } + } + }, + "delete": { + "summary": "Remove an existing printer profile", + "operationId": "deletePrinterProfile", + "description": "Deletes an existing printer profile by its profile identifier.", + "parameters": [ + { + "$ref": "#/components/parameters/profileIdentifier" + } + ], + "tags": [ + "Profiles" + ], + "responses": { + "204": { + "description": "Profile removed" + }, + "409": { + "description": "If the profile to be deleted is the currently selected profile, a 409 Conflict will be returned." + } + } + } + }, + "/system/commands": { + "get": { + "summary": "List all registered system commands", + "operationId": "getSystemCmds", + "description": "Retrieves all configured system commands.", + "tags": [ + "System Commands" + ], + "responses": { + "200": { + "description": "All available system commands.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "core": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ClientCmd" + } + } + } + } + } + } + } + } + } + }, + "/system/commands/{source}": { + "get": { + "summary": "List all registered system commands for a source", + "operationId": "getSystemSourceCmds", + "description": "Retrieves the configured system commands for the specified source.", + "tags": [ + "System Commands" + ], + "parameters": [ + { + "$ref": "#/components/parameters/systemCmdSource" + } + ], + "responses": { + "200": { + "description": "All available system commands.", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ClientCmd" + } + } + } + } + } + } + } + }, + "/system/commands/{source}/{action}": { + "post": { + "summary": "Execute a registered system command", + "operationId": "executeSysCmd", + "description": "Execute the system command action defined in source.", + "tags": [ + "System Commands" + ], + "parameters": [ + { + "$ref": "#/components/parameters/systemCmdSource" + }, + { + "in": "path", + "name": "action", + "schema": { + "type": "string" + }, + "description": "The identifier of the command, action from its definition" + } + ], + "responses": { + "204": { + "description": "Command executed" + }, + "400": { + "description": "If a divider is supposed to be executed or if the request is malformed otherwise" + }, + "404": { + "description": "If the command could not be found for source and action" + }, + "500": { + "description": "If the command didn’t define a command to execute, the command returned a non-zero return code and ignore was not true or some other internal server error occurred" + } + } + } + }, + "/settings": { + "get": { + "summary": "Retrieve current settings", + "operationId": "getSettings", + "description": "Retrieves the current configuration of OctoPrint.", + "tags": [ + "Settings" + ], + "responses": { + "200": { + "description": "Current OctoPrint state", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Config" + } + } + } + } + } + }, + "post": { + "summary": "Update Settings", + "operationId": "updateSettings", + "description": "Saves the provided settings in OctoPrint.\nExpects a JSON object with the settings to change as request body. This can be either a full settings tree, or only a partial tree containing only those fields that should be updated.", + "tags": [ + "Settings" + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Config" + } + } + } + }, + "responses": { + "200": { + "description": "Current OctoPrint state", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Config" + } + } + } + } + } + } + }, + "/settings/templates": { + "get": { + "summary": "Fetch template data", + "operationId": "getTemplates", + "description": "Fetch data (currently only the sorting order) of all registered template components in the system.\nUse this to get a full list of the identifiers of all UI components provided either by core OctoPrint or any currently active plugins.", + "tags": [ + "Settings", + "Templates" + ], + "responses": { + "200": { + "description": "Current OctoPrint state", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Templates" + } + } + } + } + } + } + }, + "/settings/apikey": { + "get": { + "summary": "Regenerate the system wide API key", + "operationId": "regenerateApiKey", + "description": "Generates a new system wide API key.\nDoes not expect a body. Will return the generated API key as apikey property in the JSON object contained in the response body.", + "tags": [ + "System", + "Settings" + ], + "responses": { + "200": { + "description": "ApiKey was regenerated" + }, + "403": { + "description": "No admin rights" + } + } + } + }, + "/access/permissions": { + "get": { + "summary": "List all permissions", + "operationId": "getAllPermissions", + "description": "Retrieves all permissions available in the system.", + "tags": [ + "Permissions" + ], + "responses": { + "200": { + "description": "List of available permissions on the system", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "permissions": { + "type": "array", + "items": { + "$ref": "#/components/schemas/PermissionRecord" + } + } + } + } + } + } + } + } + } + }, + "/access/groups": { + "get": { + "summary": "Get all groups", + "operationId": "getAllGroups", + "tags": [ + "Groups" + ], + "description": "Retrieves all groups registered in the system.", + "responses": { + "200": { + "description": "List of available groups on the system", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/GroupList" + } + } + } + } + } + }, + "post": { + "summary": "Add a new group", + "operationId": "addGroup", + "tags": [ + "Groups" + ], + "description": "Adds a new group to the system.", + "requestBody": { + "$ref": "#/components/requestBodies/GroupRegistrationReq" + }, + "responses": { + "200": { + "description": "List of all groups on the system", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/GroupList" + } + } + } + }, + "400": { + "description": "If any of the mandatory fields is missing or the request is otherwise invalid" + }, + "409": { + "description": "Conflict: A group with the provided key does already exist" + } + } + } + }, + "/access/groups/{key}": { + "get": { + "summary": "Retrieve a group", + "operationId": "getGroup", + "tags": [ + "Groups" + ], + "description": "Retrieves an individual group record.", + "parameters": [ + { + "in": "path", + "name": "key", + "description": "The group’s identifier", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Group record", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/GroupRecord" + } + } + } + } + } + }, + "put": { + "summary": "Update a group", + "operationId": "updateGroup", + "tags": [ + "Groups" + ], + "description": "Updates an existing group.", + "parameters": [ + { + "in": "path", + "name": "key", + "description": "The group’s identifier", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/GroupUpdate" + } + } + } + }, + "responses": { + "200": { + "description": "Group records", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/GroupList" + } + } + } + }, + "400": { + "description": "If any of the mandatory fields is missing or the request is otherwise invalid" + } + } + }, + "delete": { + "summary": "Delete a group", + "operationId": "deleteGroup", + "tags": [ + "Groups" + ], + "description": "Deletes a group by its identifier.", + "parameters": [ + { + "in": "path", + "name": "key", + "description": "The group’s identifier", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/GroupUpdate" + } + } + } + }, + "responses": { + "200": { + "description": "Group was deleted. A list of all available groups will be returned.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/GroupList" + } + } + } + } + } + } + }, + "/access/users": { + "get": { + "summary": "Retrieve a list of users", + "operationId": "getAllUsers", + "tags": [ + "User" + ], + "description": "Retrieves a list of all registered users in OctoPrint.", + "responses": { + "200": { + "description": "List of available groups on the system", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UserList" + } + } + } + } + } + }, + "post": { + "summary": "Add a new user", + "operationId": "addUser", + "tags": [ + "User" + ], + "description": "Adds a new user to OctoPrint.", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UserRegister" + } + } + } + }, + "responses": { + "200": { + "description": "List of all groups on the system", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UserList" + } + } + } + }, + "400": { + "description": "If any of the mandatory fields is missing or the request is otherwise invalid" + }, + "409": { + "description": "Conflict: A user with the provided name does already exist" + } + } + } + }, + "/access/users/{username}": { + "get": { + "summary": "Retrieve a user", + "operationId": "getUser", + "tags": [ + "User" + ], + "description": "Retrieves information about a user.", + "parameters": [ + { + "$ref": "#/components/parameters/username" + } + ], + "responses": { + "200": { + "description": "Group record", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UserRecord" + } + } + } + }, + "404": { + "description": "Unknown user" + } + } + }, + "put": { + "summary": "Update a user", + "operationId": "updateUser", + "tags": [ + "User" + ], + "description": "Updates an existing user.", + "parameters": [ + { + "$ref": "#/components/parameters/username" + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UserUpdate" + } + } + } + }, + "responses": { + "200": { + "description": "Group records", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UserList" + } + } + } + }, + "404": { + "description": "Unknown user" + } + } + }, + "delete": { + "summary": "Delete a user", + "operationId": "deleteUser", + "description": "Deletes a user by name.", + "tags": [ + "User" + ], + "parameters": [ + { + "$ref": "#/components/parameters/username" + } + ], + "responses": { + "200": { + "description": "User was deleted", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UserList" + } + } + } + }, + "404": { + "description": "User not found." + } + } + } + }, + "/access/users/{username}/password": { + "put": { + "summary": "Change user password", + "operationId": "changeUserPassword", + "tags": [ + "User" + ], + "description": "Changes the password of a user.", + "parameters": [ + { + "$ref": "#/components/parameters/username" + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "password": { + "type": "string" + } + } + } + } + } + }, + "responses": { + "200": { + "description": "Password was updated" + }, + "400": { + "description": "If the request doesn’t contain a `password` property or the request is otherwise invalid" + }, + "403": { + "description": "No admin rights and not logged in as the user" + }, + "404": { + "description": "Unknown user" + } + } + } + }, + "/access/users/{username}/settings": { + "get": { + "summary": "Get a user's settings", + "operationId": "getUserSettings", + "tags": [ + "User" + ], + "description": "Retrieves a user’s settings. Will return a 200 OK with a JSON object representing the user’s personal settings (if any) as body.", + "parameters": [ + { + "$ref": "#/components/parameters/username" + } + ], + "responses": { + "200": { + "description": "User settings", + "content": { + "application/json": { + "schema": { + "type": "object", + "additionalProperties": true + } + } + } + }, + "403": { + "description": "No admin rights and not logged in as the user" + }, + "404": { + "description": "Unknown user" + } + } + }, + "patch": { + "summary": "Update a user’s settings", + "operationId": "updateUserSettings", + "tags": [ + "User" + ], + "description": "Retrieves a user’s settings. Will return a 200 OK with a JSON object representing the user’s personal settings (if any) as body.", + "parameters": [ + { + "$ref": "#/components/parameters/username" + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "additionalProperties": true + } + } + } + }, + "responses": { + "204": { + "description": "Settings updated" + }, + "403": { + "description": "No admin rights and not logged in as the user" + }, + "404": { + "description": "Unknown user" + } + } + } + }, + "/access/users/{username}/apikey": { + "post": { + "summary": "Regenerate a user’s api key", + "operationId": "regenerateUserApiKey", + "tags": [ + "User" + ], + "description": "Generates a new API key for the user.\nDoes not expect a body. Will return the generated API key as apikey property in the JSON object contained in the response body.", + "parameters": [ + { + "$ref": "#/components/parameters/username" + } + ], + "responses": { + "200": { + "description": "Api key was regenerated" + }, + "403": { + "description": "No admin rights and not logged in as the user" + }, + "404": { + "description": "Unknown user" + } + } + }, + "delete": { + "summary": "Delete a user’s api key", + "operationId": "deleteApiKey", + "tags": [ + "User" + ], + "description": "Deletes a user’s personal API key.\nRequires the SETTINGS permission or to be logged in as the user.", + "parameters": [ + { + "$ref": "#/components/parameters/username" + } + ], + "responses": { + "204": { + "description": "Api key was deleted" + }, + "403": { + "description": "No admin rights and not logged in as the user" + }, + "404": { + "description": "Unknown user" + } + } + } + }, + "/languages": { + "get": { + "summary": "Retrieve installed language packs", + "operationId": "getLanguages", + "description": "Retrieves a list of installed language packs.\nThe response body will contain a list of available languages packs.", + "tags": [ + "Languages" + ], + "responses": { + "200": { + "description": "Available language packs", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/LanguageList" + } + } + } + } + } + }, + "post": { + "summary": "Upload a language pack", + "operationId": "uploadLanguagePack", + "description": "Uploads a new language pack to OctoPrint.\nOther than most of the other requests on OctoPrint’s API which are expected as JSON, this request is expected as Content-Type: multipart/form-data due to the included file upload.\nTo upload a file, the request body must contain the file form field with the contents and file name of the file to upload.\nOnly files with one of the extensions zip, tar.gz, tgz or tar will be processed, for other file extensions a 400 Bad Request will be returned.\nWill return a list of installed language packs upon completion, as described in Retrieve installed language packs.", + "tags": [ + "Languages" + ], + "requestBody": { + "content": { + "multipart/form-data": { + "schema": { + "type": "object", + "properties": { + "file": { + "description": "The language pack file to upload", + "type": "string", + "format": "binary" + } + } + } + } + } + }, + "responses": { + "200": { + "description": "The file was uploaded successfully", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/LanguageList" + } + } + } + }, + "400": { + "description": "File has an invalid file extension" + } + } + } + }, + "/languages/{locale}/{pack}": { + "delete": { + "summary": "Delete a language pack", + "operationId": "deleteLanguagePack", + "description": "Deletes the language pack pack for locale locale. Can be either the _core pack (containing translations for core OctoPrint) or the language pack for a plugin specified by the plugin identifier.", + "tags": [ + "Languages" + ], + "parameters": [ + { + "in": "path", + "name": "locale", + "schema": { + "type": "string" + }, + "description": "The identifier of the command, action from its definition" + }, + { + "in": "path", + "name": "pack", + "schema": { + "type": "string" + }, + "description": "The language pack to delete" + } + ], + "responses": { + "200": { + "description": "The language pack was deleted", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/LanguageList" + } + } + } + } + } + } + } + }, + "components": { + "schemas": { + "Login": { + "type": "object", + "properties": { + "user": { + "type": "string" + }, + "pass": { + "type": "string" + } + } + }, + "PassiveLogin": { + "type": "object", + "properties": { + "passive": { + "type": "boolean" + }, + "remember": { + "type": "boolean" + } + } + }, + "LoginResponse": { + "type": "object", + "properties": { + "session": { + "type": "string" + }, + "_is_external_client": { + "type": "boolean" + } + } + }, + "Needs": { + "type": "object", + "properties": { + "role": { + "type": "array", + "items": { + "type": "string" + } + }, + "group": { + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "PermissionRecord": { + "type": "object", + "properties": { + "key": { + "type": "string", + "description": "The permission’s identifier" + }, + "name": { + "type": "string", + "description": "The permission’s name" + }, + "dangerous": { + "type": "boolean", + "description": "Whether the permission should be considered dangerous due to a high reponsibility (true) or not (false)." + }, + "default_groups": { + "type": "array", + "description": "List of group identifiers for which this permission is enabled by default", + "items": { + "type": "string" + } + }, + "description": { + "type": "string", + "description": "Human readable description of the permission" + }, + "needs": { + "description": "Needs assigned to the permission", + "$ref": "#/components/schemas/Needs" + } + } + }, + "GroupRecord": { + "allOf": [ + { + "$ref": "#/components/schemas/GroupRegister" + }, + { + "type": "object", + "properties": { + "needs": { + "$ref": "#/components/schemas/Needs" + }, + "removable": { + "type": "boolean", + "description": "Whether this group can be removed (true) or not (false)" + }, + "changeable": { + "type": "boolean", + "description": "Whether this group can be modified (true) or not (false)" + }, + "toggleable": { + "type": "boolean", + "description": "Whether this group can be assigned to users or other groups (true) or not (false)" + } + } + } + ] + }, + "GroupUpdate": { + "type": "object", + "properties": { + "description": { + "type": "string", + "description": "The group’s description. Set to empty if not provided." + }, + "permissions": { + "type": "array", + "items": { + "$ref": "#/components/schemas/PermissionRecord" + }, + "description": "A list of identifier’s of permissions to assign to the group" + }, + "subgroups": { + "type": "array", + "items": { + "$ref": "#/components/schemas/GroupRecord" + }, + "description": "A list of identifier’s of groups to assign to the group as subgroups" + }, + "default": { + "type": "boolean", + "description": "Whether to assign the group to new users by default (true) or not (false, default value)" + } + } + }, + "GroupRegister": { + "allOf": [ + { + "$ref": "#/components/schemas/GroupUpdate" + }, + { + "type": "object", + "properties": { + "key": { + "type": "string", + "description": "The group’s identifier" + }, + "name": { + "type": "string", + "description": "The group’s name" + } + } + } + ] + }, + "CurrentUser": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "groups": { + "type": "array", + "items": { + "$ref": "#/components/schemas/GroupRecord" + } + }, + "permissions": { + "type": "array", + "items": { + "$ref": "#/components/schemas/PermissionRecord" + } + } + } + }, + "Box": { + "type": "object", + "description": "A simple Box", + "properties": { + "min_x": { + "type": "number", + "description": "Minimum X coordinate defining the safe custom bounding box. Smaller value than the minimum X coordinate of the print volume." + }, + "max_x": { + "type": "number", + "description": "Maximum X coordinate defining the safe custom bounding box. Larger value than the maximum X coordinate of the print volume." + }, + "min_y": { + "type": "number", + "description": "Minimum Y coordinate defining the safe custom bounding box. Smaller value than the minimum Y coordinate of the print volume." + }, + "max_y": { + "type": "number", + "description": "Maximum Y coordinate defining the safe custom bounding box. Larger value than the maximum Y coordinate of the print volume." + }, + "min_z": { + "type": "number", + "description": "Minimum Z coordinate defining the safe custom bounding box. Smaller value than the minimum Z coordinate of the print volume." + }, + "max_z": { + "type": "number", + "description": "Maximum Z coordinate defining the safe custom bounding box. Larger value than the maximum Z coordinate of the print volume." + } + } + }, + "Volume": { + "type": "object", + "description": "Printer volume", + "properties": { + "formFactor": { + "type": "string", + "description": "The form factor of the printer’s bed, valid values are “rectangular” and “circular”" + }, + "origin": { + "type": "string", + "description": "The location of the origin on the printer’s bed, valid values are “lowerleft” and “center”", + "enum": [ + "lowerleft", + "center" + ] + }, + "width": { + "description": "The width of the print volume. For circular beds, the diameter of the bed.", + "type": "number" + }, + "height": { + "description": "The depth of the print volume. For circular beds, this is the diameter of the bed and will be forced to be the same as volume.width upon saving.", + "type": "number" + }, + "depth": { + "type": "number", + "description": "The height of the print volume" + }, + "custom_box": { + "description": "If the printer has a custom bounding box where the print head can be safely moved to, exceeding the defined print volume, that bounding box will be defined here. Otherwise (safe area == print volume) this value will be false.", + "oneOf": [ + { + "type": "boolean" + }, + { + "$ref": "#/components/schemas/Box" + } + ] + } + } + }, + "AxisProperty": { + "type": "object", + "properties": { + "speed": { + "type": "integer", + "description": "Maximum speed of the axis in mm/min." + }, + "inverted": { + "type": "boolean", + "description": "Whether the axis is inverted or not." + } + } + }, + "Axis": { + "type": "object", + "properties": { + "x": { + "$ref": "#/components/schemas/AxisProperty" + }, + "y": { + "$ref": "#/components/schemas/AxisProperty" + }, + "z": { + "$ref": "#/components/schemas/AxisProperty" + }, + "e": { + "$ref": "#/components/schemas/AxisProperty" + } + } + }, + "Extruder": { + "type": "object", + "description": "Information about the printer’s extruders", + "properties": { + "nozzleDiameter": { + "type": "number", + "description": "The diameter of the printer’s nozzle(s) in mm." + }, + "count": { + "type": "integer", + "description": "Count of extruders on the printer (defaults to 1)" + }, + "offsets": { + "type": "array", + "description": "Tuple of (x, y) values describing the offsets of the other extruders relative to the first extruder. E.g. for a printer with two extruders, if the second extruder is offset by 20mm in the X and 25mm in the Y direction, this array will read", + "items": { + "type": "array", + "items": { + "type": "number" + }, + "minItems": 2 + }, + "example": [ + [ + 0, + 0 + ], + [ + 20, + 25 + ] + ] + } + } + }, + "Profile": { + "type": "object", + "description": "Printer profile", + "properties": { + "id": { + "type": "string", + "description": "Identifier of the profile. Will always be returned in responses, is mandatory in add requests but can be left out of update requests." + }, + "name": { + "type": "string", + "description": "Display name of the profile. Will always be returned in responses, is mandatory in add requests but can be left out of update requests." + }, + "color": { + "type": "string", + "description": "The color to associate with this profile (used in the UI’s title bar). Valid values are “default”, “red”, “orange”, “yellow”, “green”, “blue”, “black”. Will always be returned in responses but can be left out of save/update requests." + }, + "model": { + "type": "string", + "description": "Printer model of the profile. Will always be returned in responses but can be left out of save/update requests." + }, + "default": { + "type": "boolean", + "description": "Whether this is the default profile to be used with new connections (true) or not (false). Will always be returned in responses but can be left out of save/update requests." + }, + "current": { + "type": "boolean", + "description": "Whether this is the profile currently active. Will always be returned in responses but ignored in save/update requests." + }, + "resource": { + "type": "string", + "format": "url", + "description": "Resource URL of the profile, will always be returned in responses but can be left out of save/update requests." + }, + "volume": { + "description": "The print volume, will always be returned in responses but can be left out of save/update requests.", + "$ref": "#/components/schemas/Volume" + }, + "heatedBed": { + "type": "boolean", + "description": "Whether the printer has a headed bed." + }, + "heatedChamber": { + "type": "boolean", + "description": "Whether the printer has a heated chamber (true) or not (false)" + }, + "axis": { + "$ref": "#/components/schemas/Axis", + "description": "Description of the printer’s axes properties, one entry each for x, y, z and e holding maximum speed and whether this axis is inverted or not." + }, + "extruder": { + "$ref": "#/components/schemas/Extruder" + } + } + }, + "ConnectionOptions": { + "type": "object", + "properties": { + "ports": { + "type": "array", + "items": { + "type": "string" + } + }, + "baudrates": { + "type": "array", + "items": { + "type": "number" + } + }, + "printerProfiles": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Profile" + } + }, + "baudratePreference": { + "type": "number" + }, + "printerProfilePreference": { + "type": "string" + }, + "autoconnect": { + "type": "boolean" + } + } + }, + "ConnectionInfo": { + "type": "object", + "properties": { + "current": { + "type": "object", + "properties": { + "state": { + "type": "string" + }, + "port": { + "type": "string" + }, + "baudrate": { + "type": "number" + }, + "printerProfile": { + "type": "string" + } + } + }, + "options": { + "$ref": "#/components/schemas/ConnectionOptions" + } + } + }, + "ConnectCmd": { + "type": "object", + "properties": { + "command": { + "type": "string", + "enum": [ + "connect" + ] + }, + "port": { + "type": "string" + }, + "baudrate": { + "type": "number" + }, + "printerProfile": { + "type": "string" + }, + "save": { + "type": "boolean" + }, + "autoconnect": { + "type": "boolean" + } + } + }, + "DisconnectCmd": { + "type": "object", + "properties": { + "command": { + "type": "string", + "enum": [ + "disconnect" + ] + } + } + }, + "FakeAckCmd": { + "type": "object", + "properties": { + "command": { + "type": "string", + "enum": [ + "fake_ack" + ] + } + } + }, + "Reference": { + "type": "object", + "properties": { + "resource": { + "type": "string", + "format": "url" + }, + "download": { + "type": "string", + "format": "url" + }, + "model": { + "type": "string", + "format": "url" + } + }, + "required": [ + "resource" + ] + }, + "FilamentUsage": { + "type": "object", + "description": "The estimated usage of filament", + "properties": { + "length": { + "type": "number", + "description": "The length of filament used, in mm" + }, + "volume": { + "type": "number", + "description": "The volume of filament used, in cm³" + }, + "dimensions": { + "type": "object", + "description": "Information regarding the size of the printed model", + "properties": { + "depth": { + "type": "number", + "description": "The depth of the printed model, in mm" + }, + "height": { + "type": "number", + "description": "The height of the printed model, in mm" + }, + "width": { + "type": "number", + "description": "The width of the printed model, in mm" + } + } + }, + "printingArea": { + "type": "object", + "properties": { + "maxX": { + "type": "number", + "description": "The maximum X coordinate of the printed model, in mm" + }, + "maxY": { + "type": "number", + "description": "The maximum Y coordinate of the printed model, in mm" + }, + "maxZ": { + "type": "number", + "description": "The maximum Z coordinate of the printed model, in mm" + }, + "minX": { + "type": "number", + "description": "The minimum X coordinate of the printed model, in mm" + }, + "minY": { + "type": "number", + "description": "The minimum Y coordinate of the printed model, in mm" + }, + "minZ": { + "type": "number", + "description": "The minimum Z coordinate of the printed model, in mm" + } + } + } + } + }, + "GCodeAnalysis": { + "type": "object", + "properties": { + "estimatedPrintTime": { + "type": "number", + "description": "The estimated print time of the file, in seconds" + }, + "filament": { + "$ref": "#/components/schemas/FilamentUsage" + } + } + }, + "File": { + "type": "object", + "required": [ + "origin" + ], + "properties": { + "origin": { + "type": "string", + "description": "The size of the file in bytes. Only available for local files or sdcard files if the printer supports file sizes for sd card files.", + "enum": [ + "local", + "sdcard" + ] + }, + "hash": { + "type": "string" + }, + "size": { + "type": "number" + }, + "date": { + "type": "number", + "format": "date-time" + }, + "refs": { + "$ref": "#/components/schemas/Reference" + }, + "gcodeAnalysis": { + "$ref": "#/components/schemas/GCodeAnalysis" + } + } + }, + "RetrieveResponse": { + "type": "object", + "properties": { + "files": { + "type": "array", + "items": { + "$ref": "#/components/schemas/File" + } + }, + "free": { + "description": "Remaining free space", + "type": "string", + "example": "25.4G" + } + } + }, + "UploadResponse": { + "type": "object", + "properties": { + "files": { + "type": "object", + "description": "Abridged information regarding the file that was just uploaded. If only uploaded to local this will only contain the local property. If uploaded to SD card, this will contain both local and sdcard properties. Only contained if a file was uploaded, not present if only a new folder was created.", + "properties": { + "local": { + "description": "The information regarding the file that was just uploaded to the local storage.", + "$ref": "#/components/schemas/File" + }, + "sdcard": { + "description": "The information regarding the file that was just uploaded to the printer’s SD card.", + "$ref": "#/components/schemas/File" + } + } + }, + "folder": { + "description": "Abridged information regarding the folder that was just created. Only contained if a folder was created, not present if a file was uploaded.", + "$ref": "#/components/schemas/File" + }, + "done": { + "type": "boolean", + "description": "Whether any file processing after upload has already finished (true) or not, e.g. due to first needing to perform a slicing step (false). Clients may use this information to direct progress displays related to the upload." + } + } + }, + "Filament": { + "type": "object", + "description": "Information regarding the estimated filament usage of the print job", + "properties": { + "length": { + "description": "Length of filament used, in mm", + "type": "number" + }, + "volume": { + "description": "Volume of filament used, in cm³", + "type": "number" + } + } + }, + "JobInfo": { + "type": "object", + "properties": { + "file": { + "description": "The file that is the target of the current print job", + "$ref": "#/components/schemas/File" + }, + "estimatedPrintTime": { + "description": "The estimated print time for the file, in seconds.", + "type": "number" + }, + "lastPrintTime": { + "description": "The print time of the last print of the file, in seconds.", + "type": "number" + }, + "filament": { + "$ref": "#/components/schemas/Filament" + } + } + }, + "ProgressInfo": { + "type": "object", + "properties": { + "completion": { + "type": "number", + "description": "Percentage of completion of the current print job" + }, + "filepos": { + "type": "number", + "description": "Current position in the file being printed, in bytes from the beginning" + }, + "printTime": { + "type": "number", + "description": "Time already spent printing, in seconds" + }, + "printTimeLeft": { + "type": "number", + "description": "Estimate of time left to print, in seconds" + }, + "printTimeLeftOrigin": { + "type": "string", + "enum": [ + "linear", + "analysis", + "estimate", + "average", + "mixed-analysis", + "mixed-average" + ], + "description": "Origin of the current time left estimate. - linear: based on an linear approximation of the progress in file in bytes vs time - analysis: based on an analysis of the file - estimate: calculated estimate after stabilization of linear estimation - average: based on the average total from past prints of the same model against the same printer profile - mixed-analysis: mixture of estimate and analysis - mixed-average: mixture of estimate and average" + } + } + }, + "TemperatureProbe": { + "type": "object", + "description": "Current Tool temperature", + "required": [ + "actual" + ], + "properties": { + "actual": { + "type": "number" + }, + "target": { + "type": "number" + }, + "offset": { + "type": "number" + } + } + }, + "ArbitraryPrinterCmd": { + "type": "object", + "description": "Arbitrary Command Request", + "properties": { + "command": { + "type": "string", + "description": "Single command to send to the printer, mutually exclusive with commands and script." + }, + "commands": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Multiple commands to send to the printer (in the given order), mutually exclusive with command and script." + }, + "script": { + "type": "string", + "description": "Name of the GCODE script template to send to the printer, mutually exclusive with command and commands." + }, + "parameters": { + "type": "object", + "additionalProperties": true, + "description": "Key value pairs of parameters to replace in sent commands/provide to the script renderer" + }, + "context": { + "type": "object", + "additionalProperties": true, + "description": "(only if script is set) additional template variables to provide to the script render" + } + } + }, + "ClientCmd": { + "type": "object", + "description": "System command", + "properties": { + "name": { + "type": "string", + "description": "The name of the command to display in the System menu." + }, + "action": { + "type": "string", + "description": "An identifier to refer to the command programmatically. The special action string divider signifies a divider in the menu." + }, + "confirm": { + "type": "string", + "description": "If present and set, this text will be displayed to the user in a confirmation dialog they have to acknowledge in order to really execute the command." + }, + "source": { + "type": "string", + "description": "Source of the command definition, currently either core (for system actions defined by OctoPrint itself) or custom (for custom system commands defined by the user through config.yaml)." + }, + "resource": { + "type": "string", + "format": "url", + "description": "The URL of the command to use for executing it." + } + } + }, + "Config": { + "type": "object", + "description": "OctoPrint config (Work in Progress)", + "additionalProperties": true + }, + "Templates": { + "type": "object", + "required": [ + "id", + "name" + ], + "properties": { + "id": { + "type": "string" + }, + "name": { + "type": "string" + } + }, + "additionalProperties": true + }, + "GroupList": { + "type": "object", + "properties": { + "groups": { + "type": "array", + "items": { + "$ref": "#/components/schemas/GroupRecord" + } + } + } + }, + "UserRecord": { + "type": "object", + "description": "User record", + "properties": { + "name": { + "type": "string", + "description": "The user’s name" + }, + "active": { + "type": "boolean", + "description": "Whether the user’s account is active (true) or not (false)" + }, + "user": { + "type": "boolean", + "description": "Whether the user has user rights. Should always be true. Deprecated as of 1.4.0, use the users group instead." + }, + "admin": { + "type": "boolean", + "description": "Whether the user has admin rights (true) or not (false). Deprecated as of 1.4.0, use the admins group instead." + }, + "apiKey": { + "type": "string", + "description": "The user’s personal API key" + }, + "settings": { + "type": "object", + "description": "The user’s personal settings, might be an empty object." + }, + "groups": { + "type": "array", + "description": "Groups assigned to the user", + "items": { + "$ref": "#/components/schemas/GroupRecord" + } + }, + "permissions": { + "type": "array", + "description": "The list of permissions assigned to the user (note: this does not include implicit permissions inherit from groups).", + "items": { + "$ref": "#/components/schemas/PermissionRecord" + } + }, + "needs": { + "description": "Effective needs of the user", + "$ref": "#/components/schemas/Needs" + } + } + }, + "UserList": { + "type": "object", + "properties": { + "groups": { + "type": "array", + "items": { + "$ref": "#/components/schemas/UserRecord" + } + } + } + }, + "UserRegister": { + "type": "object", + "description": "User registration request payload", + "properties": { + "name": { + "type": "string", + "description": "The user’s name" + }, + "password": { + "type": "string", + "description": "User's password" + }, + "active": { + "type": "boolean", + "description": "Whether the user’s account is active (true) or not (false)" + }, + "groups": { + "type": "array", + "description": "Groups assigned to the user", + "items": { + "$ref": "#/components/schemas/GroupRecord" + } + }, + "permissions": { + "type": "array", + "description": "The list of permissions assigned to the user (note: this does not include implicit permissions inherit from groups).", + "items": { + "$ref": "#/components/schemas/PermissionRecord" + } + } + } + }, + "UserUpdate": { + "type": "object", + "description": "User update request body", + "properties": { + "active": { + "type": "boolean", + "description": "Whether the user’s account is active (true) or not (false)" + }, + "groups": { + "type": "array", + "description": "Groups assigned to the user", + "items": { + "$ref": "#/components/schemas/GroupRecord" + } + }, + "permissions": { + "type": "array", + "description": "The list of permissions assigned to the user (note: this does not include implicit permissions inherit from groups).", + "items": { + "$ref": "#/components/schemas/PermissionRecord" + } + } + } + }, + "LanguagePackMeta": { + "type": "object", + "description": "Language pack metadata", + "required": [ + "locale", + "locale_display", + "locale_english" + ], + "properties": { + "locale": { + "description": "Locale of the language pack", + "type": "string", + "example": "de" + }, + "locale_display": { + "description": "Displayable name of the locale", + "type": "string", + "example": "Deutsch" + }, + "locale_english": { + "description": "English representation of the locale", + "type": "string", + "example": "German" + }, + "last_update": { + "description": "Timestamp of the last update of the language pack", + "type": "integer", + "example": 1474574597 + }, + "author": { + "type": "string", + "description": "Author of the language pack", + "example": "Gina Häußge" + } + } + }, + "ComponentList": { + "type": "object", + "description": "Component List", + "properties": { + "identifier": { + "type": "string", + "description": "The plugin’s identifier, `_core` for core OctoPrint, the plugin’s identifier for plugins", + "example": "_core" + }, + "display": { + "description": "Displayable name of the component, Core for core OctoPrint, the plugin’s name for plugins", + "type": "string", + "example": "Core" + }, + "languages": { + "description": "Language packs for the component", + "type": "array", + "items": { + "$ref": "#/components/schemas/LanguagePackMeta" + } + } + } + }, + "LanguageList": { + "type": "object", + "additionalProperties": { + "$ref": "#/components/schemas/ComponentList" + } + } + }, + "parameters": { + "fileLocation": { + "in": "path", + "name": "location", + "description": "Retrieve information regarding the files currently available on the selected location and – if targeting the local location – regarding the disk space still available locally in the system.", + "schema": { + "type": "string", + "enum": [ + "local", + "sdcard" + ] + } + }, + "fileRecursive": { + "in": "query", + "name": "recursive", + "description": "If set to true, return all files and folders recursively. Otherwise only return items on same level.", + "required": false, + "schema": { + "type": "boolean" + } + }, + "filePath": { + "in": "path", + "name": "path", + "description": "The filename of the file for which to retrieve the information", + "schema": { + "type": "string", + "format": "uri" + } + }, + "history": { + "in": "query", + "name": "history", + "schema": { + "type": "string", + "enum": [ + "yes", + "y", + "1" + ] + }, + "description": "If set to true (or: yes, y, 1), history information will be included in the response too. If no limit parameter is given, all available temperature history data will be returned." + }, + "limit": { + "in": "query", + "name": "limit", + "schema": { + "type": "integer" + }, + "description": "If set to an integer (n), only the last n data points from the history will be returned. Will be ignored if history is not enabled." + }, + "profileIdentifier": { + "in": "path", + "name": "identifier", + "description": "identifier of a given printer profile" + }, + "systemCmdSource": { + "in": "path", + "name": "source", + "description": "The source for which to list commands, currently either core or custom" + }, + "username": { + "in": "path", + "name": "username", + "description": "Name of the user which to retrieve", + "schema": { + "type": "string" + } + } + }, + "requestBodies": { + "File": { + "content": { + "multipart/form-data": { + "schema": { + "type": "object", + "properties": { + "file": { + "description": "The file to upload, including a valid", + "type": "string", + "format": "binary" + }, + "path": { + "description": "The path within the location to upload the file to or create the folder in (without the future filename or foldername - basically the parent folder). If unset will be taken from the provided file’s name or foldername and default to the root folder of the location.", + "type": "string", + "format": "uri" + }, + "select": { + "type": "boolean", + "description": "Whether to select the file directly after upload (true) or not (false). Optional, defaults to false. Ignored when creating a folder." + }, + "print": { + "type": "boolean", + "description": "Whether to start printing the file directly after upload (true) or not (false). If set, select is implicitly true as well. Optional, defaults to false. Ignored when creating a folder." + }, + "userdata": { + "type": "string", + "description": "An optional string that if specified will be interpreted as JSON and then saved along with the file as metadata (metadata key userdata). Ignored when creating a folder." + }, + "foldername": { + "type": "string", + "description": "The name of the folder to create. Ignored when uploading a file." + } + } + } + } + } + }, + "JobCommand": { + "content": { + "application/json": { + "schema": { + "discriminator": { + "propertyName": "command" + }, + "oneOf": [ + { + "type": "object", + "description": "Starts the print of the currently selected file.", + "properties": { + "command": { + "type": "string", + "enum": [ + "start" + ] + } + } + }, + { + "type": "object", + "description": "Cancels the current print job. If no print job is active (either paused or printing), a 409 Conflict will be returned.", + "properties": { + "command": { + "type": "string", + "enum": [ + "cancel" + ] + } + } + }, + { + "type": "object", + "description": "Restart the print of the currently selected file from the beginning. There must be an active print job for this to work and the print job must currently be paused. If either is not the case, a 409 Conflict will be returned.", + "properties": { + "command": { + "type": "string", + "enum": [ + "restart" + ] + } + } + }, + { + "type": "object", + "description": "Pauses/resumes/toggles the current print job. Accepts one optional additional parameter action specifying which action to take.", + "properties": { + "command": { + "type": "string", + "enum": [ + "restart" + ] + }, + "action": { + "type": "string", + "enum": [ + "pause", + "resume", + "toggle" + ] + } + } + } + ] + } + } + } + }, + "PrinterToolCommand": { + "content": { + "application/json": { + "schema": { + "discriminator": { + "propertyName": "command" + }, + "oneOf": [ + { + "type": "object", + "description": "Sets the given target temperature on the printer’s tools.", + "properties": { + "command": { + "type": "string", + "enum": [ + "target" + ] + }, + "targets": { + "type": "object", + "description": "Target temperature(s) to set, properties must match the format tool{n} with n being the tool’s index starting with 0. A value of 0 will turn the heater off." + } + } + }, + { + "type": "object", + "description": "Sets the given temperature offset on the printer’s tools.", + "properties": { + "command": { + "type": "string", + "enum": [ + "offset" + ] + }, + "offsets": { + "type": "object", + "description": "Offset(s) to set, properties must match the format tool{n} with n being the tool’s index starting with 0." + } + } + }, + { + "type": "object", + "description": "Selects the printer’s current tool.", + "properties": { + "command": { + "type": "string", + "enum": [ + "select" + ] + }, + "tool": { + "description": "Tool to select, format tool{n} with n being the tool’s index starting with 0.", + "type": "string" + } + } + }, + { + "type": "object", + "description": "Extrudes the given amount of filament from the currently selected tool.", + "required": [ + "command", + "amount" + ], + "properties": { + "command": { + "type": "string", + "enum": [ + "extrude" + ] + }, + "amount": { + "description": "The amount of filament to extrude in mm. May be negative to retract.", + "type": "number" + }, + "speed": { + "description": "Optional. Speed at which to extrude. If not provided, maximum speed for E axis from printer profile will be used. Otherwise interpreted as an integer signifying the speed in mm/min, to append to the command.", + "type": "number" + } + } + }, + { + "type": "object", + "description": "Changes the flow rate factor to apply to extrusion of the tool.", + "properties": { + "command": { + "type": "string", + "enum": [ + "flowrate" + ] + }, + "factor": { + "description": "The new factor, percentage between 75 and 125% as integer (75 to 125) or float (0.75 to 1.25).", + "oneOf": [ + { + "type": "integer", + "minimum": 75, + "maximum": 125 + }, + { + "type": "number", + "minimum": 0.75, + "maximum": 1.25 + } + ] + } + } + } + ] + } + } + } + }, + "PrinterBedCommand": { + "content": { + "application/json": { + "schema": { + "discriminator": { + "propertyName": "command" + }, + "oneOf": [ + { + "type": "object", + "description": "Sets the given target temperature on the printer’s bed.", + "properties": { + "command": { + "type": "string", + "enum": [ + "target" + ] + }, + "target": { + "type": "number", + "description": "Target temperature to set. A value of 0 will turn the heater off." + } + } + }, + { + "type": "object", + "description": "Sets the given temperature offset on the printer’s bed.", + "properties": { + "command": { + "type": "string", + "enum": [ + "offset" + ] + }, + "offset": { + "type": "number", + "description": "Offset to set." + } + } + } + ] + } + } + } + }, + "PrinterChamberCommand": { + "content": { + "application/json": { + "schema": { + "discriminator": { + "propertyName": "command" + }, + "oneOf": [ + { + "type": "object", + "description": "Sets the given target temperature on the printer’s chamber.", + "properties": { + "command": { + "type": "string", + "enum": [ + "target" + ] + }, + "target": { + "type": "number", + "description": "Target temperature to set. A value of 0 will turn the heater off." + } + } + }, + { + "type": "object", + "description": "Sets the given temperature offset on the printer’s chamber.", + "properties": { + "command": { + "type": "string", + "enum": [ + "offset" + ] + }, + "offset": { + "type": "number", + "description": "Offset to set." + } + } + } + ] + } + } + } + }, + "PrinterSdCommand": { + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Printer SD card command", + "properties": { + "command": { + "type": "string", + "description": "- `init`: Initializes the printer’s SD card, making it available for use. This also includes an initial retrieval of the list of files currently stored on the SD card, so after issuing that command a retrieval of the files on SD card will return a successful result. - `refresh`: Refreshes the list of files stored on the printer’s SD card. Will return a 409 Conflict if the card has not been initialized yet (see the init command and SD state). - `release`: Releases the SD card from the printer. The reverse operation to init. After issuing this command, the SD card won’t be available anymore, hence and operations targeting files stored on it will fail. Will return a 409 Conflict if the card has not been initialized yet (see the init command and SD state).", + "enum": [ + "init", + "refresh", + "release" + ] + } + } + } + } + } + }, + "PrinterProfileChange": { + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "profile" + ], + "properties": { + "basedOn": { + "type": "string" + }, + "profile": { + "$ref": "#/components/schemas/Profile", + "required": false + } + } + } + } + } + }, + "GroupRegistrationReq": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/GroupRegister" + } + } + } + } + } + } +} \ No newline at end of file diff --git a/favicon.png b/favicon.png new file mode 100644 index 0000000000000000000000000000000000000000..b5c1a2d8b44a7e0021d8ee7305a3570f7462c942 GIT binary patch literal 716 zcmV;-0yF)IP)%VB|+?Zc6U79Fd(~o z{D|pM53aYv*Xu*+;t;R ztxTS_#uaVTO10!N0#Td+sPZOI3}g;K7gmNv;&8mC}ovhoU7~Hk?V{(mxXdpITSDfy{OtD$)?{1ik>OE-luH zcgy2=!JC=`aq0k|)I?_Lm`LnXfmA*L+d4?EMnduYmsd90h0q**|exB8$z}aF>sLu4C9dhsv3+ zV=4O<7(1iQUpzOT!sZ7Nq(kL(ESf(QtyZ>>*}!!gN@a#PonP%;PEvbvSM)*{BZ#O0<&1RUAl#1Bq#zwj4wU+CUb5VXL6)`Ef<1vQcahkbbW(a@M1*!5nupxRRQ8B9DfM_0000 + + + API Reference | ReDoc + + + + + + + + + + + +