commit 5bf1e6a6131ec25dc36f17e4de82a0c53846d246 Author: Wlad Date: Thu Oct 22 21:14:35 2020 +0200 Initial commit from create-openapi-repo diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..a179851 --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +# Dir for bundles +dist +node_modules diff --git a/.redocly.yaml b/.redocly.yaml new file mode 100644 index 0000000..3388ea1 --- /dev/null +++ b/.redocly.yaml @@ -0,0 +1,14 @@ +# See https://redoc.ly/docs/cli/configuration/ for more information. +apiDefinitions: + main: openapi/openapi.yaml +lint: + extends: + - recommended + rules: + no-unused-components: warning +referenceDocs: + htmlTemplate: ./docs/index.html + theme: + colors: + primary: + main: "#32329f" diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..d41b8bd --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2016 Ivan Goncharov + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/README.md b/README.md new file mode 100644 index 0000000..1399540 --- /dev/null +++ b/README.md @@ -0,0 +1,250 @@ +# OctoPrint OpenAPI Definition + +## Working on your OpenAPI Definition + +### Install + +1. Install [Node JS](https://nodejs.org/). +2. Clone this repo and run `npm install` in the repo root. + +### Usage + +#### `npm start` +Starts the reference docs preview server. + +#### `npm run build` +Bundles the definition to the dist folder. + +#### `npm test` +Validates the definition. + +## Contribution Guide + +Below is a sample contribution guide. The tools +in the repository don't restrict you to any +specific structure. Adjust the contribution guide +to match your own structure. However, if you +don't have a structure in mind, this is a +good place to start. + +Update this contribution guide if you +adjust the file/folder organization. + +The `.redocly.yaml` controls settings for various +tools including the lint tool and the reference +docs engine. Open it to find examples and +[read the docs](https://redoc.ly/docs/cli/configuration/) +for more information. + + +### Schemas + +#### Adding Schemas + +1. Navigate to the `openapi/components/schemas` folder. +2. Add a file named as you wish to name the schema. +3. Define the schema. +4. Refer to the schema using the `$ref` (see example below). + +##### Example Schema +This is a very simple schema example: +```yaml +type: string +description: The resource ID. Defaults to UUID v4 +maxLength: 50 +example: 4f6cf35x-2c4y-483z-a0a9-158621f77a21 +``` +This is a more complex schema example: +```yaml +type: object +properties: + id: + description: The customer identifier string + readOnly: true + allOf: + - $ref: ./ResourceId.yaml + websiteId: + description: The website's ID + allOf: + - $ref: ./ResourceId.yaml + paymentToken: + type: string + writeOnly: true + description: | + A write-only payment token; if supplied, it will be converted into a + payment instrument and be set as the `defaultPaymentInstrument`. The + value of this property will override the `defaultPaymentInstrument` + in the case that both are supplied. The token may only be used once + before it is expired. + defaultPaymentInstrument: + $ref: ./PaymentInstrument.yaml + createdTime: + description: The customer created time + allOf: + - $ref: ./ServerTimestamp.yaml + updatedTime: + description: The customer updated time + allOf: + - $ref: ./ServerTimestamp.yaml + tags: + description: A list of customer's tags + readOnly: true + type: array + items: + $ref: ./Tags/Tag.yaml + revision: + description: > + The number of times the customer data has been modified. + + The revision is useful when analyzing webhook data to determine if the + change takes precedence over the current representation. + type: integer + readOnly: true + _links: + type: array + description: The links related to resource + readOnly: true + minItems: 3 + items: + anyOf: + - $ref: ./Links/SelfLink.yaml + - $ref: ./Links/NotesLink.yaml + - $ref: ./Links/DefaultPaymentInstrumentLink.yaml + - $ref: ./Links/LeadSourceLink.yaml + - $ref: ./Links/WebsiteLink.yaml + _embedded: + type: array + description: >- + Any embedded objects available that are requested by the `expand` + querystring parameter. + readOnly: true + minItems: 1 + items: + anyOf: + - $ref: ./Embeds/LeadSourceEmbed.yaml + +``` + +##### Using the `$ref` + +Notice in the complex example above the schema definition itself has `$ref` links to other schemas defined. + +Here is a small excerpt with an example: + +```yaml +defaultPaymentInstrument: + $ref: ./PaymentInstrument.yaml +``` + +The value of the `$ref` is the path to the other schema definition. + +You may use `$ref`s to compose schema from other existing schema to avoid duplication. + +You will use `$ref`s to reference schema from your path definitions. + +#### Editing Schemas + +1. Navigate to the `openapi/components/schemas` folder. +2. Open the file you wish to edit. +3. Edit. + +### Paths + +#### Adding a Path + +1. Navigate to the `openapi/paths` folder. +2. Add a new YAML file named like your URL endpoint except replacing `/` with `@` and putting path parameters into curly braces like `{example}`. +3. Add the path and a ref to it inside of your `openapi.yaml` file inside of the `openapi` folder. + +Example addition to the `openapi.yaml` file: +```yaml +'/customers/{id}': + $ref: './paths/customers@{id}.yaml' +``` + +Here is an example of a YAML file named `customers@{id}.yaml` in the `paths` folder: + +```yaml +get: + tags: + - Customers + summary: Retrieve a list of customers + operationId: GetCustomerCollection + description: | + You can have a markdown description here. + parameters: + - $ref: ../components/parameters/collectionLimit.yaml + - $ref: ../components/parameters/collectionOffset.yaml + - $ref: ../components/parameters/collectionFilter.yaml + - $ref: ../components/parameters/collectionQuery.yaml + - $ref: ../components/parameters/collectionExpand.yaml + - $ref: ../components/parameters/collectionFields.yaml + responses: + '200': + description: A list of Customers was retrieved successfully + headers: + Rate-Limit-Limit: + $ref: ../components/headers/Rate-Limit-Limit.yaml + Rate-Limit-Remaining: + $ref: ../components/headers/Rate-Limit-Remaining.yaml + Rate-Limit-Reset: + $ref: ../components/headers/Rate-Limit-Reset.yaml + Pagination-Total: + $ref: ../components/headers/Pagination-Total.yaml + Pagination-Limit: + $ref: ../components/headers/Pagination-Limit.yaml + Pagination-Offset: + $ref: ../components/headers/Pagination-Offset.yaml + content: + application/json: + schema: + type: array + items: + $ref: ../components/schemas/Customer.yaml + text/csv: + schema: + type: array + items: + $ref: ../components/schemas/Customer.yaml + '401': + $ref: ../components/responses/AccessForbidden.yaml + x-code-samples: + - lang: PHP + source: + $ref: ../code_samples/PHP/customers/get.php +post: + tags: + - Customers + summary: Create a customer (without an ID) + operationId: PostCustomer + description: Another markdown description here. + requestBody: + $ref: ../components/requestBodies/Customer.yaml + responses: + '201': + $ref: ../components/responses/Customer.yaml + '401': + $ref: ../components/responses/AccessForbidden.yaml + '409': + $ref: ../components/responses/Conflict.yaml + '422': + $ref: ../components/responses/InvalidDataError.yaml + x-code-samples: + - lang: PHP + source: + $ref: ../code_samples/PHP/customers/post.php +``` + +You'll see extensive usage of `$ref`s in this example to different types of components including schemas. + +You'll also notice `$ref`s to code samples. + +### Code samples + +1. Navigate to the `openapi/code_samples` folder. +2. Navigate to the `` (e.g. PHP) sub-folder. +3. Navigate to the `path` folder, and add ref to the code sample. + +You can add languages by adding new folders at the appropriate path level. + +More details inside the `code_samples` folder README. diff --git a/docs/favicon.png b/docs/favicon.png new file mode 100644 index 0000000..b5c1a2d Binary files /dev/null and b/docs/favicon.png differ diff --git a/docs/index.html b/docs/index.html new file mode 100644 index 0000000..e4b8502 --- /dev/null +++ b/docs/index.html @@ -0,0 +1,24 @@ + + + + API Reference | ReDoc + + + + + + + {{{redocHead}}} + + + {{{redocHTML}}} + + diff --git a/openapi/README.md b/openapi/README.md new file mode 100644 index 0000000..ae48cf0 --- /dev/null +++ b/openapi/README.md @@ -0,0 +1,13 @@ +## The `openapi` folder + +This folder contains your entrypoint `openapi.yaml`. + +That file contains references to the entire API definition. + +Here are some sections to pay attention to: + +* Top-level **description**: this accepts markdown, and Redoc and Redocly API Reference will render it at the top of the docs. Consider maintaining your markdown in a separate file and [embedding it](https://redoc.ly/docs/api-reference-docs/embedded-markdown/). Note to Redoc community edition users, the special tags are only available to the Redocly API Reference users, but you can still embed markdown. +* Security schemes: you will define the scheme(s) your API uses for security (eg OAuth2, API Key, etc...). The security schemes are used by the Redocly API Reference "Try It" API console feature. +* [Paths](paths/README.md): this defines each endpoint. A path can have one operation per http method. +* Tags: it's a good idea to organize each operation. Each tag can have a description. The description is used as a section description within the reference docs. +* Servers: a list of your servers, each with a URL. diff --git a/openapi/components/README.md b/openapi/components/README.md new file mode 100644 index 0000000..26eaeb5 --- /dev/null +++ b/openapi/components/README.md @@ -0,0 +1,14 @@ +Reusable components +=========== + +* You can create the following folders here: + - `schemas` - reusable [Schema Objects](https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md#schemaObject) + - `responses` - reusable [Response Objects](https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md#responseObject) + - `parameters` - reusable [Parameter Objects](https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md#parameterObject) + - `examples` - reusable [Example Objects](https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md#exampleObject) + - `headers` - reusable [Header Objects](https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md#headerObject) + - `requestBodies` - reusable [Request Body Objects](https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md#requestBodyObject) + - `links` - reusable [Link Objects](https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md#linkObject) + - `callbacks` - reusable [Callback Objects](https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md#callbackObject) + - `securitySchemes` - reusable [Security Scheme Objects](https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md#securitySchemeObject) +* Filename of files inside the folders represent component name, e.g. `Customer.yaml` diff --git a/openapi/components/schemas/ConnectCmd.yaml b/openapi/components/schemas/ConnectCmd.yaml new file mode 100644 index 0000000..19ce868 --- /dev/null +++ b/openapi/components/schemas/ConnectCmd.yaml @@ -0,0 +1,16 @@ +type: object +properties: + command: + type: string + enum: + - connect + port: + type: string + baudrate: + type: number + printerProfile: + type: string + save: + type: boolean + autoconnect: + type: boolean diff --git a/openapi/components/schemas/ConnectionInfo.yaml b/openapi/components/schemas/ConnectionInfo.yaml new file mode 100644 index 0000000..fc03d81 --- /dev/null +++ b/openapi/components/schemas/ConnectionInfo.yaml @@ -0,0 +1,15 @@ +type: object +properties: + current: + type: object + properties: + state: + type: string + port: + type: string + baudrate: + type: number + printerProfile: + type: string + options: + $ref: ./PrinterConnectionOptions.yaml diff --git a/openapi/components/schemas/CurrentUser.yaml b/openapi/components/schemas/CurrentUser.yaml new file mode 100644 index 0000000..a78bc02 --- /dev/null +++ b/openapi/components/schemas/CurrentUser.yaml @@ -0,0 +1,12 @@ +type: object +properties: + name: + type: string + groups: + type: array + items: + $ref: ./GroupRecord.yaml + permissions: + type: array + items: + $ref: ./PermissionRecord.yaml diff --git a/openapi/components/schemas/DisconnectCmd.yaml b/openapi/components/schemas/DisconnectCmd.yaml new file mode 100644 index 0000000..2e8f6e5 --- /dev/null +++ b/openapi/components/schemas/DisconnectCmd.yaml @@ -0,0 +1,6 @@ +type: object +properties: + command: + type: string + enum: + - disconnect diff --git a/openapi/components/schemas/FakeAckCmd.yaml b/openapi/components/schemas/FakeAckCmd.yaml new file mode 100644 index 0000000..01db0e9 --- /dev/null +++ b/openapi/components/schemas/FakeAckCmd.yaml @@ -0,0 +1,6 @@ +type: object +properties: + command: + type: string + enum: + - fake_ack diff --git a/openapi/components/schemas/GroupRecord.yaml b/openapi/components/schemas/GroupRecord.yaml new file mode 100644 index 0000000..9db26c8 --- /dev/null +++ b/openapi/components/schemas/GroupRecord.yaml @@ -0,0 +1,26 @@ +type: object +properties: + key: + type: string + name: + type: string + description: + type: string + permissions: + type: array + items: + $ref: ./PermissionRecord.yaml + subgroups: + type: array + items: + $ref: ./GroupRecord.yaml + needs: + $ref: ./Needs.yaml + default: + type: boolean + removable: + type: boolean + changeable: + type: boolean + toggleable: + type: boolean diff --git a/openapi/components/schemas/Login.yaml b/openapi/components/schemas/Login.yaml new file mode 100644 index 0000000..086c754 --- /dev/null +++ b/openapi/components/schemas/Login.yaml @@ -0,0 +1,6 @@ +type: object +properties: + user: + type: string + pass: + type: string diff --git a/openapi/components/schemas/LoginResponse.yaml b/openapi/components/schemas/LoginResponse.yaml new file mode 100644 index 0000000..445793f --- /dev/null +++ b/openapi/components/schemas/LoginResponse.yaml @@ -0,0 +1,6 @@ +type: object +properties: + session: + type: string + _is_external_client: + type: boolean diff --git a/openapi/components/schemas/Needs.yaml b/openapi/components/schemas/Needs.yaml new file mode 100644 index 0000000..4d8c83e --- /dev/null +++ b/openapi/components/schemas/Needs.yaml @@ -0,0 +1,10 @@ +type: object +properties: + role: + type: array + items: + type: string + group: + type: array + items: + type: string diff --git a/openapi/components/schemas/PassiveLogin.yaml b/openapi/components/schemas/PassiveLogin.yaml new file mode 100644 index 0000000..0bb995e --- /dev/null +++ b/openapi/components/schemas/PassiveLogin.yaml @@ -0,0 +1,6 @@ +type: object +properties: + passive: + type: boolean + remember: + type: boolean diff --git a/openapi/components/schemas/PermissionRecord.yaml b/openapi/components/schemas/PermissionRecord.yaml new file mode 100644 index 0000000..e57a9e8 --- /dev/null +++ b/openapi/components/schemas/PermissionRecord.yaml @@ -0,0 +1,16 @@ +type: object +properties: + key: + type: string + name: + type: string + dangerous: + type: boolean + default_groups: + type: array + items: + type: string + description: + type: string + needs: + $ref: ./Needs.yaml diff --git a/openapi/components/schemas/PrinterConnectionOptions.yaml b/openapi/components/schemas/PrinterConnectionOptions.yaml new file mode 100644 index 0000000..bb547e3 --- /dev/null +++ b/openapi/components/schemas/PrinterConnectionOptions.yaml @@ -0,0 +1,20 @@ +type: object +properties: + ports: + type: array + items: + type: string + baudrates: + type: array + items: + type: number + printerProfiles: + type: array + items: + $ref: ./PrinterProfile.yaml + baudratePreference: + type: number + printerProfilePreference: + type: string + autoconnect: + type: boolean diff --git a/openapi/components/schemas/PrinterProfile.yaml b/openapi/components/schemas/PrinterProfile.yaml new file mode 100644 index 0000000..bd18221 --- /dev/null +++ b/openapi/components/schemas/PrinterProfile.yaml @@ -0,0 +1,6 @@ +type: object +properties: + name: + type: string + id: + type: string diff --git a/openapi/components/schemas/ToolInfo.yaml b/openapi/components/schemas/ToolInfo.yaml new file mode 100644 index 0000000..91bf309 --- /dev/null +++ b/openapi/components/schemas/ToolInfo.yaml @@ -0,0 +1 @@ +type: object diff --git a/openapi/components/schemas/UserRecord.yaml b/openapi/components/schemas/UserRecord.yaml new file mode 100644 index 0000000..22a0b83 --- /dev/null +++ b/openapi/components/schemas/UserRecord.yaml @@ -0,0 +1,24 @@ +type: object +properties: + name: + type: string + active: + type: boolean + user: + type: boolean + admin: + type: boolean + apiKey: + type: string + settings: + type: object + groups: + type: array + items: + $ref: ./GroupRecord.yaml + permissions: + type: array + items: + $ref: ./PermissionRecord.yaml + needs: + $ref: ./Needs.yaml diff --git a/openapi/openapi.yaml b/openapi/openapi.yaml new file mode 100644 index 0000000..1a511bf --- /dev/null +++ b/openapi/openapi.yaml @@ -0,0 +1,21 @@ +openapi: 3.0.2 +info: + title: OctoPrint + version: '1.0' +servers: + - url: 'http://192.168.178.66:5000/api' +paths: + /login: + $ref: paths/login.yaml + /logout: + $ref: paths/logout.yaml + /currentuser: + $ref: paths/currentuser.yaml + /version: + $ref: paths/version.yaml + /connection: + $ref: paths/connection.yaml + /printer: + $ref: paths/printer.yaml + /printer/tool: + $ref: paths/printer@tool.yaml diff --git a/openapi/paths/README.md b/openapi/paths/README.md new file mode 100644 index 0000000..0449659 --- /dev/null +++ b/openapi/paths/README.md @@ -0,0 +1,105 @@ +Paths +===== + +Organize your path definitions within this folder. You will reference your paths from your main `openapi.yaml` entrypoint file. + +It may help you to adopt some conventions: + +* path separator token (e.g. `@`) or subfolders +* path parameter (e.g. `{example}`) +* file-per-path or file-per-operation + +There are different benefits and drawbacks to each decision. + +You can adopt any organization you wish. We have some tips for organizing paths based on common practices. + +## Each path in a separate file + +Use a predefined "path separator" and keep all of your path files in the top level of the `paths` folder. + +``` +# todo: insert tree view of paths folder +``` + +Redocly recommends using the `@` character for this case. + +In addition, Redocly recommends placing path parameters within `{}` curly braces if you adopt this style. + +#### Motivations + +* Quickly see a list of all paths. Many people think in terms of the "number" of "endpoints" (paths), and not the "number" of "operations" (paths * http methods). + +* Only the "file-per-path" option is semantically correct with the OpenAPI Specification 3.0.2. However, Redocly's openapi-cli will build valid bundles for any of the other options too. + + +#### Drawbacks + +* This may require multiple definitions per http method within a single file. +* It requires settling on a path separator (that is allowed to be used in filenames) and sticking to that convention. + +## Each operation in a separate file + +You may also place each operation in a separate file. + +In this case, if you want all paths at the top-level, you can concatenate the http method to the path name. Similar to the above option, you can + +### Files at top-level of `paths` + +You may name your files with some concatenation for the http method. For example, following a convention such as: `-.yaml`. + +#### Motivations + +* Quickly see all operations without needing to navigate subfolders. + +#### Drawbacks + +* Adopting an unusual path separator convention, instead of using subfolders. + +### Use subfolders to mirror API path structure + +Example: +``` +GET /customers + +/paths/customers/get.yaml +``` + +In this case, the path id defined within subfolders which mirror the API URL structure. + +Example with path parameter: +``` +GET /customers/{id} + +/paths/customers/{id}/get.yaml +``` + +#### Motivations + +It matches the URL structure. + +It is pretty easy to reference: + +```yaml +paths: + '/customers/{id}': + get: + $ref: ./paths/customers/{id}/get.yaml + put: + $ref: ./paths/customers/{id}/put.yaml +``` + +#### Drawbacks + +If you have a lot of nested folders, it may be confusing to reference your schemas. + +Example +``` +file: /paths/customers/{id}/timeline/{messageId}/get.yaml + +# excerpt of file + headers: + Rate-Limit-Remaining: + $ref: ../../../../../components/headers/Rate-Limit-Remaining.yaml + +``` +Notice the `../../../../../` in the ref which requires some attention to formulate correctly. While openapi-cli has a linter which suggests possible refs when there is a mistake, this is still a net drawback for APIs with deep paths. diff --git a/openapi/paths/connection.yaml b/openapi/paths/connection.yaml new file mode 100644 index 0000000..34fd39f --- /dev/null +++ b/openapi/paths/connection.yaml @@ -0,0 +1,30 @@ +get: + responses: + '200': + description: >- + Retrieve the current connection settings, including information + regarding the available baudrates and serial ports and the current + connection state. + content: + application/json: + schema: + $ref: ../components/schemas/ConnectionInfo.yaml +post: + requestBody: + required: true + content: + application/json: + schema: + oneOf: + - $ref: ../components/schemas/ConnectCmd.yaml + - $ref: ../components/schemas/DisconnectCmd.yaml + - $ref: ../components/schemas/FakeAckCmd.yaml + discriminator: + propertyName: command + responses: + '204': + description: success + '400': + description: >- + If the selected port or baudrate for a connect command are not part of + the available options. diff --git a/openapi/paths/currentuser.yaml b/openapi/paths/currentuser.yaml new file mode 100644 index 0000000..b70720f --- /dev/null +++ b/openapi/paths/currentuser.yaml @@ -0,0 +1,9 @@ +description: Retrieves information about the current user. +get: + responses: + '200': + description: Current user object + content: + application/json: + schema: + $ref: ../components/schemas/CurrentUser.yaml diff --git a/openapi/paths/login.yaml b/openapi/paths/login.yaml new file mode 100644 index 0000000..def983c --- /dev/null +++ b/openapi/paths/login.yaml @@ -0,0 +1,18 @@ +post: + requestBody: + required: true + content: + application/json: + schema: + oneOf: + - $ref: ../components/schemas/Login.yaml + - $ref: ../components/schemas/PassiveLogin.yaml + responses: + '200': + description: Successful login + content: + application/json: + schema: + $ref: ../components/schemas/LoginResponse.yaml + '403': + description: 'Username/password mismatch, unknown user or deactivated account' diff --git a/openapi/paths/logout.yaml b/openapi/paths/logout.yaml new file mode 100644 index 0000000..6822c66 --- /dev/null +++ b/openapi/paths/logout.yaml @@ -0,0 +1,5 @@ +description: Ends the current login session of the current user. +post: + responses: + '204': + description: User logged out diff --git a/openapi/paths/printer.yaml b/openapi/paths/printer.yaml new file mode 100644 index 0000000..1023917 --- /dev/null +++ b/openapi/paths/printer.yaml @@ -0,0 +1,4 @@ +get: + responses: + '200': + description: Retrieves the current state of the printer. diff --git a/openapi/paths/printer@tool.yaml b/openapi/paths/printer@tool.yaml new file mode 100644 index 0000000..b5d0308 --- /dev/null +++ b/openapi/paths/printer@tool.yaml @@ -0,0 +1,8 @@ +get: + 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. + responses: + '200': + description: Current tool state diff --git a/openapi/paths/version.yaml b/openapi/paths/version.yaml new file mode 100644 index 0000000..890d830 --- /dev/null +++ b/openapi/paths/version.yaml @@ -0,0 +1,20 @@ +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). +get: + responses: + '200': + description: OctoPrint server version + content: + application/json: + schema: + type: object + properties: + api: + type: string + server: + type: string + text: + type: string diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..f608f02 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,683 @@ +{ + "name": "octoprint", + "version": "1.0.0", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "@redocly/ajv": { + "version": "6.12.4", + "resolved": "https://registry.npmjs.org/@redocly/ajv/-/ajv-6.12.4.tgz", + "integrity": "sha512-RB6vWO78v6c+SW/3bZh+XZMr4nGdJKAiPGsBALuUZnLuCiQ7aXCT1AuFHqnfS2gyXbEUEj+kw8p4ux8KdAfs3A==", + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "@redocly/openapi-cli": { + "version": "1.0.0-beta.18", + "resolved": "https://registry.npmjs.org/@redocly/openapi-cli/-/openapi-cli-1.0.0-beta.18.tgz", + "integrity": "sha512-bjxyn5wDIa6LhiyniDcPUt3s+AHY8EDPrT0t/mYU89CBRLQRD/bhT4si2JlidwJv5doM4W6rZot0gg6wq5rTXw==", + "requires": { + "@redocly/ajv": "^6.12.3", + "@types/node": "^14.0.13", + "chokidar": "^3.4.0", + "colorette": "^1.2.0", + "glob": "^7.1.6", + "glob-promise": "^3.4.0", + "handlebars": "^4.7.6", + "js-levenshtein": "^1.1.6", + "js-yaml": "^3.14.0", + "lodash.isequal": "^4.5.0", + "minimatch": "^3.0.4", + "node-fetch": "^2.6.1", + "portfinder": "^1.0.26", + "readline": "^1.3.0", + "simple-websocket": "^9.0.0", + "typescript": "^3.9.5", + "yaml-ast-parser": "0.0.43", + "yargs": "^15.3.1" + } + }, + "@types/glob": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.1.3.tgz", + "integrity": "sha512-SEYeGAIQIQX8NN6LDKprLjbrd5dARM5EXsd8GI/A5l0apYI1fGMWgPHSe4ZKL4eozlAyI+doUE9XbYS4xCkQ1w==", + "requires": { + "@types/minimatch": "*", + "@types/node": "*" + } + }, + "@types/minimatch": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.3.tgz", + "integrity": "sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA==" + }, + "@types/node": { + "version": "14.14.2", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.14.2.tgz", + "integrity": "sha512-jeYJU2kl7hL9U5xuI/BhKPZ4vqGM/OmK6whiFAXVhlstzZhVamWhDSmHyGLIp+RVyuF9/d0dqr2P85aFj4BvJg==" + }, + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==" + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "requires": { + "color-convert": "^2.0.1" + } + }, + "anymatch": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz", + "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==", + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + } + }, + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "requires": { + "sprintf-js": "~1.0.2" + } + }, + "async": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", + "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", + "requires": { + "lodash": "^4.17.14" + } + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" + }, + "binary-extensions": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.1.0.tgz", + "integrity": "sha512-1Yj8h9Q+QDF5FzhMs/c9+6UntbD5MkRfRwac8DoEm9ZfUBZ7tZ55YcGVAzEe4bXsdQHEk+s9S5wsOKVdZrw0tQ==" + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "requires": { + "fill-range": "^7.0.1" + } + }, + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==" + }, + "chokidar": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.4.3.tgz", + "integrity": "sha512-DtM3g7juCXQxFVSNPNByEC2+NImtBuxQQvWlHunpJIS5Ocr0lG306cC7FCi7cEA0fzmybPUIl4txBIobk1gGOQ==", + "requires": { + "anymatch": "~3.1.1", + "braces": "~3.0.2", + "fsevents": "~2.1.2", + "glob-parent": "~5.1.0", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.5.0" + } + }, + "cliui": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", + "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^6.2.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "colorette": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.2.1.tgz", + "integrity": "sha512-puCDz0CzydiSYOrnXpz/PKd69zRrribezjtE9yd4zvytoRc8+RY/KJPvtPFKZS3E3wP6neGyMe0vOTlHO5L3Pw==" + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + }, + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "requires": { + "ms": "^2.1.1" + } + }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=" + }, + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + }, + "esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" + }, + "fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" + }, + "fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" + }, + "fsevents": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.3.tgz", + "integrity": "sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ==", + "optional": true + }, + "get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==" + }, + "glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "glob-parent": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.1.tgz", + "integrity": "sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==", + "requires": { + "is-glob": "^4.0.1" + } + }, + "glob-promise": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/glob-promise/-/glob-promise-3.4.0.tgz", + "integrity": "sha512-q08RJ6O+eJn+dVanerAndJwIcumgbDdYiUT7zFQl3Wm1xD6fBKtah7H8ZJChj4wP+8C+QfeVy8xautR7rdmKEw==", + "requires": { + "@types/glob": "*" + } + }, + "handlebars": { + "version": "4.7.6", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.6.tgz", + "integrity": "sha512-1f2BACcBfiwAfStCKZNrUCgqNZkGsAT7UM3kkYtXuLo0KnaVfjKOyf7PRzB6++aK9STyT1Pd2ZCPe3EGOXleXA==", + "requires": { + "minimist": "^1.2.5", + "neo-async": "^2.6.0", + "source-map": "^0.6.1", + "uglify-js": "^3.1.4", + "wordwrap": "^1.0.0" + } + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "requires": { + "binary-extensions": "^2.0.0" + } + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=" + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" + }, + "is-glob": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", + "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==" + }, + "js-levenshtein": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/js-levenshtein/-/js-levenshtein-1.1.6.tgz", + "integrity": "sha512-X2BB11YZtrRqY4EnQcLX5Rh373zbK4alC1FW7D7MBhL2gtcC17cTnr6DmfHZeS0s2rTHjUTMMHfG7gO8SSdw+g==" + }, + "js-yaml": { + "version": "3.14.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.0.tgz", + "integrity": "sha512-/4IbIeHcD9VMHFqDR/gQ7EdZdLimOvW2DdcxFjdyyZ9NsbS+ccrXqVWDtab/lRl5AlUqmpBx8EhPaWR+OtY17A==", + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "requires": { + "p-locate": "^4.1.0" + } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==" + }, + "lodash.isequal": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz", + "integrity": "sha1-QVxEePK8wwEgwizhDtMib30+GOA=" + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" + }, + "mkdirp": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "requires": { + "minimist": "^1.2.5" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==" + }, + "node-fetch": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz", + "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==" + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==" + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "requires": { + "wrappy": "1" + } + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "requires": { + "p-limit": "^2.2.0" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==" + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==" + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" + }, + "picomatch": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", + "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==" + }, + "portfinder": { + "version": "1.0.28", + "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.28.tgz", + "integrity": "sha512-Se+2isanIcEqf2XMHjyUKskczxbPH7dQnlMjXX6+dybayyHvAf/TCgyMRlzf/B6QDhAEFOGes0pzRo3by4AbMA==", + "requires": { + "async": "^2.6.2", + "debug": "^3.1.1", + "mkdirp": "^0.5.5" + } + }, + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" + }, + "queue-microtask": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.1.4.tgz", + "integrity": "sha512-eY/4Obve9cE5FK8YvC1cJsm5cr7XvAurul8UtBDJ2PR1p5NmAwHtvAt5ftcLtwYRCUKNhxCneZZlxmUDFoSeKA==" + }, + "randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "requires": { + "safe-buffer": "^5.1.0" + } + }, + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "readdirp": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.5.0.tgz", + "integrity": "sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ==", + "requires": { + "picomatch": "^2.2.1" + } + }, + "readline": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/readline/-/readline-1.3.0.tgz", + "integrity": "sha1-xYDXfvLPyHUrEySYBg3JeTp6wBw=" + }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=" + }, + "require-main-filename": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==" + }, + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" + }, + "set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" + }, + "simple-websocket": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/simple-websocket/-/simple-websocket-9.0.0.tgz", + "integrity": "sha512-Q+u1BJ06/FR30xS1Sf6zDuL+vAdAA7VFqZ0TdKpmQKB2uNTAPKWQFFhUDV4YD7TDi7gSRJXoxv21WprNPR0ykQ==", + "requires": { + "debug": "^4.1.1", + "queue-microtask": "^1.1.0", + "randombytes": "^2.0.3", + "readable-stream": "^3.1.1", + "ws": "^7.0.0" + }, + "dependencies": { + "debug": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.2.0.tgz", + "integrity": "sha512-IX2ncY78vDTjZMFUdmsvIRFY2Cf4FnD0wRs+nQwJU8Lu99/tPFdb0VybiiMTPe3I6rQmwsqQqRBvxU+bZ/I8sg==", + "requires": { + "ms": "2.1.2" + } + } + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + }, + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" + }, + "string-width": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", + "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + } + }, + "string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "requires": { + "safe-buffer": "~5.2.0" + } + }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "requires": { + "ansi-regex": "^5.0.0" + } + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "requires": { + "is-number": "^7.0.0" + } + }, + "typescript": { + "version": "3.9.7", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.9.7.tgz", + "integrity": "sha512-BLbiRkiBzAwsjut4x/dsibSTB6yWpwT5qWmC2OfuCg3GgVQCSgMs4vEctYPhsaGtd0AeuuHMkjZ2h2WG8MSzRw==" + }, + "uglify-js": { + "version": "3.11.3", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.11.3.tgz", + "integrity": "sha512-wDRziHG94mNj2n3R864CvYw/+pc9y/RNImiTyrrf8BzgWn75JgFSwYvXrtZQMnMnOp/4UTrf3iCSQxSStPiByA==", + "optional": true + }, + "uri-js": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.0.tgz", + "integrity": "sha512-B0yRTzYdUCCn9n+F4+Gh4yIDtMQcaJsmYBDsTSG8g/OejKBodLQ2IHfN3bM7jUsRXndopT7OIXWdYqc1fjmV6g==", + "requires": { + "punycode": "^2.1.0" + } + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" + }, + "which-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=" + }, + "wordwrap": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=" + }, + "wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + }, + "ws": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.3.1.tgz", + "integrity": "sha512-D3RuNkynyHmEJIpD2qrgVkc9DQ23OrN/moAwZX4L8DfvszsJxpjQuUq3LMx6HoYji9fbIOBY18XWBsAux1ZZUA==" + }, + "y18n": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", + "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==" + }, + "yaml-ast-parser": { + "version": "0.0.43", + "resolved": "https://registry.npmjs.org/yaml-ast-parser/-/yaml-ast-parser-0.0.43.tgz", + "integrity": "sha512-2PTINUwsRqSd+s8XxKaJWQlUuEMHJQyEuh2edBbW8KNJz0SJPwUSD2zRWqezFEdN7IzAgeuYHFUCF7o8zRdZ0A==" + }, + "yargs": { + "version": "15.4.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", + "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", + "requires": { + "cliui": "^6.0.0", + "decamelize": "^1.2.0", + "find-up": "^4.1.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^4.2.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^18.1.2" + } + }, + "yargs-parser": { + "version": "18.1.3", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", + "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..043d0b3 --- /dev/null +++ b/package.json @@ -0,0 +1,13 @@ +{ + "name": "octoprint", + "version": "1.0.0", + "dependencies": { + "@redocly/openapi-cli": "^1.0.0-beta.18" + }, + "private": true, + "scripts": { + "start": "openapi preview-docs", + "build": "openapi bundle -o dist", + "test": "openapi lint" + } +}