2024-07-30 19:57:57 -07:00
|
|
|
{
|
|
|
|
|
"components": {
|
|
|
|
|
"responses": {
|
|
|
|
|
"Error": {
|
|
|
|
|
"content": {
|
|
|
|
|
"application/json": {
|
|
|
|
|
"schema": {
|
|
|
|
|
"$ref": "#/components/schemas/Error"
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
"description": "Error"
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
"schemas": {
|
|
|
|
|
"Error": {
|
|
|
|
|
"description": "Error information from a response.",
|
|
|
|
|
"properties": {
|
|
|
|
|
"error_code": {
|
|
|
|
|
"type": "string"
|
|
|
|
|
},
|
|
|
|
|
"message": {
|
|
|
|
|
"type": "string"
|
|
|
|
|
},
|
|
|
|
|
"request_id": {
|
|
|
|
|
"type": "string"
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
"required": [
|
|
|
|
|
"message",
|
|
|
|
|
"request_id"
|
|
|
|
|
],
|
|
|
|
|
"type": "object"
|
|
|
|
|
},
|
|
|
|
|
"Machine": {
|
|
|
|
|
"description": "Details for a 3d printer connected over USB.",
|
|
|
|
|
"oneOf": [
|
|
|
|
|
{
|
|
|
|
|
"description": "Details for a 3d printer connected over USB.",
|
|
|
|
|
"properties": {
|
|
|
|
|
"id": {
|
|
|
|
|
"type": "string"
|
|
|
|
|
},
|
|
|
|
|
"manufacturer": {
|
|
|
|
|
"type": "string"
|
|
|
|
|
},
|
|
|
|
|
"model": {
|
|
|
|
|
"type": "string"
|
|
|
|
|
},
|
|
|
|
|
"port": {
|
|
|
|
|
"type": "string"
|
|
|
|
|
},
|
|
|
|
|
"type": {
|
|
|
|
|
"enum": [
|
|
|
|
|
"UsbPrinter"
|
|
|
|
|
],
|
|
|
|
|
"type": "string"
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
"required": [
|
|
|
|
|
"id",
|
|
|
|
|
"manufacturer",
|
|
|
|
|
"model",
|
|
|
|
|
"port",
|
|
|
|
|
"type"
|
|
|
|
|
],
|
|
|
|
|
"type": "object"
|
|
|
|
|
},
|
|
|
|
|
{
|
2024-08-01 14:49:01 -07:00
|
|
|
"description": "Details for a 3d printer connected over network.",
|
2024-07-30 19:57:57 -07:00
|
|
|
"properties": {
|
|
|
|
|
"hostname": {
|
|
|
|
|
"description": "The hostname of the printer.",
|
|
|
|
|
"nullable": true,
|
|
|
|
|
"type": "string"
|
|
|
|
|
},
|
|
|
|
|
"ip": {
|
|
|
|
|
"description": "The IP address of the printer.",
|
|
|
|
|
"format": "ip",
|
|
|
|
|
"type": "string"
|
|
|
|
|
},
|
|
|
|
|
"manufacturer": {
|
|
|
|
|
"allOf": [
|
|
|
|
|
{
|
|
|
|
|
"$ref": "#/components/schemas/NetworkPrinterManufacturer"
|
|
|
|
|
}
|
|
|
|
|
],
|
|
|
|
|
"description": "The manufacturer of the printer."
|
|
|
|
|
},
|
|
|
|
|
"model": {
|
|
|
|
|
"description": "The model of the printer.",
|
|
|
|
|
"nullable": true,
|
|
|
|
|
"type": "string"
|
|
|
|
|
},
|
|
|
|
|
"port": {
|
|
|
|
|
"description": "The port of the printer.",
|
|
|
|
|
"format": "uint16",
|
|
|
|
|
"minimum": 0,
|
|
|
|
|
"nullable": true,
|
|
|
|
|
"type": "integer"
|
|
|
|
|
},
|
2024-07-31 11:19:36 -07:00
|
|
|
"serial": {
|
|
|
|
|
"description": "The serial number of the printer.",
|
|
|
|
|
"nullable": true,
|
|
|
|
|
"type": "string"
|
|
|
|
|
},
|
2024-07-30 19:57:57 -07:00
|
|
|
"type": {
|
|
|
|
|
"enum": [
|
|
|
|
|
"NetworkPrinter"
|
|
|
|
|
],
|
|
|
|
|
"type": "string"
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
"required": [
|
|
|
|
|
"ip",
|
|
|
|
|
"manufacturer",
|
|
|
|
|
"type"
|
|
|
|
|
],
|
|
|
|
|
"type": "object"
|
|
|
|
|
}
|
|
|
|
|
]
|
|
|
|
|
},
|
|
|
|
|
"NetworkPrinterManufacturer": {
|
|
|
|
|
"description": "Network printer manufacturer.",
|
|
|
|
|
"oneOf": [
|
|
|
|
|
{
|
|
|
|
|
"description": "Bambu.",
|
|
|
|
|
"enum": [
|
|
|
|
|
"Bambu"
|
|
|
|
|
],
|
|
|
|
|
"type": "string"
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"description": "Formlabs.",
|
|
|
|
|
"enum": [
|
|
|
|
|
"Formlabs"
|
|
|
|
|
],
|
|
|
|
|
"type": "string"
|
|
|
|
|
}
|
|
|
|
|
]
|
|
|
|
|
},
|
|
|
|
|
"Pong": {
|
|
|
|
|
"description": "The response from the `/ping` endpoint.",
|
|
|
|
|
"properties": {
|
|
|
|
|
"message": {
|
|
|
|
|
"description": "The pong response.",
|
|
|
|
|
"type": "string"
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
"required": [
|
|
|
|
|
"message"
|
|
|
|
|
],
|
|
|
|
|
"type": "object"
|
|
|
|
|
},
|
|
|
|
|
"PrintJobResponse": {
|
|
|
|
|
"description": "The response from the `/print` endpoint.",
|
|
|
|
|
"properties": {
|
|
|
|
|
"job_id": {
|
|
|
|
|
"description": "The job id used for this print.",
|
|
|
|
|
"type": "string"
|
|
|
|
|
},
|
|
|
|
|
"parameters": {
|
|
|
|
|
"allOf": [
|
|
|
|
|
{
|
|
|
|
|
"$ref": "#/components/schemas/PrintParameters"
|
|
|
|
|
}
|
|
|
|
|
],
|
|
|
|
|
"description": "The parameters used for this print."
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
"required": [
|
|
|
|
|
"job_id",
|
|
|
|
|
"parameters"
|
|
|
|
|
],
|
|
|
|
|
"type": "object"
|
|
|
|
|
},
|
|
|
|
|
"PrintParameters": {
|
|
|
|
|
"description": "Parameters for printing.",
|
|
|
|
|
"properties": {
|
|
|
|
|
"machine_id": {
|
|
|
|
|
"type": "string"
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
"required": [
|
|
|
|
|
"machine_id"
|
|
|
|
|
],
|
|
|
|
|
"type": "object"
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
"info": {
|
|
|
|
|
"contact": {
|
|
|
|
|
"email": "machine-api@zoo.dev",
|
|
|
|
|
"url": "https://zoo.dev"
|
|
|
|
|
},
|
|
|
|
|
"description": "",
|
|
|
|
|
"title": "machine-api",
|
|
|
|
|
"version": "0.1.0"
|
|
|
|
|
},
|
|
|
|
|
"openapi": "3.0.3",
|
|
|
|
|
"paths": {
|
|
|
|
|
"/": {
|
|
|
|
|
"get": {
|
|
|
|
|
"operationId": "api_get_schema",
|
|
|
|
|
"responses": {
|
|
|
|
|
"200": {
|
|
|
|
|
"content": {
|
|
|
|
|
"application/json": {
|
|
|
|
|
"schema": {}
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
"description": "successful operation"
|
|
|
|
|
},
|
|
|
|
|
"4XX": {
|
|
|
|
|
"$ref": "#/components/responses/Error"
|
|
|
|
|
},
|
|
|
|
|
"5XX": {
|
|
|
|
|
"$ref": "#/components/responses/Error"
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
"summary": "Return the OpenAPI schema in JSON format.",
|
|
|
|
|
"tags": [
|
|
|
|
|
"meta"
|
|
|
|
|
]
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
"/machines": {
|
|
|
|
|
"get": {
|
|
|
|
|
"operationId": "get_machines",
|
|
|
|
|
"responses": {
|
|
|
|
|
"200": {
|
|
|
|
|
"content": {
|
|
|
|
|
"application/json": {
|
|
|
|
|
"schema": {
|
|
|
|
|
"additionalProperties": {
|
|
|
|
|
"$ref": "#/components/schemas/Machine"
|
|
|
|
|
},
|
|
|
|
|
"title": "Map_of_Machine",
|
|
|
|
|
"type": "object"
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
"description": "successful operation"
|
|
|
|
|
},
|
|
|
|
|
"4XX": {
|
|
|
|
|
"$ref": "#/components/responses/Error"
|
|
|
|
|
},
|
|
|
|
|
"5XX": {
|
|
|
|
|
"$ref": "#/components/responses/Error"
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
"summary": "List available machines and their statuses",
|
|
|
|
|
"tags": [
|
|
|
|
|
"print"
|
|
|
|
|
]
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
"/ping": {
|
|
|
|
|
"get": {
|
|
|
|
|
"operationId": "ping",
|
|
|
|
|
"responses": {
|
|
|
|
|
"200": {
|
|
|
|
|
"content": {
|
|
|
|
|
"application/json": {
|
|
|
|
|
"schema": {
|
|
|
|
|
"$ref": "#/components/schemas/Pong"
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
"description": "successful operation"
|
|
|
|
|
},
|
|
|
|
|
"4XX": {
|
|
|
|
|
"$ref": "#/components/responses/Error"
|
|
|
|
|
},
|
|
|
|
|
"5XX": {
|
|
|
|
|
"$ref": "#/components/responses/Error"
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
"summary": "Return pong.",
|
|
|
|
|
"tags": [
|
|
|
|
|
"meta"
|
|
|
|
|
]
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
"/print": {
|
|
|
|
|
"post": {
|
|
|
|
|
"operationId": "print_file",
|
|
|
|
|
"requestBody": {
|
|
|
|
|
"content": {
|
|
|
|
|
"multipart/form-data": {
|
|
|
|
|
"schema": {
|
|
|
|
|
"format": "binary",
|
|
|
|
|
"type": "string"
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
"required": true
|
|
|
|
|
},
|
|
|
|
|
"responses": {
|
|
|
|
|
"200": {
|
|
|
|
|
"content": {
|
|
|
|
|
"application/json": {
|
|
|
|
|
"schema": {
|
|
|
|
|
"$ref": "#/components/schemas/PrintJobResponse"
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
"description": "successful operation"
|
|
|
|
|
},
|
|
|
|
|
"4XX": {
|
|
|
|
|
"$ref": "#/components/responses/Error"
|
|
|
|
|
},
|
|
|
|
|
"5XX": {
|
|
|
|
|
"$ref": "#/components/responses/Error"
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
"summary": "Print a given file. File must be a sliceable 3D model.",
|
|
|
|
|
"tags": [
|
|
|
|
|
"print"
|
|
|
|
|
]
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
"tags": [
|
|
|
|
|
{
|
|
|
|
|
"description": "Meta information about the API.",
|
|
|
|
|
"externalDocs": {
|
|
|
|
|
"url": "https://docs.zoo.dev/api/meta"
|
|
|
|
|
},
|
|
|
|
|
"name": "meta"
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"description": "Utilities for printing and discovering printers.",
|
|
|
|
|
"externalDocs": {
|
|
|
|
|
"url": "https://docs.zoo.dev/api/print"
|
|
|
|
|
},
|
|
|
|
|
"name": "print"
|
|
|
|
|
}
|
|
|
|
|
]
|
|
|
|
|
}
|