{
  "openapi": "3.1.0",
  "servers": [
    {
      "url": "https://api.printago.io",
      "description": "Prod"
    }
  ],
  "info": {
    "version": "0.0.1",
    "title": "@printago/api",
    "description": "",
    "license": {
      "name": "UNLICENSED"
    }
  },
  "paths": {
    "/v1/ai-detection/alerts": {
      "get": {
        "summary": "List AI failure alerts",
        "tags": [
          "Printers"
        ],
        "parameters": [
          {
            "name": "printerId",
            "in": "query",
            "schema": {
              "type": "string",
              "pattern": "^[a-z0-9]{24}$"
            },
            "required": false,
            "title": "Only alerts for this printer",
            "description": "Only alerts for this printer."
          },
          {
            "name": "printJobId",
            "in": "query",
            "schema": {
              "type": "string",
              "pattern": "^[a-z0-9]{24}$"
            },
            "required": false,
            "title": "Only alerts for this print job",
            "description": "Only alerts for this print job."
          },
          {
            "name": "limit",
            "in": "query",
            "schema": {
              "type": "number"
            },
            "required": false,
            "title": "Max alerts to return; defaults to 20, capped at 100",
            "description": "Max alerts to return; defaults to 20, capped at 100."
          }
        ],
        "responses": {
          "200": {
            "description": "Alerts newest first, with signed evidence frame URLs and any feedback",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/AiDetectionAlert"
                  }
                }
              }
            }
          }
        },
        "x-permission": "printer.view"
      }
    },
    "/v1/ai-detection/alerts/{eventId}/feedback": {
      "put": {
        "summary": "Submit or change feedback on an AI failure alert",
        "tags": [
          "Printers"
        ],
        "parameters": [
          {
            "name": "eventId",
            "in": "path",
            "schema": {
              "type": "string",
              "pattern": "^[a-z0-9]{24}$"
            },
            "required": true,
            "description": " Alert (printer event) id"
          }
        ],
        "requestBody": {
          "description": "Whether the alert was a real failure, with optional detail",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AiDetectionFeedbackRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "The stored feedback and the store's running feedback count",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AiDetectionFeedbackResponse"
                }
              }
            }
          }
        },
        "x-permission": "printer.view"
      }
    },
    "/v1/parts": {
      "get": {
        "summary": "Get all parts",
        "description": "List all parts in your store",
        "tags": [
          "Parts"
        ],
        "parameters": [
          {
            "name": "name",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "type",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "description",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "fileUris",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "fileHashes",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "thumbnailUri",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "parameters",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "printTags",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "overriddenProcessProfileId",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "folderId",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "materials",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "slicerOverride",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "metadata",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "slicingEstimate",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "use3MFProcessProfile",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false,
            "description": "Slice this part with the process profile embedded in its 3MF rather than\nthe matched printer's. Omit it when creating a 3MF part and it is turned\non for you, unless you also send an `overriddenProcessProfileId`; send\n`false` to slice with the printer's profile instead. Ignored for every\nother part type."
          },
          {
            "name": "arrangeable",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "userTags",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "gcodePlateUris",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "meshUri",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false,
            "title": "Tessellated mesh derived from a boundary-representation source (STEP)",
            "description": "Tessellated mesh derived from a boundary-representation source (STEP).\nThe slicer CLI only reads meshes, so this — not `fileUris[0]` — is what\nthe print and estimation paths feed it."
          },
          {
            "name": "meshSourceHash",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false,
            "description": "`fileHashes[0]` of the source the mesh state describes — the file\n`meshUri` was tessellated from, or the one `meshError` failed on."
          },
          {
            "name": "meshError",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false,
            "description": "Why tessellating this source failed. Set with `meshUri` cleared, so a\nfile that cannot be meshed is stated once instead of re-converting on\nevery print forever. Replacing the source moves `fileHashes[0]` off this\nhash, which retires the error without anything having to clear it."
          },
          {
            "name": "uploadedAt",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "customMetadata",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "source",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false,
            "description": "Which integration created this part. Set only by the cloud-storage\nproviders today; null on every other creation path (upload, API, OpenSCAD,\n…) rather than carrying a synthetic \"manual\" value, so existing parts need\nno backfill. Not user-editable — it records what happened, not a preference."
          },
          {
            "name": "processingStatus",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false,
            "description": "Where the file's ingest (metadata extraction, thumbnails, plate split,\nestimation) stands. `null` means ready — parts that predate the ingest\nworkflow are healthy without backfill. System-set, not user-editable."
          },
          {
            "name": "processing",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false,
            "title": "Per-stage ingest progress and, on failure, which stage stopped and why",
            "description": "Per-stage ingest progress and, on failure, which stage stopped and why."
          },
          {
            "name": "id",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "storeId",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "createdAt",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "updatedAt",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false,
            "title": "Sort"
          },
          {
            "name": "limit",
            "in": "query",
            "schema": {
              "type": "number",
              "minimum": 1,
              "maximum": 1000
            },
            "required": false,
            "title": "Limit"
          },
          {
            "name": "offset",
            "in": "query",
            "schema": {
              "type": "number",
              "minimum": 0
            },
            "required": false,
            "title": "Offset"
          },
          {
            "name": "fields",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false,
            "title": "Fields"
          },
          {
            "name": "include",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false,
            "title": "Include"
          },
          {
            "name": "meta",
            "in": "query",
            "schema": {
              "type": "boolean"
            },
            "required": false,
            "title": "Meta"
          },
          {
            "name": "hints",
            "in": "query",
            "schema": {
              "type": "boolean"
            },
            "required": false,
            "title": "Hints"
          }
        ],
        "responses": {
          "200": {
            "description": "List of all parts with their file info and metadata",
            "content": {
              "application/json": {
                "schema": {
                  "oneOf": [
                    {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/Part"
                      }
                    },
                    {
                      "$ref": "#/components/schemas/SearchResponse"
                    }
                  ]
                }
              }
            }
          }
        },
        "x-permission": "part.view"
      },
      "post": {
        "summary": "Create a new part",
        "description": "Upload a new 3D model file. Supports STL, 3MF, STEP, GCODE, and OpenSCAD formats.\nAfter upload, metadata is automatically extracted from the file.\n\nBy default the response waits for file processing (metadata, plates,\nthumbnails) to finish, so the returned part is ready to use. Pass\n`?async=true` to return immediately with `processingStatus:\n\"processing\"` and poll the part until the status clears.",
        "tags": [
          "Parts"
        ],
        "parameters": [
          {
            "name": "async",
            "in": "query",
            "schema": {
              "type": "boolean"
            },
            "required": false,
            "description": "When true, the response returns as soon as file processing is\nsubmitted, with `processingStatus: \"processing\"`; poll the part until\nthe status clears. When false or omitted, the response waits for\nprocessing to finish (bounded — a part still processing after the wait\nis returned as-is, to be polled)."
          }
        ],
        "requestBody": {
          "description": "Part data including file URIs and optional material assignments",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PartInsertWithMaterials"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "The created part",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Part"
                }
              }
            }
          }
        },
        "x-permission": "part.create"
      },
      "patch": {
        "summary": "Bulk update parts",
        "description": "Update the same fields on multiple parts at once",
        "tags": [
          "Parts"
        ],
        "parameters": [],
        "requestBody": {
          "description": "Part IDs and shared update data",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateManyRequestPartUpdateWithMaterials"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Updated parts",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Part"
                  }
                }
              }
            }
          }
        },
        "x-permission": "part.edit"
      },
      "delete": {
        "summary": "Delete multiple parts",
        "description": "Delete multiple parts and their associated files",
        "tags": [
          "Parts"
        ],
        "parameters": [],
        "requestBody": {
          "description": "Array of part IDs to delete",
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "type": "string",
                  "pattern": "^[a-z0-9]{24}$"
                }
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "IDs of successfully deleted parts",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "string",
                    "pattern": "^[a-z0-9]{24}$"
                  }
                }
              }
            }
          }
        },
        "x-permission": "part.delete"
      }
    },
    "/v1/parts/search": {
      "post": {
        "summary": "Search parts",
        "description": "Search parts with complex filters",
        "tags": [
          "Parts"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SearchQueryDtoPart"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SearchResponse"
                }
              }
            }
          }
        },
        "x-permission": "part.view"
      }
    },
    "/v1/parts/{id}": {
      "get": {
        "summary": "Get part by ID",
        "description": "Get a single part by ID",
        "tags": [
          "Parts"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "schema": {
              "type": "string"
            },
            "required": true,
            "description": " The part's unique identifier"
          }
        ],
        "responses": {
          "200": {
            "description": "The requested part with full details",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Part"
                }
              }
            }
          }
        },
        "x-permission": "part.view"
      },
      "patch": {
        "summary": "Update a part",
        "description": "Update part properties like name, description, or material assignments.\n\nWhen the update replaces the part's primary file, the response waits\nfor reprocessing to finish by default; pass `?async=true` to return\nimmediately with `processingStatus: \"processing\"` and poll the part\nuntil the status clears.",
        "tags": [
          "Parts"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "schema": {
              "type": "string",
              "pattern": "^[a-z0-9]{24}$"
            },
            "required": true,
            "description": " The part's unique identifier"
          },
          {
            "name": "async",
            "in": "query",
            "schema": {
              "type": "boolean"
            },
            "required": false,
            "description": "When true, the response returns as soon as file processing is\nsubmitted, with `processingStatus: \"processing\"`; poll the part until\nthe status clears. When false or omitted, the response waits for\nprocessing to finish (bounded — a part still processing after the wait\nis returned as-is, to be polled)."
          }
        ],
        "requestBody": {
          "description": "Fields to update",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PartUpdateWithMaterials"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "The updated part",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Part"
                }
              }
            }
          }
        },
        "x-permission": "part.edit"
      },
      "delete": {
        "summary": "Delete a part",
        "description": "Delete a single part and its associated files",
        "tags": [
          "Parts"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "schema": {
              "type": "string",
              "pattern": "^[a-z0-9]{24}$"
            },
            "required": true,
            "description": " The part's unique identifier"
          }
        ],
        "responses": {
          "200": {
            "description": "IDs of deleted resources",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  }
                }
              }
            }
          }
        },
        "x-permission": "part.delete"
      }
    },
    "/v1/parts/create-skus": {
      "post": {
        "summary": "Create SKUs from parts",
        "description": "Create SKU products from selected parts. Each part becomes a new SKU\nwith the part linked to it.",
        "tags": [
          "Parts",
          "SKUs"
        ],
        "parameters": [],
        "requestBody": {
          "description": "Array of part-to-SKU mappings with custom names",
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "partId": {
                      "type": "string"
                    },
                    "skuName": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "partId",
                    "skuName"
                  ]
                }
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "The created SKUs",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Sku"
                  }
                }
              }
            }
          }
        },
        "x-permission": "sku.create"
      }
    },
    "/v1/parts/extract-3mf-metadata": {
      "post": {
        "summary": "Extract 3MF metadata from a staged upload",
        "description": "Read plate and material metadata from a staged 3MF upload without\ncreating a part. Accepts the `uploads:` path returned by\nsigned-upload-urls.",
        "tags": [
          "Parts"
        ],
        "parameters": [],
        "requestBody": {
          "description": "The staged upload to inspect",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Extract3MFMetadataRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Plate, material, and gcode metadata parsed from the 3MF",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Extract3MFMetadataResponse"
                }
              }
            }
          }
        },
        "x-permission": "part.create"
      }
    },
    "/v1/parts/{id}/split-plates": {
      "post": {
        "summary": "Split multi-plate 3MF file",
        "description": "Split a multi-plate GCODE3MF file into separate files for each plate.\nUseful for sending individual plates to different printers.",
        "tags": [
          "Parts"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "schema": {
              "type": "string",
              "pattern": "^[a-z0-9]{24}$"
            },
            "required": true,
            "description": " The GCODE3MF part's unique identifier"
          }
        ],
        "responses": {
          "201": {
            "description": "The updated part with plate file URIs",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Part"
                }
              }
            }
          }
        },
        "x-permission": "part.edit"
      }
    },
    "/v1/printers/set-config": {
      "patch": {
        "summary": "Set provider config",
        "description": "Configure printer provider settings (e.g., Bambu Lab cloud connection)",
        "tags": [
          "Printers"
        ],
        "parameters": [],
        "requestBody": {
          "description": "Provider configuration for selected printers",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SetProviderConfig"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Updated printers",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Printer"
                  }
                }
              }
            }
          }
        },
        "x-permission": "printer.config"
      }
    },
    "/v1/printers/confirm-ready": {
      "patch": {
        "summary": "Confirm printer ready",
        "description": "Mark printers as ready or not ready to receive jobs",
        "tags": [
          "Printers"
        ],
        "parameters": [],
        "requestBody": {
          "description": "Printer IDs and ready status",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ConfirmReadyRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Updated printers",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Printer"
                  }
                }
              }
            }
          }
        },
        "x-permission": "printer.ready"
      }
    },
    "/v1/printers/next-match": {
      "post": {
        "summary": "Get printers' next queue matches",
        "description": "For each printer, get the pending job the queue would give it if it were\nmarked ready now. Ignores readiness only: tags, loaded materials,\nfilament profiles and bed size are checked exactly as the queue checks\nthem, in queue order.\n\nEach printer is answered on its own, so two printers can be told the\nsame job. It's a prediction, not a reservation: another ready printer\ncan take the job first, and automatic plate merging can combine it with\nother jobs. When a printer's Staggered Start group is full, its match is\nstill returned and `staggeredStart` says what's holding it.",
        "tags": [
          "Printers"
        ],
        "parameters": [],
        "requestBody": {
          "description": "IDs of the printers to check",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/BulkActionRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "One entry per printer found, in request order",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PrinterNextMatch"
                  }
                }
              }
            }
          }
        },
        "x-permission": "printer.view, queue.view"
      }
    },
    "/v1/printers/reconcile-state": {
      "post": {
        "summary": "Force refresh printer state",
        "description": "Force a state refresh: re-check each printer's stored online and\navailability flags against its live state right now, instead of waiting\nfor the periodic check. Only ever marks printers online or available;\nprinters with a job in progress, in maintenance, or disabled are left as\nthey are.",
        "tags": [
          "Printers"
        ],
        "parameters": [],
        "requestBody": {
          "description": "Printer IDs to refresh",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/BulkActionRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "What happened to each printer",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ReconcilePrinterStateResult"
                  }
                }
              }
            }
          }
        },
        "x-permission": "printer.control"
      }
    },
    "/v1/printers/enabled": {
      "patch": {
        "summary": "Set printer enabled status",
        "description": "Enable or disable printers for automatic job assignment",
        "tags": [
          "Printers"
        ],
        "parameters": [],
        "requestBody": {
          "description": "Printer IDs and enabled status",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/EnabledConfig"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Updated printers",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Printer"
                  }
                }
              }
            }
          }
        },
        "x-permission": "printer.control"
      }
    },
    "/v1/printers/continous-print": {
      "patch": {
        "summary": "Set Fabmatic",
        "description": "Enable or disable Fabmatic (continuous printing) for printers",
        "tags": [
          "Printers"
        ],
        "parameters": [],
        "requestBody": {
          "description": "Printer IDs, enabled status, and optional job limit",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ContinuousPrintConfig"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Updated printers",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Printer"
                  }
                }
              }
            }
          }
        },
        "x-permission": "printer.config, printer.ready"
      }
    },
    "/v1/printers": {
      "get": {
        "summary": "Get all printers",
        "description": "List all printers connected to your store",
        "tags": [
          "Printers"
        ],
        "parameters": [
          {
            "name": "provider",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "deviceId",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "providerConfig",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "machineUserProfileId",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "machineSystemProfileId",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "processUserProfileId",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "processSystemProfileId",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "name",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "nozzleDiameter",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "metadata",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "proxyClientId",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "commMethod",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "enabled",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "tags",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "confirmedReady",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "isAvailable",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "isOnline",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "printingJobId",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "lastPrintedAt",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "integrationId",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "integrationType",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "continuousPrint",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "fabmaticRemainingJobs",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "bedSize",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false,
            "description": "{x,y,z} mm build volume, denormalized from the machine profile's\nprintable_area/printable_height. Cache only — refreshed whenever the\nprinter's machine profile changes; the profile is the source of truth."
          },
          {
            "name": "modelName",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false,
            "description": "Human-readable model name (e.g. \"P1S\", \"Snapmaker U1\", \"Prusa CORE One\")"
          },
          {
            "name": "vendorName",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false,
            "description": "Vendor/manufacturer name (e.g. \"Bambu Lab\", \"Prusa\", \"Snapmaker\")"
          },
          {
            "name": "vendorModelId",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "printerCapabilityPatch",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false,
            "title": "Per-printer capability override applied last (web Advanced Capabilities panel)",
            "description": "Per-printer capability override applied last (web Advanced Capabilities panel)."
          },
          {
            "name": "printerAdapterBindingsPatch",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false,
            "title": "Per-printer adapter binding override applied last",
            "description": "Per-printer adapter binding override applied last."
          },
          {
            "name": "lifetimePrintHours",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "lifetimeJobCount",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "isInMaintenance",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "lastMaintenanceOfflineAt",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "lastMaintenanceOnlineAt",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "customMetadata",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "id",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "storeId",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "createdAt",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "updatedAt",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false,
            "title": "Sort"
          },
          {
            "name": "limit",
            "in": "query",
            "schema": {
              "type": "number",
              "minimum": 1,
              "maximum": 1000
            },
            "required": false,
            "title": "Limit"
          },
          {
            "name": "offset",
            "in": "query",
            "schema": {
              "type": "number",
              "minimum": 0
            },
            "required": false,
            "title": "Offset"
          },
          {
            "name": "fields",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false,
            "title": "Fields"
          },
          {
            "name": "include",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false,
            "title": "Include"
          },
          {
            "name": "meta",
            "in": "query",
            "schema": {
              "type": "boolean"
            },
            "required": false,
            "title": "Meta"
          },
          {
            "name": "hints",
            "in": "query",
            "schema": {
              "type": "boolean"
            },
            "required": false,
            "title": "Hints"
          }
        ],
        "responses": {
          "200": {
            "description": "All registered printers with status",
            "content": {
              "application/json": {
                "schema": {
                  "oneOf": [
                    {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/Printer"
                      }
                    },
                    {
                      "$ref": "#/components/schemas/SearchResponse"
                    }
                  ]
                }
              }
            }
          }
        },
        "x-permission": "printer.view"
      },
      "post": {
        "summary": "Add a printer",
        "description": "Register a new printer to your store. Identify the model with either\n`vendorModelId` or both `vendorName` and `modelName`; otherwise the\nrequest fails with `400`. `deviceId` must be unique across Printago.\nPrinters are normally added by Printago Fuse or a cloud connection,\nwhich also brings them online.",
        "tags": [
          "Printers"
        ],
        "parameters": [],
        "requestBody": {
          "description": "Printer configuration",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PrinterInsert"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "The created printer",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Printer"
                }
              }
            }
          }
        },
        "x-permission": "printer.create"
      },
      "put": {
        "summary": "Add multiple printers",
        "description": "Register multiple printers at once. If any `deviceId` is already\nregistered (in any store), nothing is created and the request fails\nwith `409`; the error body lists the conflicting `deviceId`s under\n`conflicts`.",
        "tags": [
          "Printers"
        ],
        "parameters": [],
        "requestBody": {
          "description": "Array of printer configurations",
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/PrinterInsert"
                }
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "The created printers",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Printer"
                  }
                }
              }
            }
          }
        },
        "x-permission": "printer.create"
      },
      "patch": {
        "summary": "Bulk update printers",
        "description": "Update the same fields on multiple printers",
        "tags": [
          "Printers"
        ],
        "parameters": [],
        "requestBody": {
          "description": "Printer IDs and shared update data",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateManyRequestPrinterUpdate"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Updated printers",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Printer"
                  }
                }
              }
            }
          }
        },
        "x-permission": "printer.edit"
      },
      "delete": {
        "summary": "Delete multiple printers",
        "description": "Remove multiple printers from your store",
        "tags": [
          "Printers"
        ],
        "parameters": [],
        "requestBody": {
          "description": "Printer IDs to delete",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/BulkActionRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "IDs of deleted printers",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  }
                }
              }
            }
          }
        },
        "x-permission": "printer.delete"
      }
    },
    "/v1/printers/search": {
      "post": {
        "summary": "Search printers",
        "description": "Search printers with complex filters",
        "tags": [
          "Printers"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SearchQueryDtoPrinter"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SearchResponse"
                }
              }
            }
          }
        },
        "x-permission": "printer.view"
      }
    },
    "/v1/printers/{id}/snapshot": {
      "get": {
        "summary": "Get latest camera snapshot URL",
        "description": "Get a signed URL for the most recent camera snapshot of a printer.\nThe URL is valid for 60 minutes; refresh by calling again before\n`expiresAt`. Snapshots are uploaded by Fuse on a printing-aware\ncadence (~30s while printing, ~10min while idle), so the URL may\npoint to an image up to 10 minutes old on an idle printer.\n\nThe endpoint signs the URL without checking whether the underlying\nobject exists, so the returned URL will return `404` from Firebase\nStorage when fetched if Fuse has not yet uploaded a snapshot for\nthis printer (brand-new pairing, snapshots disabled for the store,\nthe printer model has no camera, or the printer has been offline\nsince pairing). Callers should treat a 404 on the GET as \"no\nsnapshot available yet\" rather than an error. The endpoint itself\nonly returns 404 if the printer ID does not exist in your store.",
        "tags": [
          "Printers"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "schema": {
              "type": "string",
              "pattern": "^[a-z0-9]{24}$"
            },
            "required": true,
            "description": " The printer's unique identifier"
          }
        ],
        "responses": {
          "200": {
            "description": "Signed download URL and expiry timestamp",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PrinterLatestSnapshot"
                }
              }
            }
          }
        },
        "x-permission": "printer.camera"
      }
    },
    "/v1/printers/{id}": {
      "get": {
        "summary": "Get printer by ID",
        "description": "Get a single printer by ID",
        "tags": [
          "Printers"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "schema": {
              "type": "string",
              "pattern": "^[a-z0-9]{24}$"
            },
            "required": true,
            "description": " The printer's unique identifier"
          }
        ],
        "responses": {
          "200": {
            "description": "The requested printer",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Printer"
                }
              }
            }
          }
        },
        "x-permission": "printer.view"
      },
      "patch": {
        "summary": "Update a printer",
        "description": "Update a printer's properties",
        "tags": [
          "Printers"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "schema": {
              "type": "string",
              "pattern": "^[a-z0-9]{24}$"
            },
            "required": true,
            "description": " The printer's unique identifier"
          }
        ],
        "requestBody": {
          "description": "Fields to update",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PartialPrinterUpdate"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "The updated printer",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Printer"
                }
              }
            }
          }
        },
        "x-permission": "printer.edit"
      },
      "delete": {
        "summary": "Delete a printer",
        "description": "Remove a printer from your store",
        "tags": [
          "Printers"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "schema": {
              "type": "string",
              "pattern": "^[a-z0-9]{24}$"
            },
            "required": true,
            "description": " The printer's unique identifier"
          }
        ],
        "responses": {
          "200": {
            "description": "IDs of deleted resources",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  }
                }
              }
            }
          }
        },
        "x-permission": "printer.delete"
      }
    },
    "/v1/printers/{id}/capabilities": {
      "get": {
        "summary": "Get resolved capabilities",
        "description": "Resolve effective capabilities for one printer.",
        "tags": [
          "Printers"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "schema": {
              "type": "string",
              "pattern": "^[a-z0-9]{24}$"
            },
            "required": true,
            "description": " The printer's unique identifier"
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "oneOf": [
                    {
                      "type": "null"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "nozzles": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "temperature": {
                                "type": "object",
                                "properties": {
                                  "read": {
                                    "type": "boolean"
                                  },
                                  "set": {
                                    "type": "boolean"
                                  }
                                }
                              },
                              "extrude": {
                                "type": "boolean"
                              },
                              "toolRef": {
                                "type": "string"
                              },
                              "ref": {
                                "type": "string",
                                "title": "Logical reference, unique within its array. ASCII, lowercase, deterministic",
                                "description": "Logical reference, unique within its array. ASCII, lowercase, deterministic."
                              },
                              "label": {
                                "type": "string",
                                "description": "Human-readable display name"
                              },
                              "kind": {
                                "type": "string",
                                "description": "Optional vendor/extensible subtype when the base role is not enough"
                              }
                            }
                          }
                        },
                        "tools": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "selectable": {
                                "type": "boolean"
                              },
                              "nozzleRefs": {
                                "type": "array",
                                "items": {
                                  "type": "string"
                                }
                              },
                              "fanRefs": {
                                "type": "array",
                                "items": {
                                  "type": "string"
                                }
                              },
                              "sensorRefs": {
                                "type": "array",
                                "items": {
                                  "type": "string"
                                }
                              },
                              "ref": {
                                "type": "string",
                                "title": "Logical reference, unique within its array. ASCII, lowercase, deterministic",
                                "description": "Logical reference, unique within its array. ASCII, lowercase, deterministic."
                              },
                              "label": {
                                "type": "string",
                                "description": "Human-readable display name"
                              },
                              "kind": {
                                "type": "string",
                                "description": "Optional vendor/extensible subtype when the base role is not enough"
                              }
                            }
                          }
                        },
                        "fans": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "role": {
                                "oneOf": [
                                  {
                                    "const": "part"
                                  },
                                  {
                                    "const": "aux"
                                  },
                                  {
                                    "const": "chamber"
                                  },
                                  {
                                    "const": "hotend"
                                  },
                                  {
                                    "const": "exhaust"
                                  },
                                  {
                                    "type": "object",
                                    "properties": {
                                      "length": {
                                        "type": "number",
                                        "title": "Returns the length of a String object",
                                        "description": "Returns the length of a String object."
                                      }
                                    },
                                    "additionalProperties": {
                                      "type": "string"
                                    }
                                  }
                                ]
                              },
                              "controllable": {
                                "type": "boolean"
                              },
                              "reportsSpeed": {
                                "type": "boolean",
                                "description": "Whether the printer reports back a live fan speed. Defaults to true\n(omitted). Set false for write-only fans (e.g. OctoPrint, whose REST API\naccepts M106 but never surfaces a speed) so diagnostics skip the readback\nverification instead of failing a check they can't perform."
                              },
                              "nozzleRef": {
                                "type": "string"
                              },
                              "toolRef": {
                                "type": "string"
                              },
                              "ref": {
                                "type": "string",
                                "title": "Logical reference, unique within its array. ASCII, lowercase, deterministic",
                                "description": "Logical reference, unique within its array. ASCII, lowercase, deterministic."
                              },
                              "label": {
                                "type": "string",
                                "description": "Human-readable display name"
                              },
                              "kind": {
                                "type": "string",
                                "description": "Optional vendor/extensible subtype when the base role is not enough"
                              }
                            }
                          }
                        },
                        "lights": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "role": {
                                "oneOf": [
                                  {
                                    "const": "chamber"
                                  },
                                  {
                                    "const": "work"
                                  },
                                  {
                                    "const": "indicator"
                                  },
                                  {
                                    "const": "strip"
                                  },
                                  {
                                    "type": "object",
                                    "properties": {
                                      "length": {
                                        "type": "number",
                                        "title": "Returns the length of a String object",
                                        "description": "Returns the length of a String object."
                                      }
                                    },
                                    "additionalProperties": {
                                      "type": "string"
                                    }
                                  }
                                ]
                              },
                              "dimmable": {
                                "type": "boolean"
                              },
                              "ref": {
                                "type": "string",
                                "title": "Logical reference, unique within its array. ASCII, lowercase, deterministic",
                                "description": "Logical reference, unique within its array. ASCII, lowercase, deterministic."
                              },
                              "label": {
                                "type": "string",
                                "description": "Human-readable display name"
                              },
                              "kind": {
                                "type": "string",
                                "description": "Optional vendor/extensible subtype when the base role is not enough"
                              }
                            }
                          }
                        },
                        "sensors": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "role": {
                                "oneOf": [
                                  {
                                    "const": "lidar"
                                  },
                                  {
                                    "const": "filament_runout"
                                  },
                                  {
                                    "const": "door"
                                  },
                                  {
                                    "const": "accelerometer"
                                  },
                                  {
                                    "const": "bed_mesh"
                                  },
                                  {
                                    "type": "object",
                                    "properties": {
                                      "length": {
                                        "type": "number",
                                        "title": "Returns the length of a String object",
                                        "description": "Returns the length of a String object."
                                      }
                                    },
                                    "additionalProperties": {
                                      "type": "string"
                                    }
                                  }
                                ]
                              },
                              "nozzleRef": {
                                "type": "string"
                              },
                              "toolRef": {
                                "type": "string"
                              },
                              "ref": {
                                "type": "string",
                                "title": "Logical reference, unique within its array. ASCII, lowercase, deterministic",
                                "description": "Logical reference, unique within its array. ASCII, lowercase, deterministic."
                              },
                              "label": {
                                "type": "string",
                                "description": "Human-readable display name"
                              },
                              "kind": {
                                "type": "string",
                                "description": "Optional vendor/extensible subtype when the base role is not enough"
                              }
                            }
                          }
                        },
                        "beds": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "temperature": {
                                "type": "object",
                                "properties": {
                                  "read": {
                                    "type": "boolean"
                                  },
                                  "set": {
                                    "type": "boolean"
                                  }
                                }
                              },
                              "hasMesh": {
                                "type": "boolean"
                              },
                              "ref": {
                                "type": "string",
                                "title": "Logical reference, unique within its array. ASCII, lowercase, deterministic",
                                "description": "Logical reference, unique within its array. ASCII, lowercase, deterministic."
                              },
                              "label": {
                                "type": "string",
                                "description": "Human-readable display name"
                              },
                              "kind": {
                                "type": "string",
                                "description": "Optional vendor/extensible subtype when the base role is not enough"
                              }
                            }
                          }
                        },
                        "chambers": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "temperature": {
                                "type": "object",
                                "properties": {
                                  "read": {
                                    "type": "boolean"
                                  },
                                  "set": {
                                    "type": "boolean"
                                  }
                                }
                              },
                              "ref": {
                                "type": "string",
                                "title": "Logical reference, unique within its array. ASCII, lowercase, deterministic",
                                "description": "Logical reference, unique within its array. ASCII, lowercase, deterministic."
                              },
                              "label": {
                                "type": "string",
                                "description": "Human-readable display name"
                              },
                              "kind": {
                                "type": "string",
                                "description": "Optional vendor/extensible subtype when the base role is not enough"
                              }
                            }
                          }
                        },
                        "axes": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "axis": {
                                "oneOf": [
                                  {
                                    "const": "x"
                                  },
                                  {
                                    "const": "y"
                                  },
                                  {
                                    "const": "z"
                                  }
                                ]
                              },
                              "move": {
                                "type": "boolean"
                              },
                              "home": {
                                "type": "boolean"
                              },
                              "flipped": {
                                "type": "boolean"
                              },
                              "ref": {
                                "type": "string",
                                "title": "Logical reference, unique within its array. ASCII, lowercase, deterministic",
                                "description": "Logical reference, unique within its array. ASCII, lowercase, deterministic."
                              },
                              "label": {
                                "type": "string",
                                "description": "Human-readable display name"
                              },
                              "kind": {
                                "type": "string",
                                "description": "Optional vendor/extensible subtype when the base role is not enough"
                              }
                            }
                          }
                        },
                        "filaments": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "canReadFilament": {
                                "type": "boolean",
                                "title": "True if printer hardware can read filament info from this source",
                                "description": "True if printer hardware can read filament info from this source."
                              },
                              "canLoad": {
                                "type": "boolean",
                                "title": "True if printer can auto-load filament into this source",
                                "description": "True if printer can auto-load filament into this source."
                              },
                              "canUnload": {
                                "type": "boolean",
                                "title": "True if printer can auto-unload filament",
                                "description": "True if printer can auto-unload filament."
                              },
                              "ref": {
                                "type": "string",
                                "title": "Logical reference, unique within its array. ASCII, lowercase, deterministic",
                                "description": "Logical reference, unique within its array. ASCII, lowercase, deterministic."
                              },
                              "label": {
                                "type": "string",
                                "description": "Human-readable display name"
                              },
                              "kind": {
                                "type": "string",
                                "description": "Optional vendor/extensible subtype when the base role is not enough"
                              }
                            }
                          },
                          "description": "Directly-fed filament sources. An array because some printers feed\nmultiple positions simultaneously (Bambu external bay = 2, Snapmaker\nU1 = 4, Bambu H2D = 2+). Each entry is one loadable position.\nAMS / MMU / ERCF / CFS / toolchanger live separately under\n`peripherals` and are presented alongside these in the UI's\nFilaments view."
                        },
                        "cameras": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "protocol": {
                                "oneOf": [
                                  {
                                    "const": "mjpeg-bambu"
                                  },
                                  {
                                    "const": "rtsps-bambu"
                                  },
                                  {
                                    "const": "webrtc"
                                  },
                                  {
                                    "const": "rtsp"
                                  },
                                  {
                                    "const": "rtsps"
                                  },
                                  {
                                    "const": "mjpeg-http"
                                  },
                                  {
                                    "const": "http-flv"
                                  },
                                  {
                                    "const": "http-snapshot"
                                  },
                                  {
                                    "const": "http-snapshot-poll"
                                  }
                                ]
                              },
                              "mounting": {
                                "oneOf": [
                                  {
                                    "const": "external"
                                  },
                                  {
                                    "const": "builtin"
                                  }
                                ],
                                "title": "`builtin`: seeded by the capability set, locked in the UI",
                                "description": "`builtin`: seeded by the capability set, locked in the UI.\n`external`: user-attached; editable + removable via printer config."
                              },
                              "url": {
                                "type": "string",
                                "description": "Literal stream URL. Required for non-Bambu protocols, EXCEPT for\n`mjpeg-http` cameras whose endpoint can be synthesized from\n`printer.ip + port` (path-agnostic MJPEG, e.g. Elegoo Centauri\nCarbon 2 on `:8080`). Set `url` when the camera is at a third-party\nabsolute address; otherwise just set `port` and let the go2rtc\ngenerator build `http://${printer.ip}:${port}/`."
                              },
                              "port": {
                                "type": "number",
                                "title": "Override default port for the protocol",
                                "description": "Override default port for the protocol."
                              },
                              "path": {
                                "type": "string",
                                "description": "Override the URL path for `mjpeg-http` (default `/`). Used when the\nstream sits behind a fixed path on the printer's web server — e.g.\nMainsail/Fluidd-style `/webcam/?action=stream` for camera-streamer\nor mjpg-streamer. Combined with `printer.ip + port` to build the\nfull URL when `url` isn't set."
                              },
                              "auth": {
                                "type": "string",
                                "description": "Auth credentials for the stream — `Bearer ...`, `user:pass`, or a\nquery-string fragment. Bambu protocols ignore this; their auth is\nderived from `printer.accessCode`."
                              },
                              "role": {
                                "oneOf": [
                                  {
                                    "const": "overhead"
                                  },
                                  {
                                    "const": "bed"
                                  },
                                  {
                                    "const": "chamber"
                                  },
                                  {
                                    "const": "toolhead"
                                  },
                                  {
                                    "type": "object",
                                    "properties": {
                                      "length": {
                                        "type": "number",
                                        "title": "Returns the length of a String object",
                                        "description": "Returns the length of a String object."
                                      }
                                    },
                                    "additionalProperties": {
                                      "type": "string"
                                    }
                                  }
                                ],
                                "title": "UX-only role for grouping/labeling",
                                "description": "UX-only role for grouping/labeling."
                              },
                              "snapshots": {
                                "type": "boolean",
                                "title": "Whether to capture periodic snapshots. Defaults true if unset",
                                "description": "Whether to capture periodic snapshots. Defaults true if unset."
                              },
                              "timelapse": {
                                "type": "boolean",
                                "title": "Whether to record timelapses. Defaults true if unset",
                                "description": "Whether to record timelapses. Defaults true if unset."
                              },
                              "primary": {
                                "type": "boolean",
                                "description": "When true, this is the printer's primary camera: it owns the bare\n`printer.id` go2rtc stream key, so the live dashboard/printer tile,\nperiodic snapshots, the print-completion thumbnail, and timelapses\nall read from it instead of the built-in camera. At most one camera\nper printer should set this; when none do, the first camera\n(index 0, normally the built-in) is the implicit primary."
                              },
                              "webrtcSignaling": {
                                "type": "object",
                                "properties": {
                                  "flavor": {
                                    "oneOf": [
                                      {
                                        "const": "whep"
                                      },
                                      {
                                        "const": "creality-base64-json"
                                      },
                                      {
                                        "const": "go2rtc-ws"
                                      }
                                    ]
                                  },
                                  "path": {
                                    "type": "string",
                                    "title": "Endpoint path or full URL for the signaling request",
                                    "description": "Endpoint path or full URL for the signaling request."
                                  }
                                },
                                "description": "SDP-exchange config for `protocol: 'webrtc'`. Required when protocol\nis `'webrtc'`; ignored otherwise. The transport itself is always\nstandard WebRTC; this only describes how the offer/answer get traded.\n\nFor `creality-base64-json`, the signaling URL is built from\n`printer.ip:port` + `path` (e.g. http://192.168.1.26:8000/call/webrtc_local).\nFor `whep`, `path` may be a full URL or a path appended to the camera's\nbase URL."
                              },
                              "ref": {
                                "type": "string",
                                "title": "Logical reference, unique within its array. ASCII, lowercase, deterministic",
                                "description": "Logical reference, unique within its array. ASCII, lowercase, deterministic."
                              },
                              "label": {
                                "type": "string",
                                "description": "Human-readable display name"
                              },
                              "kind": {
                                "type": "string",
                                "description": "Optional vendor/extensible subtype when the base role is not enough"
                              }
                            }
                          },
                          "description": "Cameras attached to the printer. Built-in (`mounting:'builtin'`)\ncameras come from the printer's capability set; external IP/RTSP\ncameras (`mounting:'external'`) are added via printer config.\n\nReplaces the legacy `getCameraProtocol(modelCode)` lookup — all\ncamera config flows through this array."
                        },
                        "peripherals": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "type": {
                                "oneOf": [
                                  {
                                    "const": "ercf"
                                  },
                                  {
                                    "const": "mmu"
                                  },
                                  {
                                    "const": "toolchanger"
                                  },
                                  {
                                    "const": "ams"
                                  },
                                  {
                                    "type": "object",
                                    "properties": {
                                      "length": {
                                        "type": "number",
                                        "title": "Returns the length of a String object",
                                        "description": "Returns the length of a String object."
                                      }
                                    },
                                    "additionalProperties": {
                                      "type": "string"
                                    }
                                  }
                                ]
                              },
                              "maxUnits": {
                                "type": "number"
                              },
                              "slotsPerUnit": {
                                "type": "number"
                              },
                              "minSlotsPerUnit": {
                                "type": "number"
                              },
                              "maxSlotsPerUnit": {
                                "type": "number"
                              },
                              "canReadFilament": {
                                "type": "boolean"
                              },
                              "canLoad": {
                                "type": "boolean"
                              },
                              "canUnload": {
                                "type": "boolean"
                              },
                              "ref": {
                                "type": "string",
                                "title": "Logical reference, unique within its array. ASCII, lowercase, deterministic",
                                "description": "Logical reference, unique within its array. ASCII, lowercase, deterministic."
                              },
                              "label": {
                                "type": "string",
                                "description": "Human-readable display name"
                              },
                              "kind": {
                                "type": "string",
                                "description": "Optional vendor/extensible subtype when the base role is not enough"
                              }
                            }
                          }
                        },
                        "printing": {
                          "type": "object",
                          "properties": {
                            "start": {
                              "type": "boolean"
                            },
                            "pause": {
                              "type": "boolean"
                            },
                            "resume": {
                              "type": "boolean"
                            },
                            "stop": {
                              "type": "boolean"
                            },
                            "skipObjects": {
                              "type": "boolean"
                            }
                          }
                        },
                        "filament": {
                          "type": "object",
                          "properties": {
                            "setInfo": {
                              "type": "boolean"
                            },
                            "read": {
                              "type": "boolean"
                            },
                            "dynamicSlots": {
                              "type": "boolean"
                            }
                          }
                        },
                        "files": {
                          "type": "object",
                          "properties": {
                            "upload": {
                              "type": "boolean"
                            },
                            "list": {
                              "type": "boolean"
                            }
                          }
                        },
                        "gcode": {
                          "type": "boolean"
                        },
                        "printOptions": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "kind": {
                                "oneOf": [
                                  {
                                    "const": "boolean"
                                  },
                                  {
                                    "const": "enum"
                                  }
                                ]
                              },
                              "default": {
                                "oneOf": [
                                  {
                                    "type": "string"
                                  },
                                  {
                                    "type": "boolean"
                                  }
                                ],
                                "title": "UI default when the stored providerConfig is null / missing the key",
                                "description": "UI default when the stored providerConfig is null / missing the key."
                              },
                              "choices": {
                                "type": "array",
                                "items": {
                                  "type": "object",
                                  "properties": {
                                    "value": {
                                      "type": "string"
                                    },
                                    "label": {
                                      "type": "string"
                                    }
                                  }
                                },
                                "title": "For `kind: \"enum\"`: allowed values with display labels",
                                "description": "For `kind: \"enum\"`: allowed values with display labels."
                              },
                              "description": {
                                "type": "string",
                                "title": "Tooltip help text rendered next to the label",
                                "description": "Tooltip help text rendered next to the label."
                              },
                              "ref": {
                                "type": "string",
                                "title": "Logical reference, unique within its array. ASCII, lowercase, deterministic",
                                "description": "Logical reference, unique within its array. ASCII, lowercase, deterministic."
                              },
                              "label": {
                                "type": "string",
                                "description": "Human-readable display name"
                              }
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/v1/printers/capabilities/resolve": {
      "post": {
        "summary": "Resolve capabilities for printers",
        "description": "Resolve effective capabilities for multiple printers (bulk).",
        "tags": [
          "Printers"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ResolvePrinterCapabilitiesRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResolvePrinterCapabilitiesResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/printers/multi": {
      "patch": {
        "summary": "Multi-update printers",
        "description": "Update different fields on each printer in a single request",
        "tags": [
          "Printers"
        ],
        "parameters": [],
        "requestBody": {
          "description": "Array of individual printer updates",
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/PartialPrinterUpdateidstring"
                }
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Success. The response has no body."
          }
        },
        "x-permission": "printer.edit"
      }
    },
    "/v1/printers/{id}/rename": {
      "patch": {
        "summary": "Rename a printer",
        "description": "Change a printer's display name",
        "tags": [
          "Printers"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "schema": {
              "type": "string",
              "pattern": "^[a-z0-9]{24}$"
            },
            "required": true,
            "description": " The printer's unique identifier"
          }
        ],
        "requestBody": {
          "description": "New name for the printer",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RenamePrinterOptions"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "The renamed printer",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Printer"
                }
              }
            }
          }
        },
        "x-permission": "printer.edit"
      }
    },
    "/v1/linked-parts": {
      "get": {
        "summary": "Get all linked parts for a store",
        "tags": [
          "Linked_Parts"
        ],
        "operationId": "linkedParts_getAll",
        "parameters": [
          {
            "name": "skuId",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "partId",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "parameters",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "quantity",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "label",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "exposedParameters",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "materialAssignments",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "extensions",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "parameterBindings",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "sequenceBindings",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false,
            "title": "Text-parameter name → sequence id: each queued unit consumes the next serial",
            "description": "Text-parameter name → sequence id: each queued unit consumes the next serial."
          },
          {
            "name": "plateQuantitiesBinding",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "id",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "storeId",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "createdAt",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "updatedAt",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false,
            "title": "Sort"
          },
          {
            "name": "limit",
            "in": "query",
            "schema": {
              "type": "number",
              "minimum": 1,
              "maximum": 1000
            },
            "required": false,
            "title": "Limit"
          },
          {
            "name": "offset",
            "in": "query",
            "schema": {
              "type": "number",
              "minimum": 0
            },
            "required": false,
            "title": "Offset"
          },
          {
            "name": "fields",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false,
            "title": "Fields"
          },
          {
            "name": "include",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false,
            "title": "Include"
          },
          {
            "name": "meta",
            "in": "query",
            "schema": {
              "type": "boolean"
            },
            "required": false,
            "title": "Meta"
          },
          {
            "name": "hints",
            "in": "query",
            "schema": {
              "type": "boolean"
            },
            "required": false,
            "title": "Hints"
          }
        ],
        "responses": {
          "200": {
            "description": "List of linked parts",
            "content": {
              "application/json": {
                "schema": {
                  "oneOf": [
                    {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/LinkedPart"
                      }
                    },
                    {
                      "$ref": "#/components/schemas/SearchResponse"
                    }
                  ]
                }
              }
            }
          }
        },
        "x-permission": "sku.view"
      },
      "post": {
        "summary": "Create a new linked part",
        "tags": [
          "Linked_Parts"
        ],
        "parameters": [],
        "requestBody": {
          "description": "- Linked part data",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/LinkedPartInsert"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Created linked part",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LinkedPart"
                }
              }
            }
          }
        },
        "x-permission": "sku.edit"
      }
    },
    "/v1/linked-parts/search": {
      "post": {
        "summary": "Search linked parts",
        "description": "Advanced search for linked parts",
        "tags": [
          "Linked_Parts"
        ],
        "operationId": "linkedParts_search",
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SearchQueryDtoLinkedPart"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Search results with linked parts",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SearchResponse"
                }
              }
            }
          }
        },
        "x-permission": "sku.view"
      }
    },
    "/v1/linked-parts/{id}": {
      "get": {
        "summary": "Get a specific linked part by ID",
        "tags": [
          "Linked_Parts"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "schema": {
              "type": "string",
              "pattern": "^[a-z0-9]{24}$"
            },
            "required": true,
            "description": " - Linked part identifier"
          }
        ],
        "responses": {
          "200": {
            "description": "Linked part details",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LinkedPart"
                }
              }
            }
          }
        },
        "x-permission": "sku.view"
      },
      "patch": {
        "summary": "Update a linked part",
        "tags": [
          "Linked_Parts"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "schema": {
              "type": "string",
              "pattern": "^[a-z0-9]{24}$"
            },
            "required": true,
            "description": " - Linked part identifier"
          }
        ],
        "requestBody": {
          "description": "- Updated linked part data",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PartialLinkedPartInsert"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Updated linked part",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LinkedPart"
                }
              }
            }
          }
        },
        "x-permission": "sku.edit"
      },
      "delete": {
        "summary": "Delete a linked part",
        "tags": [
          "Linked_Parts"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "schema": {
              "type": "string",
              "pattern": "^[a-z0-9]{24}$"
            },
            "required": true,
            "description": " - Linked part identifier"
          }
        ],
        "responses": {
          "200": {
            "description": "Array of deleted linked part IDs",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  }
                }
              }
            }
          }
        },
        "x-permission": "sku.edit"
      }
    },
    "/v1/profiles": {
      "get": {
        "summary": "Get all slicer profiles",
        "tags": [
          "Profiles"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "name",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "type",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "externalId",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "source",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "inherits",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "compatibilityList",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "data",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "metadata",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "integrationId",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "integrationType",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "customMetadata",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "storeId",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "updatedAt",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "createdAt",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false,
            "title": "Sort"
          },
          {
            "name": "limit",
            "in": "query",
            "schema": {
              "type": "number",
              "minimum": 1,
              "maximum": 1000
            },
            "required": false,
            "title": "Limit"
          },
          {
            "name": "offset",
            "in": "query",
            "schema": {
              "type": "number",
              "minimum": 0
            },
            "required": false,
            "title": "Offset"
          },
          {
            "name": "fields",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false,
            "title": "Fields"
          },
          {
            "name": "include",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false,
            "title": "Include"
          },
          {
            "name": "meta",
            "in": "query",
            "schema": {
              "type": "boolean"
            },
            "required": false,
            "title": "Meta"
          },
          {
            "name": "hints",
            "in": "query",
            "schema": {
              "type": "boolean"
            },
            "required": false,
            "title": "Hints"
          }
        ],
        "responses": {
          "200": {
            "description": "List of all slicer profiles in the store",
            "content": {
              "application/json": {
                "schema": {
                  "oneOf": [
                    {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/Profile"
                      }
                    },
                    {
                      "$ref": "#/components/schemas/SearchResponse"
                    }
                  ]
                }
              }
            }
          }
        },
        "x-permission": "profile.view"
      },
      "post": {
        "summary": "Create a new profile",
        "tags": [
          "Profiles"
        ],
        "parameters": [],
        "requestBody": {
          "description": "- Profile data",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ProfileInsert"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "The created profile",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Profile"
                }
              }
            }
          }
        },
        "x-permission": "profile.create"
      },
      "delete": {
        "summary": "Delete multiple profiles",
        "tags": [
          "Profiles"
        ],
        "parameters": [],
        "requestBody": {
          "description": "- Array of profile IDs to delete",
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "type": "string",
                  "pattern": "^[a-z0-9]{24}$"
                }
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "IDs of deleted profiles",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "string",
                    "pattern": "^[a-z0-9]{24}$"
                  }
                }
              }
            }
          }
        },
        "x-permission": "profile.delete"
      }
    },
    "/v1/profiles/search": {
      "post": {
        "summary": "Search profiles",
        "description": "Search profiles with complex filters",
        "tags": [
          "Profiles"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SearchQueryDtoProfile"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SearchResponse"
                }
              }
            }
          }
        },
        "x-permission": "profile.view"
      }
    },
    "/v1/profiles/supported": {
      "get": {
        "summary": "Get supported printer models",
        "tags": [
          "Profiles"
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "List of printer models with supported features",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/SupportedPrinter"
                  }
                }
              }
            }
          }
        },
        "x-permission": "profile.view"
      }
    },
    "/v1/profiles/printer-models": {
      "get": {
        "summary": "Get all available printer models",
        "tags": [
          "Profiles"
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "Complete list of all printer models in the system",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PrinterModel"
                  }
                }
              }
            }
          }
        },
        "x-permission": "profile.view"
      }
    },
    "/v1/profiles/my-printer-models": {
      "get": {
        "summary": "Get printer models used in your store",
        "tags": [
          "Profiles"
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "List of printer models that have profiles in your store",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PrinterModel"
                  }
                }
              }
            }
          }
        },
        "x-permission": "profile.view"
      }
    },
    "/v1/profiles/slicer-versions": {
      "get": {
        "summary": "Get available slicer versions",
        "tags": [
          "Profiles"
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "List of synced slicer versions with their patch levels and slicer engine",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "version": {
                        "type": "string"
                      },
                      "patch": {
                        "oneOf": [
                          {
                            "type": "null"
                          },
                          {
                            "type": "string"
                          }
                        ]
                      },
                      "slicer": {
                        "oneOf": [
                          {
                            "const": "orcaslicer"
                          },
                          {
                            "const": "bambu-studio"
                          },
                          {
                            "const": "prusaslicer"
                          },
                          {
                            "const": "superslicer"
                          }
                        ]
                      }
                    },
                    "required": [
                      "version",
                      "patch",
                      "slicer"
                    ]
                  }
                }
              }
            }
          }
        },
        "x-permission": "profile.view"
      }
    },
    "/v1/profiles/{id}/full": {
      "get": {
        "summary": "Get full profile data with optional slicer version",
        "tags": [
          "Profiles"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "schema": {
              "type": "string"
            },
            "required": true,
            "description": " The profile ID (system or user profile)"
          },
          {
            "name": "version",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          }
        ],
        "responses": {
          "200": {
            "description": "Full profile data with inheritance resolved",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Recordstringany"
                }
              }
            }
          }
        },
        "x-permission": "profile.view"
      }
    },
    "/v1/profiles/{id}": {
      "get": {
        "summary": "Get a specific profile",
        "tags": [
          "Profiles"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "schema": {
              "type": "string",
              "pattern": "^[a-z0-9]{24}$"
            },
            "required": true,
            "description": " - The profile ID"
          }
        ],
        "responses": {
          "200": {
            "description": "The requested slicer profile",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Profile"
                }
              }
            }
          }
        },
        "x-permission": "profile.view"
      },
      "patch": {
        "summary": "Update a profile",
        "tags": [
          "Profiles"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "schema": {
              "type": "string",
              "pattern": "^[a-z0-9]{24}$"
            },
            "required": true,
            "description": " - The profile ID"
          }
        ],
        "requestBody": {
          "description": "- Profile update data",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ProfileUpdateDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "The updated profile",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Profile"
                }
              }
            }
          }
        },
        "x-permission": "profile.edit"
      },
      "delete": {
        "summary": "Delete a profile",
        "tags": [
          "Profiles"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "schema": {
              "type": "string",
              "pattern": "^[a-z0-9]{24}$"
            },
            "required": true,
            "description": " - The profile ID to delete"
          }
        ],
        "responses": {
          "200": {
            "description": "Array containing the deleted profile ID",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  }
                }
              }
            }
          }
        },
        "x-permission": "profile.delete"
      }
    },
    "/v1/profiles/compatible/{id}": {
      "get": {
        "summary": "Get profiles compatible with a printer",
        "tags": [
          "Profiles"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "schema": {
              "type": "string",
              "pattern": "^[a-z0-9]{24}$"
            },
            "required": true,
            "description": " The printer ID"
          }
        ],
        "responses": {
          "200": {
            "description": "Profiles compatible with the specified printer",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CompatibleProfiles"
                }
              }
            }
          }
        },
        "x-permission": "profile.view"
      }
    },
    "/v1/profiles/compatible/{machineModel}/{nozzleDiameter}": {
      "get": {
        "summary": "Get profiles by machine model and nozzle size",
        "tags": [
          "Profiles"
        ],
        "parameters": [
          {
            "name": "machineModel",
            "in": "path",
            "schema": {
              "type": "string"
            },
            "required": true,
            "description": " - The printer model name"
          },
          {
            "name": "nozzleDiameter",
            "in": "path",
            "schema": {
              "type": "string"
            },
            "required": true,
            "description": " - The nozzle diameter (e.g., \"0.4\")"
          }
        ],
        "responses": {
          "200": {
            "description": "Profiles matching the specified criteria",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CompatibleProfiles"
                }
              }
            }
          }
        },
        "x-permission": "profile.view"
      }
    },
    "/v1/profiles/{id}/view": {
      "get": {
        "summary": "Get profile with inheritance details",
        "tags": [
          "Profiles"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "schema": {
              "type": "string"
            },
            "required": true,
            "description": " - The profile ID"
          },
          {
            "name": "version",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "slicerEngine",
            "in": "query",
            "schema": {
              "oneOf": [
                {
                  "const": "orcaslicer"
                },
                {
                  "const": "bambu-studio"
                },
                {
                  "const": "prusaslicer"
                },
                {
                  "const": "superslicer"
                }
              ]
            },
            "required": false
          }
        ],
        "responses": {
          "200": {
            "description": "Profile data with inheritance information",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProfileWithInheritance"
                }
              }
            }
          }
        },
        "x-permission": "profile.view"
      }
    },
    "/v1/profiles/{id}/versions": {
      "get": {
        "summary": "Get available slicer versions for a profile",
        "tags": [
          "Profiles"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "schema": {
              "type": "string",
              "pattern": "^[a-z0-9]{24}$"
            },
            "required": true,
            "description": " - The profile ID"
          }
        ],
        "responses": {
          "200": {
            "description": "List of slicer versions that have the profile's inherited parent",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "version": {
                        "type": "string"
                      },
                      "patch": {
                        "oneOf": [
                          {
                            "type": "null"
                          },
                          {
                            "type": "string"
                          }
                        ]
                      },
                      "slicer": {
                        "oneOf": [
                          {
                            "const": "orcaslicer"
                          },
                          {
                            "const": "bambu-studio"
                          },
                          {
                            "const": "prusaslicer"
                          },
                          {
                            "const": "superslicer"
                          }
                        ]
                      }
                    },
                    "required": [
                      "version",
                      "patch",
                      "slicer"
                    ]
                  }
                }
              }
            }
          }
        },
        "x-permission": "profile.view"
      }
    },
    "/v1/profiles/preview": {
      "post": {
        "summary": "Preview profiles from a file",
        "tags": [
          "Profiles"
        ],
        "parameters": [],
        "requestBody": {
          "description": "- File containing profiles to preview",
          "content": {
            "multipart/form-data": {
              "schema": {
                "$ref": "#/components/schemas/ProfileUploadBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Preview of profiles found in the file",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProfilePreviewResult"
                }
              }
            }
          }
        },
        "x-permission": "profile.create"
      }
    },
    "/v1/profiles/import": {
      "post": {
        "summary": "Import profiles from a file",
        "tags": [
          "Profiles"
        ],
        "parameters": [],
        "requestBody": {
          "description": "- File and import options",
          "content": {
            "multipart/form-data": {
              "schema": {
                "$ref": "#/components/schemas/ProfileImportBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Results of the import operation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProfileImportResult"
                }
              }
            }
          }
        },
        "x-permission": "profile.create"
      }
    },
    "/v1/profiles/import-data": {
      "post": {
        "summary": "Import pre-parsed profiles",
        "tags": [
          "Profiles"
        ],
        "parameters": [],
        "requestBody": {
          "description": "- Pre-parsed profile data and import options",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ProfileImportDataBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Results of the import operation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProfileImportResult"
                }
              }
            }
          }
        },
        "x-permission": "profile.create"
      }
    },
    "/v1/print-jobs/merge": {
      "post": {
        "summary": "Merge print jobs onto one plate",
        "description": "Merge two or more compatible pending jobs onto a single build plate. The\nserver re-validates compatibility, recomputes the plate layout\nauthoritatively, creates the merged (parent) job, links the children, and\nkicks asynchronous merged-3MF authoring.",
        "tags": [
          "Print_Jobs"
        ],
        "parameters": [],
        "requestBody": {
          "description": "Job ids to merge and the target bed size",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/MergePlatesRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "The merged parent job id and the committed layout",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MergePlatesResponse"
                }
              }
            }
          }
        },
        "x-permission": "queue.manage"
      }
    },
    "/v1/print-jobs/footprints": {
      "post": {
        "summary": "Get print job footprint hulls",
        "description": "Trusted convex footprint hulls for a set of print jobs — the true XY\noutlines the plate-merge packer collides instead of bounding boxes,\nresolved per JOB on the server: a stored part hull applies only when it\nwas computed from the exact source file the job's build snapshot prints.\nThe browser's merge preview and merged-plate thumbnails must use this\n(not per-part metadata) so they lay out and draw exactly what the server\nwould commit; the build snapshots needed for that check are not synced\nto clients. Jobs without a trusted hull are absent from the result.",
        "tags": [
          "Print_Jobs"
        ],
        "parameters": [],
        "requestBody": {
          "description": "IDs of the jobs to look up",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/GetJobFootprintHullsRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Trusted footprint hulls keyed by job id",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetJobFootprintHullsResult"
                }
              }
            }
          }
        },
        "x-permission": "queue.view"
      }
    },
    "/v1/print-jobs/{id}/unmerge": {
      "post": {
        "summary": "Un-merge a plate",
        "description": "Un-merge a plate: release its child jobs back to Pending and delete the\nmerged parent. Allowed while the parent is Pending or Assigned (pre-slicing).",
        "tags": [
          "Print_Jobs"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "schema": {
              "type": "string",
              "pattern": "^[a-z0-9]{24}$"
            },
            "required": true,
            "description": " The merged (parent) print job id"
          }
        ],
        "responses": {
          "201": {
            "description": "The child job ids released back to the queue",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnmergePlateResponse"
                }
              }
            }
          }
        },
        "x-permission": "queue.manage"
      }
    },
    "/v1/print-jobs": {
      "get": {
        "summary": "Get all print jobs",
        "description": "List all print jobs including queued, printing, and completed jobs",
        "tags": [
          "Print_Jobs"
        ],
        "parameters": [
          {
            "name": "partBuildId",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "quantityIndex",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "quantityTotal",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "thumbnailUri",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "coloredThumbnailUri",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "buildThumbnailUri",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "cameraThumbnailUri",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false,
            "description": "Camera-captured snapshot from the moment Fuse detected the last\nlayer of the print. Persisted to the files bucket. Null unless Fuse\nsuccessfully captured and uploaded."
          },
          {
            "name": "timelapseUri",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false,
            "description": "MP4 timelapse Fuse encoded from frames captured during the print and\nuploaded to the snapshots bucket under the `timelapses/` prefix.\nNull unless the store has timelapses enabled and Fuse uploaded\nsuccessfully."
          },
          {
            "name": "fuseTelemetryUri",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false,
            "description": "Fuse flight-recorder artifact for the current attempt (gzipped JSONL\nunder the permanent `telemetry/` prefix). Confirmed asynchronously by\nFuse after the print ends, like `timelapseUri`."
          },
          {
            "name": "attemptNumber",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false,
            "description": "1-based counter of print attempts (bumped on requeue once the attempt\nprinted or reached a terminal state). Keys per-attempt media/telemetry\nobjects and aligns with `print_history.attemptNumber`."
          },
          {
            "name": "sendFailureCount",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false,
            "description": "Consecutive send-give-up cycles (EnsureJobStarted exhausted its retries\nwithout the printer starting). Reset on retry from a terminal state."
          },
          {
            "name": "filesToPrint",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "slicerInputHash",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "isGcodeCached",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "slicedGcodeUri",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "partId",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "partName",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "createdByActorId",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false,
            "title": "Who queued this job — see the column comments on `print_jobs`",
            "description": "Who queued this job — see the column comments on `print_jobs`."
          },
          {
            "name": "createdByType",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "createdByLabel",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "skuId",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "skuName",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "parameterOverrides",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "orderId",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "label",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "orderItemId",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "linkedPartId",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "skuInstance",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "queueOrder",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "priority",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "requiredPrinterTags",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "overriddenProcessProfileId",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "taskId",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "profileUris",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "assignedPrinterId",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "assignmentStartedAt",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "assignmentCompletedAt",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "printingStartedAt",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "printingCompletedAt",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "cancelledAt",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "status",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "errorMessage",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "hidden",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "logsUri",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "extensions",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "skipObjectsData",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "skipObjectIds",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false,
            "description": "User-selected objects to skip on this job's plate, as identifyId strings\n(resolved at queue time from the part's plate object list). When the print\nstarts, a Bambu `skip_objects` command is auto-sent for these. Null/empty\nmeans print everything. Stored as strings; converted to integer obj_list at\nsend time."
          },
          {
            "name": "materialMapping",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "materialAssignments",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "gcodeAnalysisSha256",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false,
            "description": "SHA256 hash of analyzed gcode content — stable key for extrusion lookup"
          },
          {
            "name": "groupId",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false,
            "description": "Group identifier for visually-collapsed print-queue rows. Assigned at\nemission (one per plate cluster within a build). Split mints fresh\ngroupIds for non-first buckets. May be null for legacy rows that predate\nthe grouping feature."
          },
          {
            "name": "parentJobId",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false,
            "description": "Set on jobs merged onto a shared plate; points at the merged (parent)\njob. Children mirror the parent's status and are excluded from\nindependent matching."
          },
          {
            "name": "boundingBox",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false,
            "title": "{x,y,z} mm bounding box of what this job prints. Null until computed",
            "description": "{x,y,z} mm bounding box of what this job prints. Null until computed."
          },
          {
            "name": "customMetadata",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "id",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "storeId",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "createdAt",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "updatedAt",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false,
            "title": "Sort"
          },
          {
            "name": "limit",
            "in": "query",
            "schema": {
              "type": "number",
              "minimum": 1,
              "maximum": 1000
            },
            "required": false,
            "title": "Limit"
          },
          {
            "name": "offset",
            "in": "query",
            "schema": {
              "type": "number",
              "minimum": 0
            },
            "required": false,
            "title": "Offset"
          },
          {
            "name": "fields",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false,
            "title": "Fields"
          },
          {
            "name": "include",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false,
            "title": "Include"
          },
          {
            "name": "meta",
            "in": "query",
            "schema": {
              "type": "boolean"
            },
            "required": false,
            "title": "Meta"
          },
          {
            "name": "hints",
            "in": "query",
            "schema": {
              "type": "boolean"
            },
            "required": false,
            "title": "Hints"
          }
        ],
        "responses": {
          "200": {
            "description": "All print jobs with their current status",
            "content": {
              "application/json": {
                "schema": {
                  "oneOf": [
                    {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/PrintJob"
                      }
                    },
                    {
                      "$ref": "#/components/schemas/SearchResponse"
                    }
                  ]
                }
              }
            }
          }
        },
        "x-permission": "queue.view"
      }
    },
    "/v1/print-jobs/search": {
      "post": {
        "summary": "Search print jobs",
        "description": "Search print jobs with complex filters",
        "tags": [
          "Print_Jobs"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SearchQueryDtoPrintJob"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SearchResponse"
                }
              }
            }
          }
        },
        "x-permission": "queue.view"
      }
    },
    "/v1/print-jobs/stats/completed-count": {
      "get": {
        "summary": "Get completed job count",
        "description": "Get total number of completed print jobs",
        "tags": [
          "Print_Jobs"
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "Count of completed jobs",
            "content": {
              "application/json": {
                "schema": {
                  "type": "number"
                }
              }
            }
          }
        },
        "x-permission": "queue.view"
      }
    },
    "/v1/print-jobs/pause": {
      "patch": {
        "summary": "Pause print jobs",
        "description": "Send printer a command to pause the job",
        "tags": [
          "Print_Jobs"
        ],
        "parameters": [],
        "requestBody": {
          "description": "IDs of jobs to pause",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PrintJobOperationRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "IDs of paused jobs",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "string",
                    "pattern": "^[a-z0-9]{24}$"
                  }
                }
              }
            }
          }
        },
        "x-permission": "queue.manage"
      }
    },
    "/v1/print-jobs/cancel": {
      "patch": {
        "summary": "Cancel print jobs",
        "description": "Cancel job(s) that are queued or in progress.  If in progress (printing), also sends the \nprinter(s) a stop/cancel command.",
        "tags": [
          "Print_Jobs"
        ],
        "parameters": [],
        "requestBody": {
          "description": "IDs of jobs to cancel",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CancelPrintJobsRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "IDs of cancelled jobs",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "string",
                    "pattern": "^[a-z0-9]{24}$"
                  }
                }
              }
            }
          }
        },
        "x-permission": "queue.manage, job.delete.own"
      }
    },
    "/v1/print-jobs/resume": {
      "patch": {
        "summary": "Resume paused jobs",
        "description": "Send printer a command to resume a paused job",
        "tags": [
          "Print_Jobs"
        ],
        "parameters": [],
        "requestBody": {
          "description": "IDs of jobs to resume",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PrintJobOperationRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "IDs of resumed jobs",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "string",
                    "pattern": "^[a-z0-9]{24}$"
                  }
                }
              }
            }
          }
        },
        "x-permission": "queue.manage"
      }
    },
    "/v1/print-jobs/retry": {
      "patch": {
        "summary": "Retry failed jobs",
        "description": "Retry cancelled or failed jobs by resetting them to queued status",
        "tags": [
          "Print_Jobs"
        ],
        "parameters": [],
        "requestBody": {
          "description": "IDs of jobs to retry",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PrintJobOperationRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "IDs of jobs reset for retry",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "string",
                    "pattern": "^[a-z0-9]{24}$"
                  }
                }
              }
            }
          }
        },
        "x-permission": "queue.manage"
      }
    },
    "/v1/print-jobs/archived": {
      "get": {
        "summary": "List archived jobs",
        "description": "List archived (hidden) print jobs with cursor-based pagination",
        "tags": [
          "Print_Jobs"
        ],
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "cursor",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "orderId",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "orderItemId",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          }
        ],
        "responses": {
          "200": {
            "description": "Paginated list of archived jobs",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ArchivedPrintJobsResponse"
                }
              }
            }
          }
        },
        "x-permission": "queue.view"
      }
    },
    "/v1/print-jobs/clear": {
      "patch": {
        "summary": "Clear finished jobs",
        "description": "Archive completed or cancelled jobs, hiding them from the queue and sync",
        "tags": [
          "Print_Jobs"
        ],
        "parameters": [],
        "requestBody": {
          "description": "IDs of jobs to clear",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PrintJobOperationRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "IDs of cleared jobs",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "string",
                    "pattern": "^[a-z0-9]{24}$"
                  }
                }
              }
            }
          }
        },
        "x-permission": "job.delete.all"
      }
    },
    "/v1/print-jobs/move-to-queue-front": {
      "patch": {
        "summary": "Prioritize jobs",
        "description": "Move jobs to the front of the queue for priority printing",
        "tags": [
          "Print_Jobs"
        ],
        "parameters": [],
        "requestBody": {
          "description": "IDs of jobs to prioritize",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PrintJobOperationRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "IDs of prioritized jobs",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "string",
                    "pattern": "^[a-z0-9]{24}$"
                  }
                }
              }
            }
          }
        },
        "x-permission": "queue.override"
      }
    },
    "/v1/print-jobs/move-to-queue-back": {
      "patch": {
        "summary": "Move jobs to the back of the queue",
        "description": "Move jobs to the back of the queue, after every other pending job of\nthe same priority, in the order given. A job in a group takes its whole\ngroup with it. Use it to let other jobs print first without lowering\nthese to low priority.",
        "tags": [
          "Print_Jobs"
        ],
        "parameters": [],
        "requestBody": {
          "description": "IDs of jobs to move",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PrintJobOperationRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "IDs of jobs whose place in the queue changed",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "string",
                    "pattern": "^[a-z0-9]{24}$"
                  }
                }
              }
            }
          }
        },
        "x-permission": "queue.override"
      }
    },
    "/v1/print-jobs/groups/quantity": {
      "patch": {
        "summary": "Adjust group quantity",
        "description": "Adjust the total quantity of a print-queue group. Clones or trims jobs so\nthe group ends up with exactly `targetQuantity` pending members. Order-\nlinked groups are rejected — use the order flow instead.",
        "tags": [
          "Print_Jobs"
        ],
        "parameters": [],
        "requestBody": {
          "description": "Group key and new total quantity (1..500)",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AdjustGroupQuantityRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "The updated group",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AdjustGroupQuantityResponse"
                }
              }
            }
          }
        },
        "x-permission": "queue.manage"
      }
    },
    "/v1/print-jobs/groups/split": {
      "post": {
        "summary": "Split group",
        "description": "Split a print-queue group into multiple smaller groups while preserving\nqueue order. Bucket 0 keeps the original groupId; each subsequent bucket\nreceives a fresh id.",
        "tags": [
          "Print_Jobs"
        ],
        "parameters": [],
        "requestBody": {
          "description": "Group key and bucket sizes summing to the group size",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SplitGroupRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "The new groups in queue order",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SplitGroupResponse"
                }
              }
            }
          }
        },
        "x-permission": "queue.manage"
      }
    },
    "/v1/print-jobs/groups/reorder": {
      "patch": {
        "summary": "Reorder group",
        "description": "Reorder an entire print-queue group as a contiguous block.",
        "tags": [
          "Print_Jobs"
        ],
        "parameters": [],
        "requestBody": {
          "description": "Group id and target index in the pending queue",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ReorderGroupRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReorderGroupResponse"
                }
              }
            }
          }
        },
        "x-permission": "queue.manage"
      }
    },
    "/v1/print-jobs/{id}/matching-details": {
      "get": {
        "summary": "Get job matching details",
        "description": "Get details about why a job is or isn't matching to printers",
        "tags": [
          "Print_Jobs"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "schema": {
              "type": "string",
              "pattern": "^[a-z0-9]{24}$"
            },
            "required": true,
            "description": " The print job ID"
          }
        ],
        "responses": {
          "200": {
            "description": "Matching criteria and compatible printers",
            "content": {
              "application/json": {
                "schema": {
                  "oneOf": [
                    {
                      "type": "null"
                    },
                    {
                      "$ref": "#/components/schemas/PrintJobMatchingDetail"
                    }
                  ]
                }
              }
            }
          }
        },
        "x-permission": "queue.view"
      }
    },
    "/v1/print-jobs/{id}/matching-troubleshoot": {
      "get": {
        "summary": "Get job matching troubleshooting details",
        "description": "Get troubleshooting details for why a job is or isn't matching to each printer",
        "tags": [
          "Print_Jobs"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "schema": {
              "type": "string",
              "pattern": "^[a-z0-9]{24}$"
            },
            "required": true,
            "description": " The print job ID"
          }
        ],
        "responses": {
          "200": {
            "description": "Detailed checklist of matching criteria for all printers",
            "content": {
              "application/json": {
                "schema": {
                  "oneOf": [
                    {
                      "type": "null"
                    },
                    {
                      "$ref": "#/components/schemas/PrintJobMatchingTroubleshoot"
                    }
                  ]
                }
              }
            }
          }
        },
        "x-permission": "queue.view"
      }
    },
    "/v1/print-jobs/queue/run": {
      "post": {
        "summary": "Run the queue matcher now",
        "description": "Run the queue matcher synchronously, bypassing the per-store\n\"Automatic Queue Matching\" gate. Use this for an explicit \"match the\nqueue right now\" action (e.g. after staging printer/material changes\nwith auto matching turned off). Returns the resulting (printer, job)\npairs so the caller can render them or fold them into a future\ndry-run/preview UI.",
        "tags": [
          "Print_Jobs"
        ],
        "parameters": [],
        "responses": {
          "201": {
            "description": "The matcher's outcome: assignments produced or a skip reason",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RunQueueResponse"
                }
              }
            }
          }
        },
        "x-permission": "queue.manage"
      }
    },
    "/v1/print-jobs/queue/group-matching": {
      "post": {
        "summary": "Get compatible printers per queue group",
        "description": "Bulk-evaluate the pending print queue and return the match verdict per\nprinter for each queue group. The matcher runs once per group (not once\nper job) since every job in a group shares the same part, materials, and\nrequired tags.\n\nThe response carries verdicts only (`matched`, `compatible`,\n`firstFailedCheck`) — for the per-check reasons behind a verdict, call\n`GET /v1/print-jobs/{id}/matching-troubleshoot` for the group's\nrepresentative job. The number of evaluated groups is capped so the\nresponse stays bounded on large farms; when the pending queue exceeds\nthat cap the tail is omitted and `truncated` is true. Scope the request\nwith `printJobIds` to evaluate a specific group.",
        "tags": [
          "Print_Jobs"
        ],
        "parameters": [],
        "requestBody": {
          "description": "Optional subset of pending print job IDs to consider; defaults to the entire pending queue",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/QueueGroupMatchingRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Per-group printer compatibility, one entry per distinct groupId",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/QueueGroupMatchingResponse"
                }
              }
            }
          }
        },
        "x-permission": "queue.view"
      }
    },
    "/v1/print-jobs/{id}/send-to-printer": {
      "post": {
        "summary": "Send job directly to a printer",
        "description": "Send a specific pending job directly to a chosen printer, skipping the\nglobal queue matcher. The printer does not need to be marked ready —\nmarking ready re-runs queue matching, which is the side effect this\nendpoint exists to avoid. The atomic printer claim and the standard\ncompatibility checks still apply (bypass with `force=true` at your own\nrisk).",
        "tags": [
          "Print_Jobs"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "schema": {
              "type": "string",
              "pattern": "^[a-z0-9]{24}$"
            },
            "required": true,
            "description": " The print job ID"
          }
        ],
        "requestBody": {
          "description": "Target printer and optional force flag",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SendPrintJobToPrinterRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "The updated print job in `assigned` status",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SendPrintJobToPrinterResponse"
                }
              }
            }
          }
        },
        "x-permission": "queue.manage"
      }
    },
    "/v1/print-jobs/{id}/reorder": {
      "patch": {
        "summary": "Reorder a job",
        "description": "Change a job's position in the print queue",
        "tags": [
          "Print_Jobs"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "schema": {
              "type": "string",
              "pattern": "^[a-z0-9]{24}$"
            },
            "required": true,
            "description": " The print job ID"
          }
        ],
        "requestBody": {
          "description": "New queue position and priority",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ReorderPrintJobRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Success. The response has no body."
          }
        },
        "x-permission": "queue.manage"
      }
    },
    "/v1/print-jobs/bulk-reorder": {
      "patch": {
        "summary": "Bulk reorder jobs",
        "description": "Reorder multiple jobs at once",
        "tags": [
          "Print_Jobs"
        ],
        "parameters": [],
        "requestBody": {
          "description": "Array of job IDs with their new positions",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/BulkReorderPrintJobsRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Success. The response has no body."
          }
        },
        "x-permission": "queue.manage"
      }
    },
    "/v1/print-jobs/{id}/start": {
      "patch": {
        "summary": "Acknowledge job start",
        "description": "Confirm whether a job started successfully on its assigned printer.\nA successful start moves the job to `printing`; an unsuccessful one\nmarks it `failed` and frees the printer. Only jobs that are\n`sending-to-printer` or `ready-for-printer` are affected; for any other\nstate the call is a no-op.",
        "tags": [
          "Print_Jobs"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "schema": {
              "type": "string",
              "pattern": "^[a-z0-9]{24}$"
            },
            "required": true,
            "description": " The print job ID"
          }
        ],
        "requestBody": {
          "description": "Whether the job started successfully",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AcknowledgePrintJobStartRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Success. The response has no body."
          }
        },
        "x-permission": "queue.manage"
      }
    },
    "/v1/print-jobs/{id}": {
      "get": {
        "summary": "Get print job",
        "description": "Get a single print job by ID",
        "tags": [
          "Print_Jobs"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "schema": {
              "type": "string",
              "pattern": "^[a-z0-9]{24}$"
            },
            "required": true,
            "description": " The print job ID"
          }
        ],
        "responses": {
          "200": {
            "description": "The print job details",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PrintJob"
                }
              }
            }
          }
        },
        "x-permission": "queue.view"
      },
      "patch": {
        "summary": "Update print job",
        "description": "Update a print job's properties",
        "tags": [
          "Print_Jobs"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "schema": {
              "type": "string",
              "pattern": "^[a-z0-9]{24}$"
            },
            "required": true,
            "description": " The print job ID"
          }
        ],
        "requestBody": {
          "description": "Fields to update",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PartialPrintJobInsert"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "The updated print job",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PrintJob"
                }
              }
            }
          }
        },
        "x-permission": "job.edit.all"
      }
    },
    "/v1/stores": {
      "get": {
        "summary": "Get all stores for current user",
        "tags": [
          "Stores"
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "List of stores accessible to the user",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Store"
                  }
                }
              }
            }
          }
        }
      },
      "patch": {
        "summary": "Update organization settings",
        "tags": [
          "Stores"
        ],
        "parameters": [],
        "requestBody": {
          "description": "The fields to update",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/StoreUpdate"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Updated store",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Store"
                }
              }
            }
          }
        },
        "x-permission": "organization.edit"
      }
    },
    "/v1/skus": {
      "get": {
        "summary": "List all SKUs",
        "tags": [
          "SKUs"
        ],
        "parameters": [
          {
            "name": "sku",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "title",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "description",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "externalId",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "externalProvider",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "folderId",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "totalCogs",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "customMetadata",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "id",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "storeId",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "createdAt",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "updatedAt",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false,
            "title": "Sort"
          },
          {
            "name": "limit",
            "in": "query",
            "schema": {
              "type": "number",
              "minimum": 1,
              "maximum": 1000
            },
            "required": false,
            "title": "Limit"
          },
          {
            "name": "offset",
            "in": "query",
            "schema": {
              "type": "number",
              "minimum": 0
            },
            "required": false,
            "title": "Offset"
          },
          {
            "name": "fields",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false,
            "title": "Fields"
          },
          {
            "name": "include",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false,
            "title": "Include"
          },
          {
            "name": "meta",
            "in": "query",
            "schema": {
              "type": "boolean"
            },
            "required": false,
            "title": "Meta"
          },
          {
            "name": "hints",
            "in": "query",
            "schema": {
              "type": "boolean"
            },
            "required": false,
            "title": "Hints"
          }
        ],
        "responses": {
          "200": {
            "description": "Array of all SKUs in the store with their linked parts",
            "content": {
              "application/json": {
                "schema": {
                  "oneOf": [
                    {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/SkuLinkedPartsRelation"
                      }
                    },
                    {
                      "$ref": "#/components/schemas/SearchResponse"
                    }
                  ]
                }
              }
            }
          }
        },
        "x-permission": "sku.view"
      },
      "post": {
        "summary": "Create a new SKU",
        "tags": [
          "SKUs"
        ],
        "parameters": [],
        "requestBody": {
          "description": "The SKU data including name, price, and linked parts",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SkuInsert"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "The newly created SKU with its relations",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SkuLinkedPartsRelation"
                }
              }
            }
          }
        },
        "x-permission": "sku.create"
      }
    },
    "/v1/skus/search": {
      "post": {
        "summary": "Search SKUs",
        "description": "Search SKUs with complex filters",
        "tags": [
          "SKUs"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SearchQueryDtoSku"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SearchResponse"
                }
              }
            }
          }
        },
        "x-permission": "sku.view"
      }
    },
    "/v1/skus/{id}": {
      "get": {
        "summary": "Get a specific SKU",
        "tags": [
          "SKUs"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "schema": {
              "type": "string",
              "pattern": "^[a-z0-9]{24}$"
            },
            "required": true,
            "description": " The unique identifier of the SKU"
          }
        ],
        "responses": {
          "200": {
            "description": "The SKU with its linked parts and part details",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SkuLinkedPartsWithPartRelation"
                }
              }
            }
          }
        },
        "x-permission": "sku.view"
      },
      "patch": {
        "summary": "Update a SKU",
        "tags": [
          "SKUs"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "schema": {
              "type": "string",
              "pattern": "^[a-z0-9]{24}$"
            },
            "required": true,
            "description": " The unique identifier of the SKU to update"
          }
        ],
        "requestBody": {
          "description": "The partial SKU data to update",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PartialSkuInsert"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "The updated SKU",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Sku"
                }
              }
            }
          }
        },
        "x-permission": "sku.edit"
      },
      "delete": {
        "summary": "Delete a SKU",
        "tags": [
          "SKUs"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "schema": {
              "type": "string",
              "pattern": "^[a-z0-9]{24}$"
            },
            "required": true,
            "description": " The unique identifier of the SKU to delete"
          }
        ],
        "responses": {
          "200": {
            "description": "Success confirmation",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  }
                }
              }
            }
          }
        },
        "x-permission": "sku.delete"
      }
    },
    "/v1/skus/{id}/duplicate": {
      "post": {
        "summary": "Duplicate a SKU",
        "description": "Creates a copy of an existing SKU under a new, unique SKU code. The copy carries\nthe linked parts, variant options, cost entries and description of the original.",
        "tags": [
          "SKUs"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "schema": {
              "type": "string",
              "pattern": "^[a-z0-9]{24}$"
            },
            "required": true,
            "description": " The unique identifier of the SKU to copy"
          }
        ],
        "requestBody": {
          "description": "The new SKU code, and optionally a title, folder and which parts of the original to carry over",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SkuDuplicateRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "The newly created SKU with its linked parts",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SkuLinkedPartsRelation"
                }
              }
            }
          }
        },
        "x-permission": "sku.create, sku.view"
      }
    },
    "/v1/skus/delete-many": {
      "post": {
        "summary": "Delete multiple SKUs",
        "tags": [
          "SKUs"
        ],
        "parameters": [],
        "requestBody": {
          "description": "Array of SKU identifiers to delete",
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "type": "string",
                  "pattern": "^[a-z0-9]{24}$"
                }
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Array of successfully deleted SKU identifiers",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "string",
                    "pattern": "^[a-z0-9]{24}$"
                  }
                }
              }
            }
          }
        },
        "x-permission": "sku.delete"
      }
    },
    "/v2/builds": {
      "post": {
        "summary": "Create and queue prints",
        "description": "Create prints containing parts and/or SKUs.\n\nYou can issue prints by specifying individual parts and/or complete SKUs (products).\nEach part or SKU can be customized with specific quantities, parameters, materials, and other configuration options.",
        "tags": [
          "Printing"
        ],
        "parameters": [],
        "requestBody": {
          "description": "- Build configuration specifying parts and SKUs to include",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/BuildConfigV2"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Result containing created part builds and SKU builds with their assigned IDs",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BuildResultV2"
                }
              }
            }
          }
        },
        "x-permission": "build.create"
      }
    },
    "/v2/builds/preview": {
      "post": {
        "summary": "Preview part builds and jobs (dry run)",
        "description": "Preview builds and jobs that would be created without queueing anything.",
        "tags": [
          "Printing"
        ],
        "parameters": [],
        "requestBody": {
          "description": "- Build configuration specifying parts and SKUs to preview",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/BuildConfigV2"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Preview of part builds and jobs grouped by part build",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BuildPreviewV2"
                }
              }
            }
          }
        },
        "x-permission": "build.create"
      }
    },
    "/v1/part-builds": {
      "get": {
        "summary": "Get all part builds for a store",
        "tags": [
          "Part_Builds"
        ],
        "parameters": [
          {
            "name": "partId",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "skuBuildId",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "skuId",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "skuName",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "label",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "partCopy",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "requiredPrinterTags",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "quantity",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "numPartsPerSku",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "skuInstanceStart",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "parameterOverrides",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "status",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "outputFiles",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "thumbnailUri",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "assignmentStartedAt",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "assignmentCompletedAt",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "printingStartedAt",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "printingCompletedAt",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "printStatus",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "extensions",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "materialAssignments",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "priority",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "position",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "orderId",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "orderItemId",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "linkedPartId",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "dismissed",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "customMetadata",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "id",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "storeId",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "createdAt",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "updatedAt",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false,
            "title": "Sort"
          },
          {
            "name": "limit",
            "in": "query",
            "schema": {
              "type": "number",
              "minimum": 1,
              "maximum": 1000
            },
            "required": false,
            "title": "Limit"
          },
          {
            "name": "offset",
            "in": "query",
            "schema": {
              "type": "number",
              "minimum": 0
            },
            "required": false,
            "title": "Offset"
          },
          {
            "name": "fields",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false,
            "title": "Fields"
          },
          {
            "name": "include",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false,
            "title": "Include"
          },
          {
            "name": "meta",
            "in": "query",
            "schema": {
              "type": "boolean"
            },
            "required": false,
            "title": "Meta"
          },
          {
            "name": "hints",
            "in": "query",
            "schema": {
              "type": "boolean"
            },
            "required": false,
            "title": "Hints"
          }
        ],
        "responses": {
          "200": {
            "description": "List of part builds with their steps and print jobs",
            "content": {
              "application/json": {
                "schema": {
                  "oneOf": [
                    {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/PartBuildWithRelation"
                      }
                    },
                    {
                      "$ref": "#/components/schemas/SearchResponse"
                    }
                  ]
                }
              }
            }
          }
        },
        "x-permission": "queue.view"
      }
    },
    "/v1/part-builds/search": {
      "post": {
        "summary": "Search part builds",
        "description": "Search part builds with complex filters",
        "tags": [
          "Part_Builds"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SearchQueryDtoPartBuild"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SearchResponse"
                }
              }
            }
          }
        },
        "x-permission": "queue.view"
      }
    },
    "/v1/part-builds/{id}": {
      "get": {
        "summary": "Get a specific part build by ID",
        "tags": [
          "Part_Builds"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "schema": {
              "type": "string",
              "pattern": "^[a-z0-9]{24}$"
            },
            "required": true,
            "description": " - Part build identifier"
          }
        ],
        "responses": {
          "200": {
            "description": "Part build details with steps and print jobs, or undefined if not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PartBuildWithRelation"
                }
              }
            }
          }
        },
        "x-permission": "queue.view"
      }
    },
    "/v1/part-builds/archive": {
      "patch": {
        "summary": "Archive part builds",
        "description": "Archive part builds, hiding them from the queue and sync",
        "tags": [
          "Part_Builds"
        ],
        "parameters": [],
        "requestBody": {
          "description": "- Request containing part build IDs to archive",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PartBuildOperationRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "List of archived part build IDs",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "string",
                    "pattern": "^[a-z0-9]{24}$"
                  }
                }
              }
            }
          }
        },
        "x-permission": "queue.manage"
      }
    },
    "/v1/part-builds/restore": {
      "patch": {
        "summary": "Restore archived part builds",
        "description": "Restore archived part builds back to the queue",
        "tags": [
          "Part_Builds"
        ],
        "parameters": [],
        "requestBody": {
          "description": "- Request containing part build IDs to restore",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PartBuildOperationRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "List of restored part build IDs",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "string",
                    "pattern": "^[a-z0-9]{24}$"
                  }
                }
              }
            }
          }
        },
        "x-permission": "queue.manage"
      }
    },
    "/v1/part-builds/dismiss": {
      "patch": {
        "summary": "Dismiss part builds (deprecated)",
        "deprecated": true,
        "tags": [
          "Part_Builds"
        ],
        "parameters": [],
        "requestBody": {
          "description": "- Request containing part build IDs to dismiss",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PartBuildOperationRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "List of dismissed part build IDs",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "string",
                    "pattern": "^[a-z0-9]{24}$"
                  }
                }
              }
            }
          }
        },
        "x-permission": "queue.manage"
      }
    },
    "/v1/users": {
      "get": {
        "summary": "List store users",
        "description": "List the members of your store with their roles, permissions and\nstatus. Pending and expired invitations are included with status\n`invited` or `expired`. Paginate with `limit` (default 50) and `offset`.",
        "tags": [
          "Users"
        ],
        "parameters": [
          {
            "name": "search",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "role",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "status",
            "in": "query",
            "schema": {
              "oneOf": [
                {
                  "const": "active"
                },
                {
                  "const": "inactive"
                }
              ]
            },
            "required": false
          },
          {
            "name": "limit",
            "in": "query",
            "schema": {
              "type": "number"
            },
            "required": false
          },
          {
            "name": "offset",
            "in": "query",
            "schema": {
              "type": "number"
            },
            "required": false
          }
        ],
        "responses": {
          "200": {
            "description": "Users in the store and the total count",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetUsersResponse"
                }
              }
            }
          }
        },
        "x-permission": "user.view"
      }
    },
    "/v1/users/{userId}": {
      "get": {
        "summary": "Get user details",
        "description": "Get one store member with their roles, permissions and recent activity.",
        "tags": [
          "Users"
        ],
        "parameters": [
          {
            "name": "userId",
            "in": "path",
            "schema": {
              "type": "string"
            },
            "required": true,
            "description": " The user ID"
          }
        ],
        "responses": {
          "200": {
            "description": "The user with roles and permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UserDetails"
                }
              }
            }
          }
        },
        "x-permission": "user.view"
      },
      "delete": {
        "summary": "Remove a user",
        "description": "Remove a user from your store. To remove the store owner, pass\n`transferOwnershipTo` with the ID of the member who becomes the new owner.",
        "tags": [
          "Users"
        ],
        "parameters": [
          {
            "name": "userId",
            "in": "path",
            "schema": {
              "type": "string"
            },
            "required": true,
            "description": " The user ID"
          }
        ],
        "requestBody": {
          "description": "Optional ownership transfer when removing the owner",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RemoveUserRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Whether the user was removed, with a message",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "success": {
                      "type": "boolean"
                    },
                    "message": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "success",
                    "message"
                  ]
                }
              }
            }
          }
        },
        "x-permission": "user.delete"
      }
    },
    "/v1/users/invite": {
      "post": {
        "summary": "Invite a user",
        "description": "Invite someone to your store by email. Optionally give them a role or a\nset of individual permissions up front. The invitation email contains a\nlink that expires at `expiresAt`.",
        "tags": [
          "Users"
        ],
        "parameters": [],
        "requestBody": {
          "description": "Email address plus an optional role or permissions",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/InviteUserRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "The invitation ID, email and expiry",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InviteUserResponse"
                }
              }
            }
          }
        },
        "x-permission": "user.invite"
      }
    },
    "/v1/users/invite/{invitationId}/resend": {
      "post": {
        "summary": "Resend an invitation",
        "description": "Send a pending invitation email again.",
        "tags": [
          "Users"
        ],
        "parameters": [
          {
            "name": "invitationId",
            "in": "path",
            "schema": {
              "type": "string"
            },
            "required": true,
            "description": " The invitation ID returned when the user was invited"
          }
        ],
        "responses": {
          "201": {
            "description": "Whether the email was sent",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "success": {
                      "type": "boolean"
                    }
                  },
                  "required": [
                    "success"
                  ]
                }
              }
            }
          }
        },
        "x-permission": "user.invite"
      }
    },
    "/v1/users/invite/{invitationId}/revoke": {
      "post": {
        "summary": "Revoke an invitation",
        "description": "Cancel a pending invitation so its link can no longer be used.",
        "tags": [
          "Users"
        ],
        "parameters": [
          {
            "name": "invitationId",
            "in": "path",
            "schema": {
              "type": "string"
            },
            "required": true,
            "description": " The invitation ID returned when the user was invited"
          }
        ],
        "responses": {
          "201": {
            "description": "Whether the invitation was revoked",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "success": {
                      "type": "boolean"
                    }
                  },
                  "required": [
                    "success"
                  ]
                }
              }
            }
          }
        },
        "x-permission": "user.invite"
      }
    },
    "/v1/users/{userId}/roles": {
      "post": {
        "summary": "Assign a role",
        "description": "Add a role to a user, keeping the roles they already have. List\navailable roles with `GET /v1/roles`.",
        "tags": [
          "Users"
        ],
        "parameters": [
          {
            "name": "userId",
            "in": "path",
            "schema": {
              "type": "string"
            },
            "required": true,
            "description": " The user ID"
          }
        ],
        "requestBody": {
          "description": "The role to add",
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "roleId": {
                    "type": "string"
                  }
                },
                "required": [
                  "roleId"
                ]
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "The updated user",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UserDetails"
                }
              }
            }
          }
        },
        "x-permission": "permission.grant"
      },
      "put": {
        "summary": "Set user roles",
        "description": "Replace all of a user's roles with the given list.",
        "tags": [
          "Users"
        ],
        "parameters": [
          {
            "name": "userId",
            "in": "path",
            "schema": {
              "type": "string"
            },
            "required": true,
            "description": " The user ID"
          }
        ],
        "requestBody": {
          "description": "The complete list of role IDs the user should have",
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "roleIds": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  }
                },
                "required": [
                  "roleIds"
                ]
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "The updated user",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UserDetails"
                }
              }
            }
          }
        },
        "x-permission": "permission.grant, permission.revoke"
      }
    },
    "/v1/users/{userId}/roles/{roleId}": {
      "delete": {
        "summary": "Remove a role",
        "description": "Remove one role from a user.",
        "tags": [
          "Users"
        ],
        "parameters": [
          {
            "name": "userId",
            "in": "path",
            "schema": {
              "type": "string"
            },
            "required": true,
            "description": " The user ID"
          },
          {
            "name": "roleId",
            "in": "path",
            "schema": {
              "type": "string"
            },
            "required": true,
            "description": " The role ID to remove"
          }
        ],
        "responses": {
          "200": {
            "description": "The updated user",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UserDetails"
                }
              }
            }
          }
        },
        "x-permission": "permission.revoke"
      }
    },
    "/v1/users/{userId}/permissions": {
      "post": {
        "summary": "Grant permissions",
        "description": "Grant individual permissions to a user in addition to those from their\nroles.",
        "tags": [
          "Users"
        ],
        "parameters": [
          {
            "name": "userId",
            "in": "path",
            "schema": {
              "type": "string"
            },
            "required": true,
            "description": " The user ID"
          }
        ],
        "requestBody": {
          "description": "Permissions to grant",
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "permissions": {
                    "type": "array",
                    "items": {
                      "oneOf": [
                        {
                          "const": "organization.owner"
                        },
                        {
                          "const": "organization.edit"
                        },
                        {
                          "const": "organization.delete"
                        },
                        {
                          "const": "user.view"
                        },
                        {
                          "const": "user.invite"
                        },
                        {
                          "const": "user.edit"
                        },
                        {
                          "const": "user.delete"
                        },
                        {
                          "const": "permission.view"
                        },
                        {
                          "const": "permission.grant"
                        },
                        {
                          "const": "permission.revoke"
                        },
                        {
                          "const": "part.view"
                        },
                        {
                          "const": "part.create"
                        },
                        {
                          "const": "part.edit"
                        },
                        {
                          "const": "part.delete"
                        },
                        {
                          "const": "part.export"
                        },
                        {
                          "const": "sku.view"
                        },
                        {
                          "const": "sku.create"
                        },
                        {
                          "const": "sku.edit"
                        },
                        {
                          "const": "sku.delete"
                        },
                        {
                          "const": "material.view"
                        },
                        {
                          "const": "material.create"
                        },
                        {
                          "const": "material.edit"
                        },
                        {
                          "const": "material.delete"
                        },
                        {
                          "const": "material.instance.view"
                        },
                        {
                          "const": "material.instance.create"
                        },
                        {
                          "const": "material.instance.edit"
                        },
                        {
                          "const": "material.instance.delete"
                        },
                        {
                          "const": "printer.view"
                        },
                        {
                          "const": "printer.create"
                        },
                        {
                          "const": "printer.edit"
                        },
                        {
                          "const": "printer.delete"
                        },
                        {
                          "const": "printer.control"
                        },
                        {
                          "const": "printer.ready"
                        },
                        {
                          "const": "printer.config"
                        },
                        {
                          "const": "printer.stats"
                        },
                        {
                          "const": "printer.camera"
                        },
                        {
                          "const": "profile.view"
                        },
                        {
                          "const": "profile.create"
                        },
                        {
                          "const": "profile.edit"
                        },
                        {
                          "const": "profile.delete"
                        },
                        {
                          "const": "queue.view"
                        },
                        {
                          "const": "queue.manage"
                        },
                        {
                          "const": "queue.override"
                        },
                        {
                          "const": "job.create"
                        },
                        {
                          "const": "job.edit.own"
                        },
                        {
                          "const": "job.edit.all"
                        },
                        {
                          "const": "job.delete.own"
                        },
                        {
                          "const": "job.delete.all"
                        },
                        {
                          "const": "build.view"
                        },
                        {
                          "const": "build.create"
                        },
                        {
                          "const": "build.edit"
                        },
                        {
                          "const": "build.delete"
                        },
                        {
                          "const": "settings.view"
                        },
                        {
                          "const": "settings.edit"
                        },
                        {
                          "const": "integration.view"
                        },
                        {
                          "const": "integration.manage"
                        },
                        {
                          "const": "subscription.view"
                        },
                        {
                          "const": "subscription.manage"
                        },
                        {
                          "const": "analytics.view"
                        },
                        {
                          "const": "reports.generate"
                        },
                        {
                          "const": "audit.log.view"
                        },
                        {
                          "const": "audit.logs.configure"
                        },
                        {
                          "const": "order.view"
                        },
                        {
                          "const": "order.create"
                        },
                        {
                          "const": "order.edit"
                        },
                        {
                          "const": "order.delete"
                        },
                        {
                          "const": "order.print"
                        },
                        {
                          "const": "apiKey.view"
                        },
                        {
                          "const": "apiKey.create"
                        },
                        {
                          "const": "apiKey.edit"
                        },
                        {
                          "const": "apiKey.delete"
                        },
                        {
                          "const": "file.download"
                        },
                        {
                          "const": "maintenance.view"
                        },
                        {
                          "const": "maintenance.create"
                        },
                        {
                          "const": "maintenance.edit"
                        },
                        {
                          "const": "maintenance.delete"
                        },
                        {
                          "const": "maintenance.complete"
                        },
                        {
                          "const": "routing.manage"
                        },
                        {
                          "const": "customizer.manage"
                        },
                        {
                          "const": "macro.view"
                        },
                        {
                          "const": "macro.create"
                        },
                        {
                          "const": "macro.edit"
                        },
                        {
                          "const": "macro.delete"
                        },
                        {
                          "const": "macro.run"
                        },
                        {
                          "const": "card.view"
                        },
                        {
                          "const": "card.create"
                        },
                        {
                          "const": "card.edit"
                        },
                        {
                          "const": "card.delete"
                        },
                        {
                          "const": "layout.view"
                        },
                        {
                          "const": "layout.create"
                        },
                        {
                          "const": "layout.edit"
                        },
                        {
                          "const": "layout.delete"
                        },
                        {
                          "const": "classwork.viewer"
                        },
                        {
                          "const": "classwork.editor"
                        },
                        {
                          "const": "sequence.view"
                        },
                        {
                          "const": "sequence.edit"
                        },
                        {
                          "const": "qr.scan"
                        },
                        {
                          "const": "qr.manage"
                        },
                        {
                          "const": "internal.shopify"
                        },
                        {
                          "const": "queue.admin"
                        },
                        {
                          "const": "part.viewer"
                        },
                        {
                          "const": "part.editor"
                        },
                        {
                          "const": "sku.viewer"
                        },
                        {
                          "const": "sku.editor"
                        },
                        {
                          "const": "orders.admin"
                        },
                        {
                          "const": "material.viewer"
                        },
                        {
                          "const": "material.editor"
                        },
                        {
                          "const": "printer.viewer"
                        },
                        {
                          "const": "printer.editor"
                        },
                        {
                          "const": "profile.viewer"
                        },
                        {
                          "const": "profile.editor"
                        },
                        {
                          "const": "settings.admin"
                        },
                        {
                          "const": "subscription.admin"
                        }
                      ]
                    }
                  }
                },
                "required": [
                  "permissions"
                ]
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "The updated user",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UserDetails"
                }
              }
            }
          }
        },
        "x-permission": "permission.grant"
      },
      "delete": {
        "summary": "Revoke permissions",
        "description": "Revoke individually granted permissions from a user. Permissions that\ncome from the user's roles are not affected.",
        "tags": [
          "Users"
        ],
        "parameters": [
          {
            "name": "userId",
            "in": "path",
            "schema": {
              "type": "string"
            },
            "required": true,
            "description": " The user ID"
          }
        ],
        "requestBody": {
          "description": "Permissions to revoke",
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "permissions": {
                    "type": "array",
                    "items": {
                      "oneOf": [
                        {
                          "const": "organization.owner"
                        },
                        {
                          "const": "organization.edit"
                        },
                        {
                          "const": "organization.delete"
                        },
                        {
                          "const": "user.view"
                        },
                        {
                          "const": "user.invite"
                        },
                        {
                          "const": "user.edit"
                        },
                        {
                          "const": "user.delete"
                        },
                        {
                          "const": "permission.view"
                        },
                        {
                          "const": "permission.grant"
                        },
                        {
                          "const": "permission.revoke"
                        },
                        {
                          "const": "part.view"
                        },
                        {
                          "const": "part.create"
                        },
                        {
                          "const": "part.edit"
                        },
                        {
                          "const": "part.delete"
                        },
                        {
                          "const": "part.export"
                        },
                        {
                          "const": "sku.view"
                        },
                        {
                          "const": "sku.create"
                        },
                        {
                          "const": "sku.edit"
                        },
                        {
                          "const": "sku.delete"
                        },
                        {
                          "const": "material.view"
                        },
                        {
                          "const": "material.create"
                        },
                        {
                          "const": "material.edit"
                        },
                        {
                          "const": "material.delete"
                        },
                        {
                          "const": "material.instance.view"
                        },
                        {
                          "const": "material.instance.create"
                        },
                        {
                          "const": "material.instance.edit"
                        },
                        {
                          "const": "material.instance.delete"
                        },
                        {
                          "const": "printer.view"
                        },
                        {
                          "const": "printer.create"
                        },
                        {
                          "const": "printer.edit"
                        },
                        {
                          "const": "printer.delete"
                        },
                        {
                          "const": "printer.control"
                        },
                        {
                          "const": "printer.ready"
                        },
                        {
                          "const": "printer.config"
                        },
                        {
                          "const": "printer.stats"
                        },
                        {
                          "const": "printer.camera"
                        },
                        {
                          "const": "profile.view"
                        },
                        {
                          "const": "profile.create"
                        },
                        {
                          "const": "profile.edit"
                        },
                        {
                          "const": "profile.delete"
                        },
                        {
                          "const": "queue.view"
                        },
                        {
                          "const": "queue.manage"
                        },
                        {
                          "const": "queue.override"
                        },
                        {
                          "const": "job.create"
                        },
                        {
                          "const": "job.edit.own"
                        },
                        {
                          "const": "job.edit.all"
                        },
                        {
                          "const": "job.delete.own"
                        },
                        {
                          "const": "job.delete.all"
                        },
                        {
                          "const": "build.view"
                        },
                        {
                          "const": "build.create"
                        },
                        {
                          "const": "build.edit"
                        },
                        {
                          "const": "build.delete"
                        },
                        {
                          "const": "settings.view"
                        },
                        {
                          "const": "settings.edit"
                        },
                        {
                          "const": "integration.view"
                        },
                        {
                          "const": "integration.manage"
                        },
                        {
                          "const": "subscription.view"
                        },
                        {
                          "const": "subscription.manage"
                        },
                        {
                          "const": "analytics.view"
                        },
                        {
                          "const": "reports.generate"
                        },
                        {
                          "const": "audit.log.view"
                        },
                        {
                          "const": "audit.logs.configure"
                        },
                        {
                          "const": "order.view"
                        },
                        {
                          "const": "order.create"
                        },
                        {
                          "const": "order.edit"
                        },
                        {
                          "const": "order.delete"
                        },
                        {
                          "const": "order.print"
                        },
                        {
                          "const": "apiKey.view"
                        },
                        {
                          "const": "apiKey.create"
                        },
                        {
                          "const": "apiKey.edit"
                        },
                        {
                          "const": "apiKey.delete"
                        },
                        {
                          "const": "file.download"
                        },
                        {
                          "const": "maintenance.view"
                        },
                        {
                          "const": "maintenance.create"
                        },
                        {
                          "const": "maintenance.edit"
                        },
                        {
                          "const": "maintenance.delete"
                        },
                        {
                          "const": "maintenance.complete"
                        },
                        {
                          "const": "routing.manage"
                        },
                        {
                          "const": "customizer.manage"
                        },
                        {
                          "const": "macro.view"
                        },
                        {
                          "const": "macro.create"
                        },
                        {
                          "const": "macro.edit"
                        },
                        {
                          "const": "macro.delete"
                        },
                        {
                          "const": "macro.run"
                        },
                        {
                          "const": "card.view"
                        },
                        {
                          "const": "card.create"
                        },
                        {
                          "const": "card.edit"
                        },
                        {
                          "const": "card.delete"
                        },
                        {
                          "const": "layout.view"
                        },
                        {
                          "const": "layout.create"
                        },
                        {
                          "const": "layout.edit"
                        },
                        {
                          "const": "layout.delete"
                        },
                        {
                          "const": "classwork.viewer"
                        },
                        {
                          "const": "classwork.editor"
                        },
                        {
                          "const": "sequence.view"
                        },
                        {
                          "const": "sequence.edit"
                        },
                        {
                          "const": "qr.scan"
                        },
                        {
                          "const": "qr.manage"
                        },
                        {
                          "const": "internal.shopify"
                        },
                        {
                          "const": "queue.admin"
                        },
                        {
                          "const": "part.viewer"
                        },
                        {
                          "const": "part.editor"
                        },
                        {
                          "const": "sku.viewer"
                        },
                        {
                          "const": "sku.editor"
                        },
                        {
                          "const": "orders.admin"
                        },
                        {
                          "const": "material.viewer"
                        },
                        {
                          "const": "material.editor"
                        },
                        {
                          "const": "printer.viewer"
                        },
                        {
                          "const": "printer.editor"
                        },
                        {
                          "const": "profile.viewer"
                        },
                        {
                          "const": "profile.editor"
                        },
                        {
                          "const": "settings.admin"
                        },
                        {
                          "const": "subscription.admin"
                        }
                      ]
                    }
                  }
                },
                "required": [
                  "permissions"
                ]
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "The updated user",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UserDetails"
                }
              }
            }
          }
        },
        "x-permission": "permission.revoke"
      },
      "put": {
        "summary": "Set user permissions",
        "description": "Replace a user's individually granted permissions with the given list.\nPermissions that come from the user's roles are not affected.",
        "tags": [
          "Users"
        ],
        "parameters": [
          {
            "name": "userId",
            "in": "path",
            "schema": {
              "type": "string"
            },
            "required": true,
            "description": " The user ID"
          }
        ],
        "requestBody": {
          "description": "The complete list of individually granted permissions",
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "permissions": {
                    "type": "array",
                    "items": {
                      "oneOf": [
                        {
                          "const": "organization.owner"
                        },
                        {
                          "const": "organization.edit"
                        },
                        {
                          "const": "organization.delete"
                        },
                        {
                          "const": "user.view"
                        },
                        {
                          "const": "user.invite"
                        },
                        {
                          "const": "user.edit"
                        },
                        {
                          "const": "user.delete"
                        },
                        {
                          "const": "permission.view"
                        },
                        {
                          "const": "permission.grant"
                        },
                        {
                          "const": "permission.revoke"
                        },
                        {
                          "const": "part.view"
                        },
                        {
                          "const": "part.create"
                        },
                        {
                          "const": "part.edit"
                        },
                        {
                          "const": "part.delete"
                        },
                        {
                          "const": "part.export"
                        },
                        {
                          "const": "sku.view"
                        },
                        {
                          "const": "sku.create"
                        },
                        {
                          "const": "sku.edit"
                        },
                        {
                          "const": "sku.delete"
                        },
                        {
                          "const": "material.view"
                        },
                        {
                          "const": "material.create"
                        },
                        {
                          "const": "material.edit"
                        },
                        {
                          "const": "material.delete"
                        },
                        {
                          "const": "material.instance.view"
                        },
                        {
                          "const": "material.instance.create"
                        },
                        {
                          "const": "material.instance.edit"
                        },
                        {
                          "const": "material.instance.delete"
                        },
                        {
                          "const": "printer.view"
                        },
                        {
                          "const": "printer.create"
                        },
                        {
                          "const": "printer.edit"
                        },
                        {
                          "const": "printer.delete"
                        },
                        {
                          "const": "printer.control"
                        },
                        {
                          "const": "printer.ready"
                        },
                        {
                          "const": "printer.config"
                        },
                        {
                          "const": "printer.stats"
                        },
                        {
                          "const": "printer.camera"
                        },
                        {
                          "const": "profile.view"
                        },
                        {
                          "const": "profile.create"
                        },
                        {
                          "const": "profile.edit"
                        },
                        {
                          "const": "profile.delete"
                        },
                        {
                          "const": "queue.view"
                        },
                        {
                          "const": "queue.manage"
                        },
                        {
                          "const": "queue.override"
                        },
                        {
                          "const": "job.create"
                        },
                        {
                          "const": "job.edit.own"
                        },
                        {
                          "const": "job.edit.all"
                        },
                        {
                          "const": "job.delete.own"
                        },
                        {
                          "const": "job.delete.all"
                        },
                        {
                          "const": "build.view"
                        },
                        {
                          "const": "build.create"
                        },
                        {
                          "const": "build.edit"
                        },
                        {
                          "const": "build.delete"
                        },
                        {
                          "const": "settings.view"
                        },
                        {
                          "const": "settings.edit"
                        },
                        {
                          "const": "integration.view"
                        },
                        {
                          "const": "integration.manage"
                        },
                        {
                          "const": "subscription.view"
                        },
                        {
                          "const": "subscription.manage"
                        },
                        {
                          "const": "analytics.view"
                        },
                        {
                          "const": "reports.generate"
                        },
                        {
                          "const": "audit.log.view"
                        },
                        {
                          "const": "audit.logs.configure"
                        },
                        {
                          "const": "order.view"
                        },
                        {
                          "const": "order.create"
                        },
                        {
                          "const": "order.edit"
                        },
                        {
                          "const": "order.delete"
                        },
                        {
                          "const": "order.print"
                        },
                        {
                          "const": "apiKey.view"
                        },
                        {
                          "const": "apiKey.create"
                        },
                        {
                          "const": "apiKey.edit"
                        },
                        {
                          "const": "apiKey.delete"
                        },
                        {
                          "const": "file.download"
                        },
                        {
                          "const": "maintenance.view"
                        },
                        {
                          "const": "maintenance.create"
                        },
                        {
                          "const": "maintenance.edit"
                        },
                        {
                          "const": "maintenance.delete"
                        },
                        {
                          "const": "maintenance.complete"
                        },
                        {
                          "const": "routing.manage"
                        },
                        {
                          "const": "customizer.manage"
                        },
                        {
                          "const": "macro.view"
                        },
                        {
                          "const": "macro.create"
                        },
                        {
                          "const": "macro.edit"
                        },
                        {
                          "const": "macro.delete"
                        },
                        {
                          "const": "macro.run"
                        },
                        {
                          "const": "card.view"
                        },
                        {
                          "const": "card.create"
                        },
                        {
                          "const": "card.edit"
                        },
                        {
                          "const": "card.delete"
                        },
                        {
                          "const": "layout.view"
                        },
                        {
                          "const": "layout.create"
                        },
                        {
                          "const": "layout.edit"
                        },
                        {
                          "const": "layout.delete"
                        },
                        {
                          "const": "classwork.viewer"
                        },
                        {
                          "const": "classwork.editor"
                        },
                        {
                          "const": "sequence.view"
                        },
                        {
                          "const": "sequence.edit"
                        },
                        {
                          "const": "qr.scan"
                        },
                        {
                          "const": "qr.manage"
                        },
                        {
                          "const": "internal.shopify"
                        },
                        {
                          "const": "queue.admin"
                        },
                        {
                          "const": "part.viewer"
                        },
                        {
                          "const": "part.editor"
                        },
                        {
                          "const": "sku.viewer"
                        },
                        {
                          "const": "sku.editor"
                        },
                        {
                          "const": "orders.admin"
                        },
                        {
                          "const": "material.viewer"
                        },
                        {
                          "const": "material.editor"
                        },
                        {
                          "const": "printer.viewer"
                        },
                        {
                          "const": "printer.editor"
                        },
                        {
                          "const": "profile.viewer"
                        },
                        {
                          "const": "profile.editor"
                        },
                        {
                          "const": "settings.admin"
                        },
                        {
                          "const": "subscription.admin"
                        }
                      ]
                    }
                  }
                },
                "required": [
                  "permissions"
                ]
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "The updated user",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UserDetails"
                }
              }
            }
          }
        },
        "x-permission": "permission.grant, permission.revoke"
      }
    },
    "/v1/users/bulk": {
      "post": {
        "summary": "Bulk update users",
        "description": "Apply an operation to several users at once. Each user is processed\nindependently; failures are reported per user rather than failing the\nwhole request.",
        "tags": [
          "Users"
        ],
        "parameters": [],
        "requestBody": {
          "description": "User IDs and the operation to apply",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/BulkUpdateUsersRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "IDs that succeeded and per-user errors for those that failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BulkUpdateUsersResponse"
                }
              }
            }
          }
        },
        "x-permission": "user.edit"
      }
    },
    "/v1/sku-builds": {
      "get": {
        "summary": "Get all SKU builds for a store",
        "tags": [
          "SKU_Builds"
        ],
        "parameters": [
          {
            "name": "skuId",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "skuCopy",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "status",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "skuInstanceStart",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "orderId",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "orderItemId",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "priority",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "selectedOptions",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "id",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "storeId",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "createdAt",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "updatedAt",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false,
            "title": "Sort"
          },
          {
            "name": "limit",
            "in": "query",
            "schema": {
              "type": "number",
              "minimum": 1,
              "maximum": 1000
            },
            "required": false,
            "title": "Limit"
          },
          {
            "name": "offset",
            "in": "query",
            "schema": {
              "type": "number",
              "minimum": 0
            },
            "required": false,
            "title": "Offset"
          },
          {
            "name": "fields",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false,
            "title": "Fields"
          },
          {
            "name": "include",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false,
            "title": "Include"
          },
          {
            "name": "meta",
            "in": "query",
            "schema": {
              "type": "boolean"
            },
            "required": false,
            "title": "Meta"
          },
          {
            "name": "hints",
            "in": "query",
            "schema": {
              "type": "boolean"
            },
            "required": false,
            "title": "Hints"
          }
        ],
        "responses": {
          "200": {
            "description": "List of SKU builds with their part builds",
            "content": {
              "application/json": {
                "schema": {
                  "oneOf": [
                    {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/SkuBuildWithRelation"
                      }
                    },
                    {
                      "$ref": "#/components/schemas/SearchResponse"
                    }
                  ]
                }
              }
            }
          }
        },
        "x-permission": "queue.view"
      }
    },
    "/v1/sku-builds/search": {
      "post": {
        "summary": "Search SKU builds",
        "description": "Search SKU builds with complex filters",
        "tags": [
          "SKU_Builds"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SearchQueryDtoSkuBuild"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SearchResponse"
                }
              }
            }
          }
        },
        "x-permission": "queue.view"
      }
    },
    "/v1/sku-builds/{id}": {
      "get": {
        "summary": "Get a specific SKU build by ID",
        "tags": [
          "SKU_Builds"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "schema": {
              "type": "string",
              "pattern": "^[a-z0-9]{24}$"
            },
            "required": true,
            "description": " - SKU build identifier"
          }
        ],
        "responses": {
          "200": {
            "description": "SKU build with part builds, steps, and print jobs",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SkuBuildWithRelation"
                }
              }
            }
          }
        },
        "x-permission": "queue.view"
      }
    },
    "/v1/part-build-steps": {
      "get": {
        "summary": "Get all part build steps",
        "description": "List all part build steps in your store",
        "tags": [
          "Part_Builds"
        ],
        "parameters": [
          {
            "name": "partBuildId",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "order",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "builder",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "inputFiles",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "inputParameters",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "inputHash",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "cachedBuildStepId",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "cachedOutputFile",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "outputFiles",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "status",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "logs",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "requiresAssignedPrinter",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "nextStepId",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "startedAt",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "completedAt",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "dismissed",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "id",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "storeId",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "createdAt",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "updatedAt",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false,
            "title": "Sort"
          },
          {
            "name": "limit",
            "in": "query",
            "schema": {
              "type": "number",
              "minimum": 1,
              "maximum": 1000
            },
            "required": false,
            "title": "Limit"
          },
          {
            "name": "offset",
            "in": "query",
            "schema": {
              "type": "number",
              "minimum": 0
            },
            "required": false,
            "title": "Offset"
          },
          {
            "name": "fields",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false,
            "title": "Fields"
          },
          {
            "name": "include",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false,
            "title": "Include"
          },
          {
            "name": "meta",
            "in": "query",
            "schema": {
              "type": "boolean"
            },
            "required": false,
            "title": "Meta"
          },
          {
            "name": "hints",
            "in": "query",
            "schema": {
              "type": "boolean"
            },
            "required": false,
            "title": "Hints"
          }
        ],
        "responses": {
          "200": {
            "description": "List of part build steps",
            "content": {
              "application/json": {
                "schema": {
                  "oneOf": [
                    {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/PartBuildStep"
                      }
                    },
                    {
                      "$ref": "#/components/schemas/SearchResponse"
                    }
                  ]
                }
              }
            }
          }
        },
        "x-permission": "build.view"
      }
    },
    "/v1/part-build-steps/search": {
      "post": {
        "summary": "Search part build steps",
        "description": "Search part build steps with complex filters",
        "tags": [
          "Part_Builds"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SearchQueryDtoPartBuildStep"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SearchResponse"
                }
              }
            }
          }
        },
        "x-permission": "build.view"
      }
    },
    "/v1/part-build-steps/{id}": {
      "get": {
        "summary": "Get a specific part build step by ID",
        "tags": [
          "Part_Builds"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "schema": {
              "type": "string",
              "pattern": "^[a-z0-9]{24}$"
            },
            "required": true,
            "description": " - Part build step identifier"
          }
        ],
        "responses": {
          "200": {
            "description": "Part build step details, or undefined if not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PartBuildStep"
                }
              }
            }
          }
        },
        "x-permission": "build.view"
      }
    },
    "/v1/folders": {
      "get": {
        "summary": "Get all folders",
        "tags": [
          "Folders"
        ],
        "parameters": [
          {
            "name": "type",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "name",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "parentId",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "customMetadata",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "id",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "storeId",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "createdAt",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "updatedAt",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false,
            "title": "Sort"
          },
          {
            "name": "limit",
            "in": "query",
            "schema": {
              "type": "number",
              "minimum": 1,
              "maximum": 1000
            },
            "required": false,
            "title": "Limit"
          },
          {
            "name": "offset",
            "in": "query",
            "schema": {
              "type": "number",
              "minimum": 0
            },
            "required": false,
            "title": "Offset"
          },
          {
            "name": "fields",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false,
            "title": "Fields"
          },
          {
            "name": "include",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false,
            "title": "Include"
          },
          {
            "name": "meta",
            "in": "query",
            "schema": {
              "type": "boolean"
            },
            "required": false,
            "title": "Meta"
          },
          {
            "name": "hints",
            "in": "query",
            "schema": {
              "type": "boolean"
            },
            "required": false,
            "title": "Hints"
          }
        ],
        "responses": {
          "200": {
            "description": "List of all folders in the store",
            "content": {
              "application/json": {
                "schema": {
                  "oneOf": [
                    {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/Folder"
                      }
                    },
                    {
                      "$ref": "#/components/schemas/SearchResponse"
                    }
                  ]
                }
              }
            }
          }
        },
        "x-permission": "part.view, sku.view",
        "x-permission-mode": "any"
      },
      "post": {
        "summary": "Create a new folder",
        "tags": [
          "Folders"
        ],
        "parameters": [],
        "requestBody": {
          "description": "Folder creation details",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateFolderRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "The created folder",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Folder"
                }
              }
            }
          }
        },
        "x-permission": "part.create, sku.create",
        "x-permission-mode": "any"
      }
    },
    "/v1/folders/search": {
      "post": {
        "summary": "Search folders",
        "description": "Search folders with complex filters",
        "tags": [
          "Folders"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SearchQueryDtoFolder"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SearchResponse"
                }
              }
            }
          }
        },
        "x-permission": "part.view, sku.view",
        "x-permission-mode": "any"
      }
    },
    "/v1/folders/move": {
      "patch": {
        "summary": "Move folders to a new parent",
        "tags": [
          "Folders"
        ],
        "parameters": [],
        "requestBody": {
          "description": "Batch move request with folder IDs and new parent",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/BatchMoveFolderRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Move operation result",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BatchMoveFolderResponse"
                }
              }
            }
          }
        },
        "x-permission": "part.edit, sku.edit",
        "x-permission-mode": "any"
      }
    },
    "/v1/folders/rename": {
      "patch": {
        "summary": "Rename a folder",
        "tags": [
          "Folders"
        ],
        "parameters": [],
        "requestBody": {
          "description": "Folder ID and new name",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RenameFolderRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "The updated folder",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Folder"
                }
              }
            }
          }
        },
        "x-permission": "part.edit, sku.edit",
        "x-permission-mode": "any"
      }
    },
    "/v1/folders/by-type/{type}": {
      "get": {
        "summary": "Get folders by type",
        "tags": [
          "Folders"
        ],
        "parameters": [
          {
            "name": "type",
            "in": "path",
            "schema": {
              "type": "string"
            },
            "required": true,
            "description": " Folder type (part, sku, etc.)"
          }
        ],
        "responses": {
          "200": {
            "description": "List of folders of specified type",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Folder"
                  }
                }
              }
            }
          }
        },
        "x-permission": "part.view, sku.view",
        "x-permission-mode": "any"
      }
    },
    "/v1/folders/parts": {
      "get": {
        "summary": "Get part folders",
        "tags": [
          "Folders"
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "List of folders for parts",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Folder"
                  }
                }
              }
            }
          }
        },
        "x-permission": "part.view"
      }
    },
    "/v1/folders/skus": {
      "get": {
        "summary": "Get SKU folders",
        "tags": [
          "Folders"
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "List of folders for SKUs",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Folder"
                  }
                }
              }
            }
          }
        },
        "x-permission": "sku.view"
      }
    },
    "/v1/folders/delete": {
      "delete": {
        "summary": "Delete folders",
        "tags": [
          "Folders"
        ],
        "parameters": [],
        "requestBody": {
          "description": "List of folder IDs to delete",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DeleteFolderRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Deletion result with affected count",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "success": {
                      "type": "boolean"
                    },
                    "affected": {
                      "type": "number"
                    },
                    "message": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "success",
                    "affected"
                  ]
                }
              }
            }
          }
        },
        "x-permission": "part.delete, sku.delete",
        "x-permission-mode": "any"
      }
    },
    "/v1/folders/{id}": {
      "get": {
        "summary": "Get folder by ID",
        "tags": [
          "Folders"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "schema": {
              "type": "string"
            },
            "required": true,
            "description": " Folder ID"
          }
        ],
        "responses": {
          "200": {
            "description": "The requested folder",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Folder"
                }
              }
            }
          }
        },
        "x-permission": "part.view, sku.view",
        "x-permission-mode": "any"
      }
    },
    "/v1/entitlements": {
      "get": {
        "summary": "Get all entitlements",
        "tags": [
          "Entitlements"
        ],
        "parameters": [
          {
            "name": "entitlement",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "enabledAt",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "id",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "storeId",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "createdAt",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "updatedAt",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false,
            "title": "Sort"
          },
          {
            "name": "limit",
            "in": "query",
            "schema": {
              "type": "number",
              "minimum": 1,
              "maximum": 1000
            },
            "required": false,
            "title": "Limit"
          },
          {
            "name": "offset",
            "in": "query",
            "schema": {
              "type": "number",
              "minimum": 0
            },
            "required": false,
            "title": "Offset"
          },
          {
            "name": "fields",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false,
            "title": "Fields"
          },
          {
            "name": "include",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false,
            "title": "Include"
          },
          {
            "name": "meta",
            "in": "query",
            "schema": {
              "type": "boolean"
            },
            "required": false,
            "title": "Meta"
          },
          {
            "name": "hints",
            "in": "query",
            "schema": {
              "type": "boolean"
            },
            "required": false,
            "title": "Hints"
          }
        ],
        "responses": {
          "200": {
            "description": "List of all entitlements for the store",
            "content": {
              "application/json": {
                "schema": {
                  "oneOf": [
                    {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/Entitlement"
                      }
                    },
                    {
                      "$ref": "#/components/schemas/SearchResponse"
                    }
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/v1/entitlements/search": {
      "post": {
        "summary": "Search entitlements",
        "description": "Search entitlements with complex filters",
        "tags": [
          "Entitlements"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SearchQueryDtoEntitlement"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SearchResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/entitlements/{id}": {
      "get": {
        "summary": "Get entitlement by ID",
        "tags": [
          "Entitlements"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "schema": {
              "type": "string"
            },
            "required": true,
            "description": " Entitlement ID"
          }
        ],
        "responses": {
          "200": {
            "description": "The requested entitlement",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Entitlement"
                }
              }
            }
          }
        }
      }
    },
    "/v1/entitlements/check/{entitlement}": {
      "get": {
        "summary": "Check if store has specific entitlement",
        "tags": [
          "Entitlements"
        ],
        "parameters": [
          {
            "name": "entitlement",
            "in": "path",
            "schema": {
              "type": "string"
            },
            "required": true,
            "description": " Entitlement name to check"
          }
        ],
        "responses": {
          "200": {
            "description": "Whether the store has the entitlement",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "hasEntitlement": {
                      "type": "boolean"
                    }
                  },
                  "required": [
                    "hasEntitlement"
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/v1/permissions/types": {
      "get": {
        "summary": "List permission types",
        "description": "List all available permission types",
        "tags": [
          "Permissions"
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "const": "organization.owner"
                      },
                      {
                        "const": "organization.edit"
                      },
                      {
                        "const": "organization.delete"
                      },
                      {
                        "const": "user.view"
                      },
                      {
                        "const": "user.invite"
                      },
                      {
                        "const": "user.edit"
                      },
                      {
                        "const": "user.delete"
                      },
                      {
                        "const": "permission.view"
                      },
                      {
                        "const": "permission.grant"
                      },
                      {
                        "const": "permission.revoke"
                      },
                      {
                        "const": "part.view"
                      },
                      {
                        "const": "part.create"
                      },
                      {
                        "const": "part.edit"
                      },
                      {
                        "const": "part.delete"
                      },
                      {
                        "const": "part.export"
                      },
                      {
                        "const": "sku.view"
                      },
                      {
                        "const": "sku.create"
                      },
                      {
                        "const": "sku.edit"
                      },
                      {
                        "const": "sku.delete"
                      },
                      {
                        "const": "material.view"
                      },
                      {
                        "const": "material.create"
                      },
                      {
                        "const": "material.edit"
                      },
                      {
                        "const": "material.delete"
                      },
                      {
                        "const": "material.instance.view"
                      },
                      {
                        "const": "material.instance.create"
                      },
                      {
                        "const": "material.instance.edit"
                      },
                      {
                        "const": "material.instance.delete"
                      },
                      {
                        "const": "printer.view"
                      },
                      {
                        "const": "printer.create"
                      },
                      {
                        "const": "printer.edit"
                      },
                      {
                        "const": "printer.delete"
                      },
                      {
                        "const": "printer.control"
                      },
                      {
                        "const": "printer.ready"
                      },
                      {
                        "const": "printer.config"
                      },
                      {
                        "const": "printer.stats"
                      },
                      {
                        "const": "printer.camera"
                      },
                      {
                        "const": "profile.view"
                      },
                      {
                        "const": "profile.create"
                      },
                      {
                        "const": "profile.edit"
                      },
                      {
                        "const": "profile.delete"
                      },
                      {
                        "const": "queue.view"
                      },
                      {
                        "const": "queue.manage"
                      },
                      {
                        "const": "queue.override"
                      },
                      {
                        "const": "job.create"
                      },
                      {
                        "const": "job.edit.own"
                      },
                      {
                        "const": "job.edit.all"
                      },
                      {
                        "const": "job.delete.own"
                      },
                      {
                        "const": "job.delete.all"
                      },
                      {
                        "const": "build.view"
                      },
                      {
                        "const": "build.create"
                      },
                      {
                        "const": "build.edit"
                      },
                      {
                        "const": "build.delete"
                      },
                      {
                        "const": "settings.view"
                      },
                      {
                        "const": "settings.edit"
                      },
                      {
                        "const": "integration.view"
                      },
                      {
                        "const": "integration.manage"
                      },
                      {
                        "const": "subscription.view"
                      },
                      {
                        "const": "subscription.manage"
                      },
                      {
                        "const": "analytics.view"
                      },
                      {
                        "const": "reports.generate"
                      },
                      {
                        "const": "audit.log.view"
                      },
                      {
                        "const": "audit.logs.configure"
                      },
                      {
                        "const": "order.view"
                      },
                      {
                        "const": "order.create"
                      },
                      {
                        "const": "order.edit"
                      },
                      {
                        "const": "order.delete"
                      },
                      {
                        "const": "order.print"
                      },
                      {
                        "const": "apiKey.view"
                      },
                      {
                        "const": "apiKey.create"
                      },
                      {
                        "const": "apiKey.edit"
                      },
                      {
                        "const": "apiKey.delete"
                      },
                      {
                        "const": "file.download"
                      },
                      {
                        "const": "maintenance.view"
                      },
                      {
                        "const": "maintenance.create"
                      },
                      {
                        "const": "maintenance.edit"
                      },
                      {
                        "const": "maintenance.delete"
                      },
                      {
                        "const": "maintenance.complete"
                      },
                      {
                        "const": "routing.manage"
                      },
                      {
                        "const": "customizer.manage"
                      },
                      {
                        "const": "macro.view"
                      },
                      {
                        "const": "macro.create"
                      },
                      {
                        "const": "macro.edit"
                      },
                      {
                        "const": "macro.delete"
                      },
                      {
                        "const": "macro.run"
                      },
                      {
                        "const": "card.view"
                      },
                      {
                        "const": "card.create"
                      },
                      {
                        "const": "card.edit"
                      },
                      {
                        "const": "card.delete"
                      },
                      {
                        "const": "layout.view"
                      },
                      {
                        "const": "layout.create"
                      },
                      {
                        "const": "layout.edit"
                      },
                      {
                        "const": "layout.delete"
                      },
                      {
                        "const": "classwork.viewer"
                      },
                      {
                        "const": "classwork.editor"
                      },
                      {
                        "const": "sequence.view"
                      },
                      {
                        "const": "sequence.edit"
                      },
                      {
                        "const": "qr.scan"
                      },
                      {
                        "const": "qr.manage"
                      },
                      {
                        "const": "internal.shopify"
                      },
                      {
                        "const": "queue.admin"
                      },
                      {
                        "const": "part.viewer"
                      },
                      {
                        "const": "part.editor"
                      },
                      {
                        "const": "sku.viewer"
                      },
                      {
                        "const": "sku.editor"
                      },
                      {
                        "const": "orders.admin"
                      },
                      {
                        "const": "material.viewer"
                      },
                      {
                        "const": "material.editor"
                      },
                      {
                        "const": "printer.viewer"
                      },
                      {
                        "const": "printer.editor"
                      },
                      {
                        "const": "profile.viewer"
                      },
                      {
                        "const": "profile.editor"
                      },
                      {
                        "const": "settings.admin"
                      },
                      {
                        "const": "subscription.admin"
                      }
                    ]
                  }
                }
              }
            }
          }
        },
        "x-permission": "permission.view"
      }
    },
    "/v1/permissions": {
      "get": {
        "summary": "Get all permissions",
        "description": "List all permissions in your store",
        "tags": [
          "Permissions"
        ],
        "parameters": [
          {
            "name": "userId",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "permission",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "storeId",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "id",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "createdAt",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "updatedAt",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false,
            "title": "Sort"
          },
          {
            "name": "limit",
            "in": "query",
            "schema": {
              "type": "number",
              "minimum": 1,
              "maximum": 1000
            },
            "required": false,
            "title": "Limit"
          },
          {
            "name": "offset",
            "in": "query",
            "schema": {
              "type": "number",
              "minimum": 0
            },
            "required": false,
            "title": "Offset"
          },
          {
            "name": "fields",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false,
            "title": "Fields"
          },
          {
            "name": "include",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false,
            "title": "Include"
          },
          {
            "name": "meta",
            "in": "query",
            "schema": {
              "type": "boolean"
            },
            "required": false,
            "title": "Meta"
          },
          {
            "name": "hints",
            "in": "query",
            "schema": {
              "type": "boolean"
            },
            "required": false,
            "title": "Hints"
          }
        ],
        "responses": {
          "200": {
            "description": "List of all permissions",
            "content": {
              "application/json": {
                "schema": {
                  "oneOf": [
                    {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/Permission"
                      }
                    },
                    {
                      "$ref": "#/components/schemas/SearchResponse"
                    }
                  ]
                }
              }
            }
          }
        },
        "x-permission": "permission.view"
      }
    },
    "/v1/permissions/search": {
      "post": {
        "summary": "Search permissions",
        "description": "Search permissions with complex filters",
        "tags": [
          "Permissions"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SearchQueryDtoPermission"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SearchResponse"
                }
              }
            }
          }
        },
        "x-permission": "permission.view"
      }
    },
    "/v1/permissions/user/{userId}": {
      "get": {
        "summary": "Get user permissions",
        "description": "Get a store member's permissions: those granted directly, the roles\nthey hold, and the effective set (direct, role-based and owner).",
        "tags": [
          "Users"
        ],
        "parameters": [
          {
            "name": "userId",
            "in": "path",
            "schema": {
              "type": "string"
            },
            "required": true,
            "description": " The user ID"
          }
        ],
        "responses": {
          "200": {
            "description": "The user's roles, direct grants and effective permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetAllPermissionsForUserResponse"
                }
              }
            }
          }
        },
        "x-permission": "permission.view"
      }
    },
    "/v1/roles": {
      "get": {
        "summary": "List roles",
        "description": "List the roles you can assign to store members.",
        "tags": [
          "Users"
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "Available roles",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/RoleSummary"
                  }
                }
              }
            }
          }
        },
        "x-permission": "user.view"
      }
    },
    "/v1/roles/with-permissions": {
      "get": {
        "summary": "List roles with permissions",
        "description": "List the assignable roles together with the permissions each role grants.",
        "tags": [
          "Users"
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "Available roles and their permissions",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/RoleWithPermissions"
                  }
                }
              }
            }
          }
        },
        "x-permission": "user.view"
      }
    },
    "/v1/roles/{roleId}/permissions": {
      "get": {
        "summary": "Get role permissions",
        "description": "Get the permissions granted by one role.",
        "tags": [
          "Users"
        ],
        "parameters": [
          {
            "name": "roleId",
            "in": "path",
            "schema": {
              "type": "string"
            },
            "required": true,
            "description": " The role ID from `GET /v1/roles`"
          }
        ],
        "responses": {
          "200": {
            "description": "Permissions granted by the role",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "const": "organization.owner"
                      },
                      {
                        "const": "organization.edit"
                      },
                      {
                        "const": "organization.delete"
                      },
                      {
                        "const": "user.view"
                      },
                      {
                        "const": "user.invite"
                      },
                      {
                        "const": "user.edit"
                      },
                      {
                        "const": "user.delete"
                      },
                      {
                        "const": "permission.view"
                      },
                      {
                        "const": "permission.grant"
                      },
                      {
                        "const": "permission.revoke"
                      },
                      {
                        "const": "part.view"
                      },
                      {
                        "const": "part.create"
                      },
                      {
                        "const": "part.edit"
                      },
                      {
                        "const": "part.delete"
                      },
                      {
                        "const": "part.export"
                      },
                      {
                        "const": "sku.view"
                      },
                      {
                        "const": "sku.create"
                      },
                      {
                        "const": "sku.edit"
                      },
                      {
                        "const": "sku.delete"
                      },
                      {
                        "const": "material.view"
                      },
                      {
                        "const": "material.create"
                      },
                      {
                        "const": "material.edit"
                      },
                      {
                        "const": "material.delete"
                      },
                      {
                        "const": "material.instance.view"
                      },
                      {
                        "const": "material.instance.create"
                      },
                      {
                        "const": "material.instance.edit"
                      },
                      {
                        "const": "material.instance.delete"
                      },
                      {
                        "const": "printer.view"
                      },
                      {
                        "const": "printer.create"
                      },
                      {
                        "const": "printer.edit"
                      },
                      {
                        "const": "printer.delete"
                      },
                      {
                        "const": "printer.control"
                      },
                      {
                        "const": "printer.ready"
                      },
                      {
                        "const": "printer.config"
                      },
                      {
                        "const": "printer.stats"
                      },
                      {
                        "const": "printer.camera"
                      },
                      {
                        "const": "profile.view"
                      },
                      {
                        "const": "profile.create"
                      },
                      {
                        "const": "profile.edit"
                      },
                      {
                        "const": "profile.delete"
                      },
                      {
                        "const": "queue.view"
                      },
                      {
                        "const": "queue.manage"
                      },
                      {
                        "const": "queue.override"
                      },
                      {
                        "const": "job.create"
                      },
                      {
                        "const": "job.edit.own"
                      },
                      {
                        "const": "job.edit.all"
                      },
                      {
                        "const": "job.delete.own"
                      },
                      {
                        "const": "job.delete.all"
                      },
                      {
                        "const": "build.view"
                      },
                      {
                        "const": "build.create"
                      },
                      {
                        "const": "build.edit"
                      },
                      {
                        "const": "build.delete"
                      },
                      {
                        "const": "settings.view"
                      },
                      {
                        "const": "settings.edit"
                      },
                      {
                        "const": "integration.view"
                      },
                      {
                        "const": "integration.manage"
                      },
                      {
                        "const": "subscription.view"
                      },
                      {
                        "const": "subscription.manage"
                      },
                      {
                        "const": "analytics.view"
                      },
                      {
                        "const": "reports.generate"
                      },
                      {
                        "const": "audit.log.view"
                      },
                      {
                        "const": "audit.logs.configure"
                      },
                      {
                        "const": "order.view"
                      },
                      {
                        "const": "order.create"
                      },
                      {
                        "const": "order.edit"
                      },
                      {
                        "const": "order.delete"
                      },
                      {
                        "const": "order.print"
                      },
                      {
                        "const": "apiKey.view"
                      },
                      {
                        "const": "apiKey.create"
                      },
                      {
                        "const": "apiKey.edit"
                      },
                      {
                        "const": "apiKey.delete"
                      },
                      {
                        "const": "file.download"
                      },
                      {
                        "const": "maintenance.view"
                      },
                      {
                        "const": "maintenance.create"
                      },
                      {
                        "const": "maintenance.edit"
                      },
                      {
                        "const": "maintenance.delete"
                      },
                      {
                        "const": "maintenance.complete"
                      },
                      {
                        "const": "routing.manage"
                      },
                      {
                        "const": "customizer.manage"
                      },
                      {
                        "const": "macro.view"
                      },
                      {
                        "const": "macro.create"
                      },
                      {
                        "const": "macro.edit"
                      },
                      {
                        "const": "macro.delete"
                      },
                      {
                        "const": "macro.run"
                      },
                      {
                        "const": "card.view"
                      },
                      {
                        "const": "card.create"
                      },
                      {
                        "const": "card.edit"
                      },
                      {
                        "const": "card.delete"
                      },
                      {
                        "const": "layout.view"
                      },
                      {
                        "const": "layout.create"
                      },
                      {
                        "const": "layout.edit"
                      },
                      {
                        "const": "layout.delete"
                      },
                      {
                        "const": "classwork.viewer"
                      },
                      {
                        "const": "classwork.editor"
                      },
                      {
                        "const": "sequence.view"
                      },
                      {
                        "const": "sequence.edit"
                      },
                      {
                        "const": "qr.scan"
                      },
                      {
                        "const": "qr.manage"
                      },
                      {
                        "const": "internal.shopify"
                      },
                      {
                        "const": "queue.admin"
                      },
                      {
                        "const": "part.viewer"
                      },
                      {
                        "const": "part.editor"
                      },
                      {
                        "const": "sku.viewer"
                      },
                      {
                        "const": "sku.editor"
                      },
                      {
                        "const": "orders.admin"
                      },
                      {
                        "const": "material.viewer"
                      },
                      {
                        "const": "material.editor"
                      },
                      {
                        "const": "printer.viewer"
                      },
                      {
                        "const": "printer.editor"
                      },
                      {
                        "const": "profile.viewer"
                      },
                      {
                        "const": "profile.editor"
                      },
                      {
                        "const": "settings.admin"
                      },
                      {
                        "const": "subscription.admin"
                      }
                    ]
                  }
                }
              }
            }
          }
        },
        "x-permission": "permission.view"
      }
    },
    "/v1/printer-commands/send": {
      "post": {
        "summary": "Send command to printers",
        "tags": [
          "Printers"
        ],
        "parameters": [],
        "requestBody": {
          "description": "Printer IDs and command to send",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SendCommandRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "List of printer IDs that received the command",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  }
                }
              }
            }
          }
        },
        "x-permission": "printer.control"
      }
    },
    "/v1/settings/store": {
      "get": {
        "summary": "Get store settings",
        "tags": [
          "Settings"
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "Current settings for the store",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetStoreSettingsResponse"
                }
              }
            }
          }
        },
        "x-permission": "settings.view"
      },
      "patch": {
        "summary": "Update store settings",
        "description": "`qrWorkflowSettings` needs the QR Workflows add-on (403 without it) and\nis checked against the action catalog from GET /v1/qr-tags/actions: an\nunknown action, a pair default that isn't one of that pair's actions or\nis destructive, or an order listing another scan's actions is a 400.",
        "tags": [
          "Settings"
        ],
        "parameters": [],
        "requestBody": {
          "description": "Settings to update",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateStoreSettingsRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Updated store settings",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetStoreSettingsResponse"
                }
              }
            }
          }
        },
        "x-permission": "settings.edit"
      }
    },
    "/v1/settings/slicers": {
      "get": {
        "summary": "Get available slicer versions",
        "tags": [
          "Settings"
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "List of all supported slicer versions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetAllSlicerVersionsResponse"
                }
              }
            }
          }
        },
        "x-permission": "settings.view"
      }
    },
    "/v1/settings/notifications/search": {
      "post": {
        "summary": "Search notification settings",
        "tags": [
          "Settings"
        ],
        "parameters": [],
        "requestBody": {
          "description": "Search query with filters",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SearchQueryDtoNotificationSetting"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Search results with notification settings",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SearchResponse"
                }
              }
            }
          }
        },
        "x-permission": "settings.view"
      }
    },
    "/v1/settings/store/search": {
      "post": {
        "summary": "Search store settings",
        "tags": [
          "Settings"
        ],
        "parameters": [],
        "requestBody": {
          "description": "Search query with filters",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SearchQueryDtoStoreSettings"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Search results with store settings",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SearchResponse"
                }
              }
            }
          }
        },
        "x-permission": "settings.view"
      }
    },
    "/v1/materials": {
      "get": {
        "summary": "Get all materials",
        "description": "List all material types (e.g., PLA, PETG, ABS)",
        "tags": [
          "Materials"
        ],
        "parameters": [
          {
            "name": "name",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "brand",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "type",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "identifier",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "tags",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "filamentUserProfileId",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "filamentSystemProfileId",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "starred",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "pricePer1000g",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "source",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "externalId",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "customMetadata",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "id",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "storeId",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "createdAt",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "updatedAt",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false,
            "title": "Sort"
          },
          {
            "name": "limit",
            "in": "query",
            "schema": {
              "type": "number",
              "minimum": 1,
              "maximum": 1000
            },
            "required": false,
            "title": "Limit"
          },
          {
            "name": "offset",
            "in": "query",
            "schema": {
              "type": "number",
              "minimum": 0
            },
            "required": false,
            "title": "Offset"
          },
          {
            "name": "fields",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false,
            "title": "Fields"
          },
          {
            "name": "include",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false,
            "title": "Include"
          },
          {
            "name": "meta",
            "in": "query",
            "schema": {
              "type": "boolean"
            },
            "required": false,
            "title": "Meta"
          },
          {
            "name": "hints",
            "in": "query",
            "schema": {
              "type": "boolean"
            },
            "required": false,
            "title": "Hints"
          }
        ],
        "responses": {
          "200": {
            "description": "All material types in your inventory",
            "content": {
              "application/json": {
                "schema": {
                  "oneOf": [
                    {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/Material"
                      }
                    },
                    {
                      "$ref": "#/components/schemas/SearchResponse"
                    }
                  ]
                }
              }
            }
          }
        },
        "x-permission": "material.view"
      },
      "post": {
        "summary": "Create material",
        "description": "Create a new material type",
        "tags": [
          "Materials"
        ],
        "parameters": [],
        "requestBody": {
          "description": "Material type data",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/MaterialInsert"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "The created material",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Material"
                }
              }
            }
          }
        },
        "x-permission": "material.create"
      },
      "delete": {
        "summary": "Delete materials",
        "description": "Delete multiple material types",
        "tags": [
          "Materials"
        ],
        "parameters": [],
        "requestBody": {
          "description": "Material IDs to delete",
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "type": "string",
                  "pattern": "^[a-z0-9]{24}$"
                }
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "IDs of deleted materials",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  }
                }
              }
            }
          }
        },
        "x-permission": "material.delete"
      }
    },
    "/v1/materials/search": {
      "post": {
        "summary": "Search materials",
        "description": "Search materials with complex filters",
        "tags": [
          "Materials"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SearchQueryDtoMaterial"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SearchResponse"
                }
              }
            }
          }
        },
        "x-permission": "material.view"
      }
    },
    "/v1/materials/full": {
      "get": {
        "summary": "Get full material data",
        "description": "Get complete material data including variants, groups, instances, and assignments",
        "tags": [
          "Materials"
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "All material-related data in one response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MaterialsData"
                }
              }
            }
          }
        },
        "x-permission": "material.view"
      }
    },
    "/v1/materials/variants": {
      "get": {
        "summary": "Get all variants",
        "description": "List all material variants (specific colors/brands of a material type)",
        "tags": [
          "Material_Variants"
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "All material variants",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/MaterialVariant"
                  }
                }
              }
            }
          }
        },
        "x-permission": "material.view"
      },
      "post": {
        "summary": "Create variant",
        "description": "Create a new material variant (e.g., \"Bambu PLA Basic - Red\")\n\nVariant names are unique per material, ignoring case and surrounding\nwhitespace. Reusing an existing variant's name returns 409 Conflict.",
        "tags": [
          "Material_Variants"
        ],
        "parameters": [],
        "requestBody": {
          "description": "Variant data including material type and color",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/MaterialVariantInsert"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "The created variant",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MaterialVariant"
                }
              }
            }
          }
        },
        "x-permission": "material.create"
      },
      "delete": {
        "summary": "Delete multiple variants",
        "description": "Delete multiple variants",
        "tags": [
          "Material_Variants"
        ],
        "parameters": [],
        "requestBody": {
          "description": "Variant IDs to delete",
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "type": "string",
                  "pattern": "^[a-z0-9]{24}$"
                }
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "IDs of deleted variants",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  }
                }
              }
            }
          }
        },
        "x-permission": "material.delete"
      }
    },
    "/v1/materials/variants/{id}": {
      "get": {
        "summary": "Get variant by ID",
        "description": "Get a specific material variant",
        "tags": [
          "Material_Variants"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "schema": {
              "type": "string",
              "pattern": "^[a-z0-9]{24}$"
            },
            "required": true,
            "description": " Variant ID"
          }
        ],
        "responses": {
          "200": {
            "description": "The requested variant",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MaterialVariant"
                }
              }
            }
          }
        },
        "x-permission": "material.view"
      },
      "patch": {
        "summary": "Update variant",
        "description": "Update a variant's properties\n\nRenaming onto another variant of the same material returns 409 Conflict.\nA changed `pricePer1000g` is added to the material's price history,\nnaming who changed it.",
        "tags": [
          "Material_Variants"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "schema": {
              "type": "string",
              "pattern": "^[a-z0-9]{24}$"
            },
            "required": true,
            "description": " Variant ID"
          }
        ],
        "requestBody": {
          "description": "Fields to update",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PartialMaterialVariant"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "The updated variant",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MaterialVariant"
                }
              }
            }
          }
        },
        "x-permission": "material.edit"
      },
      "delete": {
        "summary": "Delete variant",
        "description": "Delete a material variant",
        "tags": [
          "Material_Variants"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "schema": {
              "type": "string",
              "pattern": "^[a-z0-9]{24}$"
            },
            "required": true,
            "description": " Variant ID"
          }
        ],
        "responses": {
          "200": {
            "description": "IDs of deleted resources",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  }
                }
              }
            }
          }
        },
        "x-permission": "material.delete"
      }
    },
    "/v1/materials/variants/batch": {
      "post": {
        "summary": "Batch create variants",
        "description": "Create multiple variants at once\n\nAll or nothing: if any name collides with an existing variant of the same\nmaterial, or repeats another name in the request, no variants are created.",
        "tags": [
          "Material_Variants"
        ],
        "parameters": [],
        "requestBody": {
          "description": "Array of variant data",
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/MaterialVariantInsert"
                }
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "The created variants",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/MaterialVariant"
                  }
                }
              }
            }
          }
        },
        "x-permission": "material.create"
      }
    },
    "/v1/materials/groups": {
      "get": {
        "summary": "Get all groups",
        "description": "List all material groups for organizing compatible materials",
        "tags": [
          "Material_Groups"
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "All material groups",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/MaterialGroup"
                  }
                }
              }
            }
          }
        },
        "x-permission": "material.view"
      },
      "post": {
        "summary": "Create group",
        "description": "Create a group to organize interchangeable materials",
        "tags": [
          "Material_Groups"
        ],
        "parameters": [],
        "requestBody": {
          "description": "Group name and configuration",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/MaterialGroupInsert"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "The created group",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MaterialGroup"
                }
              }
            }
          }
        },
        "x-permission": "material.edit"
      },
      "delete": {
        "summary": "Delete multiple groups",
        "description": "Delete multiple groups",
        "tags": [
          "Material_Groups"
        ],
        "parameters": [],
        "requestBody": {
          "description": "Group IDs to delete",
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "type": "string",
                  "pattern": "^[a-z0-9]{24}$"
                }
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "IDs of deleted groups",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  }
                }
              }
            }
          }
        },
        "x-permission": "material.edit"
      }
    },
    "/v1/materials/groups/{id}": {
      "get": {
        "summary": "Get group by ID",
        "description": "Get a specific material group",
        "tags": [
          "Material_Groups"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "schema": {
              "type": "string",
              "pattern": "^[a-z0-9]{24}$"
            },
            "required": true,
            "description": " Group ID"
          }
        ],
        "responses": {
          "200": {
            "description": "The requested group",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MaterialGroup"
                }
              }
            }
          }
        },
        "x-permission": "material.view"
      },
      "patch": {
        "summary": "Update group",
        "description": "Update a material group's properties",
        "tags": [
          "Material_Groups"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "schema": {
              "type": "string",
              "pattern": "^[a-z0-9]{24}$"
            },
            "required": true,
            "description": " Group ID"
          }
        ],
        "requestBody": {
          "description": "Fields to update",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PartialMaterialGroup"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "The updated group",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MaterialGroup"
                }
              }
            }
          }
        },
        "x-permission": "material.edit"
      },
      "delete": {
        "summary": "Delete group",
        "description": "Delete a material group",
        "tags": [
          "Material_Groups"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "schema": {
              "type": "string",
              "pattern": "^[a-z0-9]{24}$"
            },
            "required": true,
            "description": " Group ID"
          }
        ],
        "responses": {
          "200": {
            "description": "IDs of deleted resources",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  }
                }
              }
            }
          }
        },
        "x-permission": "material.edit"
      }
    },
    "/v1/materials/group-members": {
      "get": {
        "summary": "Get all group members",
        "description": "List all group memberships (variants assigned to groups)",
        "tags": [
          "Material_Groups"
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "All group membership records",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/MaterialGroupMember"
                  }
                }
              }
            }
          }
        },
        "x-permission": "material.view"
      },
      "post": {
        "summary": "Add group member",
        "description": "Add a variant to a group",
        "tags": [
          "Material_Groups"
        ],
        "parameters": [],
        "requestBody": {
          "description": "Variant and group IDs",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/MaterialGroupMemberInsert"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "The created membership",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MaterialGroupMember"
                }
              }
            }
          }
        },
        "x-permission": "material.edit"
      },
      "delete": {
        "summary": "Remove group members",
        "description": "Remove variants from groups",
        "tags": [
          "Material_Groups"
        ],
        "parameters": [],
        "requestBody": {
          "description": "Membership IDs to remove",
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "type": "string",
                  "pattern": "^[a-z0-9]{24}$"
                }
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "IDs of removed memberships",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "string",
                    "pattern": "^[a-z0-9]{24}$"
                  }
                }
              }
            }
          }
        },
        "x-permission": "material.edit"
      }
    },
    "/v1/materials/group-members/group/{groupId}": {
      "get": {
        "summary": "Get group members",
        "description": "Get members of a specific group",
        "tags": [
          "Material_Groups"
        ],
        "parameters": [
          {
            "name": "groupId",
            "in": "path",
            "schema": {
              "type": "string",
              "pattern": "^[a-z0-9]{24}$"
            },
            "required": true,
            "description": " Group ID"
          }
        ],
        "responses": {
          "200": {
            "description": "Variants in the group",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/MaterialGroupMember"
                  }
                }
              }
            }
          }
        },
        "x-permission": "material.view"
      }
    },
    "/v1/materials/group-members/{id}": {
      "get": {
        "summary": "Get group member by ID",
        "description": "Get a specific group member record",
        "tags": [
          "Material_Groups"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "schema": {
              "type": "string",
              "pattern": "^[a-z0-9]{24}$"
            },
            "required": true,
            "description": " Membership ID"
          }
        ],
        "responses": {
          "200": {
            "description": "The membership record",
            "content": {
              "application/json": {
                "schema": {
                  "oneOf": [
                    {
                      "type": "null"
                    },
                    {
                      "$ref": "#/components/schemas/MaterialGroupMember"
                    }
                  ]
                }
              }
            }
          }
        },
        "x-permission": "material.view"
      }
    },
    "/v1/materials/assignments": {
      "get": {
        "summary": "Get all assignments",
        "description": "List all material assignments to parts",
        "tags": [
          "Material_Assignments"
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "All part-material assignments",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PartMaterialAssignment"
                  }
                }
              }
            }
          }
        },
        "x-permission": "material.view"
      },
      "delete": {
        "summary": "Remove assignments",
        "description": "Remove material assignments by ID",
        "tags": [
          "Material_Assignments"
        ],
        "parameters": [],
        "requestBody": {
          "description": "Assignment IDs to remove",
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "type": "string",
                  "pattern": "^[a-z0-9]{24}$"
                }
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Success. The response has no body."
          }
        },
        "x-permission": "material.edit"
      }
    },
    "/v1/materials/assignments/part/{partId}": {
      "get": {
        "summary": "Get part assignments",
        "description": "Get material assignments for a specific part",
        "tags": [
          "Material_Assignments"
        ],
        "parameters": [
          {
            "name": "partId",
            "in": "path",
            "schema": {
              "type": "string",
              "pattern": "^[a-z0-9]{24}$"
            },
            "required": true,
            "description": " Part ID"
          }
        ],
        "responses": {
          "200": {
            "description": "Material assignments for the part",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PartMaterialAssignment"
                  }
                }
              }
            }
          }
        },
        "x-permission": "material.view"
      }
    },
    "/v1/materials/assignments/{id}": {
      "get": {
        "summary": "Get assignment by ID",
        "description": "Get a specific material assignment",
        "tags": [
          "Material_Assignments"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "schema": {
              "type": "string",
              "pattern": "^[a-z0-9]{24}$"
            },
            "required": true,
            "description": " Assignment ID"
          }
        ],
        "responses": {
          "200": {
            "description": "The assignment record",
            "content": {
              "application/json": {
                "schema": {
                  "oneOf": [
                    {
                      "type": "null"
                    },
                    {
                      "$ref": "#/components/schemas/PartMaterialAssignment"
                    }
                  ]
                }
              }
            }
          }
        },
        "x-permission": "material.view"
      }
    },
    "/v1/materials/parts/{partId}/assignments": {
      "post": {
        "summary": "Assign material to part",
        "description": "Assign a material to a part's filament channel",
        "tags": [
          "Material_Assignments"
        ],
        "parameters": [
          {
            "name": "partId",
            "in": "path",
            "schema": {
              "type": "string",
              "pattern": "^[a-z0-9]{24}$"
            },
            "required": true,
            "description": " Part ID"
          }
        ],
        "requestBody": {
          "description": "Assignment data with material/variant/group and channel index",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PartMaterialAssignmentInsert"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "The created assignment",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PartMaterialAssignment"
                }
              }
            }
          }
        },
        "x-permission": "material.edit"
      },
      "delete": {
        "summary": "Clear part assignments",
        "description": "Clear all material assignments from a part",
        "tags": [
          "Material_Assignments"
        ],
        "parameters": [
          {
            "name": "partId",
            "in": "path",
            "schema": {
              "type": "string",
              "pattern": "^[a-z0-9]{24}$"
            },
            "required": true,
            "description": " Part ID"
          }
        ],
        "responses": {
          "200": {
            "description": "Success. The response has no body."
          }
        },
        "x-permission": "material.edit"
      }
    },
    "/v1/materials/instances": {
      "get": {
        "summary": "Get all material instances",
        "description": "List all physical filament spools in your inventory",
        "tags": [
          "Material_Instances"
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "All material instances (spools)",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/MaterialInstance"
                  }
                }
              }
            }
          }
        },
        "x-permission": "material.instance.view"
      },
      "post": {
        "summary": "Create material instance",
        "description": "Add a new spool to your inventory",
        "tags": [
          "Material_Instances"
        ],
        "parameters": [],
        "requestBody": {
          "description": "Spool data with variant and remaining weight",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/MaterialInstanceInsert"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "The created instance",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MaterialInstance"
                }
              }
            }
          }
        },
        "x-permission": "material.instance.create"
      }
    },
    "/v1/materials/instances/finish": {
      "post": {
        "summary": "Finish spools",
        "description": "Finish spools as used up or archived, in bulk\n\nUsed up writes off what is left on each spool as waste. Archived takes\nthe spool out of on-hand stock but keeps its weight on record, so it can\nbe restored. Either way each spool's weight leaves stock on a `retire`\nrow in its activity, and a spool loaded in a printer slot comes out of\nit; the slot keeps the spool's material and color. A spool that is\nalready finished is left as it is, with no second row, and is listed in\n`alreadyFinished`. An unknown id is a 404 and finishes nothing.\n\nNeeds the filament-inventory and spool-tracking add-ons.",
        "tags": [
          "Material_Instances"
        ],
        "parameters": [],
        "requestBody": {
          "description": "Up to 500 spool IDs and how they were finished",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/FinishSpoolsRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "The spools finished now, and those that already were",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/FinishSpoolsResponse"
                }
              }
            }
          }
        },
        "x-permission": "material.instance.edit"
      }
    },
    "/v1/materials/instances/restore": {
      "post": {
        "summary": "Restore spools",
        "description": "Bring finished spools back to active, in bulk\n\nEach spool comes back with the weight its `retire` row took off, on a\n`restore` row in its activity. It is not put back into a printer slot.\nSpools that are not finished are left as they are and are not listed in\n`restored`. An unknown id is a 404 and restores nothing.\n\nNeeds the filament-inventory and spool-tracking add-ons.",
        "tags": [
          "Material_Instances"
        ],
        "parameters": [],
        "requestBody": {
          "description": "Up to 500 spool IDs",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RestoreSpoolsRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "The spools brought back",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RestoreSpoolsResponse"
                }
              }
            }
          }
        },
        "x-permission": "material.instance.edit"
      }
    },
    "/v1/materials/instances/{id}": {
      "get": {
        "summary": "Get instance by ID",
        "description": "Get a specific material instance (spool)\n\n`finishedAt` and `finishReason` are null while the spool is active. With\nthe filament-inventory add-on, `receivedAt`, `supplier` and\n`orderNumber` come from the delivery the spool was received on, and are\nnull for a spool converted from bulk or registered from a scan. Without\nthe add-on, those three are null. An unknown ID returns null.",
        "tags": [
          "Material_Instances"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "schema": {
              "type": "string",
              "pattern": "^[a-z0-9]{24}$"
            },
            "required": true,
            "description": " Instance ID"
          }
        ],
        "responses": {
          "200": {
            "description": "The instance details",
            "content": {
              "application/json": {
                "schema": {
                  "oneOf": [
                    {
                      "type": "null"
                    },
                    {
                      "$ref": "#/components/schemas/MaterialInstanceDetail"
                    }
                  ]
                }
              }
            }
          }
        },
        "x-permission": "material.instance.view"
      },
      "put": {
        "summary": "Update material instance",
        "description": "Update spool information (e.g., remaining weight)\n\nWith the filament-inventory and spool-tracking add-ons, a change to\n`remainingMaterial` is recorded in the filament's stock activity, naming\nwho made it. Weights are whole grams.",
        "tags": [
          "Material_Instances"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "schema": {
              "type": "string",
              "pattern": "^[a-z0-9]{24}$"
            },
            "required": true,
            "description": " Instance ID"
          }
        ],
        "requestBody": {
          "description": "Fields to update",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PartialMaterialInstance"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "The updated instance",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MaterialInstance"
                }
              }
            }
          }
        },
        "x-permission": "material.instance.edit"
      },
      "delete": {
        "summary": "Delete material instance",
        "description": "Remove a spool from inventory\n\nWith the filament-inventory and spool-tracking add-ons, deleting a spool\nwith weight left records that weight leaving stock. The spool's activity\nstays readable after it is deleted.",
        "tags": [
          "Material_Instances"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "schema": {
              "type": "string",
              "pattern": "^[a-z0-9]{24}$"
            },
            "required": true,
            "description": " Instance ID"
          }
        ],
        "responses": {
          "200": {
            "description": "IDs of deleted resources",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  }
                }
              }
            }
          }
        },
        "x-permission": "material.instance.delete"
      }
    },
    "/v1/materials/instances/{id}/activity": {
      "get": {
        "summary": "Get spool activity",
        "description": "One spool's drawdown history, newest first\n\nEvery row that moved the spool's weight: prints (with the job, part,\nattempt, printer and whoever queued it), and receiving, weighing,\nfinishing and restoring it (job and printer fields null). `costCents` is\nwhat the grams moved are worth at the spool's price per kg, and null on\nan archive or restore row, which spends nothing. `usedGrams`\nand `printCount` cover every page; `total` counts the rows. An unknown\nspool is a 404.\n\nNeeds the filament-inventory add-on.",
        "tags": [
          "Material_Instances"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "schema": {
              "type": "string",
              "pattern": "^[a-z0-9]{24}$"
            },
            "required": true,
            "description": " Instance ID"
          },
          {
            "name": "limit",
            "in": "query",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 1000
            },
            "required": false,
            "title": "Rows per page, default 50",
            "description": "Rows per page, default 50."
          },
          {
            "name": "offset",
            "in": "query",
            "schema": {
              "type": "integer",
              "minimum": 0
            },
            "required": false,
            "title": "Rows to skip, for the next page",
            "description": "Rows to skip, for the next page."
          }
        ],
        "responses": {
          "200": {
            "description": "One page of the spool's ledger with its totals",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SpoolActivityResponse"
                }
              }
            }
          }
        },
        "x-permission": "material.instance.view"
      }
    },
    "/v1/materials/spools/serial/{serial}": {
      "get": {
        "summary": "Get a spool serial",
        "description": "A spool serial as inventory and the printers know it\n\n`spoolId` is the spool in inventory carrying the serial (an active one,\nelse the newest used up or archived one), null when none does. `slots`\nare the printer slots whose last tag read is this serial, newest first,\neach with the printer's remaining percent (null when it does not measure\nthe roll) and what that leaves on the roll, read against the roll weight\nthe printer reports, else the material's last delivered roll size, else\nthe store's default spool size, else 1 kg. The prints that used the roll\ncome from `GET /v1/print-history/serials/:serial/attempts`.\n\nNeeds the filament-inventory and spool-tracking add-ons.",
        "tags": [
          "Material_Instances"
        ],
        "parameters": [
          {
            "name": "serial",
            "in": "path",
            "schema": {
              "type": "string"
            },
            "required": true,
            "description": " The spool serial"
          }
        ],
        "responses": {
          "200": {
            "description": "The spool carrying it and the slots holding it",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReadSpool"
                }
              }
            }
          }
        },
        "x-permission": "material.instance.view"
      },
      "post": {
        "summary": "Add a spool serial to inventory",
        "description": "Add a roll known by its serial to inventory\n\nCreates one spool of `variantId` holding `grams`, carrying the serial,\nout of that color's bulk when `from` is `bulk_first` and bulk holds it\n(else as new stock), and loads it in the slot that last read the serial\nwhen that slot holds no spool. 409 with the `spoolId` when an active\nspool already carries the serial.\n\nNeeds the filament-inventory and spool-tracking add-ons.",
        "tags": [
          "Material_Instances"
        ],
        "parameters": [
          {
            "name": "serial",
            "in": "path",
            "schema": {
              "type": "string"
            },
            "required": true,
            "description": " The spool serial"
          }
        ],
        "requestBody": {
          "description": "The color, what the roll holds, and where it comes from",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AddReadSpoolRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "The new spool's id, and whether it came out of bulk",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AddReadSpoolResponse"
                }
              }
            }
          }
        },
        "x-permission": "material.instance.create"
      }
    },
    "/v1/materials/printer-slots": {
      "get": {
        "summary": "Get all printer slots",
        "description": "List all printer filament slot configurations",
        "tags": [
          "Printer_Slots"
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "All printer slot configurations",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PrinterSlot"
                  }
                }
              }
            }
          }
        },
        "x-permission": "printer.view"
      }
    },
    "/v1/materials/printer-slots/assign": {
      "patch": {
        "summary": "Assign to printer slots",
        "description": "Assign materials to printer filament slots (AMS slots).\n\nWith `instanceId`, the slot takes that roll's variant, material and\ncolor, and the roll's serial (or none, when the roll has none). A roll\nalready loaded in another slot moves: that slot is cleared in the same\ntransaction, so a roll is never in two slots. An `instanceId` request\ntargets exactly one slot. Loading or moving a roll changes no weight.",
        "tags": [
          "Printer_Slots"
        ],
        "parameters": [],
        "requestBody": {
          "description": "Printer IDs, visual slot positions, and material to assign",
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/printerIdsCuid2visualSlotsVisualSlotsetOnPrinterbooleanundefinedmaterialTypestringfilamentUserProfileIdCuid2nullundefinedfilamentSystemProfileIdnumber...1more...undefinedvariantIdnullundefinedmaterialIdnullundefinedinstanceIdnullundefined..."
                  },
                  {
                    "$ref": "#/components/schemas/printerIdsCuid2visualSlotsVisualSlotsetOnPrinterbooleanundefinedinstanceIdCuid2filamentUserProfileIdCuid2nullundefinedfilamentSystemProfileIdnumber...1more...undefinedvariantIdnullundefinedmaterialIdnullundefinedmaterialTypenullundefined"
                  },
                  {
                    "$ref": "#/components/schemas/printerIdsCuid2visualSlotsVisualSlotsetOnPrinterbooleanundefinedvariantIdCuid2filamentUserProfileIdCuid2nullundefinedfilamentSystemProfileIdnumber...1more...undefinedinstanceIdnullundefinedmaterialIdnullundefinedmaterialTypenullundefined"
                  },
                  {
                    "$ref": "#/components/schemas/printerIdsCuid2visualSlotsVisualSlotsetOnPrinterbooleanundefinedmaterialIdCuid2filamentUserProfileIdCuid2nullundefinedfilamentSystemProfileIdnumber...1more...undefinedinstanceIdnullundefinedvariantIdnullundefinedmaterialTypenullundefined"
                  }
                ]
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Success. The response has no body."
          }
        },
        "x-permission": "printer.edit"
      }
    },
    "/v1/materials/printer-slots/profile": {
      "patch": {
        "summary": "Set slot profile",
        "description": "Set the slicing profile for a printer slot",
        "tags": [
          "Printer_Slots"
        ],
        "parameters": [],
        "requestBody": {
          "description": "Printer IDs, visual slot position, and profile to use",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SetSlotProfileRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Success. The response has no body."
          }
        },
        "x-permission": "printer.edit"
      }
    },
    "/v1/materials/printer-slots/clear": {
      "patch": {
        "summary": "Clear printer slots",
        "description": "Clear material assignments from specific printer slots",
        "tags": [
          "Printer_Slots"
        ],
        "parameters": [],
        "requestBody": {
          "description": "Printer IDs and visual slot positions to clear",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ClearPrinterSlotRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Success. The response has no body."
          }
        },
        "x-permission": "printer.edit"
      }
    },
    "/v1/materials/printer-slots/clear-all": {
      "delete": {
        "summary": "Clear all printer slots",
        "description": "Clear the filament assigned to every slot of each printer. The slots\nstay; only what Printago has assigned to them is forgotten. Nothing is\nsent to the printers.",
        "tags": [
          "Printer_Slots"
        ],
        "parameters": [],
        "requestBody": {
          "description": "Printer IDs to clear",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/BulkActionRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Success. The response has no body."
          }
        },
        "x-permission": "printer.edit"
      }
    },
    "/v1/materials/printer-slots/{id}": {
      "get": {
        "summary": "Get printer slot by ID",
        "description": "Get a specific printer slot configuration",
        "tags": [
          "Printer_Slots"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "schema": {
              "type": "string",
              "pattern": "^[a-z0-9]{24}$"
            },
            "required": true,
            "description": " Slot ID"
          }
        ],
        "responses": {
          "200": {
            "description": "The slot configuration",
            "content": {
              "application/json": {
                "schema": {
                  "oneOf": [
                    {
                      "type": "null"
                    },
                    {
                      "$ref": "#/components/schemas/PrinterSlot"
                    }
                  ]
                }
              }
            }
          }
        },
        "x-permission": "printer.view"
      }
    },
    "/v1/materials/billing-rates": {
      "post": {
        "summary": "Set billable rates",
        "description": "Set a billable rate on several materials at once\n\n`ratePer1000g` is in cents per kg, so $0.05 per gram is 5000. The rate\nstarts at `effectiveFrom`; a date starts at midnight in the store's\ntimezone. Whatever rate each material had in effect from then on ends\nthere and stays in its history. A start before a material's latest rate\nis a 400 (a rate that was ended before it began doesn't count); a start\nequal to it replaces that rate, which is kept in the history with no\ntime in effect. An unknown material is a 404 and sets\nnothing.\n\nBillable rates price prints in the Usage by user report. Needs the\nfilament-inventory add-on.",
        "tags": [
          "Materials"
        ],
        "parameters": [],
        "requestBody": {
          "description": "Up to 500 material IDs, the rate and its start",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SetBillingRatesRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "The new rates, one per material",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/MaterialBillingRate"
                  }
                }
              }
            }
          }
        },
        "x-permission": "material.edit"
      }
    },
    "/v1/materials/billing-rates/end": {
      "post": {
        "summary": "End billable rates",
        "description": "End the current billable rate on several materials at once\n\nEach material's rate in effect stops applying now and stays in its\nhistory; a rate set to start later ends where it begins, so it never\napplies. Prints from now on show no rate until a new one is set.\nMaterials with no current or later rate are left out of `ended`. An\nunknown material is a 404 and ends nothing.\n\nNeeds the filament-inventory add-on.",
        "tags": [
          "Materials"
        ],
        "parameters": [],
        "requestBody": {
          "description": "Up to 500 material IDs",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/EndBillingRatesRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "The materials whose rate was ended",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EndBillingRatesResponse"
                }
              }
            }
          }
        },
        "x-permission": "material.edit"
      }
    },
    "/v1/materials/billing-rates/{rateId}": {
      "patch": {
        "summary": "Update a billable rate",
        "description": "Change one billable rate\n\nChanges the rate's charge (`ratePer1000g`, cents per kg), its start, or\nits end; fields left out stay as they are. Dates start at midnight in\nthe store's timezone, and `effectiveTo` is exclusive: the rate's last day\nis the one before. Null `effectiveTo` keeps the rate going. A rate whose\ndays would run into another of the material's rates is a 400 naming that\nrate, and nothing changes; so is an end on or before the start. An\nunknown rate is a 404.\n\nNeeds the filament-inventory add-on.",
        "tags": [
          "Materials"
        ],
        "parameters": [
          {
            "name": "rateId",
            "in": "path",
            "schema": {
              "type": "string",
              "pattern": "^[a-z0-9]{24}$"
            },
            "required": true,
            "description": " Billable rate ID"
          }
        ],
        "requestBody": {
          "description": "The charge, start or end to change",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateBillingRateRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "The rate as it is now",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MaterialBillingRate"
                }
              }
            }
          }
        },
        "x-permission": "material.edit"
      },
      "delete": {
        "summary": "Delete a billable rate",
        "description": "Delete a billable rate\n\nTakes the rate out of the material's history, so prints it priced show\nno rate in Usage by user. To stop a rate from today on and keep it in\nthe history, end it instead. An unknown rate is a 404.\n\nNeeds the filament-inventory add-on.",
        "tags": [
          "Materials"
        ],
        "parameters": [
          {
            "name": "rateId",
            "in": "path",
            "schema": {
              "type": "string",
              "pattern": "^[a-z0-9]{24}$"
            },
            "required": true,
            "description": " Billable rate ID"
          }
        ],
        "responses": {
          "200": {
            "description": "Success. The response has no body."
          }
        },
        "x-permission": "material.edit"
      }
    },
    "/v1/materials/{id}/billing-rates": {
      "get": {
        "summary": "Get billable rates",
        "description": "A material's billable rates, newest first\n\n`ratePer1000g` is in cents per kg. `effectiveTo` is when a rate stopped\napplying (exclusive), and null on the material's current rate.\n`actorName` is who set it. An unknown material is a 404.\n\nNeeds the filament-inventory add-on.",
        "tags": [
          "Materials"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "schema": {
              "type": "string",
              "pattern": "^[a-z0-9]{24}$"
            },
            "required": true,
            "description": " Material ID"
          }
        ],
        "responses": {
          "200": {
            "description": "Every rate the material has had",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/MaterialBillingRate"
                  }
                }
              }
            }
          }
        },
        "x-permission": "material.view"
      }
    },
    "/v1/materials/{materialId}/variants": {
      "get": {
        "summary": "Get variants by material",
        "description": "Get all variants of a specific material type",
        "tags": [
          "Material_Variants"
        ],
        "parameters": [
          {
            "name": "materialId",
            "in": "path",
            "schema": {
              "type": "string",
              "pattern": "^[a-z0-9]{24}$"
            },
            "required": true,
            "description": " Material type ID"
          }
        ],
        "responses": {
          "200": {
            "description": "Variants for the material",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/MaterialVariant"
                  }
                }
              }
            }
          }
        },
        "x-permission": "material.view"
      }
    },
    "/v1/materials/{id}/activity": {
      "get": {
        "summary": "Get material stock activity",
        "description": "Every gram in and out of a material's stock, across all of its variants, newest first\n\nNeeds the filament-inventory add-on. Rows are the same as a variant's\nstock activity: bulk rows have a null `instanceId`, and rows for tracked\nrolls come back only with the spool-tracking add-on. `by` names who caused\neach row: whoever queued the print on a print row, whoever made the\nchange on any other. Filter by `variantId`, by `actorId` (matched against\n`by.actorId`), and by `kind`: `print` for draw-downs by prints, `stock`\nfor everything else. `total` counts the rows matching the filters, and\n`actors` lists everyone behind one of the material's rows, whatever the\nfilters.",
        "tags": [
          "Materials"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "schema": {
              "type": "string",
              "pattern": "^[a-z0-9]{24}$"
            },
            "required": true,
            "description": " Material ID"
          },
          {
            "name": "variantId",
            "in": "query",
            "schema": {
              "type": "string",
              "pattern": "^[a-z0-9]{24}$"
            },
            "required": false,
            "title": "Only this variant's rows",
            "description": "Only this variant's rows."
          },
          {
            "name": "actorId",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false,
            "title": "Only rows caused by this actor, matched against `by.actorId`",
            "description": "Only rows caused by this actor, matched against `by.actorId`."
          },
          {
            "name": "kind",
            "in": "query",
            "schema": {
              "oneOf": [
                {
                  "const": "print"
                },
                {
                  "const": "stock"
                }
              ]
            },
            "required": false,
            "title": "`print` for draw-downs by prints, `stock` for every other row",
            "description": "`print` for draw-downs by prints, `stock` for every other row."
          },
          {
            "name": "limit",
            "in": "query",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 1000
            },
            "required": false,
            "title": "Rows per page, default 50",
            "description": "Rows per page, default 50."
          },
          {
            "name": "offset",
            "in": "query",
            "schema": {
              "type": "integer",
              "minimum": 0
            },
            "required": false,
            "title": "Rows to skip, for the next page",
            "description": "Rows to skip, for the next page."
          }
        ],
        "responses": {
          "200": {
            "description": "One page of the material's ledger, the matching count, and its actors",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MaterialActivityResponse"
                }
              }
            }
          }
        },
        "x-permission": "material.view"
      }
    },
    "/v1/materials/{id}/pricing": {
      "get": {
        "summary": "Get material pricing",
        "description": "A material's pricing: its default price, what you paid, and how both changed\n\n`pricePer1000g` is the material's default price per kg in cents.\n`averagePaidPer1000g` is what priced deliveries of the material in the\nlast `days` (default 90) cost per kg, weighted by weight, over\n`averageSpoolCount` spools; null when there were none. A line's price per\nkg is the one its whole-cent price each stands for, the color's own price\nwhen it rounds to it. `history` lists\nthe material's deliveries (`receive`) and changes to its or its colors'\nbase prices (`default`, naming who changed it), newest first.\n\nNeeds the filament-inventory add-on.",
        "tags": [
          "Materials"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "schema": {
              "type": "string",
              "pattern": "^[a-z0-9]{24}$"
            },
            "required": true,
            "description": " Material ID"
          },
          {
            "name": "days",
            "in": "query",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 3650
            },
            "required": false,
            "title": "How many days back the average reaches, default 90",
            "description": "How many days back the average reaches, default 90."
          }
        ],
        "responses": {
          "200": {
            "description": "The default price, the average paid, and the price history",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MaterialPricingResponse"
                }
              }
            }
          }
        },
        "x-permission": "material.view"
      }
    },
    "/v1/materials/{id}/spools/received": {
      "get": {
        "summary": "Get spool received dates",
        "description": "When each of a material's spools was received\n\nOne entry per spool that came in on a delivery, with the delivery's\nreceived date, which can be earlier than the day the delivery was\nentered. Spools converted from bulk or registered from a scan are not\nlisted. An unknown material is a 404.\n\nNeeds the filament-inventory add-on.",
        "tags": [
          "Materials"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "schema": {
              "type": "string",
              "pattern": "^[a-z0-9]{24}$"
            },
            "required": true,
            "description": " Material ID"
          }
        ],
        "responses": {
          "200": {
            "description": "Each delivered spool's received date",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SpoolReceivedDatesResponse"
                }
              }
            }
          }
        },
        "x-permission": "material.instance.view"
      }
    },
    "/v1/materials/{id}/profiles": {
      "post": {
        "summary": "Assign profile to material",
        "description": "Link a slicing profile to a material for automatic profile selection",
        "tags": [
          "Materials"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "schema": {
              "type": "string",
              "pattern": "^[a-z0-9]{24}$"
            },
            "required": true,
            "description": " Material ID"
          }
        ],
        "requestBody": {
          "description": "Profile assignment data",
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/modelIdstringnozzleDiameterstringuserProfileIdnullundefinedsystemProfileIdnumber"
                  },
                  {
                    "$ref": "#/components/schemas/modelIdstringnozzleDiameterstringuserProfileIdCuid2systemProfileIdnullundefined"
                  }
                ]
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "The created profile assignments",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/MaterialProfileAssignment"
                  }
                }
              }
            }
          }
        },
        "x-permission": "material.edit"
      },
      "delete": {
        "summary": "Clear material profile",
        "description": "Remove profile assignment from a material",
        "tags": [
          "Materials"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "schema": {
              "type": "string",
              "pattern": "^[a-z0-9]{24}$"
            },
            "required": true,
            "description": " Material ID"
          }
        ],
        "requestBody": {
          "description": "Profile to clear",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ClearMaterialProfileRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Success. The response has no body."
          }
        },
        "x-permission": "material.edit"
      }
    },
    "/v1/materials/variants/{variantId}/profiles": {
      "post": {
        "summary": "Assign profile to variant",
        "description": "Link a slicing profile to a variant",
        "tags": [
          "Material_Variants"
        ],
        "parameters": [
          {
            "name": "variantId",
            "in": "path",
            "schema": {
              "type": "string",
              "pattern": "^[a-z0-9]{24}$"
            },
            "required": true,
            "description": " Variant ID"
          }
        ],
        "requestBody": {
          "description": "Profile assignment data",
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/modelIdstringnozzleDiameterstringuserProfileIdnullundefinedsystemProfileIdnumber"
                  },
                  {
                    "$ref": "#/components/schemas/modelIdstringnozzleDiameterstringuserProfileIdCuid2systemProfileIdnullundefined"
                  }
                ]
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "The created profile assignments",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/MaterialProfileAssignment"
                  }
                }
              }
            }
          }
        },
        "x-permission": "material.edit"
      },
      "delete": {
        "summary": "Clear variant profile",
        "description": "Remove profile assignment from a variant",
        "tags": [
          "Material_Variants"
        ],
        "parameters": [
          {
            "name": "variantId",
            "in": "path",
            "schema": {
              "type": "string",
              "pattern": "^[a-z0-9]{24}$"
            },
            "required": true,
            "description": " Variant ID"
          }
        ],
        "requestBody": {
          "description": "Profile to clear",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ClearMaterialProfileRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Success. The response has no body."
          }
        },
        "x-permission": "material.edit"
      }
    },
    "/v1/materials/{id}": {
      "get": {
        "summary": "Get material by ID",
        "description": "Get a single material type by ID",
        "tags": [
          "Materials"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "schema": {
              "type": "string",
              "pattern": "^[a-z0-9]{24}$"
            },
            "required": true,
            "description": " Material ID"
          }
        ],
        "responses": {
          "200": {
            "description": "The requested material",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Material"
                }
              }
            }
          }
        },
        "x-permission": "material.view"
      },
      "patch": {
        "summary": "Update material",
        "description": "Update a material type's properties\n\nA changed `pricePer1000g` is added to the material's price history,\nnaming who changed it.",
        "tags": [
          "Materials"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "schema": {
              "type": "string",
              "pattern": "^[a-z0-9]{24}$"
            },
            "required": true,
            "description": " Material ID"
          }
        ],
        "requestBody": {
          "description": "Fields to update",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateMaterialRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "The updated material",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Material"
                }
              }
            }
          }
        },
        "x-permission": "material.edit"
      },
      "delete": {
        "summary": "Delete material",
        "description": "Delete a material type",
        "tags": [
          "Materials"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "schema": {
              "type": "string",
              "pattern": "^[a-z0-9]{24}$"
            },
            "required": true,
            "description": " Material ID"
          }
        ],
        "responses": {
          "200": {
            "description": "IDs of deleted resources",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  }
                }
              }
            }
          }
        },
        "x-permission": "material.delete"
      }
    },
    "/v1/filament-stock": {
      "get": {
        "summary": "Get filament stock",
        "description": "On-hand filament weight per variant, split into tracked spools and untagged bulk\n\nNeeds the filament-inventory add-on. The tracked figures are 0 without the\nspool-tracking add-on, and leave out finished spools. No figure is ever\nnegative: stock stops at 0 g. `lastGramsEach` is the roll size of the\nnewest line received for the row's material.",
        "tags": [
          "Filament_Stock"
        ],
        "parameters": [
          {
            "name": "includeEmpty",
            "in": "query",
            "schema": {
              "type": "boolean"
            },
            "required": false,
            "title": "Include variants that have never held stock",
            "description": "Include variants that have never held stock."
          }
        ],
        "responses": {
          "200": {
            "description": "One row per variant plus store totals",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/FilamentStockResponse"
                }
              }
            }
          }
        },
        "x-permission": "material.view"
      }
    },
    "/v1/filament-stock/{variantId}/activity": {
      "get": {
        "summary": "Get stock activity",
        "description": "Every gram in and out of a filament's stock, newest first\n\nNeeds the filament-inventory add-on. Bulk rows have a null `instanceId`.\nWith the spool-tracking add-on, rows for the filament's tracked rolls come\nback too, each naming its roll; `instanceId` narrows the list to one roll.\nOn a print row, `consumedGrams` is what the print used and `deltaGrams` is\nwhat came off; they differ when the stock ran short.",
        "tags": [
          "Filament_Stock"
        ],
        "parameters": [
          {
            "name": "variantId",
            "in": "path",
            "schema": {
              "type": "string",
              "pattern": "^[a-z0-9]{24}$"
            },
            "required": true,
            "description": " Material variant ID"
          },
          {
            "name": "limit",
            "in": "query",
            "schema": {
              "type": "number"
            },
            "required": false,
            "title": "Rows per page, default 50, at most 200",
            "description": "Rows per page, default 50, at most 200."
          },
          {
            "name": "offset",
            "in": "query",
            "schema": {
              "type": "number"
            },
            "required": false,
            "title": "Rows to skip, for the next page",
            "description": "Rows to skip, for the next page."
          },
          {
            "name": "instanceId",
            "in": "query",
            "schema": {
              "type": "string",
              "pattern": "^[a-z0-9]{24}$"
            },
            "required": false,
            "title": "Only this tracked roll's rows",
            "description": "Only this tracked roll's rows."
          }
        ],
        "responses": {
          "200": {
            "description": "The filament's ledger",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/StockActivityEntry"
                  }
                }
              }
            }
          }
        },
        "x-permission": "material.view"
      }
    },
    "/v1/filament-stock/suppliers": {
      "get": {
        "summary": "List recent suppliers",
        "description": "The suppliers you most recently received filament from\n\nNeeds the filament-inventory add-on.",
        "tags": [
          "Filament_Stock"
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "Up to 10 supplier names, most recently received from first",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SupplierListResponse"
                }
              }
            }
          }
        },
        "x-permission": "material.view"
      }
    },
    "/v1/filament-stock/{variantId}/spools": {
      "get": {
        "summary": "Get tracked spools",
        "description": "The individually tracked spools of one filament, newest roll first\n\nReturns whole instance records — serials, intake pricing, source ids — so\nit is held to the same bar as the material-instance endpoints.",
        "tags": [
          "Filament_Stock"
        ],
        "parameters": [
          {
            "name": "variantId",
            "in": "path",
            "schema": {
              "type": "string",
              "pattern": "^[a-z0-9]{24}$"
            },
            "required": true,
            "description": " Material variant ID"
          }
        ],
        "responses": {
          "200": {
            "description": "Every active spool record of that variant with weight left on it",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/MaterialInstance"
                  }
                }
              }
            }
          }
        },
        "x-permission": "material.view, material.instance.view"
      }
    },
    "/v1/filament-stock/adjust": {
      "post": {
        "summary": "Adjust bulk stock",
        "description": "Correct a variant's bulk weight, recording who changed it and why\n\nNeeds the filament-inventory add-on. A correction that would take the\nbucket below 0 g, or that has no reason, is refused with a 400.",
        "tags": [
          "Filament_Stock"
        ],
        "parameters": [],
        "requestBody": {
          "description": "The variant, the change or the new weight, and a reason",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AdjustBulkStockRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "The bucket's new weight and the change that was applied",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "remainingGrams": {
                      "type": "number"
                    },
                    "deltaGrams": {
                      "type": "number"
                    }
                  },
                  "required": [
                    "remainingGrams",
                    "deltaGrams"
                  ]
                }
              }
            }
          }
        },
        "x-permission": "material.edit"
      }
    },
    "/v1/filament-stock/convert": {
      "post": {
        "summary": "Convert bulk to spools",
        "description": "Turn bulk weight into individually tracked spools\n\nNeeds the filament-inventory and spool-tracking add-ons. Each spool holds\nwhole grams, and bulk gives up exactly what the spools get. Asking for\nmore than bulk holds is refused with a 400 `InsufficientBulkStock` saying\nhow much is there and how many spools would fit, and nothing is\nconverted. `generateLabelCodes` is accepted and ignored.",
        "tags": [
          "Filament_Stock"
        ],
        "parameters": [],
        "requestBody": {
          "description": "The variant, how many spools, and how much each holds",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ConvertBulkToSpoolsRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "The new spool IDs and what is left in the bucket",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ConvertBulkToSpoolsResponse"
                }
              }
            }
          }
        },
        "x-permission": "material.edit"
      }
    },
    "/v1/filament-stock/intakes": {
      "post": {
        "summary": "Receive filament",
        "description": "Receive a filament delivery, adding weight to bulk or creating spool records\n\nNeeds the filament-inventory add-on. A tracked line also needs the\nspool-tracking add-on and is refused with a 403 without it; it creates one\nspool record per unit, returned in `createdInstanceIds`. New spools get\ntheir label code when their QR tag is made; `generateLabelCodes` is\naccepted and ignored. `orderNumber` is saved on the delivery.",
        "tags": [
          "Filament_Stock"
        ],
        "parameters": [],
        "requestBody": {
          "description": "The delivery: supplier, pricing, and one line per filament",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ReceiveFilamentRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "What was received and any spools it created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReceiveFilamentResponse"
                }
              }
            }
          }
        },
        "x-permission": "material.edit"
      }
    },
    "/v1/material-groups": {
      "get": {
        "summary": "Get all material groups",
        "description": "List all material groups for organizing interchangeable materials",
        "tags": [
          "Material_Groups"
        ],
        "operationId": "materialGroups_getAll",
        "parameters": [
          {
            "name": "name",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "priority",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "parentId",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "id",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "storeId",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "createdAt",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "updatedAt",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false,
            "title": "Sort"
          },
          {
            "name": "limit",
            "in": "query",
            "schema": {
              "type": "number",
              "minimum": 1,
              "maximum": 1000
            },
            "required": false,
            "title": "Limit"
          },
          {
            "name": "offset",
            "in": "query",
            "schema": {
              "type": "number",
              "minimum": 0
            },
            "required": false,
            "title": "Offset"
          },
          {
            "name": "fields",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false,
            "title": "Fields"
          },
          {
            "name": "include",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false,
            "title": "Include"
          },
          {
            "name": "meta",
            "in": "query",
            "schema": {
              "type": "boolean"
            },
            "required": false,
            "title": "Meta"
          },
          {
            "name": "hints",
            "in": "query",
            "schema": {
              "type": "boolean"
            },
            "required": false,
            "title": "Hints"
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "oneOf": [
                    {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/MaterialGroup"
                      }
                    },
                    {
                      "$ref": "#/components/schemas/SearchResponse"
                    }
                  ]
                }
              }
            }
          }
        },
        "x-permission": "material.view"
      }
    },
    "/v1/material-groups/search": {
      "post": {
        "summary": "Search material groups",
        "description": "Search material groups with filters",
        "tags": [
          "Material_Groups"
        ],
        "operationId": "materialGroups_search",
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SearchQueryDtoMaterialGroup"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SearchResponse"
                }
              }
            }
          }
        },
        "x-permission": "material.view"
      }
    },
    "/v1/material-group-members": {
      "get": {
        "summary": "Get all material group members",
        "description": "List all material group memberships (variants assigned to groups)",
        "tags": [
          "Material_Groups"
        ],
        "operationId": "materialGroupMembers_getAll",
        "parameters": [
          {
            "name": "variantId",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "materialId",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "materialGroupId",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "materialType",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "priority",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "id",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "storeId",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "createdAt",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "updatedAt",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false,
            "title": "Sort"
          },
          {
            "name": "limit",
            "in": "query",
            "schema": {
              "type": "number",
              "minimum": 1,
              "maximum": 1000
            },
            "required": false,
            "title": "Limit"
          },
          {
            "name": "offset",
            "in": "query",
            "schema": {
              "type": "number",
              "minimum": 0
            },
            "required": false,
            "title": "Offset"
          },
          {
            "name": "fields",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false,
            "title": "Fields"
          },
          {
            "name": "include",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false,
            "title": "Include"
          },
          {
            "name": "meta",
            "in": "query",
            "schema": {
              "type": "boolean"
            },
            "required": false,
            "title": "Meta"
          },
          {
            "name": "hints",
            "in": "query",
            "schema": {
              "type": "boolean"
            },
            "required": false,
            "title": "Hints"
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "oneOf": [
                    {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/MaterialGroupMember"
                      }
                    },
                    {
                      "$ref": "#/components/schemas/SearchResponse"
                    }
                  ]
                }
              }
            }
          }
        },
        "x-permission": "material.view"
      }
    },
    "/v1/material-group-members/search": {
      "post": {
        "summary": "Search material group members",
        "description": "Search material group members with filters",
        "tags": [
          "Material_Groups"
        ],
        "operationId": "materialGroupMembers_search",
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SearchQueryDtoMaterialGroupMember"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SearchResponse"
                }
              }
            }
          }
        },
        "x-permission": "material.view"
      }
    },
    "/v1/material-variants": {
      "get": {
        "summary": "Get all material variants",
        "description": "List all material variants (specific colors/brands of a material type)",
        "tags": [
          "Material_Variants"
        ],
        "operationId": "materialVariants_getAll",
        "parameters": [
          {
            "name": "name",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "materialId",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "color",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "tags",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "filamentUserProfileId",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "filamentSystemProfileId",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "pricePer1000g",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "pressureAdvance",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "source",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "externalId",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "customMetadata",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "id",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "storeId",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "createdAt",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "updatedAt",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false,
            "title": "Sort"
          },
          {
            "name": "limit",
            "in": "query",
            "schema": {
              "type": "number",
              "minimum": 1,
              "maximum": 1000
            },
            "required": false,
            "title": "Limit"
          },
          {
            "name": "offset",
            "in": "query",
            "schema": {
              "type": "number",
              "minimum": 0
            },
            "required": false,
            "title": "Offset"
          },
          {
            "name": "fields",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false,
            "title": "Fields"
          },
          {
            "name": "include",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false,
            "title": "Include"
          },
          {
            "name": "meta",
            "in": "query",
            "schema": {
              "type": "boolean"
            },
            "required": false,
            "title": "Meta"
          },
          {
            "name": "hints",
            "in": "query",
            "schema": {
              "type": "boolean"
            },
            "required": false,
            "title": "Hints"
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "oneOf": [
                    {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/MaterialVariant"
                      }
                    },
                    {
                      "$ref": "#/components/schemas/SearchResponse"
                    }
                  ]
                }
              }
            }
          }
        },
        "x-permission": "material.view"
      }
    },
    "/v1/material-variants/search": {
      "post": {
        "summary": "Search material variants",
        "description": "Search material variants with filters",
        "tags": [
          "Material_Variants"
        ],
        "operationId": "materialVariants_search",
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SearchQueryDtoMaterialVariant"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SearchResponse"
                }
              }
            }
          }
        },
        "x-permission": "material.view"
      }
    },
    "/v1/material-profile-assignments": {
      "get": {
        "summary": "Get all material profile assignments",
        "description": "List all material-to-profile assignments for automatic profile selection",
        "tags": [
          "Materials"
        ],
        "operationId": "materialProfileAssignments_getAll",
        "parameters": [
          {
            "name": "modelId",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "nozzleDiameter",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "materialId",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "variantId",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "userProfileId",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "systemProfileId",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "id",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "storeId",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "createdAt",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "updatedAt",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false,
            "title": "Sort"
          },
          {
            "name": "limit",
            "in": "query",
            "schema": {
              "type": "number",
              "minimum": 1,
              "maximum": 1000
            },
            "required": false,
            "title": "Limit"
          },
          {
            "name": "offset",
            "in": "query",
            "schema": {
              "type": "number",
              "minimum": 0
            },
            "required": false,
            "title": "Offset"
          },
          {
            "name": "fields",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false,
            "title": "Fields"
          },
          {
            "name": "include",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false,
            "title": "Include"
          },
          {
            "name": "meta",
            "in": "query",
            "schema": {
              "type": "boolean"
            },
            "required": false,
            "title": "Meta"
          },
          {
            "name": "hints",
            "in": "query",
            "schema": {
              "type": "boolean"
            },
            "required": false,
            "title": "Hints"
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "oneOf": [
                    {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/MaterialProfileAssignment"
                      }
                    },
                    {
                      "$ref": "#/components/schemas/SearchResponse"
                    }
                  ]
                }
              }
            }
          }
        },
        "x-permission": "material.view"
      }
    },
    "/v1/material-profile-assignments/search": {
      "post": {
        "summary": "Search material profile assignments",
        "description": "Search material profile assignments with filters",
        "tags": [
          "Materials"
        ],
        "operationId": "materialProfileAssignments_search",
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SearchQueryDtoMaterialProfileAssignment"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SearchResponse"
                }
              }
            }
          }
        },
        "x-permission": "material.view"
      }
    },
    "/v1/printer-slots": {
      "get": {
        "summary": "Get all printer slots",
        "description": "List all printer filament slot configurations (external spool slots and AMS slots)",
        "tags": [
          "Printer_Slots"
        ],
        "operationId": "printerSlots_getAll",
        "parameters": [
          {
            "name": "printerId",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "materialId",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "variantId",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "instanceId",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "materialType",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "expectedData",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "expectedDataSetAt",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "serial",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false,
            "title": "Serial of the roll physically in this slot, null when unknown",
            "description": "Serial of the roll physically in this slot, null when unknown."
          },
          {
            "name": "serialSource",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "amsIndex",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false,
            "description": "Visual slot position: -1 for spool, 0+ for AMS array index"
          },
          {
            "name": "slotIndex",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false,
            "description": "Slot within AMS, or spool index for multiple spools"
          },
          {
            "name": "slot",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "filamentUserProfileId",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "filamentSystemProfileId",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "id",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "storeId",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "createdAt",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "updatedAt",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false,
            "title": "Sort"
          },
          {
            "name": "limit",
            "in": "query",
            "schema": {
              "type": "number",
              "minimum": 1,
              "maximum": 1000
            },
            "required": false,
            "title": "Limit"
          },
          {
            "name": "offset",
            "in": "query",
            "schema": {
              "type": "number",
              "minimum": 0
            },
            "required": false,
            "title": "Offset"
          },
          {
            "name": "fields",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false,
            "title": "Fields"
          },
          {
            "name": "include",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false,
            "title": "Include"
          },
          {
            "name": "meta",
            "in": "query",
            "schema": {
              "type": "boolean"
            },
            "required": false,
            "title": "Meta"
          },
          {
            "name": "hints",
            "in": "query",
            "schema": {
              "type": "boolean"
            },
            "required": false,
            "title": "Hints"
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "oneOf": [
                    {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/PrinterSlot"
                      }
                    },
                    {
                      "$ref": "#/components/schemas/SearchResponse"
                    }
                  ]
                }
              }
            }
          }
        },
        "x-permission": "printer.view"
      }
    },
    "/v1/printer-slots/search": {
      "post": {
        "summary": "Search printer slots",
        "description": "Search printer slots with filters",
        "tags": [
          "Printer_Slots"
        ],
        "operationId": "printerSlots_search",
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SearchQueryDtoPrinterSlot"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SearchResponse"
                }
              }
            }
          }
        },
        "x-permission": "printer.view"
      }
    },
    "/v1/part-material-assignments": {
      "get": {
        "summary": "Get all part material assignments",
        "description": "List all material assignments to parts for filament channel mapping",
        "tags": [
          "Parts"
        ],
        "operationId": "partMaterialAssignments_getAll",
        "parameters": [
          {
            "name": "id",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "storeId",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "createdAt",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "updatedAt",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "groupId",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "variantId",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "materialId",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "materialType",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "partId",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "index",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "priority",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false,
            "title": "Sort"
          },
          {
            "name": "limit",
            "in": "query",
            "schema": {
              "type": "number",
              "minimum": 1,
              "maximum": 1000
            },
            "required": false,
            "title": "Limit"
          },
          {
            "name": "offset",
            "in": "query",
            "schema": {
              "type": "number",
              "minimum": 0
            },
            "required": false,
            "title": "Offset"
          },
          {
            "name": "fields",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false,
            "title": "Fields"
          },
          {
            "name": "include",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false,
            "title": "Include"
          },
          {
            "name": "meta",
            "in": "query",
            "schema": {
              "type": "boolean"
            },
            "required": false,
            "title": "Meta"
          },
          {
            "name": "hints",
            "in": "query",
            "schema": {
              "type": "boolean"
            },
            "required": false,
            "title": "Hints"
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "oneOf": [
                    {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/PartMaterialAssignment"
                      }
                    },
                    {
                      "$ref": "#/components/schemas/SearchResponse"
                    }
                  ]
                }
              }
            }
          }
        },
        "x-permission": "part.view"
      }
    },
    "/v1/part-material-assignments/search": {
      "post": {
        "summary": "Search part material assignments",
        "description": "Search part material assignments with filters",
        "tags": [
          "Parts"
        ],
        "operationId": "partMaterialAssignments_search",
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SearchQueryDtoPartMaterialAssignment"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SearchResponse"
                }
              }
            }
          }
        },
        "x-permission": "part.view"
      }
    },
    "/v1/parts/{partId}/metadata": {
      "get": {
        "summary": "Get part metadata",
        "tags": [
          "Parts"
        ],
        "parameters": [
          {
            "name": "partId",
            "in": "path",
            "schema": {
              "type": "string"
            },
            "required": true,
            "description": " Part ID"
          }
        ],
        "responses": {
          "200": {
            "description": "Metadata for the specified part",
            "content": {
              "application/json": {
                "schema": {
                  "oneOf": [
                    {
                      "type": "null"
                    },
                    {
                      "$ref": "#/components/schemas/PartMetadata"
                    }
                  ]
                }
              }
            }
          }
        },
        "x-permission": "part.view"
      }
    },
    "/v1/parts/footprints": {
      "post": {
        "summary": "Get part footprint hulls",
        "description": "The stored convex footprint hulls for a set of parts — the true XY\noutlines the plate-merge packer collides instead of bounding boxes. Bulk\non purpose: the browser's merge preview must lay out with exactly the\nhulls the server will commit with, and asks for every candidate on the\nplate in one request. Parts without stored hulls are absent from the\nresult (their packer falls back to the bounding box).",
        "tags": [
          "Parts"
        ],
        "parameters": [],
        "requestBody": {
          "description": "IDs of the parts to look up",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/GetPartFootprintsRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Footprint hulls keyed by part id",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetPartFootprintsResult"
                }
              }
            }
          }
        },
        "x-permission": "part.view"
      }
    },
    "/v1/parts/{partId}/estimate": {
      "post": {
        "summary": "Trigger part estimation",
        "tags": [
          "Parts"
        ],
        "parameters": [
          {
            "name": "partId",
            "in": "path",
            "schema": {
              "type": "string"
            },
            "required": true,
            "description": " Part ID"
          }
        ],
        "responses": {
          "201": {
            "description": "Confirmation message",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "message"
                  ]
                }
              }
            }
          }
        },
        "x-permission": "part.edit"
      }
    },
    "/v1/parts/{partId}/preslice": {
      "get": {
        "summary": "Get a part's pre-slice results",
        "description": "The pre-slice results for a part: one entry per printer group in the farm,\nplus whether they still describe the current part and printer\nconfiguration. Staleness is answered here rather than by re-estimating\nevery part whenever a printer changes.",
        "tags": [
          "Parts"
        ],
        "parameters": [
          {
            "name": "partId",
            "in": "path",
            "schema": {
              "type": "string"
            },
            "required": true,
            "description": " Part ID"
          }
        ],
        "responses": {
          "200": {
            "description": "The stored pre-slice results and whether they are out of date",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetPartPresliceResult"
                }
              }
            }
          }
        },
        "x-permission": "part.view"
      }
    },
    "/v1/parts/{partId}/reprocess": {
      "post": {
        "summary": "Reprocess a part",
        "description": "Re-run ingest for a part's primary file: re-extract metadata, tags and\nmaterials, and re-upload plate images. This is the same durable workflow\nan upload runs — same stages, same visible processing/failed status, same\nretry — rather than a second, invisible path that reprocesses parts\nwithout the UI ever showing it. Returns once the run is *submitted*; the\npart's processing status reports the rest.",
        "tags": [
          "Parts"
        ],
        "parameters": [
          {
            "name": "partId",
            "in": "path",
            "schema": {
              "type": "string"
            },
            "required": true,
            "description": " Part ID"
          }
        ],
        "responses": {
          "201": {
            "description": "The part, now marked processing",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Part"
                }
              }
            }
          }
        },
        "x-permission": "part.edit"
      }
    },
    "/v1/parts/retry-processing": {
      "post": {
        "summary": "Retry failed part processing",
        "description": "Resubmit the ingest workflow for parts whose processing permanently\nfailed. Bulk on purpose — the failed-parts modal's \"Retry All\" sends\nevery failed part in one request. Outcomes are reported per part\n(submitted / throttled / not-failed / not-found) rather than failing the\nwhole batch; each part is rate-limited to one retry per hour.",
        "tags": [
          "Parts"
        ],
        "parameters": [],
        "requestBody": {
          "description": "IDs of the parts to retry",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RetryPartProcessingRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "One outcome per requested part",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RetryPartProcessingResult"
                }
              }
            }
          }
        },
        "x-permission": "part.edit"
      }
    },
    "/v1/sku-variants/values": {
      "get": {
        "summary": "Get all variant values for a store",
        "tags": [
          "SKU_Variants"
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "List of variant values",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/SkuOptionValue"
                  }
                }
              }
            }
          }
        },
        "x-permission": "sku.view"
      },
      "post": {
        "summary": "Create a new variant value",
        "tags": [
          "SKU_Variants"
        ],
        "parameters": [],
        "requestBody": {
          "description": "- Variant value data",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateSkuOptionValueRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Created variant value",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SkuOptionValue"
                }
              }
            }
          }
        },
        "x-permission": "sku.edit"
      }
    },
    "/v1/sku-options/values": {
      "get": {
        "summary": "Get all variant values for a store",
        "tags": [
          "SKU_Variants"
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "List of variant values",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/SkuOptionValue"
                  }
                }
              }
            }
          }
        },
        "x-permission": "sku.view"
      },
      "post": {
        "summary": "Create a new variant value",
        "tags": [
          "SKU_Variants"
        ],
        "parameters": [],
        "requestBody": {
          "description": "- Variant value data",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateSkuOptionValueRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Created variant value",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SkuOptionValue"
                }
              }
            }
          }
        },
        "x-permission": "sku.edit"
      }
    },
    "/v1/sku-variants/values/{id}": {
      "get": {
        "summary": "Get a specific variant value by ID",
        "tags": [
          "SKU_Variants"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "schema": {
              "type": "string",
              "pattern": "^[a-z0-9]{24}$"
            },
            "required": true,
            "description": " - Variant value identifier"
          }
        ],
        "responses": {
          "200": {
            "description": "Variant value details",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SkuOptionValue"
                }
              }
            }
          }
        },
        "x-permission": "sku.view"
      },
      "patch": {
        "summary": "Update a variant value",
        "tags": [
          "SKU_Variants"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "schema": {
              "type": "string",
              "pattern": "^[a-z0-9]{24}$"
            },
            "required": true,
            "description": " - Variant value identifier"
          }
        ],
        "requestBody": {
          "description": "- Updated variant value data",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateSkuOptionValueRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Updated variant value",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SkuOptionValue"
                }
              }
            }
          }
        },
        "x-permission": "sku.edit"
      },
      "delete": {
        "summary": "Delete a variant value",
        "tags": [
          "SKU_Variants"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "schema": {
              "type": "string",
              "pattern": "^[a-z0-9]{24}$"
            },
            "required": true,
            "description": " - Variant value identifier"
          }
        ],
        "responses": {
          "200": {
            "description": "Array of deleted IDs",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  }
                }
              }
            }
          }
        },
        "x-permission": "sku.edit"
      }
    },
    "/v1/sku-options/values/{id}": {
      "get": {
        "summary": "Get a specific variant value by ID",
        "tags": [
          "SKU_Variants"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "schema": {
              "type": "string",
              "pattern": "^[a-z0-9]{24}$"
            },
            "required": true,
            "description": " - Variant value identifier"
          }
        ],
        "responses": {
          "200": {
            "description": "Variant value details",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SkuOptionValue"
                }
              }
            }
          }
        },
        "x-permission": "sku.view"
      },
      "patch": {
        "summary": "Update a variant value",
        "tags": [
          "SKU_Variants"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "schema": {
              "type": "string",
              "pattern": "^[a-z0-9]{24}$"
            },
            "required": true,
            "description": " - Variant value identifier"
          }
        ],
        "requestBody": {
          "description": "- Updated variant value data",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateSkuOptionValueRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Updated variant value",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SkuOptionValue"
                }
              }
            }
          }
        },
        "x-permission": "sku.edit"
      },
      "delete": {
        "summary": "Delete a variant value",
        "tags": [
          "SKU_Variants"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "schema": {
              "type": "string",
              "pattern": "^[a-z0-9]{24}$"
            },
            "required": true,
            "description": " - Variant value identifier"
          }
        ],
        "responses": {
          "200": {
            "description": "Array of deleted IDs",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  }
                }
              }
            }
          }
        },
        "x-permission": "sku.edit"
      }
    },
    "/v1/sku-variants/values/reorder": {
      "post": {
        "summary": "Reorder a variant value",
        "tags": [
          "SKU_Variants"
        ],
        "parameters": [],
        "requestBody": {
          "description": "- Reorder request with value ID and new order",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ReorderSkuOptionValueRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Success. The response has no body."
          }
        },
        "x-permission": "sku.edit"
      }
    },
    "/v1/sku-options/values/reorder": {
      "post": {
        "summary": "Reorder a variant value",
        "tags": [
          "SKU_Variants"
        ],
        "parameters": [],
        "requestBody": {
          "description": "- Reorder request with value ID and new order",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ReorderSkuOptionValueRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Success. The response has no body."
          }
        },
        "x-permission": "sku.edit"
      }
    },
    "/v1/sku-variants/props": {
      "get": {
        "summary": "Get all variant properties for a store",
        "tags": [
          "SKU_Variants"
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "List of variant properties",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/SkuOptionProperty"
                  }
                }
              }
            }
          }
        },
        "x-permission": "sku.view"
      },
      "post": {
        "summary": "Create a new variant property",
        "tags": [
          "SKU_Variants"
        ],
        "parameters": [],
        "requestBody": {
          "description": "- Variant property data",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateSkuOptionPropertyRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Created variant property",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SkuOptionProperty"
                }
              }
            }
          }
        },
        "x-permission": "sku.edit"
      }
    },
    "/v1/sku-options/props": {
      "get": {
        "summary": "Get all variant properties for a store",
        "tags": [
          "SKU_Variants"
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "List of variant properties",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/SkuOptionProperty"
                  }
                }
              }
            }
          }
        },
        "x-permission": "sku.view"
      },
      "post": {
        "summary": "Create a new variant property",
        "tags": [
          "SKU_Variants"
        ],
        "parameters": [],
        "requestBody": {
          "description": "- Variant property data",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateSkuOptionPropertyRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Created variant property",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SkuOptionProperty"
                }
              }
            }
          }
        },
        "x-permission": "sku.edit"
      }
    },
    "/v1/sku-variants/props/{id}": {
      "get": {
        "summary": "Get a specific variant property by ID",
        "tags": [
          "SKU_Variants"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "schema": {
              "type": "string",
              "pattern": "^[a-z0-9]{24}$"
            },
            "required": true,
            "description": " - Property identifier"
          }
        ],
        "responses": {
          "200": {
            "description": "Variant property details",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SkuOptionProperty"
                }
              }
            }
          }
        },
        "x-permission": "sku.view"
      },
      "patch": {
        "summary": "Update a variant property",
        "tags": [
          "SKU_Variants"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "schema": {
              "type": "string",
              "pattern": "^[a-z0-9]{24}$"
            },
            "required": true,
            "description": " - Property identifier"
          }
        ],
        "requestBody": {
          "description": "- Updated property data",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateSkuOptionPropertyRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Updated variant property",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SkuOptionProperty"
                }
              }
            }
          }
        },
        "x-permission": "sku.edit"
      },
      "delete": {
        "summary": "Delete a variant property",
        "tags": [
          "SKU_Variants"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "schema": {
              "type": "string",
              "pattern": "^[a-z0-9]{24}$"
            },
            "required": true,
            "description": " - Property identifier"
          }
        ],
        "responses": {
          "200": {
            "description": "Array of deleted IDs",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  }
                }
              }
            }
          }
        },
        "x-permission": "sku.edit"
      }
    },
    "/v1/sku-options/props/{id}": {
      "get": {
        "summary": "Get a specific variant property by ID",
        "tags": [
          "SKU_Variants"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "schema": {
              "type": "string",
              "pattern": "^[a-z0-9]{24}$"
            },
            "required": true,
            "description": " - Property identifier"
          }
        ],
        "responses": {
          "200": {
            "description": "Variant property details",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SkuOptionProperty"
                }
              }
            }
          }
        },
        "x-permission": "sku.view"
      },
      "patch": {
        "summary": "Update a variant property",
        "tags": [
          "SKU_Variants"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "schema": {
              "type": "string",
              "pattern": "^[a-z0-9]{24}$"
            },
            "required": true,
            "description": " - Property identifier"
          }
        ],
        "requestBody": {
          "description": "- Updated property data",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateSkuOptionPropertyRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Updated variant property",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SkuOptionProperty"
                }
              }
            }
          }
        },
        "x-permission": "sku.edit"
      },
      "delete": {
        "summary": "Delete a variant property",
        "tags": [
          "SKU_Variants"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "schema": {
              "type": "string",
              "pattern": "^[a-z0-9]{24}$"
            },
            "required": true,
            "description": " - Property identifier"
          }
        ],
        "responses": {
          "200": {
            "description": "Array of deleted IDs",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  }
                }
              }
            }
          }
        },
        "x-permission": "sku.edit"
      }
    },
    "/v1/sku-variants/props/reorder": {
      "post": {
        "summary": "Reorder a variant property",
        "tags": [
          "SKU_Variants"
        ],
        "parameters": [],
        "requestBody": {
          "description": "- Reorder request with property ID and new order",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ReorderSkuOptionPropertyRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Success. The response has no body."
          }
        },
        "x-permission": "sku.edit"
      }
    },
    "/v1/sku-options/props/reorder": {
      "post": {
        "summary": "Reorder a variant property",
        "tags": [
          "SKU_Variants"
        ],
        "parameters": [],
        "requestBody": {
          "description": "- Reorder request with property ID and new order",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ReorderSkuOptionPropertyRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Success. The response has no body."
          }
        },
        "x-permission": "sku.edit"
      }
    },
    "/v1/sku-variants/prop-values": {
      "get": {
        "summary": "Get all property values for a store",
        "tags": [
          "SKU_Variants"
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "List of property values",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/SkuOptionPropertyValue"
                  }
                }
              }
            }
          }
        },
        "x-permission": "sku.view"
      },
      "post": {
        "summary": "Create multiple property values",
        "tags": [
          "SKU_Variants"
        ],
        "parameters": [],
        "requestBody": {
          "description": "- Bulk create request with property values",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/BulkCreatePropertyValuesRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Created property values",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/SkuOptionPropertyValue"
                  }
                }
              }
            }
          }
        },
        "x-permission": "sku.edit"
      },
      "patch": {
        "summary": "Update multiple property values",
        "tags": [
          "SKU_Variants"
        ],
        "parameters": [],
        "requestBody": {
          "description": "- Bulk update request with property value updates",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/BulkUpdatePropertyValuesRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Success. The response has no body."
          }
        },
        "x-permission": "sku.edit"
      },
      "delete": {
        "summary": "Delete multiple property values",
        "tags": [
          "SKU_Variants"
        ],
        "parameters": [],
        "requestBody": {
          "description": "- Bulk delete request with IDs",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/BulkDeleteRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Array of deleted IDs",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  }
                }
              }
            }
          }
        },
        "x-permission": "sku.edit"
      }
    },
    "/v1/sku-options/prop-values": {
      "get": {
        "summary": "Get all property values for a store",
        "tags": [
          "SKU_Variants"
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "List of property values",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/SkuOptionPropertyValue"
                  }
                }
              }
            }
          }
        },
        "x-permission": "sku.view"
      },
      "post": {
        "summary": "Create multiple property values",
        "tags": [
          "SKU_Variants"
        ],
        "parameters": [],
        "requestBody": {
          "description": "- Bulk create request with property values",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/BulkCreatePropertyValuesRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Created property values",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/SkuOptionPropertyValue"
                  }
                }
              }
            }
          }
        },
        "x-permission": "sku.edit"
      },
      "patch": {
        "summary": "Update multiple property values",
        "tags": [
          "SKU_Variants"
        ],
        "parameters": [],
        "requestBody": {
          "description": "- Bulk update request with property value updates",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/BulkUpdatePropertyValuesRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Success. The response has no body."
          }
        },
        "x-permission": "sku.edit"
      },
      "delete": {
        "summary": "Delete multiple property values",
        "tags": [
          "SKU_Variants"
        ],
        "parameters": [],
        "requestBody": {
          "description": "- Bulk delete request with IDs",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/BulkDeleteRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Array of deleted IDs",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  }
                }
              }
            }
          }
        },
        "x-permission": "sku.edit"
      }
    },
    "/v1/sku-variants/prop-values/{id}": {
      "get": {
        "summary": "Get a specific property value by ID",
        "tags": [
          "SKU_Variants"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "schema": {
              "type": "string",
              "pattern": "^[a-z0-9]{24}$"
            },
            "required": true,
            "description": " - Property value identifier"
          }
        ],
        "responses": {
          "200": {
            "description": "Property value details",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SkuOptionPropertyValue"
                }
              }
            }
          }
        },
        "x-permission": "sku.view"
      }
    },
    "/v1/sku-options/prop-values/{id}": {
      "get": {
        "summary": "Get a specific property value by ID",
        "tags": [
          "SKU_Variants"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "schema": {
              "type": "string",
              "pattern": "^[a-z0-9]{24}$"
            },
            "required": true,
            "description": " - Property value identifier"
          }
        ],
        "responses": {
          "200": {
            "description": "Property value details",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SkuOptionPropertyValue"
                }
              }
            }
          }
        },
        "x-permission": "sku.view"
      }
    },
    "/v1/sku-variants": {
      "get": {
        "summary": "Get all SKU variants for a store",
        "tags": [
          "SKU_Variants"
        ],
        "parameters": [
          {
            "name": "name",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "isPersonalization",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "aliases",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false,
            "title": "Alternate names (as the merchant typed them) that resolve to this option",
            "description": "Alternate names (as the merchant typed them) that resolve to this option."
          },
          {
            "name": "id",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "storeId",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "createdAt",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "updatedAt",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false,
            "title": "Sort"
          },
          {
            "name": "limit",
            "in": "query",
            "schema": {
              "type": "number",
              "minimum": 1,
              "maximum": 1000
            },
            "required": false,
            "title": "Limit"
          },
          {
            "name": "offset",
            "in": "query",
            "schema": {
              "type": "number",
              "minimum": 0
            },
            "required": false,
            "title": "Offset"
          },
          {
            "name": "fields",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false,
            "title": "Fields"
          },
          {
            "name": "include",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false,
            "title": "Include"
          },
          {
            "name": "meta",
            "in": "query",
            "schema": {
              "type": "boolean"
            },
            "required": false,
            "title": "Meta"
          },
          {
            "name": "hints",
            "in": "query",
            "schema": {
              "type": "boolean"
            },
            "required": false,
            "title": "Hints"
          }
        ],
        "responses": {
          "200": {
            "description": "List of SKU variants",
            "content": {
              "application/json": {
                "schema": {
                  "oneOf": [
                    {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/SkuOption"
                      }
                    },
                    {
                      "$ref": "#/components/schemas/SearchResponse"
                    }
                  ]
                }
              }
            }
          }
        },
        "x-permission": "sku.view"
      },
      "post": {
        "summary": "Create a new SKU variant",
        "tags": [
          "SKU_Variants"
        ],
        "parameters": [],
        "requestBody": {
          "description": "- SKU variant data",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateSkuOptionRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Created SKU variant",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SkuOption"
                }
              }
            }
          }
        },
        "x-permission": "sku.edit"
      }
    },
    "/v1/sku-options": {
      "get": {
        "summary": "Get all SKU variants for a store",
        "tags": [
          "SKU_Variants"
        ],
        "parameters": [
          {
            "name": "name",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "isPersonalization",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "aliases",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false,
            "title": "Alternate names (as the merchant typed them) that resolve to this option",
            "description": "Alternate names (as the merchant typed them) that resolve to this option."
          },
          {
            "name": "id",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "storeId",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "createdAt",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "updatedAt",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false,
            "title": "Sort"
          },
          {
            "name": "limit",
            "in": "query",
            "schema": {
              "type": "number",
              "minimum": 1,
              "maximum": 1000
            },
            "required": false,
            "title": "Limit"
          },
          {
            "name": "offset",
            "in": "query",
            "schema": {
              "type": "number",
              "minimum": 0
            },
            "required": false,
            "title": "Offset"
          },
          {
            "name": "fields",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false,
            "title": "Fields"
          },
          {
            "name": "include",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false,
            "title": "Include"
          },
          {
            "name": "meta",
            "in": "query",
            "schema": {
              "type": "boolean"
            },
            "required": false,
            "title": "Meta"
          },
          {
            "name": "hints",
            "in": "query",
            "schema": {
              "type": "boolean"
            },
            "required": false,
            "title": "Hints"
          }
        ],
        "responses": {
          "200": {
            "description": "List of SKU variants",
            "content": {
              "application/json": {
                "schema": {
                  "oneOf": [
                    {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/SkuOption"
                      }
                    },
                    {
                      "$ref": "#/components/schemas/SearchResponse"
                    }
                  ]
                }
              }
            }
          }
        },
        "x-permission": "sku.view"
      },
      "post": {
        "summary": "Create a new SKU variant",
        "tags": [
          "SKU_Variants"
        ],
        "parameters": [],
        "requestBody": {
          "description": "- SKU variant data",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateSkuOptionRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Created SKU variant",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SkuOption"
                }
              }
            }
          }
        },
        "x-permission": "sku.edit"
      }
    },
    "/v1/sku-variants/search": {
      "post": {
        "summary": "Search SKU options",
        "description": "Search SKU options with complex filters",
        "tags": [
          "SKU_Variants"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SearchQueryDtoSkuOption"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SearchResponse"
                }
              }
            }
          }
        },
        "x-permission": "sku.view"
      }
    },
    "/v1/sku-options/search": {
      "post": {
        "summary": "Search SKU options",
        "description": "Search SKU options with complex filters",
        "tags": [
          "SKU_Variants"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SearchQueryDtoSkuOption"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SearchResponse"
                }
              }
            }
          }
        },
        "x-permission": "sku.view"
      }
    },
    "/v1/sku-variants/{groupId}/values": {
      "get": {
        "summary": "Get variant values for a specific group",
        "tags": [
          "SKU_Variants"
        ],
        "parameters": [
          {
            "name": "groupId",
            "in": "path",
            "schema": {
              "type": "string",
              "pattern": "^[a-z0-9]{24}$"
            },
            "required": true,
            "description": " - Variant group identifier"
          }
        ],
        "responses": {
          "200": {
            "description": "List of variant values in the group",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/SkuOptionValue"
                  }
                }
              }
            }
          }
        },
        "x-permission": "sku.view"
      }
    },
    "/v1/sku-options/{groupId}/values": {
      "get": {
        "summary": "Get variant values for a specific group",
        "tags": [
          "SKU_Variants"
        ],
        "parameters": [
          {
            "name": "groupId",
            "in": "path",
            "schema": {
              "type": "string",
              "pattern": "^[a-z0-9]{24}$"
            },
            "required": true,
            "description": " - Variant group identifier"
          }
        ],
        "responses": {
          "200": {
            "description": "List of variant values in the group",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/SkuOptionValue"
                  }
                }
              }
            }
          }
        },
        "x-permission": "sku.view"
      }
    },
    "/v1/sku-variants/bindings": {
      "get": {
        "summary": "Get all variant bindings for a store",
        "tags": [
          "SKU_Variants"
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "List of variant bindings",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/SkuOptionBinding"
                  }
                }
              }
            }
          }
        },
        "x-permission": "sku.view"
      },
      "post": {
        "summary": "Create a new variant binding",
        "tags": [
          "SKU_Variants"
        ],
        "parameters": [],
        "requestBody": {
          "description": "- Variant binding data",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateSkuOptionBindingRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Created variant binding",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SkuOptionBinding"
                }
              }
            }
          }
        },
        "x-permission": "sku.edit"
      }
    },
    "/v1/sku-options/bindings": {
      "get": {
        "summary": "Get all variant bindings for a store",
        "tags": [
          "SKU_Variants"
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "List of variant bindings",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/SkuOptionBinding"
                  }
                }
              }
            }
          }
        },
        "x-permission": "sku.view"
      },
      "post": {
        "summary": "Create a new variant binding",
        "tags": [
          "SKU_Variants"
        ],
        "parameters": [],
        "requestBody": {
          "description": "- Variant binding data",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateSkuOptionBindingRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Created variant binding",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SkuOptionBinding"
                }
              }
            }
          }
        },
        "x-permission": "sku.edit"
      }
    },
    "/v1/sku-variants/bindings/{id}": {
      "get": {
        "summary": "Get a specific variant binding by ID",
        "tags": [
          "SKU_Variants"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "schema": {
              "type": "string",
              "pattern": "^[a-z0-9]{24}$"
            },
            "required": true,
            "description": " - Binding identifier"
          }
        ],
        "responses": {
          "200": {
            "description": "Variant binding details",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SkuOptionBinding"
                }
              }
            }
          }
        },
        "x-permission": "sku.view"
      },
      "patch": {
        "summary": "Update a variant binding",
        "tags": [
          "SKU_Variants"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "schema": {
              "type": "string",
              "pattern": "^[a-z0-9]{24}$"
            },
            "required": true,
            "description": " - Binding identifier"
          }
        ],
        "requestBody": {
          "description": "- Updated binding data",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateSkuOptionBindingRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Updated variant binding",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SkuOptionBinding"
                }
              }
            }
          }
        },
        "x-permission": "sku.edit"
      },
      "delete": {
        "summary": "Delete a variant binding",
        "tags": [
          "SKU_Variants"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "schema": {
              "type": "string",
              "pattern": "^[a-z0-9]{24}$"
            },
            "required": true,
            "description": " - Binding identifier"
          }
        ],
        "responses": {
          "200": {
            "description": "Array of deleted IDs",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  }
                }
              }
            }
          }
        },
        "x-permission": "sku.edit"
      }
    },
    "/v1/sku-options/bindings/{id}": {
      "get": {
        "summary": "Get a specific variant binding by ID",
        "tags": [
          "SKU_Variants"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "schema": {
              "type": "string",
              "pattern": "^[a-z0-9]{24}$"
            },
            "required": true,
            "description": " - Binding identifier"
          }
        ],
        "responses": {
          "200": {
            "description": "Variant binding details",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SkuOptionBinding"
                }
              }
            }
          }
        },
        "x-permission": "sku.view"
      },
      "patch": {
        "summary": "Update a variant binding",
        "tags": [
          "SKU_Variants"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "schema": {
              "type": "string",
              "pattern": "^[a-z0-9]{24}$"
            },
            "required": true,
            "description": " - Binding identifier"
          }
        ],
        "requestBody": {
          "description": "- Updated binding data",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateSkuOptionBindingRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Updated variant binding",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SkuOptionBinding"
                }
              }
            }
          }
        },
        "x-permission": "sku.edit"
      },
      "delete": {
        "summary": "Delete a variant binding",
        "tags": [
          "SKU_Variants"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "schema": {
              "type": "string",
              "pattern": "^[a-z0-9]{24}$"
            },
            "required": true,
            "description": " - Binding identifier"
          }
        ],
        "responses": {
          "200": {
            "description": "Array of deleted IDs",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  }
                }
              }
            }
          }
        },
        "x-permission": "sku.edit"
      }
    },
    "/v1/sku-variants/bindings/{id}/properties": {
      "get": {
        "summary": "Get SKU-specific properties",
        "tags": [
          "SKU_Variants"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "schema": {
              "type": "string",
              "pattern": "^[a-z0-9]{24}$"
            },
            "required": true,
            "description": " - Binding identifier"
          }
        ],
        "responses": {
          "200": {
            "description": "List of SKU-specific properties that use this binding as a source",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/SkuOptionProperty"
                  }
                }
              }
            }
          }
        },
        "x-permission": "sku.view"
      }
    },
    "/v1/sku-options/bindings/{id}/properties": {
      "get": {
        "summary": "Get SKU-specific properties",
        "tags": [
          "SKU_Variants"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "schema": {
              "type": "string",
              "pattern": "^[a-z0-9]{24}$"
            },
            "required": true,
            "description": " - Binding identifier"
          }
        ],
        "responses": {
          "200": {
            "description": "List of SKU-specific properties that use this binding as a source",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/SkuOptionProperty"
                  }
                }
              }
            }
          }
        },
        "x-permission": "sku.view"
      }
    },
    "/v1/sku-variants/bindings/reorder": {
      "post": {
        "summary": "Reorder a variant binding",
        "tags": [
          "SKU_Variants"
        ],
        "parameters": [],
        "requestBody": {
          "description": "- Reorder request with binding ID and new order",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ReorderSkuOptionBindingRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Success. The response has no body."
          }
        },
        "x-permission": "sku.edit"
      }
    },
    "/v1/sku-options/bindings/reorder": {
      "post": {
        "summary": "Reorder a variant binding",
        "tags": [
          "SKU_Variants"
        ],
        "parameters": [],
        "requestBody": {
          "description": "- Reorder request with binding ID and new order",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ReorderSkuOptionBindingRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Success. The response has no body."
          }
        },
        "x-permission": "sku.edit"
      }
    },
    "/v1/sku-variants/{id}": {
      "get": {
        "summary": "Get a specific SKU variant by ID",
        "tags": [
          "SKU_Variants"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "schema": {
              "type": "string",
              "pattern": "^[a-z0-9]{24}$"
            },
            "required": true,
            "description": " - SKU variant identifier"
          }
        ],
        "responses": {
          "200": {
            "description": "SKU variant details",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SkuOption"
                }
              }
            }
          }
        },
        "x-permission": "sku.view"
      },
      "patch": {
        "summary": "Update a SKU variant",
        "tags": [
          "SKU_Variants"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "schema": {
              "type": "string",
              "pattern": "^[a-z0-9]{24}$"
            },
            "required": true,
            "description": " - SKU variant identifier"
          }
        ],
        "requestBody": {
          "description": "- Updated SKU variant data",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateSkuOptionRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Updated SKU variant",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SkuOption"
                }
              }
            }
          }
        },
        "x-permission": "sku.edit"
      },
      "delete": {
        "summary": "Delete a SKU variant",
        "tags": [
          "SKU_Variants"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "schema": {
              "type": "string",
              "pattern": "^[a-z0-9]{24}$"
            },
            "required": true,
            "description": " - SKU variant identifier"
          }
        ],
        "responses": {
          "200": {
            "description": "Array of deleted IDs",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  }
                }
              }
            }
          }
        },
        "x-permission": "sku.edit"
      }
    },
    "/v1/sku-options/{id}": {
      "get": {
        "summary": "Get a specific SKU variant by ID",
        "tags": [
          "SKU_Variants"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "schema": {
              "type": "string",
              "pattern": "^[a-z0-9]{24}$"
            },
            "required": true,
            "description": " - SKU variant identifier"
          }
        ],
        "responses": {
          "200": {
            "description": "SKU variant details",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SkuOption"
                }
              }
            }
          }
        },
        "x-permission": "sku.view"
      },
      "patch": {
        "summary": "Update a SKU variant",
        "tags": [
          "SKU_Variants"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "schema": {
              "type": "string",
              "pattern": "^[a-z0-9]{24}$"
            },
            "required": true,
            "description": " - SKU variant identifier"
          }
        ],
        "requestBody": {
          "description": "- Updated SKU variant data",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateSkuOptionRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Updated SKU variant",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SkuOption"
                }
              }
            }
          }
        },
        "x-permission": "sku.edit"
      },
      "delete": {
        "summary": "Delete a SKU variant",
        "tags": [
          "SKU_Variants"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "schema": {
              "type": "string",
              "pattern": "^[a-z0-9]{24}$"
            },
            "required": true,
            "description": " - SKU variant identifier"
          }
        ],
        "responses": {
          "200": {
            "description": "Array of deleted IDs",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  }
                }
              }
            }
          }
        },
        "x-permission": "sku.edit"
      }
    },
    "/v1/sku-variants/{id}/convert-to-alias": {
      "post": {
        "summary": "Turn an empty SKU variant into an alias of another variant",
        "tags": [
          "SKU_Variants"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "schema": {
              "type": "string",
              "pattern": "^[a-z0-9]{24}$"
            },
            "required": true,
            "description": " - The empty variant to fold away"
          }
        ],
        "requestBody": {
          "description": "- The variant that keeps existing",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ConvertSkuOptionToAliasRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "The target variant with its new aliases",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SkuOption"
                }
              }
            }
          }
        },
        "x-permission": "sku.edit"
      }
    },
    "/v1/sku-options/{id}/convert-to-alias": {
      "post": {
        "summary": "Turn an empty SKU variant into an alias of another variant",
        "tags": [
          "SKU_Variants"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "schema": {
              "type": "string",
              "pattern": "^[a-z0-9]{24}$"
            },
            "required": true,
            "description": " - The empty variant to fold away"
          }
        ],
        "requestBody": {
          "description": "- The variant that keeps existing",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ConvertSkuOptionToAliasRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "The target variant with its new aliases",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SkuOption"
                }
              }
            }
          }
        },
        "x-permission": "sku.edit"
      }
    },
    "/v1/sku-variants/filters/{skuId}/{optionId}": {
      "get": {
        "summary": "Get value filters for a SKU and option",
        "tags": [
          "SKU_Variants"
        ],
        "parameters": [
          {
            "name": "skuId",
            "in": "path",
            "schema": {
              "type": "string",
              "pattern": "^[a-z0-9]{24}$"
            },
            "required": true,
            "description": " - SKU identifier"
          },
          {
            "name": "optionId",
            "in": "path",
            "schema": {
              "type": "string",
              "pattern": "^[a-z0-9]{24}$"
            },
            "required": true,
            "description": " - Option identifier"
          }
        ],
        "responses": {
          "200": {
            "description": "List of value filters",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/SkuOptionValueFilter"
                  }
                }
              }
            }
          }
        },
        "x-permission": "sku.view"
      }
    },
    "/v1/sku-options/filters/{skuId}/{optionId}": {
      "get": {
        "summary": "Get value filters for a SKU and option",
        "tags": [
          "SKU_Variants"
        ],
        "parameters": [
          {
            "name": "skuId",
            "in": "path",
            "schema": {
              "type": "string",
              "pattern": "^[a-z0-9]{24}$"
            },
            "required": true,
            "description": " - SKU identifier"
          },
          {
            "name": "optionId",
            "in": "path",
            "schema": {
              "type": "string",
              "pattern": "^[a-z0-9]{24}$"
            },
            "required": true,
            "description": " - Option identifier"
          }
        ],
        "responses": {
          "200": {
            "description": "List of value filters",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/SkuOptionValueFilter"
                  }
                }
              }
            }
          }
        },
        "x-permission": "sku.view"
      }
    },
    "/v1/sku-variants/filters/{skuId}": {
      "get": {
        "summary": "Get all value filters for a SKU",
        "tags": [
          "SKU_Variants"
        ],
        "parameters": [
          {
            "name": "skuId",
            "in": "path",
            "schema": {
              "type": "string",
              "pattern": "^[a-z0-9]{24}$"
            },
            "required": true,
            "description": " - SKU identifier"
          }
        ],
        "responses": {
          "200": {
            "description": "List of all value filters for the SKU",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/SkuOptionValueFilter"
                  }
                }
              }
            }
          }
        },
        "x-permission": "sku.view"
      }
    },
    "/v1/sku-options/filters/{skuId}": {
      "get": {
        "summary": "Get all value filters for a SKU",
        "tags": [
          "SKU_Variants"
        ],
        "parameters": [
          {
            "name": "skuId",
            "in": "path",
            "schema": {
              "type": "string",
              "pattern": "^[a-z0-9]{24}$"
            },
            "required": true,
            "description": " - SKU identifier"
          }
        ],
        "responses": {
          "200": {
            "description": "List of all value filters for the SKU",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/SkuOptionValueFilter"
                  }
                }
              }
            }
          }
        },
        "x-permission": "sku.view"
      }
    },
    "/v1/sku-variants/filters": {
      "put": {
        "summary": "Set filtered values for a SKU option",
        "tags": [
          "SKU_Variants"
        ],
        "parameters": [],
        "requestBody": {
          "description": "- Filter configuration with SKU, option, and allowed values",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SetFilteredValuesRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Updated value filters",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/SkuOptionValueFilter"
                  }
                }
              }
            }
          }
        },
        "x-permission": "sku.edit"
      }
    },
    "/v1/sku-options/filters": {
      "put": {
        "summary": "Set filtered values for a SKU option",
        "tags": [
          "SKU_Variants"
        ],
        "parameters": [],
        "requestBody": {
          "description": "- Filter configuration with SKU, option, and allowed values",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SetFilteredValuesRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Updated value filters",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/SkuOptionValueFilter"
                  }
                }
              }
            }
          }
        },
        "x-permission": "sku.edit"
      }
    },
    "/v1/sku-variants/filters/{id}": {
      "delete": {
        "summary": "Remove a value filter",
        "tags": [
          "SKU_Variants"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "schema": {
              "type": "string",
              "pattern": "^[a-z0-9]{24}$"
            },
            "required": true,
            "description": " - Filter identifier"
          }
        ],
        "responses": {
          "200": {
            "description": "Array of deleted IDs",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  }
                }
              }
            }
          }
        },
        "x-permission": "sku.edit"
      }
    },
    "/v1/sku-options/filters/{id}": {
      "delete": {
        "summary": "Remove a value filter",
        "tags": [
          "SKU_Variants"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "schema": {
              "type": "string",
              "pattern": "^[a-z0-9]{24}$"
            },
            "required": true,
            "description": " - Filter identifier"
          }
        ],
        "responses": {
          "200": {
            "description": "Array of deleted IDs",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  }
                }
              }
            }
          }
        },
        "x-permission": "sku.edit"
      }
    },
    "/v1/sku-variants/filtered-values/{skuId}/{optionId}": {
      "get": {
        "summary": "Get filtered option values for a SKU",
        "tags": [
          "SKU_Variants"
        ],
        "parameters": [
          {
            "name": "skuId",
            "in": "path",
            "schema": {
              "type": "string",
              "pattern": "^[a-z0-9]{24}$"
            },
            "required": true,
            "description": " - SKU identifier"
          },
          {
            "name": "optionId",
            "in": "path",
            "schema": {
              "type": "string",
              "pattern": "^[a-z0-9]{24}$"
            },
            "required": true,
            "description": " - Option identifier"
          }
        ],
        "responses": {
          "200": {
            "description": "List of allowed option values after filtering",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/SkuOptionValue"
                  }
                }
              }
            }
          }
        },
        "x-permission": "sku.view"
      }
    },
    "/v1/sku-options/filtered-values/{skuId}/{optionId}": {
      "get": {
        "summary": "Get filtered option values for a SKU",
        "tags": [
          "SKU_Variants"
        ],
        "parameters": [
          {
            "name": "skuId",
            "in": "path",
            "schema": {
              "type": "string",
              "pattern": "^[a-z0-9]{24}$"
            },
            "required": true,
            "description": " - SKU identifier"
          },
          {
            "name": "optionId",
            "in": "path",
            "schema": {
              "type": "string",
              "pattern": "^[a-z0-9]{24}$"
            },
            "required": true,
            "description": " - Option identifier"
          }
        ],
        "responses": {
          "200": {
            "description": "List of allowed option values after filtering",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/SkuOptionValue"
                  }
                }
              }
            }
          }
        },
        "x-permission": "sku.view"
      }
    },
    "/v1/sku-variants/sku-match/{skuString}": {
      "get": {
        "summary": "Match a SKU string with variants",
        "tags": [
          "SKU_Variants"
        ],
        "parameters": [
          {
            "name": "skuString",
            "in": "path",
            "schema": {
              "type": "string"
            },
            "required": true,
            "description": " - SKU string to match"
          }
        ],
        "responses": {
          "200": {
            "description": "Matched SKU with variants or null",
            "content": {
              "application/json": {
                "schema": {
                  "oneOf": [
                    {
                      "type": "null"
                    },
                    {
                      "$ref": "#/components/schemas/SkuMatchResult"
                    }
                  ]
                }
              }
            }
          }
        },
        "x-permission": "sku.view"
      }
    },
    "/v1/sku-options/sku-match/{skuString}": {
      "get": {
        "summary": "Match a SKU string with variants",
        "tags": [
          "SKU_Variants"
        ],
        "parameters": [
          {
            "name": "skuString",
            "in": "path",
            "schema": {
              "type": "string"
            },
            "required": true,
            "description": " - SKU string to match"
          }
        ],
        "responses": {
          "200": {
            "description": "Matched SKU with variants or null",
            "content": {
              "application/json": {
                "schema": {
                  "oneOf": [
                    {
                      "type": "null"
                    },
                    {
                      "$ref": "#/components/schemas/SkuMatchResult"
                    }
                  ]
                }
              }
            }
          }
        },
        "x-permission": "sku.view"
      }
    },
    "/v1/cost-components": {
      "get": {
        "summary": "Get all cost components",
        "tags": [
          "Cost_Catalog"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "name",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "unit",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "rate",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "type",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "description",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "storeId",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "createdAt",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "updatedAt",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false,
            "title": "Sort"
          },
          {
            "name": "limit",
            "in": "query",
            "schema": {
              "type": "number",
              "minimum": 1,
              "maximum": 1000
            },
            "required": false,
            "title": "Limit"
          },
          {
            "name": "offset",
            "in": "query",
            "schema": {
              "type": "number",
              "minimum": 0
            },
            "required": false,
            "title": "Offset"
          },
          {
            "name": "fields",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false,
            "title": "Fields"
          },
          {
            "name": "include",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false,
            "title": "Include"
          },
          {
            "name": "meta",
            "in": "query",
            "schema": {
              "type": "boolean"
            },
            "required": false,
            "title": "Meta"
          },
          {
            "name": "hints",
            "in": "query",
            "schema": {
              "type": "boolean"
            },
            "required": false,
            "title": "Hints"
          }
        ],
        "responses": {
          "200": {
            "description": "List of all cost components",
            "content": {
              "application/json": {
                "schema": {
                  "oneOf": [
                    {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/CostComponent"
                      }
                    },
                    {
                      "$ref": "#/components/schemas/SearchResponse"
                    }
                  ]
                }
              }
            }
          }
        },
        "x-permission": "settings.view"
      },
      "post": {
        "summary": "Create new cost component",
        "tags": [
          "Cost_Catalog"
        ],
        "parameters": [],
        "requestBody": {
          "description": "Cost component details",
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "name": {
                    "type": "string"
                  },
                  "type": {
                    "oneOf": [
                      {
                        "const": "material"
                      },
                      {
                        "const": "labor"
                      },
                      {
                        "const": "overhead"
                      }
                    ]
                  },
                  "unit": {
                    "type": "string"
                  },
                  "rate": {
                    "type": "number"
                  },
                  "description": {
                    "oneOf": [
                      {
                        "type": "null"
                      },
                      {
                        "type": "string"
                      }
                    ]
                  },
                  "id": {
                    "type": "string"
                  },
                  "storeId": {
                    "type": "string"
                  },
                  "updatedAt": {
                    "type": "string",
                    "format": "date-time"
                  },
                  "createdAt": {
                    "type": "string",
                    "format": "date-time"
                  }
                },
                "required": [
                  "name",
                  "type",
                  "unit",
                  "rate"
                ]
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "The created cost component",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CostComponent"
                }
              }
            }
          }
        },
        "x-permission": "settings.edit"
      }
    },
    "/v1/cost-components/search": {
      "post": {
        "summary": "Search cost components",
        "description": "Search cost components with complex filters",
        "tags": [
          "Cost_Catalog"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SearchQueryDtoCostComponent"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SearchResponse"
                }
              }
            }
          }
        },
        "x-permission": "settings.view"
      }
    },
    "/v1/cost-components/{id}": {
      "get": {
        "summary": "Get cost component by ID",
        "tags": [
          "Cost_Catalog"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "schema": {
              "type": "string"
            },
            "required": true,
            "description": " Cost component ID"
          }
        ],
        "responses": {
          "200": {
            "description": "The requested cost component",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CostComponent"
                }
              }
            }
          }
        },
        "x-permission": "settings.view"
      },
      "patch": {
        "summary": "Update cost component",
        "tags": [
          "Cost_Catalog"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "schema": {
              "type": "string"
            },
            "required": true,
            "description": " Cost component ID"
          }
        ],
        "requestBody": {
          "description": "Fields to update",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Partial__type.o16"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "The updated cost component",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CostComponent"
                }
              }
            }
          }
        },
        "x-permission": "settings.edit"
      },
      "delete": {
        "summary": "Delete cost component",
        "tags": [
          "Cost_Catalog"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "schema": {
              "type": "string"
            },
            "required": true,
            "description": " Cost component ID"
          }
        ],
        "responses": {
          "200": {
            "description": "Deleted IDs",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  }
                }
              }
            }
          }
        },
        "x-permission": "settings.edit"
      }
    },
    "/v1/sku-costs": {
      "get": {
        "summary": "Get all SKU costs for a store",
        "tags": [
          "SKU_Costs"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "skuId",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "costComponentId",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "quantity",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "storeId",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "createdAt",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "updatedAt",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false,
            "title": "Sort"
          },
          {
            "name": "limit",
            "in": "query",
            "schema": {
              "type": "number",
              "minimum": 1,
              "maximum": 1000
            },
            "required": false,
            "title": "Limit"
          },
          {
            "name": "offset",
            "in": "query",
            "schema": {
              "type": "number",
              "minimum": 0
            },
            "required": false,
            "title": "Offset"
          },
          {
            "name": "fields",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false,
            "title": "Fields"
          },
          {
            "name": "include",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false,
            "title": "Include"
          },
          {
            "name": "meta",
            "in": "query",
            "schema": {
              "type": "boolean"
            },
            "required": false,
            "title": "Meta"
          },
          {
            "name": "hints",
            "in": "query",
            "schema": {
              "type": "boolean"
            },
            "required": false,
            "title": "Hints"
          }
        ],
        "responses": {
          "200": {
            "description": "List of SKU costs",
            "content": {
              "application/json": {
                "schema": {
                  "oneOf": [
                    {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/SkuCost"
                      }
                    },
                    {
                      "$ref": "#/components/schemas/SearchResponse"
                    }
                  ]
                }
              }
            }
          }
        },
        "x-permission": "sku.view"
      },
      "post": {
        "summary": "Create a new SKU cost",
        "tags": [
          "SKU_Costs"
        ],
        "parameters": [],
        "requestBody": {
          "description": "- SKU cost data",
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "skuId": {
                    "type": "string"
                  },
                  "costComponentId": {
                    "type": "string"
                  },
                  "id": {
                    "type": "string"
                  },
                  "storeId": {
                    "type": "string"
                  },
                  "updatedAt": {
                    "type": "string",
                    "format": "date-time"
                  },
                  "createdAt": {
                    "type": "string",
                    "format": "date-time"
                  },
                  "quantity": {
                    "type": "number"
                  }
                },
                "required": [
                  "skuId",
                  "costComponentId"
                ]
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Created SKU cost",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SkuCost"
                }
              }
            }
          }
        },
        "x-permission": "sku.edit"
      }
    },
    "/v1/sku-costs/search": {
      "post": {
        "summary": "Search SKU costs",
        "description": "Search SKU costs with complex filters",
        "tags": [
          "SKU_Costs"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SearchQueryDtoSkuCost"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SearchResponse"
                }
              }
            }
          }
        },
        "x-permission": "sku.view"
      }
    },
    "/v1/sku-costs/{id}": {
      "get": {
        "summary": "Get a specific SKU cost by ID",
        "tags": [
          "SKU_Costs"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "schema": {
              "type": "string"
            },
            "required": true,
            "description": " - SKU cost identifier"
          }
        ],
        "responses": {
          "200": {
            "description": "SKU cost details",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SkuCost"
                }
              }
            }
          }
        },
        "x-permission": "sku.view"
      },
      "patch": {
        "summary": "Update a SKU cost",
        "tags": [
          "SKU_Costs"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "schema": {
              "type": "string"
            },
            "required": true,
            "description": " - SKU cost identifier"
          }
        ],
        "requestBody": {
          "description": "- Updated SKU cost data",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Partial__type.o17"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Updated SKU cost",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SkuCost"
                }
              }
            }
          }
        },
        "x-permission": "sku.edit"
      },
      "delete": {
        "summary": "Delete a SKU cost",
        "tags": [
          "SKU_Costs"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "schema": {
              "type": "string"
            },
            "required": true,
            "description": " - SKU cost identifier"
          }
        ],
        "responses": {
          "200": {
            "description": "Success status",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "success": {
                      "type": "boolean"
                    }
                  },
                  "required": [
                    "success"
                  ]
                }
              }
            }
          }
        },
        "x-permission": "sku.edit"
      }
    },
    "/v1/sku-costs/by-sku/{skuId}": {
      "get": {
        "summary": "Get all costs for a specific SKU",
        "tags": [
          "SKU_Costs"
        ],
        "parameters": [
          {
            "name": "skuId",
            "in": "path",
            "schema": {
              "type": "string"
            },
            "required": true,
            "description": " - SKU identifier"
          }
        ],
        "responses": {
          "200": {
            "description": "List of costs with component details for the SKU",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/SkuCostWithComponent"
                  }
                }
              }
            }
          }
        },
        "x-permission": "sku.view"
      },
      "delete": {
        "summary": "Delete all costs for a specific SKU",
        "tags": [
          "SKU_Costs"
        ],
        "parameters": [
          {
            "name": "skuId",
            "in": "path",
            "schema": {
              "type": "string"
            },
            "required": true,
            "description": " - SKU identifier"
          }
        ],
        "responses": {
          "200": {
            "description": "Success status",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "success": {
                      "type": "boolean"
                    }
                  },
                  "required": [
                    "success"
                  ]
                }
              }
            }
          }
        },
        "x-permission": "sku.edit"
      }
    },
    "/v1/sku-costs/breakdown/{skuId}": {
      "get": {
        "summary": "Get cost breakdown for a specific SKU",
        "tags": [
          "SKU_Costs"
        ],
        "parameters": [
          {
            "name": "skuId",
            "in": "path",
            "schema": {
              "type": "string"
            },
            "required": true,
            "description": " - SKU identifier"
          }
        ],
        "responses": {
          "200": {
            "description": "Detailed breakdown of all costs for the SKU",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CostBreakdown"
                }
              }
            }
          }
        },
        "x-permission": "sku.view"
      }
    },
    "/v1/custom-metadata-definitions": {
      "get": {
        "summary": "List custom field definitions",
        "description": "Definitions are reference data: the values editor on every detail page\nneeds them to render the right input and to warn on near-miss keys, so\nreads are open to any store member. Authoring is gated on routing.manage.",
        "tags": [
          "Custom_Fields"
        ],
        "parameters": [
          {
            "name": "entityType",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "key",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "label",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "valueType",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "enumValues",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "unit",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "defaultValue",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false,
            "description": "Written into a record's `customMetadata` when that record is created, so\nthe field is on every new record of its type. This is the only way a\ndefinition puts itself on a record: a field with no value is not listed,\nbecause a row the record does not carry is a row that lies about it.\nNever applied to records that already exist."
          },
          {
            "name": "defaultToNow",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false,
            "description": "Date/time fields only, and the only default they can carry: the value is\nthe moment the record was created. A fixed date is almost never the right\ndefault, and there is no way to express \"now\" as a literal."
          },
          {
            "name": "id",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "storeId",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "createdAt",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "updatedAt",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false,
            "title": "Sort"
          },
          {
            "name": "limit",
            "in": "query",
            "schema": {
              "type": "number",
              "minimum": 1,
              "maximum": 1000
            },
            "required": false,
            "title": "Limit"
          },
          {
            "name": "offset",
            "in": "query",
            "schema": {
              "type": "number",
              "minimum": 0
            },
            "required": false,
            "title": "Offset"
          },
          {
            "name": "fields",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false,
            "title": "Fields"
          },
          {
            "name": "include",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false,
            "title": "Include"
          },
          {
            "name": "meta",
            "in": "query",
            "schema": {
              "type": "boolean"
            },
            "required": false,
            "title": "Meta"
          },
          {
            "name": "hints",
            "in": "query",
            "schema": {
              "type": "boolean"
            },
            "required": false,
            "title": "Hints"
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "oneOf": [
                    {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/CustomMetadataDefinition"
                      }
                    },
                    {
                      "$ref": "#/components/schemas/SearchResponse"
                    }
                  ]
                }
              }
            }
          }
        }
      },
      "post": {
        "summary": "Define a custom field",
        "tags": [
          "Custom_Fields"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateCustomMetadataDefinitionRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomMetadataDefinition"
                }
              }
            }
          }
        },
        "x-permission": "routing.manage"
      }
    },
    "/v1/custom-metadata-definitions/search": {
      "post": {
        "summary": "Search custom field definitions",
        "tags": [
          "Custom_Fields"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SearchQueryDtoCustomMetadataDefinition"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SearchResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/custom-metadata-definitions/usage": {
      "get": {
        "summary": "Custom field usage across the store",
        "description": "Usage counts behind the definitions manager: how many rows each defined\nkey is set on.",
        "tags": [
          "Custom_Fields"
        ],
        "parameters": [
          {
            "name": "entityType",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomMetadataUsageResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/custom-metadata-definitions/coercion-preview": {
      "get": {
        "summary": "Preview typing a custom field",
        "description": "Dry-run for typing a key: reports how many stored values would not survive\nthe type so the client can name them before anything is written. The\nreport names raw stored values and entity ids, so it carries the same\npermission as the define it precedes rather than being open to any member.",
        "tags": [
          "Custom_Fields"
        ],
        "parameters": [
          {
            "name": "entityType",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": true
          },
          {
            "name": "key",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": true
          },
          {
            "name": "valueType",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": true
          },
          {
            "name": "enumValues",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomMetadataCoercionReport"
                }
              }
            }
          }
        },
        "x-permission": "routing.manage"
      }
    },
    "/v1/custom-metadata-definitions/{id}": {
      "get": {
        "summary": "Get a custom field definition by ID",
        "tags": [
          "Custom_Fields"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "schema": {
              "type": "string"
            },
            "required": true,
            "description": " The custom field definition ID"
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomMetadataDefinition"
                }
              }
            }
          }
        }
      },
      "patch": {
        "summary": "Update a custom field definition",
        "description": "The key is immutable: it is both the jsonb key and the identity a routing\nrule stores, so renaming it would need a value rewrite plus AST rewrites.\nLabel, unit, type and enum values are all editable.",
        "tags": [
          "Custom_Fields"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "schema": {
              "type": "string"
            },
            "required": true,
            "description": " The custom field definition ID"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateCustomMetadataDefinitionRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomMetadataDefinition"
                }
              }
            }
          }
        },
        "x-permission": "routing.manage"
      },
      "delete": {
        "summary": "Remove a custom field definition",
        "description": "Removing a definition returns the key to freeform: stored values are left\nalone and stay editable, they simply stop being validated and stop being\nvisible to routing rules.",
        "tags": [
          "Custom_Fields"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "schema": {
              "type": "string"
            },
            "required": true,
            "description": " The custom field definition ID"
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  }
                }
              }
            }
          }
        },
        "x-permission": "routing.manage"
      }
    },
    "/v1/custom-metadata/{entityType}/{entityId}": {
      "patch": {
        "summary": "Merge custom field values into a record",
        "description": "Merges the submitted fields into what the record already holds: keys not\nmentioned are left alone, and a key sent as `null` is removed. The record\nis locked for the merge, so two callers writing different keys at the same\nmoment cannot lose each other's changes.\n\nRequires the same permission as editing the record itself — `part.edit` for\na part, `printer.edit` for a printer, and so on.",
        "tags": [
          "Custom_Fields"
        ],
        "parameters": [
          {
            "name": "entityType",
            "in": "path",
            "schema": {
              "oneOf": [
                {
                  "const": "order"
                },
                {
                  "const": "sku"
                },
                {
                  "const": "printer"
                },
                {
                  "const": "part"
                },
                {
                  "const": "material"
                },
                {
                  "const": "materialVariant"
                },
                {
                  "const": "printJob"
                },
                {
                  "const": "partBuild"
                },
                {
                  "const": "profile"
                },
                {
                  "const": "materialInstance"
                },
                {
                  "const": "maintenanceItem"
                },
                {
                  "const": "customer"
                },
                {
                  "const": "orderItem"
                },
                {
                  "const": "folder"
                }
              ]
            },
            "required": true,
            "description": " The kind of entity the custom fields belong to"
          },
          {
            "name": "entityId",
            "in": "path",
            "schema": {
              "type": "string"
            },
            "required": true,
            "description": " The ID of the entity whose custom field values are set"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CustomMetadataValuesRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomMetadataValueResponse"
                }
              }
            }
          }
        },
        "x-permission": "printer.edit, part.edit, sku.edit, order.edit, material.edit, material.instance.edit, job.edit.all, build.edit, profile.edit, maintenance.edit"
      },
      "put": {
        "summary": "Replace custom field values on a record",
        "description": "Replaces the record's custom fields with exactly the submitted document.\nAnything the record held and the body omits is removed; `{}` clears them\nall.",
        "tags": [
          "Custom_Fields"
        ],
        "parameters": [
          {
            "name": "entityType",
            "in": "path",
            "schema": {
              "oneOf": [
                {
                  "const": "order"
                },
                {
                  "const": "sku"
                },
                {
                  "const": "printer"
                },
                {
                  "const": "part"
                },
                {
                  "const": "material"
                },
                {
                  "const": "materialVariant"
                },
                {
                  "const": "printJob"
                },
                {
                  "const": "partBuild"
                },
                {
                  "const": "profile"
                },
                {
                  "const": "materialInstance"
                },
                {
                  "const": "maintenanceItem"
                },
                {
                  "const": "customer"
                },
                {
                  "const": "orderItem"
                },
                {
                  "const": "folder"
                }
              ]
            },
            "required": true,
            "description": " The kind of entity the custom fields belong to"
          },
          {
            "name": "entityId",
            "in": "path",
            "schema": {
              "type": "string"
            },
            "required": true,
            "description": " The ID of the entity whose custom field values are set"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CustomMetadataValuesRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomMetadataValueResponse"
                }
              }
            }
          }
        },
        "x-permission": "printer.edit, part.edit, sku.edit, order.edit, material.edit, material.instance.edit, job.edit.all, build.edit, profile.edit, maintenance.edit"
      }
    },
    "/v1/custom-metadata/{entityType}": {
      "patch": {
        "summary": "Merge custom field values into many records",
        "description": "The merge above across many records of one type in one call. Each item\ncarries its own fields, so a table of edits lands in a single request\nrather than one per row; stamping one value across a selection is the same\ncall with the same fields repeated on every item.\n\nThe batch is all-or-nothing: it runs in one transaction, and an unknown id\nrejects the whole call with nothing written. Up to 200 items per call.",
        "tags": [
          "Custom_Fields"
        ],
        "parameters": [
          {
            "name": "entityType",
            "in": "path",
            "schema": {
              "oneOf": [
                {
                  "const": "order"
                },
                {
                  "const": "sku"
                },
                {
                  "const": "printer"
                },
                {
                  "const": "part"
                },
                {
                  "const": "material"
                },
                {
                  "const": "materialVariant"
                },
                {
                  "const": "printJob"
                },
                {
                  "const": "partBuild"
                },
                {
                  "const": "profile"
                },
                {
                  "const": "materialInstance"
                },
                {
                  "const": "maintenanceItem"
                },
                {
                  "const": "customer"
                },
                {
                  "const": "orderItem"
                },
                {
                  "const": "folder"
                }
              ]
            },
            "required": true,
            "description": " The kind of entity the custom fields belong to"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/BatchCustomMetadataValuesRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BatchCustomMetadataValuesResponse"
                }
              }
            }
          }
        },
        "x-permission": "printer.edit, part.edit, sku.edit, order.edit, material.edit, material.instance.edit, job.edit.all, build.edit, profile.edit, maintenance.edit"
      },
      "put": {
        "summary": "Replace custom field values on many records",
        "description": "The replace above across many records of one type in one call. Every item\nends up holding exactly the document submitted for it. Same all-or-nothing\nrule and 200-item cap as the batch merge.",
        "tags": [
          "Custom_Fields"
        ],
        "parameters": [
          {
            "name": "entityType",
            "in": "path",
            "schema": {
              "oneOf": [
                {
                  "const": "order"
                },
                {
                  "const": "sku"
                },
                {
                  "const": "printer"
                },
                {
                  "const": "part"
                },
                {
                  "const": "material"
                },
                {
                  "const": "materialVariant"
                },
                {
                  "const": "printJob"
                },
                {
                  "const": "partBuild"
                },
                {
                  "const": "profile"
                },
                {
                  "const": "materialInstance"
                },
                {
                  "const": "maintenanceItem"
                },
                {
                  "const": "customer"
                },
                {
                  "const": "orderItem"
                },
                {
                  "const": "folder"
                }
              ]
            },
            "required": true,
            "description": " The kind of entity the custom fields belong to"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/BatchCustomMetadataValuesRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BatchCustomMetadataValuesResponse"
                }
              }
            }
          }
        },
        "x-permission": "printer.edit, part.edit, sku.edit, order.edit, material.edit, material.instance.edit, job.edit.all, build.edit, profile.edit, maintenance.edit"
      }
    },
    "/v1/hints": {
      "get": {
        "summary": "Get path schema",
        "description": "Get schema for an API endpoint\n\nReturns request/response schemas for the specified API path,\nincluding parameters, request body, and response types.",
        "tags": [
          "Hints"
        ],
        "parameters": [
          {
            "name": "0",
            "in": "path",
            "schema": {
              "type": "string"
            },
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/object"
                }
              }
            }
          }
        },
        "security": []
      }
    },
    "/v1/hints/schema/types": {
      "get": {
        "summary": "List available types",
        "description": "List available type schemas\n\nReturns the names of all data types that have schemas available.",
        "tags": [
          "Hints"
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  }
                }
              }
            }
          }
        },
        "security": []
      }
    },
    "/v1/hints/schema/types/{typeName}": {
      "get": {
        "summary": "Get type schema",
        "description": "Get JSON schema for a data type\n\nReturns the full JSON schema for the specified data type,\nuseful for LLM introspection. Resolves $refs for readability.",
        "tags": [
          "Hints"
        ],
        "parameters": [
          {
            "name": "typeName",
            "in": "path",
            "schema": {
              "type": "string"
            },
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/object"
                }
              }
            }
          }
        },
        "security": []
      }
    },
    "/v1/hints/schema/paths": {
      "get": {
        "summary": "List available paths",
        "description": "List available API paths\n\nReturns all API endpoint paths that have schema definitions.",
        "tags": [
          "Hints"
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  }
                }
              }
            }
          }
        },
        "security": []
      }
    },
    "/v1/audit-logs": {
      "get": {
        "summary": "List audit logs",
        "description": "List audit log entries for your store: who changed what, and when.\nPass `entityIdSearch` to return only entries that touched a given entity\nID. Requires a commercial plan.",
        "tags": [
          "Audit_Logs"
        ],
        "parameters": [
          {
            "name": "source",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "metadata",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "id",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "storeId",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "createdAt",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "entityType",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "entityId",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "entityIds",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "action",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "detailedAction",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "changes",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "actorId",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "actorType",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "actorEmail",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "apiKeyId",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "impersonatedBy",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "correlationId",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "ipAddress",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "userAgent",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "reason",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false,
            "title": "Sort"
          },
          {
            "name": "limit",
            "in": "query",
            "schema": {
              "type": "number",
              "minimum": 1,
              "maximum": 1000
            },
            "required": false,
            "title": "Limit"
          },
          {
            "name": "offset",
            "in": "query",
            "schema": {
              "type": "number",
              "minimum": 0
            },
            "required": false,
            "title": "Offset"
          },
          {
            "name": "fields",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false,
            "title": "Fields"
          },
          {
            "name": "include",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false,
            "title": "Include"
          },
          {
            "name": "meta",
            "in": "query",
            "schema": {
              "type": "boolean"
            },
            "required": false,
            "title": "Meta"
          },
          {
            "name": "hints",
            "in": "query",
            "schema": {
              "type": "boolean"
            },
            "required": false,
            "title": "Hints"
          },
          {
            "name": "entityIdSearch",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          }
        ],
        "responses": {
          "200": {
            "description": "Audit log entries",
            "content": {
              "application/json": {
                "schema": {
                  "oneOf": [
                    {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "source": {
                            "oneOf": [
                              {
                                "const": "webhook"
                              },
                              {
                                "const": "system"
                              },
                              {
                                "const": "scheduler"
                              },
                              {
                                "const": "web"
                              },
                              {
                                "const": "api"
                              },
                              {
                                "const": "cli"
                              },
                              {
                                "const": "mobile_scan"
                              }
                            ]
                          },
                          "metadata": {
                            "oneOf": [
                              {
                                "type": "null"
                              },
                              {
                                "$ref": "#/components/schemas/Recordstringunknown"
                              }
                            ]
                          },
                          "id": {
                            "type": "string"
                          },
                          "storeId": {
                            "type": "string"
                          },
                          "createdAt": {
                            "type": "string",
                            "format": "date-time"
                          },
                          "entityType": {
                            "type": "string"
                          },
                          "entityId": {
                            "oneOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "string"
                              }
                            ]
                          },
                          "entityIds": {
                            "oneOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "array",
                                "items": {
                                  "type": "string"
                                }
                              }
                            ]
                          },
                          "action": {
                            "oneOf": [
                              {
                                "type": "null"
                              },
                              {
                                "const": "create"
                              },
                              {
                                "const": "update"
                              },
                              {
                                "const": "delete"
                              },
                              {
                                "const": "bulk_create"
                              },
                              {
                                "const": "bulk_update"
                              },
                              {
                                "const": "bulk_delete"
                              },
                              {
                                "const": "login"
                              },
                              {
                                "const": "logout"
                              },
                              {
                                "const": "export"
                              },
                              {
                                "const": "import"
                              },
                              {
                                "const": "sensitive_access"
                              }
                            ]
                          },
                          "detailedAction": {
                            "oneOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "string"
                              }
                            ]
                          },
                          "changes": {
                            "oneOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "array",
                                "items": {
                                  "$ref": "#/components/schemas/FieldChange"
                                }
                              }
                            ]
                          },
                          "actorId": {
                            "type": "string"
                          },
                          "actorType": {
                            "oneOf": [
                              {
                                "const": "user"
                              },
                              {
                                "const": "api_key"
                              },
                              {
                                "const": "webhook"
                              },
                              {
                                "const": "system"
                              },
                              {
                                "const": "scheduler"
                              },
                              {
                                "const": "fuse"
                              }
                            ]
                          },
                          "actorEmail": {
                            "oneOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "string"
                              }
                            ]
                          },
                          "apiKeyId": {
                            "oneOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "string"
                              }
                            ]
                          },
                          "impersonatedBy": {
                            "oneOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "string"
                              }
                            ]
                          },
                          "correlationId": {
                            "type": "string"
                          },
                          "ipAddress": {
                            "oneOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "string"
                              }
                            ]
                          },
                          "userAgent": {
                            "oneOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "string"
                              }
                            ]
                          },
                          "reason": {
                            "oneOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "string"
                              }
                            ]
                          }
                        },
                        "required": [
                          "source",
                          "metadata",
                          "id",
                          "storeId",
                          "createdAt",
                          "entityType",
                          "entityId",
                          "entityIds",
                          "action",
                          "detailedAction",
                          "changes",
                          "actorId",
                          "actorType",
                          "actorEmail",
                          "apiKeyId",
                          "impersonatedBy",
                          "correlationId",
                          "ipAddress",
                          "userAgent",
                          "reason"
                        ]
                      }
                    },
                    {
                      "$ref": "#/components/schemas/SearchResponse"
                    }
                  ]
                }
              }
            }
          }
        },
        "x-permission": "audit.log.view"
      }
    },
    "/v1/audit-logs/search": {
      "post": {
        "summary": "Search audit logs",
        "description": "Search audit log entries with filters, sorting and pagination.\nRequires a commercial plan.",
        "tags": [
          "Audit_Logs"
        ],
        "parameters": [],
        "requestBody": {
          "description": "Search filters, sorting and pagination",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SearchQueryDto__type"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Matching audit log entries with pagination metadata",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SearchResponse"
                }
              }
            }
          }
        },
        "x-permission": "audit.log.view"
      }
    },
    "/v1/settings/user": {
      "get": {
        "summary": "Get user settings",
        "tags": [
          "Settings"
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "Current user settings",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetUserSettingsResponse"
                }
              }
            }
          }
        }
      },
      "patch": {
        "summary": "Update user settings",
        "tags": [
          "Settings"
        ],
        "parameters": [],
        "requestBody": {
          "description": "Settings to update",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateUserSettingsRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Updated user settings",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetUserSettingsResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/maintenance/items": {
      "get": {
        "summary": "List maintenance items",
        "description": "List all maintenance items for the store",
        "tags": [
          "Maintenance"
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/MaintenanceItem"
                  }
                }
              }
            }
          }
        },
        "x-permission": "maintenance.view"
      },
      "post": {
        "summary": "Create maintenance item",
        "description": "Create a new maintenance item",
        "tags": [
          "Maintenance"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/MaintenanceItemInsert"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MaintenanceItem"
                }
              }
            }
          }
        },
        "x-permission": "maintenance.create"
      }
    },
    "/v1/maintenance/items/{id}": {
      "patch": {
        "summary": "Update maintenance item",
        "description": "Update a maintenance item",
        "tags": [
          "Maintenance"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "schema": {
              "type": "string"
            },
            "required": true,
            "description": " The maintenance item ID"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PartialPickMaintenanceItemnamecustomMetadatatriggerTypeintervalwarningThresholdPctnotes"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MaintenanceItem"
                }
              }
            }
          }
        },
        "x-permission": "maintenance.edit"
      },
      "delete": {
        "summary": "Delete maintenance item",
        "description": "Delete a maintenance item",
        "tags": [
          "Maintenance"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "schema": {
              "type": "string"
            },
            "required": true,
            "description": " The maintenance item ID"
          }
        ],
        "responses": {
          "200": {
            "description": "Success. The response has no body."
          }
        },
        "x-permission": "maintenance.delete"
      }
    },
    "/v1/maintenance/items/{id}/duplicate": {
      "post": {
        "summary": "Duplicate maintenance item",
        "description": "Duplicate a maintenance item",
        "tags": [
          "Maintenance"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "schema": {
              "type": "string"
            },
            "required": true,
            "description": " The maintenance item ID"
          }
        ],
        "responses": {
          "201": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MaintenanceItem"
                }
              }
            }
          }
        },
        "x-permission": "maintenance.create"
      }
    },
    "/v1/maintenance/fleet-status": {
      "get": {
        "summary": "Get fleet maintenance status",
        "description": "Get maintenance status for all enrolled printers",
        "tags": [
          "Maintenance"
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/MaintenanceStatusInfo"
                  }
                }
              }
            }
          }
        },
        "x-permission": "maintenance.view"
      }
    },
    "/v1/maintenance/enrollments": {
      "get": {
        "summary": "List enrollments",
        "description": "List all maintenance enrollments for the store",
        "tags": [
          "Maintenance"
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PrinterMaintenanceEnrollment"
                  }
                }
              }
            }
          }
        },
        "x-permission": "maintenance.view"
      },
      "post": {
        "summary": "Enroll printers",
        "description": "Enroll printers in a maintenance item",
        "tags": [
          "Maintenance"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "maintenanceItemId": {
                    "type": "string"
                  },
                  "enrollments": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "printerId": {
                          "type": "string"
                        },
                        "currentOffset": {
                          "type": "number"
                        }
                      },
                      "required": [
                        "printerId"
                      ]
                    }
                  }
                },
                "required": [
                  "maintenanceItemId",
                  "enrollments"
                ]
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PrinterMaintenanceEnrollment"
                  }
                }
              }
            }
          }
        },
        "x-permission": "maintenance.edit"
      },
      "delete": {
        "summary": "Unenroll printers",
        "description": "Unenroll printers from maintenance items",
        "tags": [
          "Maintenance"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "enrollmentIds": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  }
                },
                "required": [
                  "enrollmentIds"
                ]
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Success. The response has no body."
          }
        },
        "x-permission": "maintenance.edit"
      }
    },
    "/v1/maintenance/printers/{printerId}/status": {
      "get": {
        "summary": "Get printer maintenance status",
        "description": "Get maintenance enrollments and status for a specific printer",
        "tags": [
          "Maintenance"
        ],
        "parameters": [
          {
            "name": "printerId",
            "in": "path",
            "schema": {
              "type": "string"
            },
            "required": true,
            "description": " The printer ID"
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/MaintenanceStatusInfo"
                  }
                }
              }
            }
          }
        },
        "x-permission": "maintenance.view"
      }
    },
    "/v1/maintenance/mark-done": {
      "post": {
        "summary": "Mark maintenance done",
        "description": "Mark maintenance as done for one or more enrollments",
        "tags": [
          "Maintenance"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "enrollmentIds": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "notes": {
                    "type": "string"
                  },
                  "userId": {
                    "type": "string"
                  }
                },
                "required": [
                  "enrollmentIds"
                ]
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Success. The response has no body."
          }
        },
        "x-permission": "maintenance.complete"
      }
    },
    "/v1/maintenance/history": {
      "get": {
        "summary": "Get completion history",
        "description": "Get maintenance completion history",
        "tags": [
          "Maintenance"
        ],
        "parameters": [
          {
            "name": "printerId",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/MaintenanceCompletionLog"
                  }
                }
              }
            }
          }
        },
        "x-permission": "maintenance.view"
      }
    },
    "/v1/maintenance/recommended-profiles": {
      "get": {
        "summary": "Get recommended maintenance profiles",
        "description": "Get the recommended maintenance profile mapping (item name -> model codes).\nGlobal reference data, not per-store.",
        "tags": [
          "Maintenance"
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RecordstringArraystring"
                }
              }
            }
          }
        },
        "x-permission": "maintenance.view"
      }
    },
    "/v1/maintenance/recommended-enrollments": {
      "post": {
        "summary": "Enroll recommended maintenance",
        "description": "Enroll printers in recommended maintenance plans based on their model",
        "tags": [
          "Maintenance"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "printerIds": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "offsets": {
                    "$ref": "#/components/schemas/RecordstringRecordstringnumber"
                  }
                },
                "required": [
                  "printerIds",
                  "offsets"
                ]
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "enrolledCount": {
                      "type": "number"
                    }
                  },
                  "required": [
                    "enrolledCount"
                  ]
                }
              }
            }
          }
        },
        "x-permission": "maintenance.edit"
      }
    },
    "/v1/maintenance/mode": {
      "patch": {
        "summary": "Set maintenance mode",
        "description": "Toggle maintenance mode on or off for one or more printers.\nEntitlement is checked inside the service only when enabling,\nso users can always turn maintenance mode off.",
        "tags": [
          "Maintenance"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "printerIds": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "enabled": {
                    "type": "boolean"
                  }
                },
                "required": [
                  "printerIds",
                  "enabled"
                ]
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Printer"
                  }
                }
              }
            }
          }
        },
        "x-permission": "maintenance.edit"
      }
    },
    "/v1/printer-throttle-groups": {
      "get": {
        "summary": "List Staggered Start groups",
        "tags": [
          "Staggered_Start"
        ],
        "parameters": [
          {
            "name": "name",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "enabled",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "maxConcurrentStarts",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "releaseConditions",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "fallbackTimeoutSeconds",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "temperatureToleranceC",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "id",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "storeId",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "createdAt",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "updatedAt",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false,
            "title": "Sort"
          },
          {
            "name": "limit",
            "in": "query",
            "schema": {
              "type": "number",
              "minimum": 1,
              "maximum": 1000
            },
            "required": false,
            "title": "Limit"
          },
          {
            "name": "offset",
            "in": "query",
            "schema": {
              "type": "number",
              "minimum": 0
            },
            "required": false,
            "title": "Offset"
          },
          {
            "name": "fields",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false,
            "title": "Fields"
          },
          {
            "name": "include",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false,
            "title": "Include"
          },
          {
            "name": "meta",
            "in": "query",
            "schema": {
              "type": "boolean"
            },
            "required": false,
            "title": "Meta"
          },
          {
            "name": "hints",
            "in": "query",
            "schema": {
              "type": "boolean"
            },
            "required": false,
            "title": "Hints"
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "oneOf": [
                    {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/PrinterThrottleGroup"
                      }
                    },
                    {
                      "$ref": "#/components/schemas/SearchResponse"
                    }
                  ]
                }
              }
            }
          }
        },
        "x-permission": "printer.view"
      },
      "post": {
        "summary": "Create Staggered Start group",
        "tags": [
          "Staggered_Start"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PrinterThrottleGroupInsert"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PrinterThrottleGroup"
                }
              }
            }
          }
        },
        "x-permission": "printer.edit"
      }
    },
    "/v1/printer-throttle-groups/leases": {
      "get": {
        "summary": "List Staggered Start holds",
        "description": "List Staggered Start holds (leases). By default returns only the **active**\nholds (`releasedAt` is null) — the printers currently reserving or warming a\nslot. Each lease carries `groupId`, `printerId`, `warmupStartedAt` (set once\nthe job is sent and the printer is heating), and `releasedAt`. Count the\nones with a non-null `warmupStartedAt` to get how many printers are warming\nright now. Pass `includeReleased=true` for the full history.",
        "tags": [
          "Staggered_Start"
        ],
        "parameters": [
          {
            "name": "includeReleased",
            "in": "query",
            "schema": {
              "type": "boolean"
            },
            "required": false,
            "title": "Include released (historical) holds, not just the active ones",
            "description": "Include released (historical) holds, not just the active ones."
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PrinterThrottleLease"
                  }
                }
              }
            }
          }
        },
        "x-permission": "printer.view"
      }
    },
    "/v1/printer-throttle-groups/{id}": {
      "get": {
        "summary": "Get Staggered Start group",
        "tags": [
          "Staggered_Start"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "schema": {
              "type": "string"
            },
            "required": true,
            "description": " The staggered start group ID"
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PrinterThrottleGroup"
                }
              }
            }
          }
        },
        "x-permission": "printer.view"
      },
      "patch": {
        "summary": "Update Staggered Start group",
        "tags": [
          "Staggered_Start"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "schema": {
              "type": "string"
            },
            "required": true,
            "description": " The staggered start group ID"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PartialPickPrinterThrottleGroupnameenabledmaxConcurrentStartsreleaseConditionsfallbackTimeoutSecondstemperatureToleranceC"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PrinterThrottleGroup"
                }
              }
            }
          }
        },
        "x-permission": "printer.edit"
      },
      "delete": {
        "summary": "Delete Staggered Start group",
        "tags": [
          "Staggered_Start"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "schema": {
              "type": "string"
            },
            "required": true,
            "description": " The staggered start group ID"
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  }
                }
              }
            }
          }
        },
        "x-permission": "printer.edit"
      }
    },
    "/v1/printer-throttle-groups/{id}/members": {
      "get": {
        "summary": "List Staggered Start group members",
        "tags": [
          "Staggered_Start"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "schema": {
              "type": "string"
            },
            "required": true,
            "description": " The staggered start group ID"
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PrinterThrottleGroupMember"
                  }
                }
              }
            }
          }
        },
        "x-permission": "printer.view"
      },
      "put": {
        "summary": "Replace Staggered Start group members",
        "tags": [
          "Staggered_Start"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "schema": {
              "type": "string"
            },
            "required": true,
            "description": " The staggered start group ID"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ReplacePrinterThrottleGroupMembersBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PrinterThrottleGroupMember"
                  }
                }
              }
            }
          }
        },
        "x-permission": "printer.edit"
      }
    },
    "/v1/printer-throttle-groups/leases/{id}/release": {
      "post": {
        "summary": "Release a Staggered Start hold",
        "description": "Operator action (A): release an active Staggered Start hold, freeing its\ngroup's capacity. Gated by `printer.control` (operational, can raise power\ndraw), not the settings-level `printer.edit`.",
        "tags": [
          "Staggered_Start"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "schema": {
              "type": "string"
            },
            "required": true,
            "description": " The lease ID"
          }
        ],
        "responses": {
          "201": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "released": {
                      "type": "boolean"
                    }
                  },
                  "required": [
                    "released"
                  ]
                }
              }
            }
          }
        },
        "x-permission": "printer.control"
      }
    },
    "/v1/print-history": {
      "get": {
        "summary": "List print history",
        "description": "List print attempts: one row per time a job ran on a printer, with its\noutcome, timing and printer. Rows are written by Printago as attempts\nfinish and cannot be edited. Filter with `field.operator=value` query\nparameters; pass `meta=true` to get a paginated envelope.\n`GET /v2/print-history` is easier to page through.",
        "tags": [
          "Print_History"
        ],
        "parameters": [
          {
            "name": "printJobId",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "attemptNumber",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "taskId",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "finalStatus",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "outcome",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "partBuildId",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "partId",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "partName",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "skuId",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "skuName",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "label",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "groupId",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "orderId",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "orderItemId",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "quantityIndex",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "quantityTotal",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "printerId",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "printerDeviceId",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "printerProvider",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "printerName",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "printerModelName",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "printerVendorName",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "queuedAt",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "assignmentStartedAt",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "assignmentCompletedAt",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "printingStartedAt",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "printingCompletedAt",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "cancelledAt",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "endedAt",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "printDurationSeconds",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "errorMessage",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "materialUsageId",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "totalUsed",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "totalUsedGrams",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "usedBySlot",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false,
            "title": "Flat slot id (amsIndex*4+slotIndex, negative for spools) -> mm extruded",
            "description": "Flat slot id (amsIndex*4+slotIndex, negative for spools) -> mm extruded."
          },
          {
            "name": "usedGramsBySlot",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false,
            "title": "Flat slot id -> grams extruded, when a grams conversion was available",
            "description": "Flat slot id -> grams extruded, when a grams conversion was available."
          },
          {
            "name": "slotMaterials",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false,
            "description": "Flat slot id -> what was loaded there at capture time. Deliberately open:\nit is a verbatim snapshot of `material_usage.slot_materials`, whose shape\nhas gained fields over time and must survive round-tripping unchanged."
          },
          {
            "name": "materialMapping",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "totalLayers",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "completedLayers",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "skippedObjects",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "estimatedPrintTimeSeconds",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "estimatedTotalWeightGrams",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "estimatedMaterials",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "slicerVersion",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "overriddenProcessProfileId",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "gcodeAnalysisSha256",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "slicedGcodeUri",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "thumbnailUri",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "coloredThumbnailUri",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "cameraThumbnailUri",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "timelapseUri",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "logsUri",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "gatewayTelemetryUri",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "fuseTelemetryUri",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "priority",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "id",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "storeId",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "createdAt",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "updatedAt",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false,
            "title": "Sort"
          },
          {
            "name": "limit",
            "in": "query",
            "schema": {
              "type": "number",
              "minimum": 1,
              "maximum": 1000
            },
            "required": false,
            "title": "Limit"
          },
          {
            "name": "offset",
            "in": "query",
            "schema": {
              "type": "number",
              "minimum": 0
            },
            "required": false,
            "title": "Offset"
          },
          {
            "name": "fields",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false,
            "title": "Fields"
          },
          {
            "name": "include",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false,
            "title": "Include"
          },
          {
            "name": "meta",
            "in": "query",
            "schema": {
              "type": "boolean"
            },
            "required": false,
            "title": "Meta"
          },
          {
            "name": "hints",
            "in": "query",
            "schema": {
              "type": "boolean"
            },
            "required": false,
            "title": "Hints"
          }
        ],
        "responses": {
          "200": {
            "description": "Print history rows, or a paginated envelope when `meta=true`",
            "content": {
              "application/json": {
                "schema": {
                  "oneOf": [
                    {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/PrintHistory"
                      }
                    },
                    {
                      "$ref": "#/components/schemas/SearchResponse"
                    }
                  ]
                }
              }
            }
          }
        },
        "x-permission": "queue.view"
      }
    },
    "/v1/print-history/serials/{serial}/attempts": {
      "get": {
        "summary": "Trace a spool serial through print history",
        "description": "Every print attempt that consumed a given spool serial\n\nThe traceability lookup: given a roll's serial, which prints used it, when,\non which printer, and how much came off it. Newest first.",
        "tags": [
          "Print_History"
        ],
        "parameters": [
          {
            "name": "serial",
            "in": "path",
            "schema": {
              "type": "string"
            },
            "required": true,
            "description": " The spool serial to trace"
          },
          {
            "name": "limit",
            "in": "query",
            "schema": {
              "type": "number"
            },
            "description": " Maximum attempts to return (default 200, max 1000)",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SpoolSerialTrace"
                }
              }
            }
          }
        },
        "x-permission": "queue.view"
      }
    },
    "/v1/print-history/search": {
      "post": {
        "summary": "Search print history",
        "description": "Search print attempts with filters, sorting and pagination.",
        "tags": [
          "Print_History"
        ],
        "parameters": [],
        "requestBody": {
          "description": "Search filters, sorting and pagination",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SearchQueryDtoPrintHistory"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Matching print history rows with pagination metadata",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SearchResponse"
                }
              }
            }
          }
        },
        "x-permission": "queue.view"
      }
    },
    "/v1/customizer/configs": {
      "get": {
        "summary": "List customizer configs",
        "description": "List all customizer configs for the store.",
        "tags": [
          "Customizer"
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/CustomizerConfig"
                  }
                }
              }
            }
          }
        },
        "x-permission": "customizer.manage"
      },
      "post": {
        "summary": "Create customizer config",
        "description": "Create a customizer config for a SKU.",
        "tags": [
          "Customizer"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CustomizerConfigInsert"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomizerConfig"
                }
              }
            }
          }
        },
        "x-permission": "customizer.manage"
      }
    },
    "/v1/customizer/configs/{id}": {
      "get": {
        "summary": "Get customizer config",
        "description": "Get one customizer config by id.",
        "tags": [
          "Customizer"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "schema": {
              "type": "string"
            },
            "required": true,
            "description": " The customizer config ID"
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomizerConfig"
                }
              }
            }
          }
        },
        "x-permission": "customizer.manage"
      },
      "patch": {
        "summary": "Update customizer config",
        "description": "Update a customizer config.",
        "tags": [
          "Customizer"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "schema": {
              "type": "string"
            },
            "required": true,
            "description": " The customizer config ID"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CustomizerConfigUpdate"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomizerConfig"
                }
              }
            }
          }
        },
        "x-permission": "customizer.manage"
      },
      "delete": {
        "summary": "Delete customizer config",
        "description": "Delete a customizer config.",
        "tags": [
          "Customizer"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "schema": {
              "type": "string"
            },
            "required": true,
            "description": " The customizer config ID"
          }
        ],
        "responses": {
          "200": {
            "description": "Success. The response has no body."
          }
        },
        "x-permission": "customizer.manage"
      }
    },
    "/v1/customizer/configs/example": {
      "post": {
        "summary": "Add example customizer config",
        "description": "Create a starter example config from the bundled\n\"Motorcycle License Plate Frame Example\" template. Every call\ncreates a fresh instance — the admin UI exposes this via the\n\"Add Example Configuration\" button.",
        "tags": [
          "Customizer"
        ],
        "parameters": [],
        "responses": {
          "201": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomizerConfig"
                }
              }
            }
          }
        },
        "x-permission": "customizer.manage"
      }
    },
    "/v1/customizer/configs/{configId}/background-svg": {
      "post": {
        "summary": "Upload background SVG",
        "description": "Upload a background/mask SVG for a customizer config. The SVG's\n`viewBox` is parsed and stored alongside the file path under\n`configJson.backgroundSvg`. Re-uploading overwrites the existing file.",
        "tags": [
          "Customizer"
        ],
        "parameters": [
          {
            "name": "configId",
            "in": "path",
            "schema": {
              "type": "string"
            },
            "required": true,
            "description": " The customizer config ID"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/BackgroundSvgUploadBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomizerConfig"
                }
              }
            }
          }
        },
        "x-permission": "customizer.manage"
      },
      "delete": {
        "summary": "Delete background SVG",
        "description": "Remove the background/mask SVG for a customizer config.",
        "tags": [
          "Customizer"
        ],
        "parameters": [
          {
            "name": "configId",
            "in": "path",
            "schema": {
              "type": "string"
            },
            "required": true,
            "description": " The customizer config ID"
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomizerConfig"
                }
              }
            }
          }
        },
        "x-permission": "customizer.manage"
      }
    },
    "/v1/customizer/configs/sku-colors": {
      "post": {
        "summary": "Get colors for SKUs",
        "description": "Discover distinct color swatches used by the given SKUs. Used by the\nadmin editor to auto-import a SKU's possible colors into a config's\ncolor list when a SKU is paired.",
        "tags": [
          "Customizer"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CustomizerSkuColorsBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/CustomizerColorEntry"
                  }
                }
              }
            }
          }
        },
        "x-permission": "customizer.manage"
      }
    },
    "/v1/customizer/designs/simulate": {
      "post": {
        "summary": "Preview customizer build overlay",
        "description": "Local-dev: preview the OpenSCAD build payload that WOULD be\nassembled for a given customizer design — without creating an\nOrderItem or queueing a build. Used by the customizer's local\nAdd-to-Cart shortcut while Shopify is cut out of the loop.",
        "tags": [
          "Customizer"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "designId": {
                    "type": "string",
                    "pattern": "^[a-z0-9]{24}$"
                  },
                  "configId": {
                    "type": "string",
                    "pattern": "^[a-z0-9]{24}$"
                  }
                },
                "required": [
                  "designId"
                ]
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "designId": {
                      "type": "string",
                      "pattern": "^[a-z0-9]{24}$"
                    },
                    "files": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "slot": {
                            "type": "string"
                          },
                          "role": {
                            "oneOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "string"
                              }
                            ]
                          },
                          "color": {
                            "oneOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "string"
                              }
                            ]
                          },
                          "contentType": {
                            "oneOf": [
                              {
                                "type": "null"
                              },
                              {
                                "type": "string"
                              }
                            ]
                          },
                          "storagePath": {
                            "type": "string"
                          }
                        },
                        "required": [
                          "slot",
                          "role",
                          "color",
                          "contentType",
                          "storagePath"
                        ]
                      }
                    },
                    "inputFilesBySlot": {
                      "$ref": "#/components/schemas/Recordstringstring"
                    },
                    "overlayParams": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    },
                    "config": {
                      "oneOf": [
                        {
                          "type": "null"
                        },
                        {
                          "type": "object",
                          "properties": {
                            "id": {
                              "type": "string",
                              "pattern": "^[a-z0-9]{24}$"
                            },
                            "name": {
                              "oneOf": [
                                {
                                  "type": "null"
                                },
                                {
                                  "type": "string"
                                }
                              ]
                            },
                            "skuIds": {
                              "type": "array",
                              "items": {
                                "type": "string",
                                "pattern": "^[a-z0-9]{24}$"
                              }
                            }
                          },
                          "required": [
                            "id",
                            "name",
                            "skuIds"
                          ]
                        }
                      ]
                    },
                    "message": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "designId",
                    "files",
                    "inputFilesBySlot",
                    "overlayParams",
                    "config",
                    "message"
                  ]
                }
              }
            }
          }
        },
        "x-permission": "customizer.manage"
      }
    },
    "/v1/customizer/designs": {
      "get": {
        "summary": "List customizer designs",
        "description": "List submitted customizer designs for the store.",
        "tags": [
          "Customizer"
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/CustomizerDesign"
                  }
                }
              }
            }
          }
        },
        "x-permission": "customizer.manage"
      }
    },
    "/v1/customizer/designs/{id}": {
      "get": {
        "summary": "Get customizer design",
        "description": "Get one customizer design by id.",
        "tags": [
          "Customizer"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "schema": {
              "type": "string"
            },
            "required": true,
            "description": " The customizer design ID"
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomizerDesign"
                }
              }
            }
          }
        },
        "x-permission": "customizer.manage"
      }
    },
    "/v1/customizer/designs/{id}/svg": {
      "get": {
        "summary": "Get design SVG",
        "description": "Get the raw SVG payload for a design.",
        "tags": [
          "Customizer"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "schema": {
              "type": "string"
            },
            "required": true,
            "description": " The customizer design ID"
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DesignSvgResponse"
                }
              }
            }
          }
        },
        "x-permission": "customizer.manage"
      }
    },
    "/v1/customizer/designs/{id}/with-files": {
      "get": {
        "summary": "Get design with per-layer files",
        "description": "Get a design row plus every per-layer file with a short-lived signed\nURL. Used by the order detail page to surface what the customer\nsubmitted on a given OrderItem (resolved from `inputs.design_id`).\n`configName` is null when the originating config has been deleted —\nthe design + files survive via `ON DELETE SET NULL`.",
        "tags": [
          "Customizer"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "schema": {
              "type": "string"
            },
            "required": true,
            "description": " The customizer design ID"
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DesignWithFilesResponse"
                }
              }
            }
          }
        },
        "x-permission": "customizer.manage"
      }
    },
    "/v1/customizer/fonts/google": {
      "get": {
        "summary": "List Google Fonts catalog",
        "description": "Browse the Google Fonts catalog. Search by family substring or\nfilter by category (`serif | sans-serif | display | handwriting | monospace`).",
        "tags": [
          "Customizer"
        ],
        "parameters": [
          {
            "name": "search",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "category",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "limit",
            "in": "query",
            "schema": {
              "type": "number"
            },
            "required": false
          },
          {
            "name": "offset",
            "in": "query",
            "schema": {
              "type": "number"
            },
            "required": false
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GoogleFontsListResponse"
                }
              }
            }
          }
        },
        "x-permission": "customizer.manage"
      }
    },
    "/v1/customizer/fonts/store": {
      "get": {
        "summary": "List custom fonts",
        "description": "List the store's uploaded custom fonts.",
        "tags": [
          "Customizer"
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/StoreCustomFontWithUrl"
                  }
                }
              }
            }
          }
        },
        "x-permission": "customizer.manage"
      },
      "post": {
        "summary": "Upload custom font",
        "description": "Upload a custom font binary (.ttf / .otf, base64-encoded) along with\na license attestation.",
        "tags": [
          "Customizer"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CustomFontUploadBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/StoreCustomFont"
                }
              }
            }
          }
        },
        "x-permission": "customizer.manage"
      }
    },
    "/v1/customizer/fonts/store/{id}": {
      "delete": {
        "summary": "Delete custom font",
        "description": "Delete a custom font.",
        "tags": [
          "Customizer"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "schema": {
              "type": "string"
            },
            "required": true,
            "description": " The store font ID"
          }
        ],
        "responses": {
          "200": {
            "description": "Success. The response has no body."
          }
        },
        "x-permission": "customizer.manage"
      }
    },
    "/v1/customizer/fonts/store-google": {
      "get": {
        "summary": "List store Google fonts pool",
        "description": "List the store's curated Google Fonts pool. Each entry is enriched with\nresolved CSS + download URLs from the Google Fonts catalog.",
        "tags": [
          "Customizer"
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/StoreGoogleFontWithUrls"
                  }
                }
              }
            }
          }
        },
        "x-permission": "customizer.manage"
      },
      "post": {
        "summary": "Add Google font to store pool",
        "description": "Pin a Google Font family to the store's curated pool. Idempotent — if\nthe family is already pinned, the existing row is returned.",
        "tags": [
          "Customizer"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/StoreGoogleFontAddBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/StoreGoogleFont"
                }
              }
            }
          }
        },
        "x-permission": "customizer.manage"
      }
    },
    "/v1/customizer/fonts/store-google/{id}": {
      "delete": {
        "summary": "Remove Google font from store pool",
        "description": "Remove a Google Font from the store's curated pool by row id.",
        "tags": [
          "Customizer"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "schema": {
              "type": "string"
            },
            "required": true,
            "description": " The store Google font ID"
          }
        ],
        "responses": {
          "200": {
            "description": "Success. The response has no body."
          }
        },
        "x-permission": "customizer.manage"
      }
    },
    "/v1/customizer/textures/store": {
      "get": {
        "summary": "List store custom textures",
        "description": "List the store's uploaded build-plate textures.",
        "tags": [
          "Customizer"
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/StoreCustomTextureWithUrl"
                  }
                }
              }
            }
          }
        },
        "x-permission": "customizer.manage"
      },
      "post": {
        "summary": "Upload store custom texture",
        "description": "Upload a custom build-plate texture SVG to the store's pool. The SVG's\n`viewBox` is parsed from the file. Re-uploading the same name is allowed\n— each upload creates a new row.",
        "tags": [
          "Customizer"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CustomizerStoreTextureUploadBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/StoreCustomTextureWithUrl"
                }
              }
            }
          }
        },
        "x-permission": "customizer.manage"
      }
    },
    "/v1/customizer/textures/store/{id}": {
      "patch": {
        "summary": "Update store custom texture",
        "description": "Update editable fields on a store-level custom texture (name or\nopacity). Either field may be omitted.",
        "tags": [
          "Customizer"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "schema": {
              "type": "string"
            },
            "required": true,
            "description": " The store texture ID"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CustomizerStoreTextureUpdateBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/StoreCustomTextureWithUrl"
                }
              }
            }
          }
        },
        "x-permission": "customizer.manage"
      },
      "delete": {
        "summary": "Delete store custom texture",
        "description": "Delete a store-level custom texture. The Firebase object is removed\nbest-effort and the row is deleted.",
        "tags": [
          "Customizer"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "schema": {
              "type": "string"
            },
            "required": true,
            "description": " The store texture ID"
          }
        ],
        "responses": {
          "200": {
            "description": "Success. The response has no body."
          }
        },
        "x-permission": "customizer.manage"
      }
    },
    "/v1/print-jobs/{id}/telemetry": {
      "get": {
        "summary": "Get print job telemetry",
        "description": "Get normalized telemetry for one attempt of a print job: temperature\nand progress samples, layer markers, printer events (errors, state\nchanges, AI failure alerts), timelapse frames and filament usage.\nDefaults to the latest attempt.",
        "tags": [
          "Print_Jobs"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "schema": {
              "type": "string",
              "pattern": "^[a-z0-9]{24}$"
            },
            "required": true,
            "description": " The print job ID"
          },
          {
            "name": "attempt",
            "in": "query",
            "schema": {
              "type": "number"
            },
            "required": false,
            "title": "Attempt number to render; defaults to the latest attempt",
            "description": "Attempt number to render; defaults to the latest attempt."
          },
          {
            "name": "source",
            "in": "query",
            "schema": {
              "oneOf": [
                {
                  "const": "fuse"
                },
                {
                  "const": "auto"
                },
                {
                  "const": "gateway"
                }
              ]
            },
            "required": false,
            "title": "Which telemetry series to render; defaults to `auto`",
            "description": "Which telemetry series to render; defaults to `auto`."
          }
        ],
        "responses": {
          "200": {
            "description": "Telemetry series and events for the attempt",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TelemetryResponse"
                }
              }
            }
          }
        },
        "x-permission": "queue.view"
      }
    },
    "/v1/print-jobs/{id}/telemetry/attempts": {
      "get": {
        "summary": "List print job attempts",
        "description": "List a print job's attempts, newest first, with the outcome, duration,\nlayer progress and media (thumbnail, timelapse, logs) for each.",
        "tags": [
          "Print_Jobs"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "schema": {
              "type": "string",
              "pattern": "^[a-z0-9]{24}$"
            },
            "required": true,
            "description": " The print job ID"
          }
        ],
        "responses": {
          "200": {
            "description": "Attempts for the print job",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TelemetryAttemptSummary"
                  }
                }
              }
            }
          }
        },
        "x-permission": "queue.view"
      }
    },
    "/v1/print-jobs/{id}/telemetry/download-url": {
      "get": {
        "summary": "Get raw telemetry download URL",
        "description": "Get a signed, time-limited URL to download a raw gzipped telemetry\nfile for one attempt of a print job.",
        "tags": [
          "Print_Jobs"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "schema": {
              "type": "string",
              "pattern": "^[a-z0-9]{24}$"
            },
            "required": true,
            "description": " The print job ID"
          },
          {
            "name": "attempt",
            "in": "query",
            "schema": {
              "type": "number"
            },
            "required": false
          },
          {
            "name": "kind",
            "in": "query",
            "schema": {
              "oneOf": [
                {
                  "const": "fuse"
                },
                {
                  "const": "gateway"
                }
              ]
            },
            "required": true,
            "title": "Which raw artifact to sign a download URL for",
            "description": "Which raw artifact to sign a download URL for."
          }
        ],
        "responses": {
          "200": {
            "description": "Signed download URL and its expiry (epoch milliseconds)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TelemetryDownloadUrl"
                }
              }
            }
          }
        },
        "x-permission": "queue.view, file.download"
      }
    },
    "/v2/print-history": {
      "get": {
        "summary": "List print history",
        "description": "List print attempts newest first (sorted by `endedAt:desc` unless you\npass `sort`). Always returns a paginated envelope; `limit` defaults to 100.\nFilter with `field.operator=value` query parameters, for example\n`status.eq=failed`.",
        "tags": [
          "Print_History"
        ],
        "parameters": [
          {
            "name": "printJobId",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "attemptNumber",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "taskId",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "finalStatus",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "outcome",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "partBuildId",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "partId",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "partName",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "skuId",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "skuName",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "label",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "groupId",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "orderId",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "orderItemId",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "quantityIndex",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "quantityTotal",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "printerId",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "printerDeviceId",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "printerProvider",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "printerName",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "printerModelName",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "printerVendorName",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "queuedAt",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "assignmentStartedAt",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "assignmentCompletedAt",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "printingStartedAt",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "printingCompletedAt",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "cancelledAt",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "endedAt",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "printDurationSeconds",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "errorMessage",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "materialUsageId",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "totalUsed",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "totalUsedGrams",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "usedBySlot",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false,
            "title": "Flat slot id (amsIndex*4+slotIndex, negative for spools) -> mm extruded",
            "description": "Flat slot id (amsIndex*4+slotIndex, negative for spools) -> mm extruded."
          },
          {
            "name": "usedGramsBySlot",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false,
            "title": "Flat slot id -> grams extruded, when a grams conversion was available",
            "description": "Flat slot id -> grams extruded, when a grams conversion was available."
          },
          {
            "name": "slotMaterials",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false,
            "description": "Flat slot id -> what was loaded there at capture time. Deliberately open:\nit is a verbatim snapshot of `material_usage.slot_materials`, whose shape\nhas gained fields over time and must survive round-tripping unchanged."
          },
          {
            "name": "materialMapping",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "totalLayers",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "completedLayers",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "skippedObjects",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "estimatedPrintTimeSeconds",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "estimatedTotalWeightGrams",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "estimatedMaterials",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "slicerVersion",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "overriddenProcessProfileId",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "gcodeAnalysisSha256",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "slicedGcodeUri",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "thumbnailUri",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "coloredThumbnailUri",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "cameraThumbnailUri",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "timelapseUri",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "logsUri",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "gatewayTelemetryUri",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "fuseTelemetryUri",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "priority",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "id",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "storeId",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "createdAt",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "updatedAt",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false,
            "title": "Sort"
          },
          {
            "name": "limit",
            "in": "query",
            "schema": {
              "type": "number",
              "minimum": 1,
              "maximum": 1000
            },
            "required": false,
            "title": "Limit"
          },
          {
            "name": "offset",
            "in": "query",
            "schema": {
              "type": "number",
              "minimum": 0
            },
            "required": false,
            "title": "Offset"
          },
          {
            "name": "fields",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false,
            "title": "Fields"
          },
          {
            "name": "include",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false,
            "title": "Include"
          },
          {
            "name": "meta",
            "in": "query",
            "schema": {
              "type": "boolean"
            },
            "required": false,
            "title": "Meta"
          },
          {
            "name": "hints",
            "in": "query",
            "schema": {
              "type": "boolean"
            },
            "required": false,
            "title": "Hints"
          }
        ],
        "responses": {
          "200": {
            "description": "A page of print history rows with pagination metadata",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SearchResponse"
                }
              }
            }
          }
        },
        "x-permission": "queue.view"
      }
    },
    "/v2/print-history/{printerId}": {
      "get": {
        "summary": "List a printer's print history",
        "description": "List one printer's print attempts newest first. Same filtering and\npagination as `GET /v2/print-history`; any `printerId` filter in the query\nis ignored in favor of the path.",
        "tags": [
          "Print_History"
        ],
        "parameters": [
          {
            "name": "printerId",
            "in": "path",
            "schema": {
              "type": "string",
              "pattern": "^[a-z0-9]{24}$"
            },
            "required": true,
            "description": " The printer ID"
          },
          {
            "name": "printJobId",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "attemptNumber",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "taskId",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "finalStatus",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "outcome",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "partBuildId",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "partId",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "partName",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "skuId",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "skuName",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "label",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "groupId",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "orderId",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "orderItemId",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "quantityIndex",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "quantityTotal",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "printerId",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "printerDeviceId",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "printerProvider",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "printerName",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "printerModelName",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "printerVendorName",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "queuedAt",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "assignmentStartedAt",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "assignmentCompletedAt",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "printingStartedAt",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "printingCompletedAt",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "cancelledAt",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "endedAt",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "printDurationSeconds",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "errorMessage",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "materialUsageId",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "totalUsed",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "totalUsedGrams",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "usedBySlot",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false,
            "title": "Flat slot id (amsIndex*4+slotIndex, negative for spools) -> mm extruded",
            "description": "Flat slot id (amsIndex*4+slotIndex, negative for spools) -> mm extruded."
          },
          {
            "name": "usedGramsBySlot",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false,
            "title": "Flat slot id -> grams extruded, when a grams conversion was available",
            "description": "Flat slot id -> grams extruded, when a grams conversion was available."
          },
          {
            "name": "slotMaterials",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false,
            "description": "Flat slot id -> what was loaded there at capture time. Deliberately open:\nit is a verbatim snapshot of `material_usage.slot_materials`, whose shape\nhas gained fields over time and must survive round-tripping unchanged."
          },
          {
            "name": "materialMapping",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "totalLayers",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "completedLayers",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "skippedObjects",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "estimatedPrintTimeSeconds",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "estimatedTotalWeightGrams",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "estimatedMaterials",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "slicerVersion",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "overriddenProcessProfileId",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "gcodeAnalysisSha256",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "slicedGcodeUri",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "thumbnailUri",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "coloredThumbnailUri",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "cameraThumbnailUri",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "timelapseUri",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "logsUri",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "gatewayTelemetryUri",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "fuseTelemetryUri",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "priority",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "id",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "storeId",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "createdAt",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "updatedAt",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false,
            "title": "Sort"
          },
          {
            "name": "limit",
            "in": "query",
            "schema": {
              "type": "number",
              "minimum": 1,
              "maximum": 1000
            },
            "required": false,
            "title": "Limit"
          },
          {
            "name": "offset",
            "in": "query",
            "schema": {
              "type": "number",
              "minimum": 0
            },
            "required": false,
            "title": "Offset"
          },
          {
            "name": "fields",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false,
            "title": "Fields"
          },
          {
            "name": "include",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false,
            "title": "Include"
          },
          {
            "name": "meta",
            "in": "query",
            "schema": {
              "type": "boolean"
            },
            "required": false,
            "title": "Meta"
          },
          {
            "name": "hints",
            "in": "query",
            "schema": {
              "type": "boolean"
            },
            "required": false,
            "title": "Hints"
          }
        ],
        "responses": {
          "200": {
            "description": "A page of print history rows with pagination metadata",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SearchResponse"
                }
              }
            }
          }
        },
        "x-permission": "queue.view"
      }
    },
    "/v1/macros": {
      "get": {
        "summary": "Get all GCODE macros",
        "tags": [
          "Macros"
        ],
        "parameters": [
          {
            "name": "name",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "description",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "type",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "gcode",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "id",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "storeId",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "createdAt",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "updatedAt",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false,
            "title": "Sort"
          },
          {
            "name": "limit",
            "in": "query",
            "schema": {
              "type": "number",
              "minimum": 1,
              "maximum": 1000
            },
            "required": false,
            "title": "Limit"
          },
          {
            "name": "offset",
            "in": "query",
            "schema": {
              "type": "number",
              "minimum": 0
            },
            "required": false,
            "title": "Offset"
          },
          {
            "name": "fields",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false,
            "title": "Fields"
          },
          {
            "name": "include",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false,
            "title": "Include"
          },
          {
            "name": "meta",
            "in": "query",
            "schema": {
              "type": "boolean"
            },
            "required": false,
            "title": "Meta"
          },
          {
            "name": "hints",
            "in": "query",
            "schema": {
              "type": "boolean"
            },
            "required": false,
            "title": "Hints"
          }
        ],
        "responses": {
          "200": {
            "description": "List of all macros in the store",
            "content": {
              "application/json": {
                "schema": {
                  "oneOf": [
                    {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/GcodeMacro"
                      }
                    },
                    {
                      "$ref": "#/components/schemas/SearchResponse"
                    }
                  ]
                }
              }
            }
          }
        },
        "x-permission": "macro.view"
      },
      "post": {
        "summary": "Create GCODE macro",
        "tags": [
          "Macros"
        ],
        "parameters": [],
        "requestBody": {
          "description": "Macro details, including compatible printer models",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/GcodeMacroInsert"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "The created macro",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EnhancedGcodeMacro"
                }
              }
            }
          }
        },
        "x-permission": "macro.create"
      }
    },
    "/v1/macros/search": {
      "post": {
        "summary": "Search GCODE macros",
        "description": "Search GCODE macros with complex filters",
        "tags": [
          "Macros"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SearchQueryDtoGcodeMacro"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SearchResponse"
                }
              }
            }
          }
        },
        "x-permission": "macro.view"
      }
    },
    "/v1/macros/printer-models": {
      "get": {
        "summary": "List printer models for macro compatibility",
        "description": "Reference list for the compatibility picker: the known printer models as\nstable (vendorName, modelName) pairs, deduped across slicer versions,\nannotated with whether each model's adapter supports raw GCODE.",
        "tags": [
          "Macros"
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "Known printer models",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/GcodeMacroPrinterModel"
                  }
                }
              }
            }
          }
        },
        "x-permission": "macro.view"
      }
    },
    "/v1/macros/{id}": {
      "get": {
        "summary": "Get GCODE macro by ID",
        "tags": [
          "Macros"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "schema": {
              "type": "string"
            },
            "required": true,
            "description": " Macro ID"
          }
        ],
        "responses": {
          "200": {
            "description": "The macro with its compatible printer models",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EnhancedGcodeMacro"
                }
              }
            }
          }
        },
        "x-permission": "macro.view"
      },
      "patch": {
        "summary": "Update GCODE macro",
        "description": "The macro's type is immutable after creation.",
        "tags": [
          "Macros"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "schema": {
              "type": "string"
            },
            "required": true,
            "description": " Macro ID"
          }
        ],
        "requestBody": {
          "description": "Fields to update",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/GcodeMacroUpdate"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "The updated macro",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EnhancedGcodeMacro"
                }
              }
            }
          }
        },
        "x-permission": "macro.edit"
      },
      "delete": {
        "summary": "Delete GCODE macro",
        "tags": [
          "Macros"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "schema": {
              "type": "string"
            },
            "required": true,
            "description": " Macro ID"
          }
        ],
        "responses": {
          "200": {
            "description": "Deleted IDs",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  }
                }
              }
            }
          }
        },
        "x-permission": "macro.delete"
      }
    },
    "/v1/macros/{id}/run": {
      "post": {
        "summary": "Run GCODE macro on printers",
        "description": "Sends the macro's GCODE to the given printers. Each printer must be\nonline, idle, compatible with the macro's declared printer models, and\non an adapter that supports raw GCODE; printers failing any of these\nchecks are reported per-printer rather than failing the whole request.\n`expectedUpdatedAt` is required; if the macro has been edited since it was\npreviewed, the run is rejected with 409 so a stale preview is never\nexecuted.",
        "tags": [
          "Macros"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "schema": {
              "type": "string"
            },
            "required": true,
            "description": " Macro ID"
          }
        ],
        "requestBody": {
          "description": "Target printer IDs and the previewed macro's `updatedAt`",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RunGcodeMacroRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Per-printer send results",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/GcodeMacroRunResult"
                  }
                }
              }
            }
          }
        },
        "x-permission": "macro.run"
      }
    },
    "/v1/cards": {
      "get": {
        "summary": "Get all dashboard cards",
        "tags": [
          "Cards"
        ],
        "parameters": [
          {
            "name": "name",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "description",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "entity",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "formatVersion",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "definition",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "id",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "storeId",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "createdAt",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "updatedAt",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false,
            "title": "Sort"
          },
          {
            "name": "limit",
            "in": "query",
            "schema": {
              "type": "number",
              "minimum": 1,
              "maximum": 1000
            },
            "required": false,
            "title": "Limit"
          },
          {
            "name": "offset",
            "in": "query",
            "schema": {
              "type": "number",
              "minimum": 0
            },
            "required": false,
            "title": "Offset"
          },
          {
            "name": "fields",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false,
            "title": "Fields"
          },
          {
            "name": "include",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false,
            "title": "Include"
          },
          {
            "name": "meta",
            "in": "query",
            "schema": {
              "type": "boolean"
            },
            "required": false,
            "title": "Meta"
          },
          {
            "name": "hints",
            "in": "query",
            "schema": {
              "type": "boolean"
            },
            "required": false,
            "title": "Hints"
          }
        ],
        "responses": {
          "200": {
            "description": "List of all card designs in the store",
            "content": {
              "application/json": {
                "schema": {
                  "oneOf": [
                    {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/Card"
                      }
                    },
                    {
                      "$ref": "#/components/schemas/SearchResponse"
                    }
                  ]
                }
              }
            }
          }
        },
        "x-permission": "card.view"
      },
      "post": {
        "summary": "Create dashboard card",
        "description": "The definition is validated against the card schema: structural problems\nand authoring mistakes (unknown primitives, bad variants, command ids\noutside the allowlist, type mismatches) are rejected with 400; bindings\nthis registry doesn't know are accepted and render as placeholders.",
        "tags": [
          "Cards"
        ],
        "parameters": [],
        "requestBody": {
          "description": "Card name, optional description, and its definition document",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CardInsert"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "The created card",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Card"
                }
              }
            }
          }
        },
        "x-permission": "card.create"
      }
    },
    "/v1/cards/search": {
      "post": {
        "summary": "Search dashboard cards",
        "description": "Search dashboard cards with complex filters",
        "tags": [
          "Cards"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SearchQueryDtoCard"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SearchResponse"
                }
              }
            }
          }
        },
        "x-permission": "card.view"
      }
    },
    "/v1/cards/{id}": {
      "get": {
        "summary": "Get dashboard card by ID",
        "tags": [
          "Cards"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "schema": {
              "type": "string"
            },
            "required": true,
            "description": " Card ID"
          }
        ],
        "responses": {
          "200": {
            "description": "The card design",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Card"
                }
              }
            }
          }
        },
        "x-permission": "card.view"
      },
      "patch": {
        "summary": "Update dashboard card",
        "tags": [
          "Cards"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "schema": {
              "type": "string"
            },
            "required": true,
            "description": " Card ID"
          }
        ],
        "requestBody": {
          "description": "Fields to update; a new definition is re-validated",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CardUpdate"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "The updated card",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Card"
                }
              }
            }
          }
        },
        "x-permission": "card.edit"
      },
      "delete": {
        "summary": "Delete dashboard card",
        "tags": [
          "Cards"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "schema": {
              "type": "string"
            },
            "required": true,
            "description": " Card ID"
          }
        ],
        "responses": {
          "200": {
            "description": "Deleted IDs",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  }
                }
              }
            }
          }
        },
        "x-permission": "card.delete"
      }
    },
    "/v1/classwork": {
      "get": {
        "summary": "List classwork items",
        "tags": [
          "Classwork"
        ],
        "parameters": [
          {
            "name": "code",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "title",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "summary",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "body",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "folderId",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "status",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "id",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "storeId",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "createdAt",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "updatedAt",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false,
            "title": "Sort"
          },
          {
            "name": "limit",
            "in": "query",
            "schema": {
              "type": "number",
              "minimum": 1,
              "maximum": 1000
            },
            "required": false,
            "title": "Limit"
          },
          {
            "name": "offset",
            "in": "query",
            "schema": {
              "type": "number",
              "minimum": 0
            },
            "required": false,
            "title": "Offset"
          },
          {
            "name": "fields",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false,
            "title": "Fields"
          },
          {
            "name": "include",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false,
            "title": "Include"
          },
          {
            "name": "meta",
            "in": "query",
            "schema": {
              "type": "boolean"
            },
            "required": false,
            "title": "Meta"
          },
          {
            "name": "hints",
            "in": "query",
            "schema": {
              "type": "boolean"
            },
            "required": false,
            "title": "Hints"
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "oneOf": [
                    {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/ClassworkItem"
                      }
                    },
                    {
                      "$ref": "#/components/schemas/SearchResponse"
                    }
                  ]
                }
              }
            }
          }
        },
        "x-permission": "classwork.viewer, classwork.editor"
      },
      "post": {
        "summary": "Create a classwork item",
        "tags": [
          "Classwork"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ClassworkItemInsert"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ClassworkItem"
                }
              }
            }
          }
        },
        "x-permission": "classwork.editor"
      }
    },
    "/v1/classwork/search": {
      "post": {
        "summary": "Search classwork items",
        "tags": [
          "Classwork"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SearchQueryDtoClassworkItem"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SearchResponse"
                }
              }
            }
          }
        },
        "x-permission": "classwork.viewer, classwork.editor"
      }
    },
    "/v1/classwork/delete-many": {
      "post": {
        "summary": "Bulk-delete classwork items",
        "tags": [
          "Classwork"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "type": "string",
                  "pattern": "^[a-z0-9]{24}$"
                }
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  }
                }
              }
            }
          }
        },
        "x-permission": "classwork.editor"
      }
    },
    "/v1/classwork/{id}": {
      "get": {
        "summary": "Get a classwork item",
        "tags": [
          "Classwork"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "schema": {
              "type": "string",
              "pattern": "^[a-z0-9]{24}$"
            },
            "required": true,
            "description": " The classwork ID"
          },
          {
            "name": "include",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ClassworkItem"
                }
              }
            }
          }
        },
        "x-permission": "classwork.viewer, classwork.editor"
      },
      "patch": {
        "summary": "Update a classwork item",
        "tags": [
          "Classwork"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "schema": {
              "type": "string",
              "pattern": "^[a-z0-9]{24}$"
            },
            "required": true,
            "description": " The classwork ID"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PartialPickClassworkItemUserManagedFields"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ClassworkItem"
                }
              }
            }
          }
        },
        "x-permission": "classwork.editor"
      },
      "delete": {
        "summary": "Delete a classwork item",
        "tags": [
          "Classwork"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "schema": {
              "type": "string",
              "pattern": "^[a-z0-9]{24}$"
            },
            "required": true,
            "description": " The classwork ID"
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  }
                }
              }
            }
          }
        },
        "x-permission": "classwork.editor"
      }
    },
    "/v1/classwork/{id}/links": {
      "post": {
        "summary": "Add a link to a classwork item",
        "tags": [
          "Classwork"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "schema": {
              "type": "string",
              "pattern": "^[a-z0-9]{24}$"
            },
            "required": true,
            "description": " The classwork ID"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ClassworkLinkInsert"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ClassworkLink"
                }
              }
            }
          }
        },
        "x-permission": "classwork.editor"
      }
    },
    "/v1/classwork/{id}/links/{linkId}": {
      "patch": {
        "summary": "Update a classwork link",
        "tags": [
          "Classwork"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "schema": {
              "type": "string",
              "pattern": "^[a-z0-9]{24}$"
            },
            "required": true,
            "description": " The classwork ID"
          },
          {
            "name": "linkId",
            "in": "path",
            "schema": {
              "type": "string",
              "pattern": "^[a-z0-9]{24}$"
            },
            "required": true,
            "description": " The link ID"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PartialClassworkLinkInsert"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ClassworkLink"
                }
              }
            }
          }
        },
        "x-permission": "classwork.editor"
      },
      "delete": {
        "summary": "Remove a classwork link",
        "tags": [
          "Classwork"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "schema": {
              "type": "string",
              "pattern": "^[a-z0-9]{24}$"
            },
            "required": true,
            "description": " The classwork ID"
          },
          {
            "name": "linkId",
            "in": "path",
            "schema": {
              "type": "string",
              "pattern": "^[a-z0-9]{24}$"
            },
            "required": true,
            "description": " The link ID"
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ClassworkLink"
                }
              }
            }
          }
        },
        "x-permission": "classwork.editor"
      }
    },
    "/v1/classwork/part-references": {
      "post": {
        "summary": "Which classwork items reference these parts",
        "tags": [
          "Classwork"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "partIds": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "pattern": "^[a-z0-9]{24}$"
                    }
                  }
                },
                "required": [
                  "partIds"
                ]
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "partId": {
                        "type": "string",
                        "pattern": "^[a-z0-9]{24}$"
                      },
                      "classworkId": {
                        "type": "string",
                        "pattern": "^[a-z0-9]{24}$"
                      },
                      "code": {
                        "type": "string"
                      },
                      "title": {
                        "type": "string"
                      }
                    },
                    "required": [
                      "partId",
                      "classworkId",
                      "code",
                      "title"
                    ]
                  }
                }
              }
            }
          }
        },
        "x-permission": "part.edit, part.delete, classwork.editor",
        "x-permission-mode": "any"
      }
    },
    "/v1/classwork/{id}/parts": {
      "get": {
        "summary": "List the parts referenced by a classwork item",
        "tags": [
          "Classwork"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "schema": {
              "type": "string",
              "pattern": "^[a-z0-9]{24}$"
            },
            "required": true,
            "description": " The classwork ID"
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ClassworkPart"
                  }
                }
              }
            }
          }
        },
        "x-permission": "classwork.viewer, classwork.editor"
      },
      "post": {
        "summary": "Reference a part from a classwork item",
        "tags": [
          "Classwork"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "schema": {
              "type": "string",
              "pattern": "^[a-z0-9]{24}$"
            },
            "required": true,
            "description": " The classwork ID"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ClassworkPartInsert"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ClassworkPart"
                }
              }
            }
          }
        },
        "x-permission": "classwork.editor"
      }
    },
    "/v1/classwork/{id}/parts/{referenceId}": {
      "patch": {
        "summary": "Update a classwork part reference",
        "tags": [
          "Classwork"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "schema": {
              "type": "string",
              "pattern": "^[a-z0-9]{24}$"
            },
            "required": true,
            "description": " The classwork ID"
          },
          {
            "name": "referenceId",
            "in": "path",
            "schema": {
              "type": "string",
              "pattern": "^[a-z0-9]{24}$"
            },
            "required": true,
            "description": " The part reference ID"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PartialOmitClassworkPartInsertpartId"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ClassworkPart"
                }
              }
            }
          }
        },
        "x-permission": "classwork.editor"
      },
      "delete": {
        "summary": "Remove a classwork part reference",
        "tags": [
          "Classwork"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "schema": {
              "type": "string",
              "pattern": "^[a-z0-9]{24}$"
            },
            "required": true,
            "description": " The classwork ID"
          },
          {
            "name": "referenceId",
            "in": "path",
            "schema": {
              "type": "string",
              "pattern": "^[a-z0-9]{24}$"
            },
            "required": true,
            "description": " The part reference ID"
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ClassworkPart"
                }
              }
            }
          }
        },
        "x-permission": "classwork.editor"
      }
    },
    "/v1/classwork/{id}/attachments/upload-url": {
      "post": {
        "summary": "Get a signed upload URL for a classwork attachment",
        "tags": [
          "Classwork"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "schema": {
              "type": "string",
              "pattern": "^[a-z0-9]{24}$"
            },
            "required": true,
            "description": " The classwork ID"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "filename": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 1024
                  }
                },
                "required": [
                  "filename"
                ]
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "path": {
                      "type": "string"
                    },
                    "uploadUrl": {
                      "type": "string"
                    },
                    "method": {
                      "oneOf": [
                        {
                          "const": "PUT"
                        },
                        {
                          "const": "POST"
                        }
                      ]
                    }
                  },
                  "required": [
                    "path",
                    "uploadUrl",
                    "method"
                  ]
                }
              }
            }
          }
        },
        "x-permission": "classwork.editor"
      }
    },
    "/v1/classwork/{id}/attachments": {
      "post": {
        "summary": "Commit an uploaded classwork attachment",
        "tags": [
          "Classwork"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "schema": {
              "type": "string",
              "pattern": "^[a-z0-9]{24}$"
            },
            "required": true,
            "description": " The classwork ID"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ClassworkAttachmentInsert"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ClassworkAttachment"
                }
              }
            }
          }
        },
        "x-permission": "classwork.editor"
      }
    },
    "/v1/classwork/{id}/attachments/{attachmentId}": {
      "patch": {
        "summary": "Update a classwork attachment (reorder)",
        "tags": [
          "Classwork"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "schema": {
              "type": "string",
              "pattern": "^[a-z0-9]{24}$"
            },
            "required": true,
            "description": " The classwork ID"
          },
          {
            "name": "attachmentId",
            "in": "path",
            "schema": {
              "type": "string",
              "pattern": "^[a-z0-9]{24}$"
            },
            "required": true,
            "description": " The attachment ID"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ClassworkAttachmentUpdate"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ClassworkAttachment"
                }
              }
            }
          }
        },
        "x-permission": "classwork.editor"
      },
      "delete": {
        "summary": "Remove a classwork attachment",
        "tags": [
          "Classwork"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "schema": {
              "type": "string",
              "pattern": "^[a-z0-9]{24}$"
            },
            "required": true,
            "description": " The classwork ID"
          },
          {
            "name": "attachmentId",
            "in": "path",
            "schema": {
              "type": "string",
              "pattern": "^[a-z0-9]{24}$"
            },
            "required": true,
            "description": " The attachment ID"
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ClassworkAttachment"
                }
              }
            }
          }
        },
        "x-permission": "classwork.editor"
      }
    },
    "/v1/classwork/{id}/attachments/{attachmentId}/download": {
      "get": {
        "summary": "Get a download URL for a classwork attachment",
        "tags": [
          "Classwork"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "schema": {
              "type": "string",
              "pattern": "^[a-z0-9]{24}$"
            },
            "required": true,
            "description": " The classwork ID"
          },
          {
            "name": "attachmentId",
            "in": "path",
            "schema": {
              "type": "string",
              "pattern": "^[a-z0-9]{24}$"
            },
            "required": true,
            "description": " The attachment ID"
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "url": {
                      "type": "string"
                    },
                    "fileName": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "url",
                    "fileName"
                  ]
                }
              }
            }
          }
        },
        "x-permission": "classwork.viewer, classwork.editor"
      }
    },
    "/v1/classwork/students/eligible": {
      "get": {
        "summary": "List students eligible for classwork assignment",
        "tags": [
          "Classwork"
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ClassworkStudentOption"
                  }
                }
              }
            }
          }
        },
        "x-permission": "classwork.editor"
      }
    },
    "/v1/classwork/{id}/assignments": {
      "get": {
        "summary": "List the students assigned to a classwork item",
        "tags": [
          "Classwork"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "schema": {
              "type": "string",
              "pattern": "^[a-z0-9]{24}$"
            },
            "required": true,
            "description": " The classwork ID"
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ClassworkStudent"
                  }
                }
              }
            }
          }
        },
        "x-permission": "classwork.editor"
      },
      "put": {
        "summary": "Set the students assigned to a classwork item",
        "tags": [
          "Classwork"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "schema": {
              "type": "string",
              "pattern": "^[a-z0-9]{24}$"
            },
            "required": true,
            "description": " The classwork ID"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ClassworkAssignmentsUpdate"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ClassworkStudent"
                  }
                }
              }
            }
          }
        },
        "x-permission": "classwork.editor"
      }
    },
    "/v1/sequences": {
      "get": {
        "summary": "Get all serial-number sequences",
        "tags": [
          "Sequences"
        ],
        "parameters": [
          {
            "name": "name",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "nextValue",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "prefix",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "suffix",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "padding",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "numberStyle",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "id",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "storeId",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "createdAt",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "updatedAt",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false,
            "title": "Sort"
          },
          {
            "name": "limit",
            "in": "query",
            "schema": {
              "type": "number",
              "minimum": 1,
              "maximum": 1000
            },
            "required": false,
            "title": "Limit"
          },
          {
            "name": "offset",
            "in": "query",
            "schema": {
              "type": "number",
              "minimum": 0
            },
            "required": false,
            "title": "Offset"
          },
          {
            "name": "fields",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false,
            "title": "Fields"
          },
          {
            "name": "include",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false,
            "title": "Include"
          },
          {
            "name": "meta",
            "in": "query",
            "schema": {
              "type": "boolean"
            },
            "required": false,
            "title": "Meta"
          },
          {
            "name": "hints",
            "in": "query",
            "schema": {
              "type": "boolean"
            },
            "required": false,
            "title": "Hints"
          }
        ],
        "responses": {
          "200": {
            "description": "List of sequences in the store",
            "content": {
              "application/json": {
                "schema": {
                  "oneOf": [
                    {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/Sequence"
                      }
                    },
                    {
                      "$ref": "#/components/schemas/SearchResponse"
                    }
                  ]
                }
              }
            }
          }
        },
        "x-permission": "sequence.view"
      },
      "post": {
        "summary": "Create a sequence",
        "tags": [
          "Sequences"
        ],
        "parameters": [],
        "requestBody": {
          "description": "Sequence name, starting number, and display format",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SequenceInsert"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "The created sequence",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Sequence"
                }
              }
            }
          }
        },
        "x-permission": "sequence.edit"
      }
    },
    "/v1/sequences/usage": {
      "get": {
        "summary": "Get all sequences with usage",
        "description": "Sequences with usage facts: how many serials each has issued, the last\nissued serial, and which SKUs currently bind a text parameter to it.",
        "tags": [
          "Sequences"
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "Sequences with issued counts, last serial, and referencing SKUs",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/SequenceWithUsage"
                  }
                }
              }
            }
          }
        },
        "x-permission": "sequence.view"
      }
    },
    "/v1/sequences/search": {
      "post": {
        "summary": "Search sequences",
        "description": "Search sequences with complex filters",
        "tags": [
          "Sequences"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SearchQueryDtoSequence"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SearchResponse"
                }
              }
            }
          }
        },
        "x-permission": "sequence.view"
      }
    },
    "/v1/sequences/{id}": {
      "get": {
        "summary": "Get sequence by ID",
        "tags": [
          "Sequences"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "schema": {
              "type": "string",
              "pattern": "^[a-z0-9]{24}$"
            },
            "required": true,
            "description": " Sequence ID"
          }
        ],
        "responses": {
          "200": {
            "description": "The sequence",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Sequence"
                }
              }
            }
          }
        },
        "x-permission": "sequence.view"
      },
      "patch": {
        "summary": "Update a sequence",
        "description": "Rewinding `nextValue` below an already-issued number requires\n`confirmRewind: true` — it deliberately reissues serials that were\nalready printed. Fast-forwarding only skips numbers and needs no\nconfirmation.",
        "tags": [
          "Sequences"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "schema": {
              "type": "string",
              "pattern": "^[a-z0-9]{24}$"
            },
            "required": true,
            "description": " Sequence ID"
          }
        ],
        "requestBody": {
          "description": "Fields to update",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SequenceUpdate"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "The updated sequence",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Sequence"
                }
              }
            }
          }
        },
        "x-permission": "sequence.edit"
      },
      "delete": {
        "summary": "Delete a sequence",
        "description": "Deletion is blocked with 409 while any SKU's linked part still binds a\ntext parameter to the sequence. The issuance ledger is removed with it.",
        "tags": [
          "Sequences"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "schema": {
              "type": "string",
              "pattern": "^[a-z0-9]{24}$"
            },
            "required": true,
            "description": " Sequence ID"
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  }
                }
              }
            }
          }
        },
        "x-permission": "sequence.edit"
      }
    },
    "/v1/sequences/{id}/issuances": {
      "get": {
        "summary": "List issued serials for a sequence",
        "description": "The issued-serials ledger for a sequence, newest first. Each entry links\nthe serial to the part build and print job that consumed it.",
        "tags": [
          "Sequences"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "schema": {
              "type": "string",
              "pattern": "^[a-z0-9]{24}$"
            },
            "required": true,
            "description": " Sequence ID"
          },
          {
            "name": "limit",
            "in": "query",
            "schema": {
              "type": "number"
            },
            "required": false
          },
          {
            "name": "offset",
            "in": "query",
            "schema": {
              "type": "number"
            },
            "required": false
          }
        ],
        "responses": {
          "200": {
            "description": "Issued serials, newest first",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/SequenceIssuance"
                  }
                }
              }
            }
          }
        },
        "x-permission": "sequence.view"
      }
    },
    "/v1/qr-tags": {
      "get": {
        "summary": "List QR tags",
        "description": "Filter with `entityType`, `status`, `batchId` or `entityId` (for example\n`?status=active&entityType=printer`), sort with `sort=-lastScannedAt`,\nand pass `meta=true` for a paged response with a total.",
        "tags": [
          "QR_Tags"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "status",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "entityType",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "entityId",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false,
            "description": "The printerId for printer_slot tags; null while blank. A blank keeps its\nprinted payload (t: 'blank') after it is set up; this row says what it is."
          },
          {
            "name": "printerDeviceId",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false,
            "description": "Printer and slot tags: the printer's device_id when it has one. A tag\nwhose printer was deleted follows the store's printer with this id."
          },
          {
            "name": "slotAmsIndex",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false,
            "description": "Slot identity for printer_slot tags; amsIndex -1 is the external spool"
          },
          {
            "name": "slotSlotIndex",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "label",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "batchId",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "payloadVersion",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "displaySnapshot",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "printedAt",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "boundAt",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "boundBy",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "revokedAt",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "revokedBy",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "lastScannedAt",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "scanCount",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "storeId",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "updatedAt",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "createdAt",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false,
            "title": "Sort"
          },
          {
            "name": "limit",
            "in": "query",
            "schema": {
              "type": "number",
              "minimum": 1,
              "maximum": 1000
            },
            "required": false,
            "title": "Limit"
          },
          {
            "name": "offset",
            "in": "query",
            "schema": {
              "type": "number",
              "minimum": 0
            },
            "required": false,
            "title": "Offset"
          },
          {
            "name": "fields",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false,
            "title": "Fields"
          },
          {
            "name": "include",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false,
            "title": "Include"
          },
          {
            "name": "meta",
            "in": "query",
            "schema": {
              "type": "boolean"
            },
            "required": false,
            "title": "Meta"
          },
          {
            "name": "hints",
            "in": "query",
            "schema": {
              "type": "boolean"
            },
            "required": false,
            "title": "Hints"
          }
        ],
        "responses": {
          "200": {
            "description": "The store's QR tags",
            "content": {
              "application/json": {
                "schema": {
                  "oneOf": [
                    {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/QrTagWithPayload"
                      }
                    },
                    {
                      "$ref": "#/components/schemas/SearchResponse"
                    }
                  ]
                }
              }
            }
          }
        },
        "x-permission": "qr.scan, qr.manage",
        "x-permission-mode": "any"
      },
      "post": {
        "summary": "Create QR tags",
        "description": "The server mints every tag and batch ID. Send `targets` or `blankCount`,\nnot both. A target is a printer (`{entityType: 'printer', entityId}`),\none of its filament slots (`{entityType: 'printer_slot', entityId:\nprinterId, amsIndex, slotIndex}`, amsIndex -1 for an external spool\nholder), a filament variant (`{entityType: 'material_variant', entityId}`)\nor a spool (`{entityType: 'material_instance', entityId}`). A slot tag\nnames the slot by its position, so it keeps working when the printer\nrecreates its slot rows. With `reuseActive` (the default) a target that\nalready has an active tag gets that tag back, so printing again yields\nthe same QR code; set it to false to mint a new tag for every target.\n`blankCount` (1 to 300) returns that many blank tags to print instead,\nand saves none of them: each has status `blank` and a short\n`displaySnapshot.code` read from its id to print on it, and is saved\nonly when it is scanned in a pair with what it is for. A blank's id can\nuse a registered issuer prefix (PTG for Printago).\nNew IDs are PTG- followed by 20 Crockford Base32 characters. Every new\ntag carries an uppercase HTTPS link in `payload`, for example\n`HTTPS://APP.PRINTAGO.IO/QR/PTG-0123456789ABC8RT5N6V`.\nEncode the returned payload unchanged. `label` is the short code; a\nspool keeps its label code, and a spool with none takes its tag's code\nas its `labelCode`. A reused tag with a legacy ID carries a query link,\n`/qr/{id}?v=1&t={type}&s={storeId}`. See the QR tag link format reference. 404 lists\nany printer, variant or spool that isn't in the store; 400 names a slot\nthe printer doesn't have.",
        "tags": [
          "QR_Tags"
        ],
        "parameters": [],
        "requestBody": {
          "description": "Targets to tag and whether to reuse active tags, or a count of blank tags",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateQrTagsRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "The batch ID and one tag per distinct target",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreateQrTagsResponse"
                }
              }
            }
          }
        },
        "x-permission": "qr.manage"
      }
    },
    "/v1/qr-tags/actions": {
      "get": {
        "summary": "List scan actions",
        "description": "Every action a scan can offer, the way the QR Workflows settings page\nlists them: its `subject` is the tag type (`printer`, `printer_slot`,\n`material_variant`, `material_instance`) or the pair key (the two types\nsorted and joined with `+`, such as `blank+material_variant`) that offers\nit, `permission` is what running it needs, and `default` marks the\naction that is the main button when nothing else wins it. Actions come\nin catalog order, the order a scan lists them in until the store sets\nits own. Use the ids in the store's `qrWorkflowSettings`.",
        "tags": [
          "QR_Tags"
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "The action catalog",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/QrCatalogAction"
                  }
                }
              }
            }
          }
        },
        "x-permission": "qr.manage"
      }
    },
    "/v1/qr-tags/{id}": {
      "get": {
        "summary": "Get a QR tag",
        "tags": [
          "QR_Tags"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "schema": {
              "type": "string",
              "pattern": "^([A-Za-z0-9_-]{1,24}|[A-Za-z][A-Za-z0-9]*-[0-9A-Ha-hJ-Kj-kM-Nm-nP-Tp-tV-Zv-z]{20})$"
            },
            "required": true,
            "description": " QR tag ID"
          }
        ],
        "responses": {
          "200": {
            "description": "The QR tag",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/QrTagWithPayload"
                }
              }
            }
          }
        },
        "x-permission": "qr.scan, qr.manage",
        "x-permission-mode": "any"
      }
    },
    "/v1/qr-tags/revoke": {
      "patch": {
        "summary": "Revoke QR tags",
        "description": "A revoked tag resolves to a \"revoked\" message when scanned and runs no\nactions. Revoking a tag that is already revoked changes nothing.",
        "tags": [
          "QR_Tags"
        ],
        "parameters": [],
        "requestBody": {
          "description": "IDs of the tags to revoke",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RevokeQrTagsRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "The tags, in the order requested",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/QrTag"
                  }
                }
              }
            }
          }
        },
        "x-permission": "qr.manage"
      }
    },
    "/v1/qr-tags/unbind": {
      "patch": {
        "summary": "Unbind QR tags",
        "description": "Frees tags from the printer, slot, filament variant or spool they are\nfor, so the next scan of each one sets it up again, like a blank. The\nprinted label keeps working: each tag keeps its id and code. Use it when\na tag was stuck on the wrong thing, or its target moved or was deleted.\nUnbinding a tag that is already blank changes nothing; a revoked tag is\na 409 `tag_revoked`.",
        "tags": [
          "QR_Tags"
        ],
        "parameters": [],
        "requestBody": {
          "description": "IDs of the tags to unbind",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UnbindQrTagsRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "The tags, in the order requested",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/QrTag"
                  }
                }
              }
            }
          }
        },
        "x-permission": "qr.manage"
      }
    },
    "/v1/qr-tags/resolve": {
      "post": {
        "summary": "Resolve scanned QR tags",
        "description": "Turns scanned QR text into what the app shows: each tag's target (a\nprinter, a slot with what is assigned to it and whether the printer sees\na spool, a filament variant, a spool with its grams and the slot it is\nloaded in, or a blank tag with its code), the actions the scan offers\nwith whether each can run now and why not, and at most one default\naction. Two payloads are a pair: a variant with a printer or a slot\n(assign), two slots (move, or swap when both hold filament), a spool with\na printer or a slot (load, or move it from the slot it is in), or a blank\nwith a printer, slot, variant or spool (set the blank up for it; with a\nvariant the default registers a new spool). A tag's row, not its printed\npayload, says what it is, so a blank that was set up resolves as its\ntarget. An action that needs a choice carries a `param` with its options\nand default; a slot choice is `{kind: 'slot', options: [{amsIndex,\nslotIndex, ref, group, assigned, loaded}], default}` and a weight is\n`{kind: 'grams', default, min}`. `mode` names any mismatch (a revoked or\nunknown tag, another store's tag, a deleted target, a newer payload\nversion, or a pair with nothing to do together, such as two printers,\ntwo spools, two blanks, a spool with a variant, or a spool with the slot\nit is already in) with a `message` to show. Text that isn't a Printago\ntag is a 400. Counts the scan on each tag. The store's QR Workflows\nsettings (`qrWorkflowSettings` on the store settings) apply: switched-off\nactions are left out, with a `message` when none is left; a pair's\ndefault is the action with `default: true` whenever it is available;\nactions come in the store's order; a slot choice's `default` follows the\nslot strategy (null when the app should ask); a new spool's weight\ndefaults to the store's; and with moving spools off, a spool that sits\nin another slot scanned with a slot or printer is an `invalid_pair`\nsaying where it is. A blank isn't saved until it is set\nup, so scanning one writes nothing and any id it carries resolves as a\nblank. To set a blank up for something that\nhas no tag to scan, as its web page does, send the blank's payload alone\nwith a `target` (a printer, slot, filament variant or spool, shaped like\na create target): it resolves as that pair, the tags list only the\nblank, and a target that isn't in the store is 404 `target_not_found`.\nOnce the tag isn't a blank anymore the target is ignored, so the\nresponse says what the tag is for now.",
        "tags": [
          "QR_Tags"
        ],
        "parameters": [],
        "requestBody": {
          "description": "The scanned QR text, one or two payloads",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ResolveQrTagsRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "The resolve mode, tag displays and actions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/QrResolveResult"
                }
              }
            }
          }
        },
        "x-permission": "qr.scan"
      }
    },
    "/v1/qr-tags/execute": {
      "post": {
        "summary": "Run a scanned tag's action",
        "description": "Runs one action from a resolve response. Needs qr.scan plus the action's\nown permission (403 without it); setting up a blank also needs qr.manage,\nand registering a spool material.instance.create. Pass the action's\nchoice in `params` (`amsIndex` and `slotIndex`, `printerId`, `jobId`,\n`macroId`, `enrollmentId`, `variantId` with an optional `instanceId`, or\n`grams`); a missing one is a 400. The live state is checked again: 409\nwith `code: \"state_changed\"` when the action is no longer available, 409\n`slot_gone` for a slot the printer no longer has (never another slot\ninstead), 409 for a revoked or orphaned tag, and 422 for an action the\nscanned tags don't offer, such as a printer action sent with a slot tag.\nA move or swap writes both slots in one transaction. A blank has no\ntag until it is set up, so an action that sets one up takes one id with\nno tag as the blank, and saves it: when two phones set up the same blank\nat once, one wins and the other gets 409 `tag_already_set_up`, and an id\nanother store's tag already has is 404 `unknown_tag`, as if it didn't\nexist. An unregistered issuer prefix is 400 `unknown_issuer`. An\nunclaimed tag is claimed by the first store to set it up. Registering a spool from a blank sets it up\nfirst in the same transaction, so a lost race creates no spool. Loading\na spool that sits in another slot moves it and frees that slot; loading\nit into the slot it is in changes nothing. An action the store switched\noff is 403 `action_disabled`, and with moving spools off, loading a spool\nthat sits in another slot is 409 `spool_elsewhere`, naming the slot.\nWith the `target` from a resolve, one blank tag id sets the blank up for\nit (400 for any other action or more tags, 404 `target_not_found` for a\ntarget that isn't in the store); those runs are audited with source\n`web`. Send an `Idempotency-Key` header (128 characters or fewer)\nto make retries safe: a finished key returns its first response without\nrunning again, a key still running is 409 `idempotency_in_progress`, and\nthe same key with a different body is 422 `idempotency_mismatch`. A\nfailed attempt frees its key. Keys expire after 24 hours. Other actions\nare audited with source `mobile_scan`.",
        "tags": [
          "QR_Tags"
        ],
        "parameters": [
          {
            "name": "idempotency-key",
            "in": "header",
            "schema": {
              "type": "string",
              "maxLength": 128
            },
            "required": false,
            "description": "One key per user action, reused when that action is retried. A key that\nalready finished returns its first response without running again."
          }
        ],
        "requestBody": {
          "description": "The tag IDs, the action ID and its parameters",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ExecuteQrActionRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "The action, a short result message and the refreshed tags",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/QrExecuteResult"
                }
              }
            }
          }
        },
        "x-permission": "qr.scan"
      }
    },
    "/v1/layouts": {
      "get": {
        "summary": "Get all dashboard layouts",
        "tags": [
          "Layouts"
        ],
        "parameters": [
          {
            "name": "name",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "userId",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "mode",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "formatVersion",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "isDefault",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "definition",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "id",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "storeId",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "createdAt",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "updatedAt",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false,
            "title": "Sort"
          },
          {
            "name": "limit",
            "in": "query",
            "schema": {
              "type": "number",
              "minimum": 1,
              "maximum": 1000
            },
            "required": false,
            "title": "Limit"
          },
          {
            "name": "offset",
            "in": "query",
            "schema": {
              "type": "number",
              "minimum": 0
            },
            "required": false,
            "title": "Offset"
          },
          {
            "name": "fields",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false,
            "title": "Fields"
          },
          {
            "name": "include",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false,
            "title": "Include"
          },
          {
            "name": "meta",
            "in": "query",
            "schema": {
              "type": "boolean"
            },
            "required": false,
            "title": "Meta"
          },
          {
            "name": "hints",
            "in": "query",
            "schema": {
              "type": "boolean"
            },
            "required": false,
            "title": "Hints"
          }
        ],
        "responses": {
          "200": {
            "description": "List of all saved layouts in the store",
            "content": {
              "application/json": {
                "schema": {
                  "oneOf": [
                    {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/Layout"
                      }
                    },
                    {
                      "$ref": "#/components/schemas/SearchResponse"
                    }
                  ]
                }
              }
            }
          }
        },
        "x-permission": "layout.view"
      },
      "post": {
        "summary": "Create dashboard layout",
        "description": "The definition is validated against the layout schema: structural\nproblems and authoring mistakes (malformed placements, duplicate\nplacement ids, footprints off the size classes) are rejected with 400.\nThe layout belongs to the calling user; their first layout becomes the\ndefault unless `isDefault` says otherwise, and setting `isDefault`\nclears it from their other layouts.",
        "tags": [
          "Layouts"
        ],
        "parameters": [],
        "requestBody": {
          "description": "Layout name, its definition document, and an optional default flag",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/LayoutInsert"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "The created layout",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Layout"
                }
              }
            }
          }
        },
        "x-permission": "layout.create"
      }
    },
    "/v1/layouts/search": {
      "post": {
        "summary": "Search dashboard layouts",
        "description": "Search dashboard layouts with complex filters",
        "tags": [
          "Layouts"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SearchQueryDtoLayout"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SearchResponse"
                }
              }
            }
          }
        },
        "x-permission": "layout.view"
      }
    },
    "/v1/layouts/{id}": {
      "get": {
        "summary": "Get dashboard layout by ID",
        "tags": [
          "Layouts"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "schema": {
              "type": "string"
            },
            "required": true,
            "description": " Layout ID"
          }
        ],
        "responses": {
          "200": {
            "description": "The saved layout",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Layout"
                }
              }
            }
          }
        },
        "x-permission": "layout.view"
      },
      "patch": {
        "summary": "Update dashboard layout",
        "description": "Only the layout's owner can update it. Setting `isDefault` clears the\nflag from the owner's other layouts; a new definition is re-validated.",
        "tags": [
          "Layouts"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "schema": {
              "type": "string"
            },
            "required": true,
            "description": " Layout ID"
          }
        ],
        "requestBody": {
          "description": "Fields to update",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/LayoutUpdate"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "The updated layout",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Layout"
                }
              }
            }
          }
        },
        "x-permission": "layout.edit"
      },
      "delete": {
        "summary": "Delete dashboard layout",
        "description": "Only the layout's owner can delete it.",
        "tags": [
          "Layouts"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "schema": {
              "type": "string"
            },
            "required": true,
            "description": " Layout ID"
          }
        ],
        "responses": {
          "200": {
            "description": "Deleted IDs",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  }
                }
              }
            }
          }
        },
        "x-permission": "layout.delete"
      }
    },
    "/v1/reports/summary": {
      "get": {
        "summary": "Reports overview",
        "description": "Headline KPIs plus one-line highlights for each report group.",
        "tags": [
          "Reports"
        ],
        "parameters": [
          {
            "name": "start",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": true
          },
          {
            "name": "end",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": true
          },
          {
            "name": "printerIds",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false,
            "title": "Comma-separated printer ids; omitted = all printers",
            "description": "Comma-separated printer ids; omitted = all printers."
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReportsSummary"
                }
              }
            }
          }
        },
        "x-permission": "analytics.view"
      }
    },
    "/v1/reports/reliability": {
      "get": {
        "summary": "Reliability report",
        "description": "Attempt outcomes, retry yield, failure pareto and per-machine MTBF.",
        "tags": [
          "Reports"
        ],
        "parameters": [
          {
            "name": "start",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": true
          },
          {
            "name": "end",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": true
          },
          {
            "name": "printerIds",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false,
            "title": "Comma-separated printer ids; omitted = all printers",
            "description": "Comma-separated printer ids; omitted = all printers."
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReliabilityReport"
                }
              }
            }
          }
        },
        "x-permission": "analytics.view"
      }
    },
    "/v1/reports/jobs": {
      "get": {
        "summary": "Jobs report",
        "description": "Queue latency, estimate accuracy, backlog and order cycle time.",
        "tags": [
          "Reports"
        ],
        "parameters": [
          {
            "name": "start",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": true
          },
          {
            "name": "end",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": true
          },
          {
            "name": "printerIds",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false,
            "title": "Comma-separated printer ids; omitted = all printers",
            "description": "Comma-separated printer ids; omitted = all printers."
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JobsReport"
                }
              }
            }
          }
        },
        "x-permission": "analytics.view"
      }
    },
    "/v1/reports/printers": {
      "get": {
        "summary": "Printers report",
        "description": "Per-machine utilization, idle gaps, leaderboard and maintenance posture.",
        "tags": [
          "Reports"
        ],
        "parameters": [
          {
            "name": "start",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": true
          },
          {
            "name": "end",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": true
          },
          {
            "name": "printerIds",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false,
            "title": "Comma-separated printer ids; omitted = all printers",
            "description": "Comma-separated printer ids; omitted = all printers."
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PrintersReport"
                }
              }
            }
          }
        },
        "x-permission": "analytics.view"
      }
    },
    "/v1/reports/materials": {
      "get": {
        "summary": "Materials report",
        "description": "Filament consumption by type and brand, plus spool days-of-cover.",
        "tags": [
          "Reports"
        ],
        "parameters": [
          {
            "name": "start",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": true
          },
          {
            "name": "end",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": true
          },
          {
            "name": "printerIds",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false,
            "title": "Comma-separated printer ids; omitted = all printers",
            "description": "Comma-separated printer ids; omitted = all printers."
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MaterialsReport"
                }
              }
            }
          }
        },
        "x-permission": "analytics.view"
      }
    },
    "/v1/reports/profit": {
      "get": {
        "summary": "Profit report",
        "description": "Monthly revenue, production cost, cost of failure and per-SKU margin.",
        "tags": [
          "Reports"
        ],
        "parameters": [
          {
            "name": "month",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": true,
            "title": "YYYY-MM, interpreted in the store's timezone",
            "description": "YYYY-MM, interpreted in the store's timezone."
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProfitReport"
                }
              }
            }
          }
        },
        "x-permission": "analytics.view"
      }
    },
    "/v1/reports/usage-by-user": {
      "get": {
        "summary": "Usage by user report",
        "description": "Each person's and API key's filament use, and what to bill them\n\nA print counts for whoever queued its job: a person or an API key. Prints\nwhose job has no creator recorded are counted under `unattributedGrams`\nand `unattributedPrints`, and never billed to anyone. `from` and `to` are\ninclusive days in the store's timezone, matched against when each print\nended.\n\nEach job line is what one print drew from one spool or color (grams from\nthe stock ledger, so this needs the filament-inventory add-on). `rate`\npicks what a line bills: `cost` at the spool's price, else the color's,\nelse the material's; `billable` at the material's billable rate in effect\nwhen the print ended. A line with no rate (or, at cost, no price) has a\nnull `billCents`, is counted in `unratedGrams`, and adds nothing to the\nbill. Grams are rounded to the tenth and money to the cent on each line,\nand every total is the sum of its lines.\n\n`actors` lists everyone with usage in the range and printers, whatever\n`actorIds` selects, for a picker.",
        "tags": [
          "Reports"
        ],
        "parameters": [
          {
            "name": "from",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": true,
            "title": "YYYY-MM-DD, inclusive, in the store's timezone",
            "description": "YYYY-MM-DD, inclusive, in the store's timezone."
          },
          {
            "name": "to",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": true,
            "title": "YYYY-MM-DD, inclusive, in the store's timezone",
            "description": "YYYY-MM-DD, inclusive, in the store's timezone."
          },
          {
            "name": "printerIds",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false,
            "title": "Comma-separated printer ids; omitted = all printers",
            "description": "Comma-separated printer ids; omitted = all printers."
          },
          {
            "name": "actorIds",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false,
            "title": "Comma-separated actor ids (whoever queued the job); omitted = everyone",
            "description": "Comma-separated actor ids (whoever queued the job); omitted = everyone."
          },
          {
            "name": "rate",
            "in": "query",
            "schema": {
              "oneOf": [
                {
                  "const": "cost"
                },
                {
                  "const": "billable"
                }
              ]
            },
            "required": false,
            "title": "What a print is billed at. Default `cost`",
            "description": "What a print is billed at. Default `cost`."
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UsageByUserReport"
                }
              }
            }
          }
        },
        "x-permission": "analytics.view"
      }
    },
    "/v1/api-keys": {
      "get": {
        "summary": "Get all API keys",
        "description": "List all API keys for your store with optional search/filter",
        "tags": [
          "API_Keys"
        ],
        "operationId": "apiKeys_getAll",
        "parameters": [
          {
            "name": "hash",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "salt",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "name",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "active",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "managed",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "managedBy",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "externalRef",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "integrationId",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false,
            "description": "Optional link to integration - when integration is deleted, this API key is also deleted"
          },
          {
            "name": "fullAccess",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "ipAllowlist",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "createdBy",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "lastUsedAt",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "expiresAt",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "id",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "storeId",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "createdAt",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "updatedAt",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false,
            "title": "Sort"
          },
          {
            "name": "limit",
            "in": "query",
            "schema": {
              "type": "number",
              "minimum": 1,
              "maximum": 1000
            },
            "required": false,
            "title": "Limit"
          },
          {
            "name": "offset",
            "in": "query",
            "schema": {
              "type": "number",
              "minimum": 0
            },
            "required": false,
            "title": "Offset"
          },
          {
            "name": "fields",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false,
            "title": "Fields"
          },
          {
            "name": "include",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false,
            "title": "Include"
          },
          {
            "name": "meta",
            "in": "query",
            "schema": {
              "type": "boolean"
            },
            "required": false,
            "title": "Meta"
          },
          {
            "name": "hints",
            "in": "query",
            "schema": {
              "type": "boolean"
            },
            "required": false,
            "title": "Hints"
          }
        ],
        "responses": {
          "200": {
            "description": "All API keys (secrets are masked)",
            "content": {
              "application/json": {
                "schema": {
                  "oneOf": [
                    {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/ApiKey"
                      }
                    },
                    {
                      "$ref": "#/components/schemas/SearchResponse"
                    }
                  ]
                }
              }
            }
          }
        },
        "x-permission": "apiKey.view"
      },
      "post": {
        "summary": "Create an API key",
        "description": "Generate a new API key. The full key is only returned once on creation.",
        "tags": [
          "API_Keys"
        ],
        "parameters": [],
        "requestBody": {
          "description": "API key configuration",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateApiKeyRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "The created API key with full secret (one-time only)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OneTimeApiKeyInfo"
                }
              }
            }
          }
        },
        "x-permission": "apiKey.create"
      }
    },
    "/v1/api-keys/search": {
      "post": {
        "summary": "Search API keys",
        "description": "Advanced search for API keys",
        "tags": [
          "API_Keys"
        ],
        "operationId": "apiKeys_search",
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SearchQueryDtoApiKey"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Search results with API keys (secrets are masked)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SearchResponse"
                }
              }
            }
          }
        },
        "x-permission": "apiKey.view"
      }
    },
    "/v1/api-keys/{id}": {
      "get": {
        "summary": "Get API key by ID",
        "description": "Get a single API key by ID",
        "tags": [
          "API_Keys"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "schema": {
              "type": "string",
              "pattern": "^[a-z0-9]{24}$"
            },
            "required": true,
            "description": " The API key's unique identifier"
          }
        ],
        "responses": {
          "200": {
            "description": "The requested API key (secret is masked)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiKey"
                }
              }
            }
          }
        },
        "x-permission": "apiKey.view"
      },
      "patch": {
        "summary": "Update an API key",
        "description": "Update an API key's configuration including name, status, permissions, roles, and IP restrictions",
        "tags": [
          "API_Keys"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "schema": {
              "type": "string",
              "pattern": "^[a-z0-9]{24}$"
            },
            "required": true,
            "description": " The API key's unique identifier"
          }
        ],
        "requestBody": {
          "description": "Fields to update",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateApiKeyRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "The updated API key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiKey"
                }
              }
            }
          }
        },
        "x-permission": "apiKey.edit"
      },
      "delete": {
        "summary": "Delete an API key",
        "description": "Permanently revoke an API key",
        "tags": [
          "API_Keys"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "schema": {
              "type": "string",
              "pattern": "^[a-z0-9]{24}$"
            },
            "required": true,
            "description": " The API key's unique identifier"
          }
        ],
        "responses": {
          "200": {
            "description": "Success. The response has no body."
          }
        },
        "x-permission": "apiKey.delete"
      }
    },
    "/v1/api-keys/{id}/permissions": {
      "get": {
        "summary": "Get API key permissions",
        "description": "Get direct permissions for an API key",
        "tags": [
          "API_Keys"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "schema": {
              "type": "string",
              "pattern": "^[a-z0-9]{24}$"
            },
            "required": true,
            "description": " The API key's unique identifier"
          }
        ],
        "responses": {
          "200": {
            "description": "List of permission types directly assigned to the API key",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "const": "organization.owner"
                      },
                      {
                        "const": "organization.edit"
                      },
                      {
                        "const": "organization.delete"
                      },
                      {
                        "const": "user.view"
                      },
                      {
                        "const": "user.invite"
                      },
                      {
                        "const": "user.edit"
                      },
                      {
                        "const": "user.delete"
                      },
                      {
                        "const": "permission.view"
                      },
                      {
                        "const": "permission.grant"
                      },
                      {
                        "const": "permission.revoke"
                      },
                      {
                        "const": "part.view"
                      },
                      {
                        "const": "part.create"
                      },
                      {
                        "const": "part.edit"
                      },
                      {
                        "const": "part.delete"
                      },
                      {
                        "const": "part.export"
                      },
                      {
                        "const": "sku.view"
                      },
                      {
                        "const": "sku.create"
                      },
                      {
                        "const": "sku.edit"
                      },
                      {
                        "const": "sku.delete"
                      },
                      {
                        "const": "material.view"
                      },
                      {
                        "const": "material.create"
                      },
                      {
                        "const": "material.edit"
                      },
                      {
                        "const": "material.delete"
                      },
                      {
                        "const": "material.instance.view"
                      },
                      {
                        "const": "material.instance.create"
                      },
                      {
                        "const": "material.instance.edit"
                      },
                      {
                        "const": "material.instance.delete"
                      },
                      {
                        "const": "printer.view"
                      },
                      {
                        "const": "printer.create"
                      },
                      {
                        "const": "printer.edit"
                      },
                      {
                        "const": "printer.delete"
                      },
                      {
                        "const": "printer.control"
                      },
                      {
                        "const": "printer.ready"
                      },
                      {
                        "const": "printer.config"
                      },
                      {
                        "const": "printer.stats"
                      },
                      {
                        "const": "printer.camera"
                      },
                      {
                        "const": "profile.view"
                      },
                      {
                        "const": "profile.create"
                      },
                      {
                        "const": "profile.edit"
                      },
                      {
                        "const": "profile.delete"
                      },
                      {
                        "const": "queue.view"
                      },
                      {
                        "const": "queue.manage"
                      },
                      {
                        "const": "queue.override"
                      },
                      {
                        "const": "job.create"
                      },
                      {
                        "const": "job.edit.own"
                      },
                      {
                        "const": "job.edit.all"
                      },
                      {
                        "const": "job.delete.own"
                      },
                      {
                        "const": "job.delete.all"
                      },
                      {
                        "const": "build.view"
                      },
                      {
                        "const": "build.create"
                      },
                      {
                        "const": "build.edit"
                      },
                      {
                        "const": "build.delete"
                      },
                      {
                        "const": "settings.view"
                      },
                      {
                        "const": "settings.edit"
                      },
                      {
                        "const": "integration.view"
                      },
                      {
                        "const": "integration.manage"
                      },
                      {
                        "const": "subscription.view"
                      },
                      {
                        "const": "subscription.manage"
                      },
                      {
                        "const": "analytics.view"
                      },
                      {
                        "const": "reports.generate"
                      },
                      {
                        "const": "audit.log.view"
                      },
                      {
                        "const": "audit.logs.configure"
                      },
                      {
                        "const": "order.view"
                      },
                      {
                        "const": "order.create"
                      },
                      {
                        "const": "order.edit"
                      },
                      {
                        "const": "order.delete"
                      },
                      {
                        "const": "order.print"
                      },
                      {
                        "const": "apiKey.view"
                      },
                      {
                        "const": "apiKey.create"
                      },
                      {
                        "const": "apiKey.edit"
                      },
                      {
                        "const": "apiKey.delete"
                      },
                      {
                        "const": "file.download"
                      },
                      {
                        "const": "maintenance.view"
                      },
                      {
                        "const": "maintenance.create"
                      },
                      {
                        "const": "maintenance.edit"
                      },
                      {
                        "const": "maintenance.delete"
                      },
                      {
                        "const": "maintenance.complete"
                      },
                      {
                        "const": "routing.manage"
                      },
                      {
                        "const": "customizer.manage"
                      },
                      {
                        "const": "macro.view"
                      },
                      {
                        "const": "macro.create"
                      },
                      {
                        "const": "macro.edit"
                      },
                      {
                        "const": "macro.delete"
                      },
                      {
                        "const": "macro.run"
                      },
                      {
                        "const": "card.view"
                      },
                      {
                        "const": "card.create"
                      },
                      {
                        "const": "card.edit"
                      },
                      {
                        "const": "card.delete"
                      },
                      {
                        "const": "layout.view"
                      },
                      {
                        "const": "layout.create"
                      },
                      {
                        "const": "layout.edit"
                      },
                      {
                        "const": "layout.delete"
                      },
                      {
                        "const": "classwork.viewer"
                      },
                      {
                        "const": "classwork.editor"
                      },
                      {
                        "const": "sequence.view"
                      },
                      {
                        "const": "sequence.edit"
                      },
                      {
                        "const": "qr.scan"
                      },
                      {
                        "const": "qr.manage"
                      },
                      {
                        "const": "internal.shopify"
                      },
                      {
                        "const": "queue.admin"
                      },
                      {
                        "const": "part.viewer"
                      },
                      {
                        "const": "part.editor"
                      },
                      {
                        "const": "sku.viewer"
                      },
                      {
                        "const": "sku.editor"
                      },
                      {
                        "const": "orders.admin"
                      },
                      {
                        "const": "material.viewer"
                      },
                      {
                        "const": "material.editor"
                      },
                      {
                        "const": "printer.viewer"
                      },
                      {
                        "const": "printer.editor"
                      },
                      {
                        "const": "profile.viewer"
                      },
                      {
                        "const": "profile.editor"
                      },
                      {
                        "const": "settings.admin"
                      },
                      {
                        "const": "subscription.admin"
                      }
                    ]
                  }
                }
              }
            }
          }
        },
        "x-permission": "apiKey.view"
      }
    },
    "/v1/api-keys/{id}/roles": {
      "get": {
        "summary": "Get API key roles",
        "description": "Get assigned role IDs for an API key",
        "tags": [
          "API_Keys"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "schema": {
              "type": "string",
              "pattern": "^[a-z0-9]{24}$"
            },
            "required": true,
            "description": " The API key's unique identifier"
          }
        ],
        "responses": {
          "200": {
            "description": "List of role IDs assigned to the API key",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  }
                }
              }
            }
          }
        },
        "x-permission": "apiKey.view"
      }
    },
    "/v1/subscriptions": {
      "get": {
        "summary": "Get current subscription",
        "tags": [
          "Subscriptions"
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "The store's subscription details",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Subscription"
                }
              }
            }
          }
        },
        "x-permission": "subscription.view"
      }
    },
    "/v1/subscriptions/audit-logs": {
      "patch": {
        "summary": "Configure audit logs",
        "description": "Enable or disable audit logging",
        "tags": [
          "Subscriptions"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SetAuditLogsEnabledRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "The current subscription",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Subscription"
                }
              }
            }
          }
        },
        "x-permission": "audit.logs.configure"
      }
    },
    "/v1/subscriptions/search": {
      "post": {
        "summary": "Search subscriptions",
        "description": "Advanced search for subscriptions",
        "tags": [
          "Subscriptions"
        ],
        "operationId": "subscriptions_search",
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SearchQueryDtoSubscription"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Search results with subscriptions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SearchResponse"
                }
              }
            }
          }
        },
        "x-permission": "subscription.view"
      }
    },
    "/v1/addons": {
      "get": {
        "summary": "Get all available addons",
        "tags": [
          "Subscriptions"
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "List of all addons",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Addon"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/v1/addons/{addonType}": {
      "get": {
        "summary": "Get addon by type with tiers",
        "tags": [
          "Subscriptions"
        ],
        "parameters": [
          {
            "name": "addonType",
            "in": "path",
            "schema": {
              "type": "string"
            },
            "required": true,
            "description": " The addon type identifier"
          }
        ],
        "responses": {
          "200": {
            "description": "The addon with its pricing tiers",
            "content": {
              "application/json": {
                "schema": {
                  "oneOf": [
                    {
                      "type": "null"
                    },
                    {
                      "$ref": "#/components/schemas/AddonWithTiers"
                    }
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/v1/addon-subscriptions": {
      "get": {
        "summary": "Get all addon subscriptions",
        "tags": [
          "Subscriptions"
        ],
        "parameters": [
          {
            "name": "addonType",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "tierKey",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "tierId",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "term",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "id",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "storeId",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "createdAt",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "updatedAt",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false,
            "title": "Sort"
          },
          {
            "name": "limit",
            "in": "query",
            "schema": {
              "type": "number",
              "minimum": 1,
              "maximum": 1000
            },
            "required": false,
            "title": "Limit"
          },
          {
            "name": "offset",
            "in": "query",
            "schema": {
              "type": "number",
              "minimum": 0
            },
            "required": false,
            "title": "Offset"
          },
          {
            "name": "fields",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false,
            "title": "Fields"
          },
          {
            "name": "include",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false,
            "title": "Include"
          },
          {
            "name": "meta",
            "in": "query",
            "schema": {
              "type": "boolean"
            },
            "required": false,
            "title": "Meta"
          },
          {
            "name": "hints",
            "in": "query",
            "schema": {
              "type": "boolean"
            },
            "required": false,
            "title": "Hints"
          }
        ],
        "responses": {
          "200": {
            "description": "List of addon subscriptions for the store",
            "content": {
              "application/json": {
                "schema": {
                  "oneOf": [
                    {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/AddonSubscription"
                      }
                    },
                    {
                      "$ref": "#/components/schemas/SearchResponse"
                    }
                  ]
                }
              }
            }
          }
        },
        "x-permission": "subscription.view"
      }
    },
    "/v1/addon-subscriptions/{addonType}": {
      "get": {
        "summary": "Get addon subscription by type",
        "tags": [
          "Subscriptions"
        ],
        "parameters": [
          {
            "name": "addonType",
            "in": "path",
            "schema": {
              "type": "string"
            },
            "required": true,
            "description": " The addon type identifier"
          }
        ],
        "responses": {
          "200": {
            "description": "The addon subscription if found",
            "content": {
              "application/json": {
                "schema": {
                  "oneOf": [
                    {
                      "type": "null"
                    },
                    {
                      "$ref": "#/components/schemas/AddonSubscription"
                    }
                  ]
                }
              }
            }
          }
        },
        "x-permission": "subscription.view"
      }
    },
    "/v1/addon-subscriptions/search": {
      "post": {
        "summary": "Search addon subscriptions",
        "description": "Advanced search for addon subscriptions",
        "tags": [
          "Subscriptions"
        ],
        "operationId": "addonSubscriptions_search",
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SearchQueryDtoAddonSubscription"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Search results with addon subscriptions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SearchResponse"
                }
              }
            }
          }
        },
        "x-permission": "subscription.view"
      }
    },
    "/v1/storage/signed-urls": {
      "post": {
        "summary": "Get signed download URLs",
        "tags": [
          "Files"
        ],
        "parameters": [],
        "requestBody": {
          "description": "File paths to generate URLs for",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SignedUrlsRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Signed URLs for downloading files",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SignedUrlsResponse"
                }
              }
            }
          }
        },
        "x-permission": "file.download"
      }
    },
    "/v1/storage/signed-upload-urls": {
      "post": {
        "summary": "Get signed upload URLs",
        "tags": [
          "Files"
        ],
        "parameters": [],
        "requestBody": {
          "description": "File details for upload",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SignedUploadUrlsRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Signed URLs for uploading files",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SignedUploadUrlsResponse"
                }
              }
            }
          }
        },
        "x-permission": "part.create"
      }
    },
    "/v1/settings/notifications": {
      "get": {
        "summary": "List notification channels",
        "description": "List the store's notification channels (Discord, Slack, webhook,\nPushover, Telegram) and which events each one is subscribed to.\nChannel credentials such as webhook URLs and tokens are never returned.",
        "tags": [
          "Notifications"
        ],
        "parameters": [
          {
            "name": "enabled",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "channel",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "onJobSucceeded",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "onJobFailed",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "onJobStarted",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "onJobCancelled",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "onPrinterHmsError",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "onPrinterHmsWarning",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "onPrinterOffline",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "onPrinterOnline",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "onPrinterContinuousPrintDisabled",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "onOrderCreatedManual",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "onOrderCreatedRetail",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "onOrderCancelled",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "onOrderClosed",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "onOrdersAutoPrinted",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "onMaintenanceModeOn",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "onMaintenanceModeOff",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "onMaintenanceDueSoon",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "onMaintenanceOverdue",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "onMaterialUsageRecorded",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "onAiFailureDetected",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "id",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "storeId",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "createdAt",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "updatedAt",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false,
            "title": "Sort"
          },
          {
            "name": "limit",
            "in": "query",
            "schema": {
              "type": "number",
              "minimum": 1,
              "maximum": 1000
            },
            "required": false,
            "title": "Limit"
          },
          {
            "name": "offset",
            "in": "query",
            "schema": {
              "type": "number",
              "minimum": 0
            },
            "required": false,
            "title": "Offset"
          },
          {
            "name": "fields",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false,
            "title": "Fields"
          },
          {
            "name": "include",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false,
            "title": "Include"
          },
          {
            "name": "meta",
            "in": "query",
            "schema": {
              "type": "boolean"
            },
            "required": false,
            "title": "Meta"
          },
          {
            "name": "hints",
            "in": "query",
            "schema": {
              "type": "boolean"
            },
            "required": false,
            "title": "Hints"
          }
        ],
        "responses": {
          "200": {
            "description": "Notification channels for the store",
            "content": {
              "application/json": {
                "schema": {
                  "oneOf": [
                    {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/NotificationSetting"
                      }
                    },
                    {
                      "$ref": "#/components/schemas/SearchResponse"
                    }
                  ]
                }
              }
            }
          }
        },
        "x-permission": "settings.view"
      },
      "post": {
        "summary": "Enable a notification channel",
        "description": "Enable a notification channel. For `webhook`, Printago sends a JSON\n`POST` of `{ event, timestamp, data }` to `webhookUrl` (must be a public\nHTTPS URL) for each subscribed event, with your `apiKey` in the\n`X-API-Key` header (the key must be at least 32 characters). Discord,\nSlack and Pushover receive a welcome message first, and the request fails\nwith `400` if that delivery fails. Use the configure endpoint afterwards\nto choose which events are sent.",
        "tags": [
          "Notifications"
        ],
        "parameters": [],
        "requestBody": {
          "description": "Channel type and its credentials",
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/EnableTelegramNotificationsRequest"
                  },
                  {
                    "$ref": "#/components/schemas/EnablePushoverNotificationsRequest"
                  },
                  {
                    "$ref": "#/components/schemas/EnableSlackNotificationsRequest"
                  },
                  {
                    "$ref": "#/components/schemas/EnableWebhookNotificationsRequest"
                  },
                  {
                    "$ref": "#/components/schemas/EnableDiscordNotificationsRequest"
                  }
                ],
                "discriminator": {
                  "propertyName": "channel",
                  "mapping": {
                    "telegram": "#/components/schemas/EnableTelegramNotificationsRequest",
                    "pushover": "#/components/schemas/EnablePushoverNotificationsRequest",
                    "slack": "#/components/schemas/EnableSlackNotificationsRequest",
                    "webhook": "#/components/schemas/EnableWebhookNotificationsRequest",
                    "discord": "#/components/schemas/EnableDiscordNotificationsRequest"
                  }
                }
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "The enabled notification channel",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotificationSetting"
                }
              }
            }
          }
        },
        "x-permission": "settings.edit"
      }
    },
    "/v1/settings/notifications/{id}": {
      "get": {
        "summary": "Get notification channel",
        "description": "Get a single notification channel and its event subscriptions.",
        "tags": [
          "Notifications"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "schema": {
              "type": "string"
            },
            "required": true,
            "description": " The notification channel ID"
          }
        ],
        "responses": {
          "200": {
            "description": "The notification channel",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotificationSetting"
                }
              }
            }
          }
        },
        "x-permission": "settings.view"
      }
    },
    "/v1/settings/notifications/{id}/disable": {
      "patch": {
        "summary": "Disable a notification channel",
        "description": "Disable a notification channel and delete its stored credentials.\nFor Discord, per-category webhook overrides are removed as well.",
        "tags": [
          "Notifications"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "schema": {
              "type": "string",
              "pattern": "^[a-z0-9]{24}$"
            },
            "required": true,
            "description": " The notification channel ID"
          }
        ],
        "responses": {
          "200": {
            "description": "The disabled notification channel",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotificationSetting"
                }
              }
            }
          }
        },
        "x-permission": "settings.edit"
      }
    },
    "/v1/settings/notifications/{id}/routes": {
      "get": {
        "summary": "List Discord category routes",
        "description": "List the per-category webhook overrides of a Discord channel. Events in\na category with an enabled override are posted to that webhook instead\nof the channel's default one.",
        "tags": [
          "Notifications"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "schema": {
              "type": "string",
              "pattern": "^[a-z0-9]{24}$"
            },
            "required": true,
            "description": " The Discord notification channel ID"
          }
        ],
        "responses": {
          "200": {
            "description": "Category routes for the channel",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/NotificationRoute"
                  }
                }
              }
            }
          }
        },
        "x-permission": "settings.view"
      }
    },
    "/v1/settings/notifications/{id}/routes/{category}": {
      "put": {
        "summary": "Set a Discord category route",
        "description": "Create or update the webhook override for one event category of a\nDiscord channel.",
        "tags": [
          "Notifications"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "schema": {
              "type": "string",
              "pattern": "^[a-z0-9]{24}$"
            },
            "required": true,
            "description": " The Discord notification channel ID"
          },
          {
            "name": "category",
            "in": "path",
            "schema": {
              "type": "string"
            },
            "required": true,
            "description": " Event category: `jobs`, `printers`, `orders`, `maintenance` or `materials`"
          }
        ],
        "requestBody": {
          "description": "Override webhook URL and whether the override is enabled",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpsertNotificationRouteRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "The category route",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotificationRoute"
                }
              }
            }
          }
        },
        "x-permission": "settings.edit"
      },
      "delete": {
        "summary": "Delete a Discord category route",
        "description": "Remove the webhook override for one event category of a Discord\nchannel, so its events go back to the channel's default webhook.",
        "tags": [
          "Notifications"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "schema": {
              "type": "string",
              "pattern": "^[a-z0-9]{24}$"
            },
            "required": true,
            "description": " The Discord notification channel ID"
          },
          {
            "name": "category",
            "in": "path",
            "schema": {
              "type": "string"
            },
            "required": true,
            "description": " Event category: `jobs`, `printers`, `orders`, `maintenance` or `materials`"
          }
        ],
        "responses": {
          "200": {
            "description": "The deleted category route",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotificationRoute"
                }
              }
            }
          }
        },
        "x-permission": "settings.edit"
      }
    },
    "/v1/settings/notifications/{id}/routes/{category}/test": {
      "post": {
        "summary": "Send a test message for a category",
        "description": "Sends a test message to the webhook a category currently resolves to\n(its override when configured and enabled, else the channel default).",
        "tags": [
          "Notifications"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "schema": {
              "type": "string",
              "pattern": "^[a-z0-9]{24}$"
            },
            "required": true,
            "description": " The Discord notification channel ID"
          },
          {
            "name": "category",
            "in": "path",
            "schema": {
              "type": "string"
            },
            "required": true,
            "description": " Event category: `jobs`, `printers`, `orders`, `maintenance` or `materials`"
          }
        ],
        "responses": {
          "201": {
            "description": "Whether the category override was used",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "usedOverride": {
                      "type": "boolean"
                    }
                  },
                  "required": [
                    "usedOverride"
                  ]
                }
              }
            }
          }
        },
        "x-permission": "settings.edit"
      }
    },
    "/v1/settings/notifications/{id}/mentions": {
      "get": {
        "summary": "List Discord mentions",
        "description": "List the Discord mentions (`@everyone`, `@here`, users or roles) added\nto messages for each event of a Discord channel.",
        "tags": [
          "Notifications"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "schema": {
              "type": "string",
              "pattern": "^[a-z0-9]{24}$"
            },
            "required": true,
            "description": " The Discord notification channel ID"
          }
        ],
        "responses": {
          "200": {
            "description": "Mentions configured for the channel",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/NotificationMention"
                  }
                }
              }
            }
          }
        },
        "x-permission": "settings.view"
      },
      "post": {
        "summary": "Add a Discord mention",
        "description": "Mention a Discord user or role (or `@everyone` / `@here`) whenever a\ngiven event is posted to a Discord channel. `mentionId` is the Discord\nuser or role ID and is required for `user` and `role` mentions.",
        "tags": [
          "Notifications"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "schema": {
              "type": "string",
              "pattern": "^[a-z0-9]{24}$"
            },
            "required": true,
            "description": " The Discord notification channel ID"
          }
        ],
        "requestBody": {
          "description": "Event, mention type and Discord ID",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateNotificationMentionRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "The created mention",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotificationMention"
                }
              }
            }
          }
        },
        "x-permission": "settings.edit"
      }
    },
    "/v1/settings/notifications/{id}/mentions/{mentionId}": {
      "delete": {
        "summary": "Delete a Discord mention",
        "description": "Remove a Discord mention from a channel.",
        "tags": [
          "Notifications"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "schema": {
              "type": "string",
              "pattern": "^[a-z0-9]{24}$"
            },
            "required": true,
            "description": " The Discord notification channel ID"
          },
          {
            "name": "mentionId",
            "in": "path",
            "schema": {
              "type": "string",
              "pattern": "^[a-z0-9]{24}$"
            },
            "required": true,
            "description": " The mention ID"
          }
        ],
        "responses": {
          "200": {
            "description": "Success. The response has no body."
          }
        },
        "x-permission": "settings.edit"
      }
    },
    "/v1/settings/notifications/{id}/configure": {
      "patch": {
        "summary": "Configure channel events",
        "description": "Choose which events a notification channel sends. Pass only the\n`on*` flags you want to change.",
        "tags": [
          "Notifications"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "schema": {
              "type": "string",
              "pattern": "^[a-z0-9]{24}$"
            },
            "required": true,
            "description": " The notification channel ID"
          }
        ],
        "requestBody": {
          "description": "Event flags to update",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PartialPickNotificationSettingOnFields"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "The updated notification channel",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotificationSetting"
                }
              }
            }
          }
        },
        "x-permission": "settings.edit"
      }
    },
    "/v1/orders": {
      "get": {
        "summary": "Get all orders",
        "tags": [
          "Orders"
        ],
        "parameters": [
          {
            "name": "orderNumber",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "source",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "status",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "cancelledAt",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "shippedAt",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "customerId",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "integrationId",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "priceBucket",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "price",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "currency",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "externalId",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "externalUrl",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "sourceRef",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "note",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "deadline",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "processedAt",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "syncDisabled",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "customMetadata",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "id",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "storeId",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "createdAt",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "updatedAt",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false,
            "title": "Sort"
          },
          {
            "name": "limit",
            "in": "query",
            "schema": {
              "type": "number",
              "minimum": 1,
              "maximum": 1000
            },
            "required": false,
            "title": "Limit"
          },
          {
            "name": "offset",
            "in": "query",
            "schema": {
              "type": "number",
              "minimum": 0
            },
            "required": false,
            "title": "Offset"
          },
          {
            "name": "fields",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false,
            "title": "Fields"
          },
          {
            "name": "include",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false,
            "title": "Include"
          },
          {
            "name": "meta",
            "in": "query",
            "schema": {
              "type": "boolean"
            },
            "required": false,
            "title": "Meta"
          },
          {
            "name": "hints",
            "in": "query",
            "schema": {
              "type": "boolean"
            },
            "required": false,
            "title": "Hints"
          }
        ],
        "responses": {
          "200": {
            "description": "List of all orders for the current store",
            "content": {
              "application/json": {
                "schema": {
                  "oneOf": [
                    {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/Order"
                      }
                    },
                    {
                      "$ref": "#/components/schemas/SearchResponse"
                    }
                  ]
                }
              }
            }
          }
        },
        "x-permission": "order.view"
      },
      "post": {
        "summary": "Create a new order",
        "tags": [
          "Orders"
        ],
        "parameters": [],
        "requestBody": {
          "description": "Order details including optional customer and items",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateOrderDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Complete order details with customer and items",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OrderDetailsResponse"
                }
              }
            }
          }
        },
        "x-permission": "order.create"
      }
    },
    "/v1/orders/full": {
      "get": {
        "summary": "Get complete order data",
        "tags": [
          "Orders"
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "All orders with their items and customer information in a single response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "orders": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/Order"
                      }
                    },
                    "orderItems": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/OrderItem"
                      }
                    },
                    "customers": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/Customer"
                      }
                    }
                  },
                  "required": [
                    "orders",
                    "orderItems",
                    "customers"
                  ]
                }
              }
            }
          }
        },
        "x-permission": "order.view"
      }
    },
    "/v1/orders/items": {
      "get": {
        "summary": "Get all order items",
        "tags": [
          "Order_Items"
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "List of all order items across all orders in the store",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/OrderItem"
                  }
                }
              }
            }
          }
        },
        "x-permission": "order.view"
      }
    },
    "/v1/orders/ignored-skus": {
      "get": {
        "summary": "Get ignored SKUs list",
        "tags": [
          "Orders"
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "The current list of SKUs that should be ignored during order processing",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/IgnoredSku"
                }
              }
            }
          }
        },
        "x-permission": "order.view"
      },
      "patch": {
        "summary": "Update ignored SKUs list",
        "tags": [
          "Orders"
        ],
        "parameters": [],
        "requestBody": {
          "description": "SKUs to add to or remove from the ignore list",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/EditIgnoredSkusRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Updated list of ignored SKUs",
            "content": {
              "application/json": {
                "schema": {
                  "oneOf": [
                    {
                      "type": "null"
                    },
                    {
                      "$ref": "#/components/schemas/IgnoredSku"
                    }
                  ]
                }
              }
            }
          }
        },
        "x-permission": "order.edit"
      }
    },
    "/v1/orders/ignored-skus/check": {
      "post": {
        "summary": "Check if SKUs are ignored",
        "tags": [
          "Orders"
        ],
        "parameters": [],
        "requestBody": {
          "description": "List of SKUs to check",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CheckIgnoredSkusRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Object mapping each SKU to a boolean indicating if it's ignored",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CheckIgnoredSkusResponse"
                }
              }
            }
          }
        },
        "x-permission": "order.view"
      }
    },
    "/v1/orders/reconcile": {
      "post": {
        "summary": "Reconcile print jobs with orders",
        "tags": [
          "Orders"
        ],
        "parameters": [],
        "requestBody": {
          "description": "Reconciliation parameters including SKUs, orders, printer tags, and priority",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ReconcileJobsRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Results of the reconciliation process",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReconcileJobsResponse"
                }
              }
            }
          }
        },
        "x-permission": "order.print"
      }
    },
    "/v1/orders/print": {
      "post": {
        "summary": "Reconcile print jobs with orders",
        "tags": [
          "Orders"
        ],
        "parameters": [],
        "requestBody": {
          "description": "Reconciliation parameters including SKUs, orders, printer tags, and priority",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ReconcileJobsRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Results of the reconciliation process",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReconcileJobsResponse"
                }
              }
            }
          }
        },
        "x-permission": "order.print"
      }
    },
    "/v1/orders/batch/close": {
      "patch": {
        "summary": "Batch close orders",
        "tags": [
          "Orders"
        ],
        "parameters": [],
        "requestBody": {
          "description": "Order IDs to close",
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "orderIds": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "pattern": "^[a-z0-9]{24}$"
                    }
                  }
                },
                "required": [
                  "orderIds"
                ]
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Results of the batch close operation",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "closed": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/Order"
                      }
                    },
                    "errors": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "orderId": {
                            "type": "string"
                          },
                          "error": {
                            "type": "string"
                          }
                        },
                        "required": [
                          "orderId",
                          "error"
                        ]
                      }
                    }
                  },
                  "required": [
                    "closed",
                    "errors"
                  ]
                }
              }
            }
          }
        },
        "x-permission": "order.edit"
      }
    },
    "/v1/orders/batch/reopen": {
      "patch": {
        "summary": "Batch reopen orders",
        "tags": [
          "Orders"
        ],
        "parameters": [],
        "requestBody": {
          "description": "Order IDs to reopen",
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "orderIds": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "pattern": "^[a-z0-9]{24}$"
                    }
                  }
                },
                "required": [
                  "orderIds"
                ]
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Results of the batch reopen operation",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "reopened": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/Order"
                      }
                    },
                    "errors": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "orderId": {
                            "type": "string"
                          },
                          "error": {
                            "type": "string"
                          }
                        },
                        "required": [
                          "orderId",
                          "error"
                        ]
                      }
                    }
                  },
                  "required": [
                    "reopened",
                    "errors"
                  ]
                }
              }
            }
          }
        },
        "x-permission": "order.edit"
      }
    },
    "/v1/orders/batch/cancel": {
      "patch": {
        "summary": "Batch cancel orders",
        "tags": [
          "Orders"
        ],
        "parameters": [],
        "requestBody": {
          "description": "Order IDs to cancel",
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "orderIds": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "pattern": "^[a-z0-9]{24}$"
                    }
                  }
                },
                "required": [
                  "orderIds"
                ]
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Results of the batch cancel operation",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "cancelled": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/OrderDetailsResponse"
                      }
                    },
                    "errors": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "orderId": {
                            "type": "string"
                          },
                          "error": {
                            "type": "string"
                          }
                        },
                        "required": [
                          "orderId",
                          "error"
                        ]
                      }
                    }
                  },
                  "required": [
                    "cancelled",
                    "errors"
                  ]
                }
              }
            }
          }
        },
        "x-permission": "order.edit"
      }
    },
    "/v1/orders/batch/delete": {
      "delete": {
        "summary": "Batch delete orders",
        "tags": [
          "Orders"
        ],
        "parameters": [],
        "requestBody": {
          "description": "Order IDs to delete permanently",
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "orderIds": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "pattern": "^[a-z0-9]{24}$"
                    }
                  }
                },
                "required": [
                  "orderIds"
                ]
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Results of the batch delete operation",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "deleted": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    },
                    "errors": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "orderId": {
                            "type": "string"
                          },
                          "error": {
                            "type": "string"
                          }
                        },
                        "required": [
                          "orderId",
                          "error"
                        ]
                      }
                    }
                  },
                  "required": [
                    "deleted",
                    "errors"
                  ]
                }
              }
            }
          }
        },
        "x-permission": "order.delete"
      }
    },
    "/v1/orders/customers": {
      "get": {
        "summary": "Get all customers",
        "tags": [
          "Orders"
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "List of all customers associated with orders in the store",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Customer"
                  }
                }
              }
            }
          }
        },
        "x-permission": "order.view"
      },
      "post": {
        "summary": "Create a new customer",
        "tags": [
          "Orders"
        ],
        "parameters": [],
        "requestBody": {
          "description": "Customer information (requires at least name, email, or phone)",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateCustomerDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "The created customer record",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Customer"
                }
              }
            }
          }
        },
        "x-permission": "order.create"
      }
    },
    "/v1/orders/customers/{customerId}": {
      "get": {
        "summary": "Get customer by ID",
        "tags": [
          "Orders"
        ],
        "parameters": [
          {
            "name": "customerId",
            "in": "path",
            "schema": {
              "type": "string",
              "pattern": "^[a-z0-9]{24}$"
            },
            "required": true,
            "description": " The customer's unique identifier"
          }
        ],
        "responses": {
          "200": {
            "description": "Customer information",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Customer"
                }
              }
            }
          }
        },
        "x-permission": "order.view"
      }
    },
    "/v1/orders/items/{itemId}": {
      "get": {
        "summary": "Get a specific order item",
        "tags": [
          "Order_Items"
        ],
        "parameters": [
          {
            "name": "itemId",
            "in": "path",
            "schema": {
              "type": "string",
              "pattern": "^[a-z0-9]{24}$"
            },
            "required": true,
            "description": " The order item's unique identifier"
          }
        ],
        "responses": {
          "200": {
            "description": "Order item details",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OrderItem"
                }
              }
            }
          }
        },
        "x-permission": "order.view"
      },
      "put": {
        "summary": "Update an order item",
        "tags": [
          "Order_Items"
        ],
        "parameters": [
          {
            "name": "itemId",
            "in": "path",
            "schema": {
              "type": "string",
              "pattern": "^[a-z0-9]{24}$"
            },
            "required": true,
            "description": " The order item's unique identifier"
          }
        ],
        "requestBody": {
          "description": "Fields to update on the order item",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PartialOrderItemUpdate"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Updated order item",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OrderItem"
                }
              }
            }
          }
        },
        "x-permission": "order.edit"
      },
      "delete": {
        "summary": "Delete an order item",
        "tags": [
          "Order_Items"
        ],
        "parameters": [
          {
            "name": "itemId",
            "in": "path",
            "schema": {
              "type": "string",
              "pattern": "^[a-z0-9]{24}$"
            },
            "required": true,
            "description": " The order item's unique identifier"
          }
        ],
        "responses": {
          "200": {
            "description": "Confirmation with the deleted item's ID",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "id"
                  ]
                }
              }
            }
          }
        },
        "x-permission": "order.delete"
      }
    },
    "/v1/orders/by-external/{source}/{externalId}/jobs": {
      "get": {
        "summary": "Get print jobs for an external order",
        "tags": [
          "Orders"
        ],
        "parameters": [
          {
            "name": "source",
            "in": "path",
            "schema": {
              "oneOf": [
                {
                  "const": "etsy"
                },
                {
                  "const": "shopify"
                },
                {
                  "const": "manual"
                },
                {
                  "const": "ebay"
                },
                {
                  "const": "tiktok-shop"
                },
                {
                  "const": "woocommerce"
                },
                {
                  "const": "shipstation"
                }
              ]
            },
            "required": true,
            "description": " The order source (e.g., 'shopify', 'etsy')"
          },
          {
            "name": "externalId",
            "in": "path",
            "schema": {
              "type": "string"
            },
            "required": true,
            "description": " The external order ID from the source system"
          }
        ],
        "responses": {
          "200": {
            "description": "List of print jobs associated with the order",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "orderId": {
                      "type": "string",
                      "pattern": "^[a-z0-9]{24}$"
                    },
                    "jobs": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/PrintJob"
                      }
                    }
                  },
                  "required": [
                    "orderId",
                    "jobs"
                  ]
                }
              }
            }
          }
        },
        "x-permission": "order.view"
      }
    },
    "/v1/orders/{orderId}/items": {
      "get": {
        "summary": "Get items for a specific order",
        "tags": [
          "Order_Items"
        ],
        "parameters": [
          {
            "name": "orderId",
            "in": "path",
            "schema": {
              "type": "string",
              "pattern": "^[a-z0-9]{24}$"
            },
            "required": true,
            "description": " The order's unique identifier"
          }
        ],
        "responses": {
          "200": {
            "description": "List of items belonging to the order",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/OrderItem"
                  }
                }
              }
            }
          }
        },
        "x-permission": "order.view"
      },
      "post": {
        "summary": "Add items to an order",
        "tags": [
          "Order_Items"
        ],
        "parameters": [
          {
            "name": "orderId",
            "in": "path",
            "schema": {
              "type": "string",
              "pattern": "^[a-z0-9]{24}$"
            },
            "required": true,
            "description": " The order's unique identifier"
          }
        ],
        "requestBody": {
          "description": "Array of items to add to the order",
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/OmitOrderItemInsertorderId"
                }
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "List of created order items",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/OrderItem"
                  }
                }
              }
            }
          }
        },
        "x-permission": "order.edit"
      }
    },
    "/v1/orders/{orderId}/items/batch": {
      "patch": {
        "summary": "Batch update order items",
        "tags": [
          "Order_Items"
        ],
        "parameters": [
          {
            "name": "orderId",
            "in": "path",
            "schema": {
              "type": "string",
              "pattern": "^[a-z0-9]{24}$"
            },
            "required": true,
            "description": " The order's unique identifier"
          }
        ],
        "requestBody": {
          "description": "Array of item updates with item IDs and changes",
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "itemId": {
                      "type": "string",
                      "pattern": "^[a-z0-9]{24}$"
                    },
                    "changes": {
                      "$ref": "#/components/schemas/PartialOrderItemUpdate"
                    }
                  },
                  "required": [
                    "itemId",
                    "changes"
                  ]
                }
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "List of updated order items",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/OrderItem"
                  }
                }
              }
            }
          }
        },
        "x-permission": "order.edit"
      }
    },
    "/v1/orders/{orderId}/only": {
      "get": {
        "summary": "Get order without related data",
        "tags": [
          "Orders"
        ],
        "parameters": [
          {
            "name": "orderId",
            "in": "path",
            "schema": {
              "type": "string",
              "pattern": "^[a-z0-9]{24}$"
            },
            "required": true,
            "description": " The order's unique identifier"
          }
        ],
        "responses": {
          "200": {
            "description": "Order information without items or customer data",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Order"
                }
              }
            }
          }
        },
        "x-permission": "order.view"
      }
    },
    "/v1/orders/{orderId}": {
      "get": {
        "summary": "Get order with full details",
        "tags": [
          "Orders"
        ],
        "parameters": [
          {
            "name": "orderId",
            "in": "path",
            "schema": {
              "type": "string",
              "pattern": "^[a-z0-9]{24}$"
            },
            "required": true,
            "description": " The order's unique identifier"
          }
        ],
        "responses": {
          "200": {
            "description": "Complete order information including customer and items",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OrderDetailsResponse"
                }
              }
            }
          }
        },
        "x-permission": "order.view"
      },
      "put": {
        "summary": "Update an order",
        "tags": [
          "Orders"
        ],
        "parameters": [
          {
            "name": "orderId",
            "in": "path",
            "schema": {
              "type": "string",
              "pattern": "^[a-z0-9]{24}$"
            },
            "required": true,
            "description": " The order's unique identifier"
          }
        ],
        "requestBody": {
          "description": "Fields to update on the order",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PartialOrder"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Updated order information",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Order"
                }
              }
            }
          }
        },
        "x-permission": "order.edit"
      },
      "delete": {
        "summary": "Delete an order",
        "tags": [
          "Orders"
        ],
        "parameters": [
          {
            "name": "orderId",
            "in": "path",
            "schema": {
              "type": "string",
              "pattern": "^[a-z0-9]{24}$"
            },
            "required": true,
            "description": " The order's unique identifier"
          }
        ],
        "responses": {
          "200": {
            "description": "Confirmation with the deleted order's ID",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "id"
                  ]
                }
              }
            }
          }
        },
        "x-permission": "order.delete"
      }
    },
    "/v1/orders/{orderId}/cancel": {
      "post": {
        "summary": "Cancel an order",
        "tags": [
          "Orders"
        ],
        "parameters": [
          {
            "name": "orderId",
            "in": "path",
            "schema": {
              "type": "string",
              "pattern": "^[a-z0-9]{24}$"
            },
            "required": true,
            "description": " The order's unique identifier"
          }
        ],
        "responses": {
          "201": {
            "description": "Cancelled order with updated items",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OrderDetailsResponse"
                }
              }
            }
          }
        },
        "x-permission": "order.edit"
      }
    },
    "/v1/orders/search": {
      "post": {
        "summary": "Search orders",
        "description": "Advanced search for orders",
        "tags": [
          "Orders"
        ],
        "operationId": "orders_search",
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SearchQueryDtoOrder"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Search results with orders",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SearchResponse"
                }
              }
            }
          }
        },
        "x-permission": "order.view"
      }
    },
    "/v1/order-items": {
      "get": {
        "summary": "Get all order items",
        "description": "List all order items across all orders in the store",
        "tags": [
          "Order_Items"
        ],
        "operationId": "orderItems_getAll",
        "parameters": [
          {
            "name": "orderId",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "skuId",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "source",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "quantity",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "inputs",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "status",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "externalId",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "externalOrderId",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "externalProductId",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "externalSku",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "originalSku",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false,
            "description": "Original SKU identifier sent when creating the order item (sku or externalSku), null if skuId was provided directly"
          },
          {
            "name": "processedAt",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "ignored",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "processedStatus",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "skuConfig",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "resolutionNote",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false,
            "description": "Describes why SKU or variant resolution failed, null when resolved successfully"
          },
          {
            "name": "customMetadata",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "id",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "storeId",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "createdAt",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "updatedAt",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false,
            "title": "Sort"
          },
          {
            "name": "limit",
            "in": "query",
            "schema": {
              "type": "number",
              "minimum": 1,
              "maximum": 1000
            },
            "required": false,
            "title": "Limit"
          },
          {
            "name": "offset",
            "in": "query",
            "schema": {
              "type": "number",
              "minimum": 0
            },
            "required": false,
            "title": "Offset"
          },
          {
            "name": "fields",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false,
            "title": "Fields"
          },
          {
            "name": "include",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false,
            "title": "Include"
          },
          {
            "name": "meta",
            "in": "query",
            "schema": {
              "type": "boolean"
            },
            "required": false,
            "title": "Meta"
          },
          {
            "name": "hints",
            "in": "query",
            "schema": {
              "type": "boolean"
            },
            "required": false,
            "title": "Hints"
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "oneOf": [
                    {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/OrderItem"
                      }
                    },
                    {
                      "$ref": "#/components/schemas/SearchResponse"
                    }
                  ]
                }
              }
            }
          }
        },
        "x-permission": "order.view"
      }
    },
    "/v1/order-items/search": {
      "post": {
        "summary": "Search order items",
        "description": "Search order items with filters",
        "tags": [
          "Order_Items"
        ],
        "operationId": "orderItems_search",
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SearchQueryDtoOrderItem"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SearchResponse"
                }
              }
            }
          }
        },
        "x-permission": "order.view"
      }
    },
    "/v1/customers": {
      "get": {
        "summary": "Get all customers",
        "description": "List all customers associated with orders in the store",
        "tags": [
          "Customers"
        ],
        "operationId": "customers_getAll",
        "parameters": [
          {
            "name": "name",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "email",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "phone",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "countryCode",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "provinceCode",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "zipCode",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "externalId",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "source",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "customMetadata",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "id",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "storeId",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "createdAt",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "updatedAt",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false,
            "title": "Sort"
          },
          {
            "name": "limit",
            "in": "query",
            "schema": {
              "type": "number",
              "minimum": 1,
              "maximum": 1000
            },
            "required": false,
            "title": "Limit"
          },
          {
            "name": "offset",
            "in": "query",
            "schema": {
              "type": "number",
              "minimum": 0
            },
            "required": false,
            "title": "Offset"
          },
          {
            "name": "fields",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false,
            "title": "Fields"
          },
          {
            "name": "include",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false,
            "title": "Include"
          },
          {
            "name": "meta",
            "in": "query",
            "schema": {
              "type": "boolean"
            },
            "required": false,
            "title": "Meta"
          },
          {
            "name": "hints",
            "in": "query",
            "schema": {
              "type": "boolean"
            },
            "required": false,
            "title": "Hints"
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "oneOf": [
                    {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/Customer"
                      }
                    },
                    {
                      "$ref": "#/components/schemas/SearchResponse"
                    }
                  ]
                }
              }
            }
          }
        },
        "x-permission": "order.view"
      }
    },
    "/v1/customers/search": {
      "post": {
        "summary": "Search customers",
        "description": "Search customers with filters",
        "tags": [
          "Customers"
        ],
        "operationId": "customers_search",
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SearchQueryDtoCustomer"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SearchResponse"
                }
              }
            }
          }
        },
        "x-permission": "order.view"
      }
    },
    "/v1/ignored-skus": {
      "get": {
        "summary": "Get all ignored SKUs",
        "description": "List all ignored SKUs that should be skipped during order processing",
        "tags": [
          "Orders"
        ],
        "operationId": "ignoredSkus_getAll",
        "parameters": [
          {
            "name": "skus",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "id",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "storeId",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "createdAt",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "updatedAt",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false,
            "title": "Sort"
          },
          {
            "name": "limit",
            "in": "query",
            "schema": {
              "type": "number",
              "minimum": 1,
              "maximum": 1000
            },
            "required": false,
            "title": "Limit"
          },
          {
            "name": "offset",
            "in": "query",
            "schema": {
              "type": "number",
              "minimum": 0
            },
            "required": false,
            "title": "Offset"
          },
          {
            "name": "fields",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false,
            "title": "Fields"
          },
          {
            "name": "include",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false,
            "title": "Include"
          },
          {
            "name": "meta",
            "in": "query",
            "schema": {
              "type": "boolean"
            },
            "required": false,
            "title": "Meta"
          },
          {
            "name": "hints",
            "in": "query",
            "schema": {
              "type": "boolean"
            },
            "required": false,
            "title": "Hints"
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "oneOf": [
                    {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/IgnoredSku"
                      }
                    },
                    {
                      "$ref": "#/components/schemas/SearchResponse"
                    }
                  ]
                }
              }
            }
          }
        },
        "x-permission": "order.view"
      }
    },
    "/v1/ignored-skus/search": {
      "post": {
        "summary": "Search ignored SKUs",
        "description": "Search ignored SKUs with filters",
        "tags": [
          "Orders"
        ],
        "operationId": "ignoredSkus_search",
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SearchQueryDtoIgnoredSku"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SearchResponse"
                }
              }
            }
          }
        },
        "x-permission": "order.view"
      }
    },
    "/v1/customizer/designs/simulate-order": {
      "post": {
        "summary": "Simulate a customer order for a customizer design",
        "description": "Synthesise a real Order + OrderItem from an already-submitted\ncustomizer design, skipping Shopify entirely. The created order\nis `source: 'manual'` with a `note` line identifying it as a\nsimulator artefact. The print pipeline is force-triggered\nregardless of the store's autoPrint setting so the full chain\n(design → reconciliation → PrintJob → builder) runs end-to-end.",
        "tags": [
          "Customizer"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "designId": {
                    "type": "string",
                    "pattern": "^[a-z0-9]{24}$"
                  },
                  "configId": {
                    "type": "string",
                    "pattern": "^[a-z0-9]{24}$"
                  },
                  "skuId": {
                    "type": "string",
                    "pattern": "^[a-z0-9]{24}$"
                  },
                  "quantity": {
                    "type": "number"
                  }
                },
                "required": [
                  "designId"
                ]
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "orderId": {
                      "type": "string",
                      "pattern": "^[a-z0-9]{24}$"
                    },
                    "orderItemId": {
                      "type": "string",
                      "pattern": "^[a-z0-9]{24}$"
                    },
                    "orderNumber": {
                      "type": "string"
                    },
                    "designId": {
                      "type": "string",
                      "pattern": "^[a-z0-9]{24}$"
                    }
                  },
                  "required": [
                    "orderId",
                    "orderItemId",
                    "orderNumber",
                    "designId"
                  ]
                }
              }
            }
          }
        },
        "x-permission": "customizer.manage"
      }
    },
    "/v1/integrations/shopify": {
      "get": {
        "summary": "List Shopify integrations",
        "description": "List all connected Shopify stores for a store",
        "tags": [
          "Shopify"
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "Array of connected Shopify stores",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "integrationId": {
                        "type": "string"
                      },
                      "shop": {
                        "type": "string"
                      },
                      "shopName": {
                        "type": "string"
                      },
                      "connectedAt": {
                        "type": "string",
                        "format": "date-time"
                      }
                    },
                    "required": [
                      "integrationId",
                      "shop",
                      "shopName",
                      "connectedAt"
                    ]
                  }
                }
              }
            }
          }
        },
        "x-permission": "integration.view"
      }
    },
    "/v1/integrations/shopify/products": {
      "get": {
        "summary": "List Shopify products",
        "description": "List Shopify products and their variants for the store's connected Shopify integration.\nSupports optional text search and cursor-based pagination.\nUses the first connected Shopify integration if the store has multiple.\nReturns 404 if no Shopify integration is connected.",
        "tags": [
          "Shopify"
        ],
        "parameters": [
          {
            "name": "search",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": " Optional text filter (matches product title, vendor, etc.)",
            "required": true
          },
          {
            "name": "limit",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": true
          },
          {
            "name": "pageInfo",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": " Opaque pagination cursor from a previous response's endCursor",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "Paginated list of products with variant details",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "items": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "productId": {
                            "type": "string"
                          },
                          "title": {
                            "type": "string"
                          },
                          "handle": {
                            "type": "string"
                          },
                          "status": {
                            "type": "string"
                          },
                          "variants": {
                            "type": "array",
                            "items": {
                              "type": "object",
                              "properties": {
                                "id": {
                                  "type": "string"
                                },
                                "title": {
                                  "type": "string"
                                },
                                "sku": {
                                  "oneOf": [
                                    {
                                      "type": "null"
                                    },
                                    {
                                      "type": "string"
                                    }
                                  ]
                                },
                                "price": {
                                  "type": "string"
                                }
                              },
                              "required": [
                                "id",
                                "title",
                                "sku",
                                "price"
                              ]
                            }
                          }
                        },
                        "required": [
                          "productId",
                          "title",
                          "handle",
                          "status",
                          "variants"
                        ]
                      }
                    },
                    "pageInfo": {
                      "type": "object",
                      "properties": {
                        "hasNextPage": {
                          "type": "boolean"
                        },
                        "endCursor": {
                          "oneOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        }
                      },
                      "required": [
                        "hasNextPage",
                        "endCursor"
                      ]
                    }
                  },
                  "required": [
                    "items",
                    "pageInfo"
                  ]
                }
              }
            }
          }
        },
        "x-permission": "integration.view"
      }
    },
    "/v1/integrations/shopify/{integrationId}/status": {
      "get": {
        "summary": "Get Shopify status",
        "description": "Get Shopify integration status",
        "tags": [
          "Shopify"
        ],
        "parameters": [
          {
            "name": "integrationId",
            "in": "path",
            "schema": {
              "type": "string"
            },
            "required": true,
            "description": " The Shopify integration ID"
          }
        ],
        "responses": {
          "200": {
            "description": "Integration status",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "connected": {
                      "type": "boolean"
                    },
                    "shop": {
                      "type": "string"
                    },
                    "connectedAt": {
                      "type": "string",
                      "format": "date-time"
                    },
                    "lastSyncedAt": {
                      "type": "string",
                      "format": "date-time"
                    }
                  },
                  "required": [
                    "connected"
                  ]
                }
              }
            }
          }
        },
        "x-permission": "integration.view"
      }
    },
    "/v1/integrations/shopify/{integrationId}/settings": {
      "get": {
        "summary": "Get Shopify settings",
        "description": "Get Shopify integration settings",
        "tags": [
          "Shopify"
        ],
        "parameters": [
          {
            "name": "integrationId",
            "in": "path",
            "schema": {
              "type": "string"
            },
            "required": true,
            "description": " The Shopify integration ID"
          }
        ],
        "responses": {
          "200": {
            "description": "Integration settings",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "autoPrint": {
                      "type": "boolean"
                    },
                    "writeProgressTags": {
                      "type": "boolean"
                    },
                    "autoCloseOrders": {
                      "oneOf": [
                        {
                          "const": "partial"
                        },
                        {
                          "const": "never"
                        },
                        {
                          "const": "fulfilled"
                        }
                      ]
                    },
                    "tagWhenPrinted": {
                      "type": "string"
                    },
                    "propertyWhitelist": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    },
                    "ignoredVariantNames": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    }
                  },
                  "required": [
                    "autoPrint",
                    "writeProgressTags",
                    "autoCloseOrders",
                    "tagWhenPrinted",
                    "propertyWhitelist",
                    "ignoredVariantNames"
                  ]
                }
              }
            }
          }
        },
        "x-permission": "integration.view"
      },
      "patch": {
        "summary": "Update Shopify settings",
        "description": "Update Shopify integration settings",
        "tags": [
          "Shopify"
        ],
        "parameters": [
          {
            "name": "integrationId",
            "in": "path",
            "schema": {
              "type": "string"
            },
            "required": true,
            "description": " The Shopify integration ID"
          }
        ],
        "requestBody": {
          "description": "Settings to update",
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "autoPrint": {
                    "type": "boolean"
                  },
                  "writeProgressTags": {
                    "type": "boolean"
                  },
                  "autoCloseOrders": {
                    "oneOf": [
                      {
                        "const": "partial"
                      },
                      {
                        "const": "never"
                      },
                      {
                        "const": "fulfilled"
                      }
                    ]
                  },
                  "tagWhenPrinted": {
                    "type": "string"
                  },
                  "propertyWhitelist": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "ignoredVariantNames": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Updated settings",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "autoPrint": {
                      "type": "boolean"
                    },
                    "writeProgressTags": {
                      "type": "boolean"
                    },
                    "autoCloseOrders": {
                      "oneOf": [
                        {
                          "const": "partial"
                        },
                        {
                          "const": "never"
                        },
                        {
                          "const": "fulfilled"
                        }
                      ]
                    },
                    "tagWhenPrinted": {
                      "type": "string"
                    },
                    "propertyWhitelist": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    },
                    "ignoredVariantNames": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    }
                  },
                  "required": [
                    "autoPrint",
                    "writeProgressTags",
                    "autoCloseOrders",
                    "tagWhenPrinted",
                    "propertyWhitelist",
                    "ignoredVariantNames"
                  ]
                }
              }
            }
          }
        },
        "x-permission": "integration.manage"
      }
    },
    "/v1/integrations/shopify/{integrationId}/disconnect": {
      "post": {
        "summary": "Disconnect Shopify",
        "description": "Disconnect Shopify integration",
        "tags": [
          "Shopify"
        ],
        "parameters": [
          {
            "name": "integrationId",
            "in": "path",
            "schema": {
              "type": "string"
            },
            "required": true,
            "description": " The Shopify integration ID"
          }
        ],
        "responses": {
          "201": {
            "description": "Success message",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "message"
                  ]
                }
              }
            }
          }
        },
        "x-permission": "integration.manage"
      }
    },
    "/v1/integrations/shopify/orders/{orderId}/retry-variant-enrichment": {
      "post": {
        "summary": "Retry variant enrichment",
        "description": "Retry fetching variant options from Shopify for order items\nthat failed during initial webhook processing.",
        "tags": [
          "Shopify"
        ],
        "parameters": [
          {
            "name": "orderId",
            "in": "path",
            "schema": {
              "type": "string"
            },
            "required": true,
            "description": " The Printago order ID"
          }
        ],
        "responses": {
          "201": {
            "description": "Count of updated and failed items",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "updated": {
                      "type": "number"
                    },
                    "failed": {
                      "type": "number"
                    }
                  },
                  "required": [
                    "updated",
                    "failed"
                  ]
                }
              }
            }
          }
        },
        "x-permission": "order.edit"
      }
    },
    "/v1/customizer/configs/{configId}/shopify-publication": {
      "get": {
        "summary": "Get customizer Shopify publication state",
        "description": "Current Shopify publishing state for a config: the publication row (if\nany), the connected integration, discovered product candidates matching\nthe config's SKU, and ready-to-use storefront / theme-editor URLs.",
        "tags": [
          "Customizer"
        ],
        "parameters": [
          {
            "name": "configId",
            "in": "path",
            "schema": {
              "type": "string",
              "pattern": "^[a-z0-9]{24}$"
            },
            "required": true,
            "description": " The customizer config ID"
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomizerPublicationState"
                }
              }
            }
          }
        },
        "x-permission": "customizer.manage"
      },
      "post": {
        "summary": "Publish customizer config to Shopify",
        "description": "Publish the config to Shopify. Embed mode writes the `printago.sku_id`\nmetafield on the chosen product (the only product write — listings are\nnever created or overwritten) so the theme app extension block renders\nthe customizer there. Direct mode exposes the app-proxy customizer URL\nas a standalone storefront page.",
        "tags": [
          "Customizer"
        ],
        "parameters": [
          {
            "name": "configId",
            "in": "path",
            "schema": {
              "type": "string",
              "pattern": "^[a-z0-9]{24}$"
            },
            "required": true,
            "description": " The customizer config ID"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CustomizerPublishBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomizerPublicationState"
                }
              }
            }
          }
        },
        "x-permission": "customizer.manage"
      },
      "delete": {
        "summary": "Unpublish customizer config from Shopify",
        "description": "Unpublish the config: best-effort removes the `printago.sku_id`\nmetafield (embed mode) and deletes the publication record.",
        "tags": [
          "Customizer"
        ],
        "parameters": [
          {
            "name": "configId",
            "in": "path",
            "schema": {
              "type": "string",
              "pattern": "^[a-z0-9]{24}$"
            },
            "required": true,
            "description": " The customizer config ID"
          }
        ],
        "responses": {
          "200": {
            "description": "Success. The response has no body."
          }
        },
        "x-permission": "customizer.manage"
      }
    },
    "/v1/integrations/etsy": {
      "get": {
        "summary": "List Etsy integrations",
        "description": "List all connected Etsy shops for a store",
        "tags": [
          "Etsy"
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "Array of connected Etsy shops",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "integrationId": {
                        "type": "string"
                      },
                      "shopId": {
                        "type": "string"
                      },
                      "shopName": {
                        "type": "string"
                      }
                    },
                    "required": [
                      "integrationId",
                      "shopId",
                      "shopName"
                    ]
                  }
                }
              }
            }
          }
        },
        "x-permission": "integration.view"
      }
    },
    "/v1/integrations/etsy/{integrationId}/sync-orders": {
      "post": {
        "summary": "Sync Etsy orders",
        "description": "Manually sync orders from Etsy",
        "tags": [
          "Etsy"
        ],
        "parameters": [
          {
            "name": "integrationId",
            "in": "path",
            "schema": {
              "type": "string"
            },
            "required": true,
            "description": " The Etsy integration ID"
          },
          {
            "name": "includeShipped",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": " Include shipped orders (for testing)",
            "required": true
          },
          {
            "name": "limit",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": " Number of orders to sync",
            "required": true
          }
        ],
        "responses": {
          "201": {
            "description": "Sync results",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "statusSync": {
                      "type": "object",
                      "properties": {
                        "closed": {
                          "type": "number"
                        },
                        "cancelled": {
                          "type": "number"
                        },
                        "errors": {
                          "type": "array",
                          "items": {
                            "type": "string"
                          }
                        }
                      },
                      "required": [
                        "closed",
                        "cancelled",
                        "errors"
                      ]
                    },
                    "orders": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/Order"
                      }
                    },
                    "totalSynced": {
                      "type": "number"
                    },
                    "totalAvailable": {
                      "type": "number"
                    },
                    "skipped": {
                      "type": "number"
                    },
                    "limitReached": {
                      "type": "boolean"
                    }
                  },
                  "required": [
                    "statusSync",
                    "orders",
                    "totalSynced",
                    "totalAvailable",
                    "skipped",
                    "limitReached"
                  ]
                }
              }
            }
          }
        },
        "x-permission": "integration.manage"
      }
    },
    "/v1/integrations/etsy/{integrationId}/status": {
      "get": {
        "summary": "Get Etsy status",
        "description": "Get Etsy integration status",
        "tags": [
          "Etsy"
        ],
        "parameters": [
          {
            "name": "integrationId",
            "in": "path",
            "schema": {
              "type": "string"
            },
            "required": true,
            "description": " The Etsy integration ID"
          }
        ],
        "responses": {
          "200": {
            "description": "Integration status",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "connected": {
                      "type": "boolean"
                    },
                    "shopId": {
                      "type": "string"
                    },
                    "shopName": {
                      "type": "string"
                    },
                    "shopUrl": {
                      "type": "string"
                    },
                    "lastSyncedAt": {
                      "type": "string",
                      "format": "date-time"
                    }
                  },
                  "required": [
                    "connected"
                  ]
                }
              }
            }
          }
        },
        "x-permission": "integration.view"
      }
    },
    "/v1/integrations/etsy/{integrationId}/settings": {
      "get": {
        "summary": "Get Etsy settings",
        "description": "Get Etsy integration settings",
        "tags": [
          "Etsy"
        ],
        "parameters": [
          {
            "name": "integrationId",
            "in": "path",
            "schema": {
              "type": "string"
            },
            "required": true,
            "description": " The Etsy integration ID"
          }
        ],
        "responses": {
          "200": {
            "description": "Integration settings",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "autoPrint": {
                      "type": "boolean"
                    },
                    "autoCloseOrders": {
                      "oneOf": [
                        {
                          "const": "shipped"
                        },
                        {
                          "const": "delivered"
                        },
                        {
                          "const": "never"
                        }
                      ]
                    },
                    "ignoredVariantNames": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    }
                  },
                  "required": [
                    "autoPrint",
                    "autoCloseOrders",
                    "ignoredVariantNames"
                  ]
                }
              }
            }
          }
        },
        "x-permission": "integration.view"
      },
      "patch": {
        "summary": "Update Etsy settings",
        "description": "Update Etsy integration settings",
        "tags": [
          "Etsy"
        ],
        "parameters": [
          {
            "name": "integrationId",
            "in": "path",
            "schema": {
              "type": "string"
            },
            "required": true,
            "description": " The Etsy integration ID"
          }
        ],
        "requestBody": {
          "description": "Settings to update",
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "autoPrint": {
                    "type": "boolean"
                  },
                  "autoCloseOrders": {
                    "oneOf": [
                      {
                        "const": "shipped"
                      },
                      {
                        "const": "delivered"
                      },
                      {
                        "const": "never"
                      }
                    ]
                  },
                  "ignoredVariantNames": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Updated settings",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "autoPrint": {
                      "type": "boolean"
                    },
                    "autoCloseOrders": {
                      "oneOf": [
                        {
                          "const": "shipped"
                        },
                        {
                          "const": "delivered"
                        },
                        {
                          "const": "never"
                        }
                      ]
                    },
                    "ignoredVariantNames": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    }
                  },
                  "required": [
                    "autoPrint",
                    "autoCloseOrders",
                    "ignoredVariantNames"
                  ]
                }
              }
            }
          }
        },
        "x-permission": "integration.manage"
      }
    },
    "/v1/integrations/etsy/{integrationId}/usage": {
      "get": {
        "summary": "Get Etsy usage stats",
        "description": "Get current usage statistics for the Etsy integration",
        "tags": [
          "Etsy"
        ],
        "parameters": [
          {
            "name": "integrationId",
            "in": "path",
            "schema": {
              "type": "string"
            },
            "required": true,
            "description": " The Etsy integration ID"
          }
        ],
        "responses": {
          "200": {
            "description": "Usage stats including tier, limits, and cycle dates",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UsageStats.o1"
                }
              }
            }
          }
        },
        "x-permission": "integration.view"
      }
    },
    "/v1/integrations/etsy/{integrationId}/listing/{listingId}": {
      "get": {
        "summary": "Get Etsy listing",
        "description": "Fetch a single listing with inventory",
        "tags": [
          "Etsy"
        ],
        "parameters": [
          {
            "name": "integrationId",
            "in": "path",
            "schema": {
              "type": "string"
            },
            "required": true,
            "description": " The Etsy integration ID"
          },
          {
            "name": "listingId",
            "in": "path",
            "schema": {
              "type": "string"
            },
            "required": true,
            "description": " The Etsy listing ID"
          }
        ],
        "responses": {
          "200": {
            "description": "Single listing with inventory details",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          }
        },
        "x-permission": "integration.view"
      }
    },
    "/v1/integrations/ebay": {
      "get": {
        "summary": "List eBay integrations",
        "description": "List all connected eBay accounts for a store",
        "tags": [
          "eBay"
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "Array of connected eBay accounts",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "integrationId": {
                        "type": "string"
                      },
                      "sellerId": {
                        "type": "string"
                      },
                      "username": {
                        "type": "string"
                      },
                      "marketplaceId": {
                        "type": "string"
                      }
                    },
                    "required": [
                      "integrationId",
                      "sellerId",
                      "username",
                      "marketplaceId"
                    ]
                  }
                }
              }
            }
          }
        },
        "x-permission": "integration.view"
      }
    },
    "/v1/integrations/ebay/{integrationId}/sync-orders": {
      "post": {
        "summary": "Sync eBay orders",
        "description": "Manually sync orders from eBay",
        "tags": [
          "eBay"
        ],
        "parameters": [
          {
            "name": "integrationId",
            "in": "path",
            "schema": {
              "type": "string"
            },
            "required": true,
            "description": " The eBay integration ID"
          },
          {
            "name": "includeShipped",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": " Include shipped orders (for testing)",
            "required": true
          },
          {
            "name": "limit",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": " Number of orders to sync",
            "required": true
          }
        ],
        "responses": {
          "201": {
            "description": "Sync results",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "orders": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/Order"
                      }
                    },
                    "totalSynced": {
                      "type": "number"
                    },
                    "totalAvailable": {
                      "type": "number"
                    },
                    "skipped": {
                      "type": "number"
                    }
                  },
                  "required": [
                    "orders",
                    "totalSynced",
                    "totalAvailable",
                    "skipped"
                  ]
                }
              }
            }
          }
        },
        "x-permission": "integration.manage"
      }
    },
    "/v1/integrations/ebay/{integrationId}/status": {
      "get": {
        "summary": "Get eBay status",
        "description": "Get eBay integration status",
        "tags": [
          "eBay"
        ],
        "parameters": [
          {
            "name": "integrationId",
            "in": "path",
            "schema": {
              "type": "string"
            },
            "required": true,
            "description": " The eBay integration ID"
          }
        ],
        "responses": {
          "200": {
            "description": "Integration status",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "connected": {
                      "type": "boolean"
                    },
                    "sellerId": {
                      "type": "string"
                    },
                    "username": {
                      "type": "string"
                    },
                    "marketplaceId": {
                      "type": "string"
                    },
                    "lastSyncedAt": {
                      "type": "number"
                    }
                  },
                  "required": [
                    "connected"
                  ]
                }
              }
            }
          }
        },
        "x-permission": "integration.view"
      }
    },
    "/v1/integrations/ebay/{integrationId}/settings": {
      "get": {
        "summary": "Get eBay settings",
        "description": "Get eBay integration settings",
        "tags": [
          "eBay"
        ],
        "parameters": [
          {
            "name": "integrationId",
            "in": "path",
            "schema": {
              "type": "string"
            },
            "required": true,
            "description": " The eBay integration ID"
          }
        ],
        "responses": {
          "200": {
            "description": "Integration settings",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EbaySettings"
                }
              }
            }
          }
        },
        "x-permission": "integration.view"
      },
      "patch": {
        "summary": "Update eBay settings",
        "description": "Update eBay integration settings",
        "tags": [
          "eBay"
        ],
        "parameters": [
          {
            "name": "integrationId",
            "in": "path",
            "schema": {
              "type": "string"
            },
            "required": true,
            "description": " The eBay integration ID"
          }
        ],
        "requestBody": {
          "description": "Settings to update",
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "autoPrint": {
                    "type": "boolean"
                  },
                  "autoCloseOrders": {
                    "oneOf": [
                      {
                        "const": "shipped"
                      },
                      {
                        "const": "never"
                      }
                    ]
                  }
                }
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Updated settings",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EbaySettings"
                }
              }
            }
          }
        },
        "x-permission": "integration.manage"
      }
    },
    "/v1/integrations/ebay/{integrationId}/orders/{ebayOrderId}/fulfillments": {
      "post": {
        "summary": "Create eBay shipping fulfillment",
        "description": "Mark an eBay order as shipped by pushing tracking info back to eBay.",
        "tags": [
          "eBay"
        ],
        "parameters": [
          {
            "name": "integrationId",
            "in": "path",
            "schema": {
              "type": "string"
            },
            "required": true,
            "description": " The eBay integration ID"
          },
          {
            "name": "ebayOrderId",
            "in": "path",
            "schema": {
              "type": "string"
            },
            "required": true,
            "description": " The eBay order ID"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "trackingNumber": {
                    "type": "string"
                  },
                  "shippingCarrierCode": {
                    "type": "string"
                  },
                  "shippedDate": {
                    "type": "string"
                  },
                  "lineItems": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "lineItemId": {
                          "type": "string"
                        },
                        "quantity": {
                          "type": "number"
                        }
                      },
                      "required": [
                        "lineItemId",
                        "quantity"
                      ]
                    }
                  }
                },
                "required": [
                  "trackingNumber",
                  "shippingCarrierCode"
                ]
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "fulfillmentId": {
                      "oneOf": [
                        {
                          "type": "null"
                        },
                        {
                          "type": "string"
                        }
                      ]
                    }
                  },
                  "required": [
                    "fulfillmentId"
                  ]
                }
              }
            }
          }
        },
        "x-permission": "integration.manage"
      }
    },
    "/v1/integrations/tiktok-shop": {
      "get": {
        "summary": "List TikTok Shop integrations",
        "description": "List all connected TikTok Shop accounts for a store",
        "tags": [
          "TikTok"
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "Array of connected TikTok Shop accounts",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "integrationId": {
                        "type": "string"
                      },
                      "shopId": {
                        "type": "string"
                      },
                      "shopName": {
                        "type": "string"
                      },
                      "region": {
                        "type": "string"
                      }
                    },
                    "required": [
                      "integrationId",
                      "shopId",
                      "shopName",
                      "region"
                    ]
                  }
                }
              }
            }
          }
        },
        "x-permission": "integration.view"
      }
    },
    "/v1/integrations/tiktok-shop/{integrationId}/sync-orders": {
      "post": {
        "summary": "Sync TikTok Shop orders",
        "description": "Manually sync orders from TikTok Shop",
        "tags": [
          "TikTok"
        ],
        "parameters": [
          {
            "name": "integrationId",
            "in": "path",
            "schema": {
              "type": "string"
            },
            "required": true,
            "description": " The TikTok Shop integration ID"
          }
        ],
        "requestBody": {
          "description": "Sync options — `daysBack`, `statusGroups`, and `limit`",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TikTokShopSyncOrdersRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Sync results",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TikTokShopSyncOrdersResult"
                }
              }
            }
          }
        },
        "x-permission": "integration.manage"
      }
    },
    "/v1/integrations/tiktok-shop/{integrationId}/status": {
      "get": {
        "summary": "Get TikTok Shop status",
        "description": "Get TikTok Shop integration status",
        "tags": [
          "TikTok"
        ],
        "parameters": [
          {
            "name": "integrationId",
            "in": "path",
            "schema": {
              "type": "string"
            },
            "required": true,
            "description": " The TikTok Shop integration ID"
          }
        ],
        "responses": {
          "200": {
            "description": "Integration status",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "connected": {
                      "type": "boolean"
                    },
                    "shopId": {
                      "type": "string"
                    },
                    "shopName": {
                      "type": "string"
                    },
                    "region": {
                      "type": "string"
                    },
                    "lastSyncedAt": {
                      "type": "number"
                    },
                    "needsReauth": {
                      "type": "boolean",
                      "title": "True once the seller deauthorized the app; UI prompts a reconnect",
                      "description": "True once the seller deauthorized the app; UI prompts a reconnect."
                    },
                    "disconnectedAt": {
                      "type": "number"
                    }
                  },
                  "required": [
                    "connected"
                  ]
                }
              }
            }
          }
        },
        "x-permission": "integration.view"
      }
    },
    "/v1/integrations/tiktok-shop/{integrationId}/settings": {
      "get": {
        "summary": "Get TikTok Shop settings",
        "description": "Get TikTok Shop integration settings",
        "tags": [
          "TikTok"
        ],
        "parameters": [
          {
            "name": "integrationId",
            "in": "path",
            "schema": {
              "type": "string"
            },
            "required": true,
            "description": " The TikTok Shop integration ID"
          }
        ],
        "responses": {
          "200": {
            "description": "Integration settings",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TikTokShopSettings"
                }
              }
            }
          }
        },
        "x-permission": "integration.view"
      },
      "patch": {
        "summary": "Update TikTok Shop settings",
        "description": "Update TikTok Shop integration settings",
        "tags": [
          "TikTok"
        ],
        "parameters": [
          {
            "name": "integrationId",
            "in": "path",
            "schema": {
              "type": "string"
            },
            "required": true,
            "description": " The TikTok Shop integration ID"
          }
        ],
        "requestBody": {
          "description": "Settings to update",
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "autoPrint": {
                    "type": "boolean"
                  },
                  "autoCloseOrders": {
                    "oneOf": [
                      {
                        "const": "shipped"
                      },
                      {
                        "const": "delivered"
                      },
                      {
                        "const": "never"
                      }
                    ]
                  }
                }
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Updated settings",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TikTokShopSettings"
                }
              }
            }
          }
        },
        "x-permission": "integration.manage"
      }
    },
    "/v1/integrations/woocommerce": {
      "get": {
        "summary": "List WooCommerce integrations",
        "description": "List all connected WooCommerce stores for a store",
        "tags": [
          "WooCommerce"
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "Array of connected WooCommerce stores",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "integrationId": {
                        "type": "string"
                      },
                      "storeUrl": {
                        "type": "string"
                      },
                      "storeName": {
                        "type": "string"
                      }
                    },
                    "required": [
                      "integrationId",
                      "storeUrl",
                      "storeName"
                    ]
                  }
                }
              }
            }
          }
        },
        "x-permission": "integration.view"
      }
    },
    "/v1/integrations/woocommerce/{integrationId}/sync-orders": {
      "post": {
        "summary": "Sync WooCommerce orders",
        "description": "Manually sync orders from WooCommerce",
        "tags": [
          "WooCommerce"
        ],
        "parameters": [
          {
            "name": "integrationId",
            "in": "path",
            "schema": {
              "type": "string"
            },
            "required": true,
            "description": " The WooCommerce integration ID"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "daysBack": {
                    "type": "number"
                  },
                  "statuses": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "limit": {
                    "type": "number"
                  }
                }
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Sync results",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WooCommerceSyncOrdersResult"
                }
              }
            }
          }
        },
        "x-permission": "integration.manage"
      }
    },
    "/v1/integrations/woocommerce/{integrationId}/status": {
      "get": {
        "summary": "Get WooCommerce status",
        "description": "Get WooCommerce integration status",
        "tags": [
          "WooCommerce"
        ],
        "parameters": [
          {
            "name": "integrationId",
            "in": "path",
            "schema": {
              "type": "string"
            },
            "required": true,
            "description": " The WooCommerce integration ID"
          }
        ],
        "responses": {
          "200": {
            "description": "Integration status",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "connected": {
                      "type": "boolean"
                    },
                    "storeUrl": {
                      "type": "string"
                    },
                    "storeName": {
                      "type": "string"
                    },
                    "lastSyncedAt": {
                      "type": "number"
                    },
                    "lastWebhookAt": {
                      "type": "number"
                    },
                    "webhookSetupError": {
                      "oneOf": [
                        {
                          "type": "null"
                        },
                        {
                          "type": "string"
                        }
                      ]
                    },
                    "pollingIntervalMinutes": {
                      "type": "number",
                      "title": "Cadence of the polling backstop, for the webhook-health UI line",
                      "description": "Cadence of the polling backstop, for the webhook-health UI line."
                    }
                  },
                  "required": [
                    "connected"
                  ]
                }
              }
            }
          }
        },
        "x-permission": "integration.view"
      }
    },
    "/v1/integrations/woocommerce/{integrationId}/settings": {
      "get": {
        "summary": "Get WooCommerce settings",
        "description": "Get WooCommerce integration settings",
        "tags": [
          "WooCommerce"
        ],
        "parameters": [
          {
            "name": "integrationId",
            "in": "path",
            "schema": {
              "type": "string"
            },
            "required": true,
            "description": " The WooCommerce integration ID"
          }
        ],
        "responses": {
          "200": {
            "description": "Integration settings",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WooCommerceSettings"
                }
              }
            }
          }
        },
        "x-permission": "integration.view"
      },
      "patch": {
        "summary": "Update WooCommerce settings",
        "description": "Update WooCommerce integration settings",
        "tags": [
          "WooCommerce"
        ],
        "parameters": [
          {
            "name": "integrationId",
            "in": "path",
            "schema": {
              "type": "string"
            },
            "required": true,
            "description": " The WooCommerce integration ID"
          }
        ],
        "requestBody": {
          "description": "Settings to update",
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "autoPrint": {
                    "type": "boolean"
                  },
                  "autoCloseOrders": {
                    "oneOf": [
                      {
                        "const": "never"
                      },
                      {
                        "const": "completed"
                      }
                    ]
                  },
                  "ignoredVariantNames": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Updated settings",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WooCommerceSettings"
                }
              }
            }
          }
        },
        "x-permission": "integration.manage"
      }
    },
    "/v1/integrations/shipstation": {
      "get": {
        "summary": "List ShipStation integrations",
        "description": "List connected ShipStation accounts for a store.",
        "tags": [
          "ShipStation"
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "Connected ShipStation accounts and their stores",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "integrationId": {
                        "type": "string"
                      },
                      "accountName": {
                        "type": "string"
                      },
                      "stores": {
                        "type": "array",
                        "items": {
                          "$ref": "#/components/schemas/ShipStationStore"
                        }
                      },
                      "lastSyncedAt": {
                        "type": "number"
                      },
                      "authError": {
                        "oneOf": [
                          {
                            "type": "null"
                          },
                          {
                            "type": "string"
                          }
                        ]
                      }
                    },
                    "required": [
                      "integrationId",
                      "accountName",
                      "stores"
                    ]
                  }
                }
              }
            }
          }
        },
        "x-permission": "integration.view"
      }
    },
    "/v1/integrations/shipstation/test-connection": {
      "post": {
        "summary": "Test a ShipStation connection",
        "description": "Check an API key and secret and list the stores it can see, without\nconnecting anything. Step two of the guided connect.",
        "tags": [
          "ShipStation"
        ],
        "parameters": [],
        "requestBody": {
          "description": "ShipStation API key and secret",
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "apiKey": {
                    "type": "string"
                  },
                  "apiSecret": {
                    "type": "string"
                  }
                },
                "required": [
                  "apiKey",
                  "apiSecret"
                ]
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "The account name and its stores",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "accountName": {
                      "type": "string"
                    },
                    "stores": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/ShipStationStore"
                      }
                    }
                  },
                  "required": [
                    "accountName",
                    "stores"
                  ]
                }
              }
            }
          }
        },
        "x-permission": "integration.manage"
      }
    },
    "/v1/integrations/shipstation/connect": {
      "post": {
        "summary": "Connect ShipStation",
        "description": "Connect a ShipStation account and begin importing from the chosen stores.",
        "tags": [
          "ShipStation"
        ],
        "parameters": [],
        "requestBody": {
          "description": "Credentials plus the stores to leave out and the initial settings",
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "apiKey": {
                    "type": "string"
                  },
                  "apiSecret": {
                    "type": "string"
                  },
                  "excludedStoreIds": {
                    "type": "array",
                    "items": {
                      "type": "number"
                    }
                  },
                  "autoPrint": {
                    "type": "boolean"
                  },
                  "autoCloseOrders": {
                    "oneOf": [
                      {
                        "const": "shipped"
                      },
                      {
                        "const": "never"
                      }
                    ]
                  },
                  "showMarketplace": {
                    "type": "boolean"
                  }
                },
                "required": [
                  "apiKey",
                  "apiSecret"
                ]
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "The created integration",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Integration"
                }
              }
            }
          }
        },
        "x-permission": "integration.manage"
      }
    },
    "/v1/integrations/shipstation/{integrationId}/stores": {
      "get": {
        "summary": "List ShipStation stores",
        "description": "List the seller's ShipStation stores, refreshed from ShipStation, with\nwhether each one is currently imported.",
        "tags": [
          "ShipStation"
        ],
        "parameters": [
          {
            "name": "integrationId",
            "in": "path",
            "schema": {
              "type": "string"
            },
            "required": true,
            "description": " The ShipStation integration ID"
          }
        ],
        "responses": {
          "200": {
            "description": "Stores and their import state",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ShipStationStoreimportedboolean"
                  }
                }
              }
            }
          }
        },
        "x-permission": "integration.view"
      },
      "patch": {
        "summary": "Update ShipStation store selection",
        "description": "Choose which ShipStation stores to import from.",
        "tags": [
          "ShipStation"
        ],
        "parameters": [
          {
            "name": "integrationId",
            "in": "path",
            "schema": {
              "type": "string"
            },
            "required": true,
            "description": " The ShipStation integration ID"
          }
        ],
        "requestBody": {
          "description": "The ShipStation store ids to stop importing",
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "excludedStoreIds": {
                    "type": "array",
                    "items": {
                      "type": "number"
                    }
                  }
                },
                "required": [
                  "excludedStoreIds"
                ]
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Updated settings",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ShipStationSettings"
                }
              }
            }
          }
        },
        "x-permission": "integration.manage"
      }
    },
    "/v1/integrations/shipstation/{integrationId}/status": {
      "get": {
        "summary": "Get ShipStation status",
        "description": "Get ShipStation integration status.",
        "tags": [
          "ShipStation"
        ],
        "parameters": [
          {
            "name": "integrationId",
            "in": "path",
            "schema": {
              "type": "string"
            },
            "required": true,
            "description": " The ShipStation integration ID"
          }
        ],
        "responses": {
          "200": {
            "description": "Integration status",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "connected": {
                      "type": "boolean"
                    },
                    "accountName": {
                      "type": "string"
                    },
                    "storeCount": {
                      "type": "number"
                    },
                    "lastSyncedAt": {
                      "type": "number"
                    },
                    "ordersSyncedThrough": {
                      "type": "string"
                    },
                    "authError": {
                      "oneOf": [
                        {
                          "type": "null"
                        },
                        {
                          "type": "string"
                        }
                      ]
                    }
                  },
                  "required": [
                    "connected"
                  ]
                }
              }
            }
          }
        },
        "x-permission": "integration.view"
      }
    },
    "/v1/integrations/shipstation/{integrationId}/settings": {
      "get": {
        "summary": "Get ShipStation settings",
        "description": "Get ShipStation integration settings.",
        "tags": [
          "ShipStation"
        ],
        "parameters": [
          {
            "name": "integrationId",
            "in": "path",
            "schema": {
              "type": "string"
            },
            "required": true,
            "description": " The ShipStation integration ID"
          }
        ],
        "responses": {
          "200": {
            "description": "Integration settings",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ShipStationSettings"
                }
              }
            }
          }
        },
        "x-permission": "integration.view"
      },
      "patch": {
        "summary": "Update ShipStation settings",
        "description": "Update ShipStation integration settings.",
        "tags": [
          "ShipStation"
        ],
        "parameters": [
          {
            "name": "integrationId",
            "in": "path",
            "schema": {
              "type": "string"
            },
            "required": true,
            "description": " The ShipStation integration ID"
          }
        ],
        "requestBody": {
          "description": "Settings to update",
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "autoPrint": {
                    "type": "boolean"
                  },
                  "autoCloseOrders": {
                    "oneOf": [
                      {
                        "const": "shipped"
                      },
                      {
                        "const": "never"
                      }
                    ]
                  },
                  "excludedStoreIds": {
                    "type": "array",
                    "items": {
                      "type": "number"
                    }
                  },
                  "showMarketplace": {
                    "type": "boolean"
                  }
                }
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Updated settings",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ShipStationSettings"
                }
              }
            }
          }
        },
        "x-permission": "integration.manage"
      }
    },
    "/v1/integrations/shipstation/{integrationId}/sync-orders": {
      "post": {
        "summary": "Sync ShipStation orders",
        "description": "Pull orders from ShipStation now. Ordinary syncing is webhook-driven with\na scheduled backstop; this is for backfills.",
        "tags": [
          "ShipStation"
        ],
        "parameters": [
          {
            "name": "integrationId",
            "in": "path",
            "schema": {
              "type": "string"
            },
            "required": true,
            "description": " The ShipStation integration ID"
          }
        ],
        "requestBody": {
          "description": "How many days back to read",
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "daysBack": {
                    "type": "number"
                  }
                }
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Sync results",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "totalSynced": {
                      "type": "number"
                    },
                    "totalSeen": {
                      "type": "number"
                    },
                    "reconciled": {
                      "type": "number"
                    },
                    "skipped": {
                      "type": "number"
                    }
                  },
                  "required": [
                    "totalSynced",
                    "totalSeen",
                    "reconciled",
                    "skipped"
                  ]
                }
              }
            }
          }
        },
        "x-permission": "integration.manage"
      }
    },
    "/v1/integrations/cloud-storage/{provider}": {
      "get": {
        "summary": "List connected accounts for a cloud-storage provider",
        "description": "List connected accounts for a cloud-storage provider.",
        "tags": [
          "Cloud"
        ],
        "parameters": [
          {
            "name": "provider",
            "in": "path",
            "schema": {
              "type": "string"
            },
            "required": true,
            "description": " The cloud storage provider"
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "integrationId": {
                        "type": "string",
                        "pattern": "^[a-z0-9]{24}$"
                      },
                      "email": {
                        "type": "string"
                      },
                      "displayName": {
                        "type": "string"
                      },
                      "watchedFolderName": {
                        "oneOf": [
                          {
                            "type": "null"
                          },
                          {
                            "type": "string"
                          }
                        ]
                      },
                      "syncStatus": {
                        "oneOf": [
                          {
                            "const": "idle"
                          },
                          {
                            "const": "syncing"
                          }
                        ]
                      },
                      "authError": {
                        "oneOf": [
                          {
                            "type": "null"
                          },
                          {
                            "type": "string"
                          }
                        ]
                      },
                      "lastSyncedAt": {
                        "oneOf": [
                          {
                            "type": "null"
                          },
                          {
                            "type": "string"
                          }
                        ]
                      }
                    },
                    "required": [
                      "integrationId",
                      "email",
                      "displayName",
                      "watchedFolderName",
                      "syncStatus",
                      "authError",
                      "lastSyncedAt"
                    ]
                  }
                }
              }
            }
          }
        },
        "x-permission": "integration.view"
      }
    },
    "/v1/integrations/cloud-storage/{provider}/{integrationId}/status": {
      "get": {
        "summary": "Get sync status for a cloud-storage integration",
        "description": "Get sync status for a cloud-storage integration.",
        "tags": [
          "Cloud"
        ],
        "parameters": [
          {
            "name": "provider",
            "in": "path",
            "schema": {
              "type": "string"
            },
            "required": true,
            "description": " The cloud storage provider"
          },
          {
            "name": "integrationId",
            "in": "path",
            "schema": {
              "type": "string"
            },
            "required": true,
            "description": " The cloud storage integration ID"
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CloudStorageSyncStatus"
                }
              }
            }
          }
        },
        "x-permission": "integration.view"
      }
    },
    "/v1/integrations/cloud-storage/{provider}/{integrationId}/folders": {
      "get": {
        "summary": "List folders in a cloud-storage account for folder selection",
        "description": "List folders in a cloud-storage account for folder selection.",
        "tags": [
          "Cloud"
        ],
        "parameters": [
          {
            "name": "provider",
            "in": "path",
            "schema": {
              "type": "string"
            },
            "required": true,
            "description": " The cloud storage provider"
          },
          {
            "name": "integrationId",
            "in": "path",
            "schema": {
              "type": "string"
            },
            "required": true,
            "description": " The cloud storage integration ID"
          },
          {
            "name": "parentFolderId",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/CloudStorageFolderItem"
                  }
                }
              }
            }
          }
        },
        "x-permission": "integration.view"
      }
    },
    "/v1/integrations/cloud-storage/{provider}/{integrationId}/select-folder": {
      "post": {
        "summary": "Select the folder to watch for a cloud-storage integration",
        "description": "Select the folder to watch for a cloud-storage integration.",
        "tags": [
          "Cloud"
        ],
        "parameters": [
          {
            "name": "provider",
            "in": "path",
            "schema": {
              "type": "string"
            },
            "required": true,
            "description": " The cloud storage provider"
          },
          {
            "name": "integrationId",
            "in": "path",
            "schema": {
              "type": "string"
            },
            "required": true,
            "description": " The cloud storage integration ID"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SelectFolderRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "message"
                  ]
                }
              }
            }
          }
        },
        "x-permission": "integration.manage"
      }
    },
    "/v1/integrations/cloud-storage/{provider}/{integrationId}/sync": {
      "post": {
        "summary": "Enqueue a background sync for a cloud-storage integration (returns immediately)",
        "description": "Enqueue a background sync for a cloud-storage integration (returns immediately).",
        "tags": [
          "Cloud"
        ],
        "parameters": [
          {
            "name": "provider",
            "in": "path",
            "schema": {
              "type": "string"
            },
            "required": true,
            "description": " The cloud storage provider"
          },
          {
            "name": "integrationId",
            "in": "path",
            "schema": {
              "type": "string"
            },
            "required": true,
            "description": " The cloud storage integration ID"
          }
        ],
        "responses": {
          "201": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "const": "queued"
                    }
                  },
                  "required": [
                    "status"
                  ]
                }
              }
            }
          }
        },
        "x-permission": "integration.manage"
      }
    },
    "/v1/integrations/cloud-storage/{provider}/{integrationId}/sync-records/{syncRecordId}/reimport": {
      "post": {
        "summary": "Re-import a file whose part was deleted inside Printago",
        "description": "Re-import a file whose part was deleted inside Printago.",
        "tags": [
          "Cloud"
        ],
        "parameters": [
          {
            "name": "provider",
            "in": "path",
            "schema": {
              "type": "string"
            },
            "required": true,
            "description": " The cloud storage provider"
          },
          {
            "name": "integrationId",
            "in": "path",
            "schema": {
              "type": "string"
            },
            "required": true,
            "description": " The cloud storage integration ID"
          },
          {
            "name": "syncRecordId",
            "in": "path",
            "schema": {
              "type": "string"
            },
            "required": true,
            "description": " The sync record ID"
          }
        ],
        "responses": {
          "201": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "const": "queued"
                    }
                  },
                  "required": [
                    "status"
                  ]
                }
              }
            }
          }
        },
        "x-permission": "integration.manage"
      }
    },
    "/v1/integrations/cloud-storage/{provider}/{integrationId}/sync-records": {
      "get": {
        "summary": "List all file sync records for a cloud-storage integration",
        "description": "List all file sync records for a cloud-storage integration.",
        "tags": [
          "Cloud"
        ],
        "parameters": [
          {
            "name": "provider",
            "in": "path",
            "schema": {
              "type": "string"
            },
            "required": true,
            "description": " The cloud storage provider"
          },
          {
            "name": "integrationId",
            "in": "path",
            "schema": {
              "type": "string"
            },
            "required": true,
            "description": " The cloud storage integration ID"
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/CloudStorageSync"
                  }
                }
              }
            }
          }
        },
        "x-permission": "integration.view"
      }
    },
    "/v1/integrations/cloud-storage/{provider}/{integrationId}/settings": {
      "patch": {
        "summary": "Update sync settings for a cloud-storage integration",
        "description": "Update sync settings for a cloud-storage integration.",
        "tags": [
          "Cloud"
        ],
        "parameters": [
          {
            "name": "provider",
            "in": "path",
            "schema": {
              "type": "string"
            },
            "required": true,
            "description": " The cloud storage provider"
          },
          {
            "name": "integrationId",
            "in": "path",
            "schema": {
              "type": "string"
            },
            "required": true,
            "description": " The cloud storage integration ID"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CloudStorageSettingsUpdate"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "message"
                  ]
                }
              }
            }
          }
        },
        "x-permission": "integration.manage"
      }
    },
    "/v1/integrations/cloud-storage/{provider}/{integrationId}/disconnect": {
      "post": {
        "summary": "Disconnect a cloud-storage integration",
        "description": "Disconnect a cloud-storage integration.",
        "tags": [
          "Cloud"
        ],
        "parameters": [
          {
            "name": "provider",
            "in": "path",
            "schema": {
              "type": "string"
            },
            "required": true,
            "description": " The cloud storage provider"
          },
          {
            "name": "integrationId",
            "in": "path",
            "schema": {
              "type": "string"
            },
            "required": true,
            "description": " The cloud storage integration ID"
          }
        ],
        "responses": {
          "201": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "message"
                  ]
                }
              }
            }
          }
        },
        "x-permission": "integration.manage"
      }
    },
    "/v1/printers/{id}/history/last": {
      "get": {
        "summary": "Last printed history",
        "description": "Get the most recent print(s) on a printer, with related entities (part,\nSKU, job, order, order item) optionally inlined. \"Most recent\" means\nthe latest job that actually started printing and reached a terminal\nstate (completed, failed, or cancelled after the print began). Jobs\ncancelled while still in the queue are excluded. Each entry contains\nonly the refs you request; a requested ref with no value on the job\n(for example, a walk-in print with no order) is returned as null\nrather than being omitted. Unknown values in refs return a 400.",
        "tags": [
          "Printers"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "schema": {
              "type": "string",
              "pattern": "^[a-z0-9]{24}$"
            },
            "required": true,
            "description": " The printer's unique identifier"
          },
          {
            "name": "refs",
            "in": "query",
            "schema": {
              "type": "string",
              "pattern": "^(part|sku|job|order|orderItem)(?:,(part|sku|job|order|orderItem))*$"
            },
            "required": false,
            "description": "Comma-separated subset of: part, sku, job, order, orderItem. Defaults\nto job when omitted."
          },
          {
            "name": "limit",
            "in": "query",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 25
            },
            "required": false,
            "title": "Number of recent terminal jobs to return, 1 to 25. Defaults to 1",
            "description": "Number of recent terminal jobs to return, 1 to 25. Defaults to 1."
          }
        ],
        "responses": {
          "200": {
            "description": "Printer ID and an array of last-printed entries",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PrinterHistoryLastResponse"
                }
              }
            }
          }
        },
        "x-permission": "printer.view, queue.view"
      }
    },
    "/v1/integrations": {
      "get": {
        "summary": "Get all integrations",
        "description": "List all integrations in your store",
        "tags": [
          "Integrations"
        ],
        "parameters": [
          {
            "name": "type",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "externalId",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false,
            "description": "External identifier for deduplication (e.g., shopId for Etsy)"
          },
          {
            "name": "publicData",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false,
            "description": "Public metadata safe to expose to frontend"
          },
          {
            "name": "settings",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false,
            "description": "User-configurable settings"
          },
          {
            "name": "id",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "storeId",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "createdAt",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "updatedAt",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false,
            "title": "Sort"
          },
          {
            "name": "limit",
            "in": "query",
            "schema": {
              "type": "number",
              "minimum": 1,
              "maximum": 1000
            },
            "required": false,
            "title": "Limit"
          },
          {
            "name": "offset",
            "in": "query",
            "schema": {
              "type": "number",
              "minimum": 0
            },
            "required": false,
            "title": "Offset"
          },
          {
            "name": "fields",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false,
            "title": "Fields"
          },
          {
            "name": "include",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": false,
            "title": "Include"
          },
          {
            "name": "meta",
            "in": "query",
            "schema": {
              "type": "boolean"
            },
            "required": false,
            "title": "Meta"
          },
          {
            "name": "hints",
            "in": "query",
            "schema": {
              "type": "boolean"
            },
            "required": false,
            "title": "Hints"
          }
        ],
        "responses": {
          "200": {
            "description": "List of integrations",
            "content": {
              "application/json": {
                "schema": {
                  "oneOf": [
                    {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/Integration"
                      }
                    },
                    {
                      "$ref": "#/components/schemas/SearchResponse"
                    }
                  ]
                }
              }
            }
          }
        },
        "x-permission": "integration.view"
      }
    },
    "/v1/integrations/search": {
      "post": {
        "summary": "Search integrations",
        "description": "Search integrations with complex filters",
        "tags": [
          "Integrations"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SearchQueryDtoIntegration"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SearchResponse"
                }
              }
            }
          }
        },
        "x-permission": "integration.view"
      }
    },
    "/v1/integrations/{id}": {
      "get": {
        "summary": "Get a specific integration by ID",
        "tags": [
          "Integrations"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "schema": {
              "type": "string",
              "pattern": "^[a-z0-9]{24}$"
            },
            "required": true,
            "description": " - Integration identifier"
          }
        ],
        "responses": {
          "200": {
            "description": "Integration details",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Integration"
                }
              }
            }
          }
        },
        "x-permission": "integration.view"
      }
    }
  },
  "components": {
    "schemas": {
      "AiDetectionAlert": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "createdAt": {
            "type": "string"
          },
          "printerId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "pattern": "^[a-z0-9]{24}$"
              }
            ]
          },
          "printJobId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "pattern": "^[a-z0-9]{24}$"
              }
            ]
          },
          "attemptNumber": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "number"
              }
            ]
          },
          "source": {
            "oneOf": [
              {
                "const": "printer"
              },
              {
                "const": "detector"
              }
            ]
          },
          "detectorProvider": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "const": "obico-ml-api"
              }
            ],
            "title": "Detector backend, or the printer's error code for native detections",
            "description": "Detector backend, or the printer's error code for native detections."
          },
          "code": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "message": {
            "type": "string"
          },
          "smoothedScore": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "number"
              }
            ]
          },
          "autoAction": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "const": "notify"
              },
              {
                "const": "stop"
              },
              {
                "const": "pause"
              }
            ]
          },
          "autoActionStatus": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "const": "failed"
              },
              {
                "const": "not-applicable"
              },
              {
                "const": "sent"
              }
            ]
          },
          "frames": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AiDetectionAlertFrame"
            }
          },
          "expectedThumbnailUri": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ],
            "title": "Expected plate render for the linked job, when one exists",
            "description": "Expected plate render for the linked job, when one exists."
          },
          "feedback": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/AiDetectionFeedbackItem"
              }
            ]
          },
          "fuseFeedback": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/AiDetectionFeedbackItem"
              }
            ],
            "title": "Fuse-originated label (auto-pause resumed or abandoned), when any",
            "description": "Fuse-originated label (auto-pause resumed or abandoned), when any."
          }
        },
        "required": [
          "id",
          "createdAt",
          "printerId",
          "printJobId",
          "attemptNumber",
          "source",
          "detectorProvider",
          "code",
          "message",
          "smoothedScore",
          "autoAction",
          "autoActionStatus",
          "frames",
          "expectedThumbnailUri",
          "feedback",
          "fuseFeedback"
        ],
        "description": "One AI failure alert, from a Fuse-side detector or the printer's own detection."
      },
      "AiDetectionAlertFrame": {
        "type": "object",
        "properties": {
          "key": {
            "oneOf": [
              {
                "const": "now"
              },
              {
                "const": "t-10m"
              },
              {
                "const": "t-1m"
              }
            ]
          },
          "capturedAt": {
            "type": "number"
          },
          "offsetMs": {
            "type": "number"
          },
          "layer": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "number"
              }
            ]
          },
          "percent": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "number"
              }
            ]
          },
          "url": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ],
            "title": "Signed read URL; null when the frame never uploaded or has aged out",
            "description": "Signed read URL; null when the frame never uploaded or has aged out."
          }
        },
        "required": [
          "key",
          "capturedAt",
          "offsetMs",
          "layer",
          "percent",
          "url"
        ]
      },
      "AiDetectionFeedbackItem": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "printerEventId": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "verdict": {
            "oneOf": [
              {
                "const": "true_positive"
              },
              {
                "const": "false_positive"
              }
            ]
          },
          "source": {
            "oneOf": [
              {
                "const": "user"
              },
              {
                "const": "fuse"
              }
            ]
          },
          "comment": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "userId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "createdAt": {
            "type": "string"
          },
          "updatedAt": {
            "type": "string"
          }
        },
        "required": [
          "id",
          "printerEventId",
          "verdict",
          "source",
          "comment",
          "userId",
          "createdAt",
          "updatedAt"
        ]
      },
      "AiDetectionAlertsQuery": {
        "type": "object",
        "properties": {
          "printerId": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$",
            "title": "Only alerts for this printer",
            "description": "Only alerts for this printer."
          },
          "printJobId": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$",
            "title": "Only alerts for this print job",
            "description": "Only alerts for this print job."
          },
          "limit": {
            "type": "number",
            "title": "Max alerts to return; defaults to 20, capped at 100",
            "description": "Max alerts to return; defaults to 20, capped at 100."
          }
        }
      },
      "AiDetectionFeedbackResponse": {
        "type": "object",
        "properties": {
          "feedback": {
            "$ref": "#/components/schemas/AiDetectionFeedbackItem"
          },
          "storeFeedbackCount": {
            "type": "number",
            "title": "Feedback items this store has submitted in total (user source)",
            "description": "Feedback items this store has submitted in total (user source)."
          },
          "inviteTriggered": {
            "type": "boolean",
            "title": "True on the call that crossed the program invite threshold",
            "description": "True on the call that crossed the program invite threshold."
          }
        },
        "required": [
          "feedback",
          "storeFeedbackCount",
          "inviteTriggered"
        ]
      },
      "AiDetectionFeedbackRequest": {
        "type": "object",
        "properties": {
          "verdict": {
            "oneOf": [
              {
                "const": "true_positive"
              },
              {
                "const": "false_positive"
              }
            ]
          },
          "comment": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          }
        },
        "required": [
          "verdict"
        ]
      },
      "Part": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "minLength": 1,
            "maxLength": 1024
          },
          "type": {
            "oneOf": [
              {
                "const": "scad"
              },
              {
                "const": "cadquery"
              },
              {
                "const": "build123d"
              },
              {
                "const": "stl"
              },
              {
                "const": "step"
              },
              {
                "const": "3mf"
              },
              {
                "const": "gcode3mf"
              },
              {
                "const": "gcode"
              }
            ]
          },
          "description": {
            "type": "string",
            "default": ""
          },
          "fileUris": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "minItems": 1
          },
          "fileHashes": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "minItems": 1
          },
          "thumbnailUri": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "parameters": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PartParameter"
            }
          },
          "printTags": {
            "$ref": "#/components/schemas/Tags"
          },
          "overriddenProcessProfileId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "pattern": "^[a-z0-9]{24}$"
              }
            ]
          },
          "folderId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "pattern": "^[a-z0-9]{24}$"
              }
            ]
          },
          "materials": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/PartMaterial"
                }
              }
            ]
          },
          "slicerOverride": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "metadata": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/Metadata3MF"
              }
            ]
          },
          "slicingEstimate": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/SlicingEstimate"
              }
            ]
          },
          "use3MFProcessProfile": {
            "type": "boolean",
            "description": "Slice this part with the process profile embedded in its 3MF rather than\nthe matched printer's. Omit it when creating a 3MF part and it is turned\non for you, unless you also send an `overriddenProcessProfileId`; send\n`false` to slice with the printer's profile instead. Ignored for every\nother part type."
          },
          "arrangeable": {
            "type": "boolean"
          },
          "userTags": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "maxItems": 10
          },
          "gcodePlateUris": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/Recordstringstring"
              }
            ]
          },
          "meshUri": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ],
            "title": "Tessellated mesh derived from a boundary-representation source (STEP)",
            "description": "Tessellated mesh derived from a boundary-representation source (STEP).\nThe slicer CLI only reads meshes, so this — not `fileUris[0]` — is what\nthe print and estimation paths feed it."
          },
          "meshSourceHash": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ],
            "description": "`fileHashes[0]` of the source the mesh state describes — the file\n`meshUri` was tessellated from, or the one `meshError` failed on."
          },
          "meshError": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ],
            "description": "Why tessellating this source failed. Set with `meshUri` cleared, so a\nfile that cannot be meshed is stated once instead of re-converting on\nevery print forever. Replacing the source moves `fileHashes[0]` off this\nhash, which retires the error without anything having to clear it."
          },
          "uploadedAt": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "format": "date-time"
              }
            ]
          },
          "customMetadata": {
            "$ref": "#/components/schemas/Recordstringunknown"
          },
          "source": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "const": "google-drive"
              },
              {
                "const": "onedrive"
              }
            ],
            "description": "Which integration created this part. Set only by the cloud-storage\nproviders today; null on every other creation path (upload, API, OpenSCAD,\n…) rather than carrying a synthetic \"manual\" value, so existing parts need\nno backfill. Not user-editable — it records what happened, not a preference."
          },
          "processingStatus": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "const": "processing"
              },
              {
                "const": "failed"
              }
            ],
            "description": "Where the file's ingest (metadata extraction, thumbnails, plate split,\nestimation) stands. `null` means ready — parts that predate the ingest\nworkflow are healthy without backfill. System-set, not user-editable."
          },
          "processing": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/PartProcessing"
              }
            ],
            "title": "Per-stage ingest progress and, on failure, which stage stopped and why",
            "description": "Per-stage ingest progress and, on failure, which stage stopped and why."
          },
          "id": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "storeId": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time"
          }
        },
        "required": [
          "name",
          "type",
          "description",
          "fileUris",
          "fileHashes",
          "thumbnailUri",
          "parameters",
          "printTags",
          "overriddenProcessProfileId",
          "materials",
          "id",
          "storeId",
          "createdAt",
          "updatedAt"
        ]
      },
      "PartParameter": {
        "type": "object",
        "properties": {
          "default": {
            "oneOf": [
              {
                "type": "number"
              },
              {
                "type": "string",
                "minLength": 0,
                "maxLength": 255
              },
              {
                "type": "boolean"
              }
            ]
          },
          "options": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/DropdownOption"
            }
          },
          "description": {
            "type": "string"
          },
          "min": {
            "type": "number"
          },
          "max": {
            "type": "number"
          },
          "step": {
            "type": "number"
          },
          "acceptedContentTypes": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "File-parameter-only fields (populated when\n`type === PartParameterVariableType.File`). Kept optional on the\nshared interface so scalar-parameter call sites do not need\nunion-narrowing. See `FilePartParameter` for the strict shape.\n\n`acceptedContentTypes` is intentionally an OPEN `string[]` (not a\nnarrow union). The customizer emits SVG, but Etsy attachments and\ndirect API order ingestion can carry ANY mime type (PNG / JPG / PDF /\nAI / etc). Builders enforce kind constraints; the shared type stays\nopen."
          },
          "multiple": {
            "type": "boolean",
            "description": "Whether the slot accepts >1 file. Reserved for forward compat — the\nPhase 5 resolver assumes single-file per slot for v1."
          },
          "defaultUri": {
            "type": "string",
            "title": "Optional fallback file URI (e.g. a known SVG in storage)",
            "description": "Optional fallback file URI (e.g. a known SVG in storage)."
          },
          "label": {
            "type": "string",
            "maxLength": 255,
            "description": "What the parameter is shown under wherever a customer or an operator\nfills it in; `name` stays the key everything binds by (SKU options,\norder inputs, build overrides, and — for a 3MF text slot — the text\nvolume the substitution travels to). A parameter without one is shown\nunder its name.\n\nThis interface is the one the API's request validators are generated\nfrom, and it is a second declaration of the shape in\n`../part/parameter`. A field added to only one of them is accepted by\nthe code and then pruned off the wire."
          },
          "serialReuse": {
            "oneOf": [
              {
                "const": "share",
                "title": "One serial per plate print, applied to every matching occurrence",
                "description": "One serial per plate print, applied to every matching occurrence."
              },
              {
                "const": "increment",
                "title": "The next serial for each matching object instance on the plate",
                "description": "The next serial for each matching object instance on the plate."
              }
            ],
            "description": "For a 3MF text-slot parameter bound to a sequence: whether occurrences\nrepeated on one plate share a serial or each consume the next one.\nAbsent means {@link TextSlotSerialReuse.Share }, today's duplicate-name\nmeaning."
          },
          "sizing": {
            "oneOf": [
              {
                "const": "stretch",
                "title": "Fill the authored bounds exactly, distorting the glyphs if need be",
                "description": "Fill the authored bounds exactly, distorting the glyphs if need be."
              },
              {
                "const": "fit",
                "title": "Keep the authored proportions and size; shrink only to avoid overflow",
                "description": "Keep the authored proportions and size; shrink only to avoid overflow."
              },
              {
                "const": "unconstrained",
                "title": "Draw at the authored size and let a long value run past the bounds",
                "description": "Draw at the authored size and let a long value run past the bounds."
              }
            ],
            "description": "3MF text placeholders only: how a substituted value is sized against the\nbounds of the text volume it replaces. Absent means \"fit within bounds\",\nwhich is what every part declared before the setting existed carries.\nDeclared on this shape as well as on `../part/parameter` for the reason\n`label` is — the API's request validators are generated from this one,\nand a field on only the other is pruned off the wire."
          },
          "name": {
            "type": "string",
            "minLength": 1,
            "maxLength": 255
          },
          "type": {
            "oneOf": [
              {
                "const": "number"
              },
              {
                "const": "string"
              },
              {
                "const": "boolean"
              },
              {
                "const": "file"
              }
            ]
          },
          "value": {
            "oneOf": [
              {
                "type": "number"
              },
              {
                "type": "string",
                "minLength": 0,
                "maxLength": 255
              },
              {
                "type": "boolean"
              }
            ]
          }
        },
        "required": [
          "name",
          "type"
        ]
      },
      "DropdownOption": {
        "type": "object",
        "properties": {
          "value": {
            "oneOf": [
              {
                "type": "string"
              },
              {
                "type": "number"
              }
            ]
          },
          "label": {
            "type": "string"
          }
        },
        "required": [
          "value"
        ]
      },
      "Tags": {
        "type": "object",
        "properties": {
          "printer.provider": {
            "type": "string",
            "minLength": 1
          },
          "printer.id": {
            "type": "string",
            "minLength": 1
          },
          "printer.nozzleDiameter": {
            "type": "string",
            "minLength": 1
          },
          "printer.modelName": {
            "type": "string",
            "minLength": 1
          },
          "filament.type": {
            "type": "string",
            "minLength": 1
          },
          "user.tags": {
            "type": "string",
            "minLength": 1
          }
        }
      },
      "PartMaterial": {
        "type": "object",
        "properties": {
          "index": {
            "type": "number",
            "minimum": 0
          },
          "color": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "pattern": "^#{0,1}[0-9A-F]{6}|[0-9A-F]{8}$"
              }
            ]
          },
          "type": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "skip": {
            "type": "boolean"
          },
          "name": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "identifier": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          }
        },
        "required": [
          "index",
          "color",
          "type"
        ]
      },
      "Metadata3MF": {
        "type": "object",
        "properties": {
          "printerModel": {
            "type": "string"
          },
          "filamentType": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "filamentColors": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "filamentDensities": {
            "type": "array",
            "items": {
              "type": "number"
            }
          },
          "filamentDiameters": {
            "type": "array",
            "items": {
              "type": "number"
            }
          },
          "nozzleDiameter": {
            "type": "string"
          },
          "profileCompat": {
            "$ref": "#/components/schemas/ProfileCompat"
          },
          "slicerVersion": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/SlicerVersionInfo"
              }
            ]
          },
          "plates": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Plate3MF"
            }
          },
          "filamentIds": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "textSlots": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TextSlot3MF"
            },
            "description": "PrintagoParam text slots with their per-plate occurrence identities,\nre-detected whenever the file is (re)processed. The saved reuse mode\nlives on the slot's parameter, which survives a file replacement; this\nis the geometry-derived half that must always track the current file."
          },
          "plateRenderSourceHash": {
            "type": "string",
            "description": "`fileHashes[0]` of the source that produced the plates'\n`thumbnailRenderedUri`. Re-extraction carries the renders forward only\nwhile this still matches the part's current source; a replaced file\nleaves them behind rather than showing the previous model's geometry."
          }
        },
        "required": [
          "printerModel",
          "filamentType",
          "filamentColors",
          "nozzleDiameter",
          "profileCompat"
        ]
      },
      "ProfileCompat": {
        "type": "object",
        "properties": {
          "sliced": {
            "type": "string"
          },
          "compatible": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "safe": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        },
        "required": [
          "sliced",
          "compatible",
          "safe"
        ]
      },
      "SlicerVersionInfo": {
        "type": "object",
        "properties": {
          "engine": {
            "oneOf": [
              {
                "const": "orcaslicer"
              },
              {
                "const": "bambu-studio"
              },
              {
                "const": "prusaslicer"
              },
              {
                "const": "superslicer"
              }
            ]
          },
          "version": {
            "type": "string"
          }
        },
        "required": [
          "engine",
          "version"
        ]
      },
      "Plate3MF": {
        "type": "object",
        "properties": {
          "id": {
            "type": "number"
          },
          "name": {
            "type": "string"
          },
          "locked": {
            "type": "boolean"
          },
          "filamentMapMode": {
            "type": "string"
          },
          "filamentMaps": {
            "type": "array",
            "items": {
              "type": "number"
            }
          },
          "gcodeFile": {
            "type": "string"
          },
          "thumbnailFile": {
            "type": "string"
          },
          "thumbnailUploadedUri": {
            "type": "string",
            "title": "The archive's own plate preview, copied out at metadata-extraction time",
            "description": "The archive's own plate preview, copied out at metadata-extraction time."
          },
          "thumbnailRenderedUri": {
            "type": "string",
            "description": "The plate re-rendered by the three.js builder. Written by a different\nflow, and to a different storage path, than the archive copy above — a\nlater metadata reprocess re-copies the archive image and must not be able\nto overwrite this. Prefer it over `thumbnailUploadedUri`\n(see `plateThumbnailUri`)."
          },
          "thumbnailNoLightFile": {
            "type": "string"
          },
          "thumbnailData": {
            "type": "string"
          },
          "topFile": {
            "type": "string"
          },
          "pickFile": {
            "type": "string"
          },
          "topData": {
            "type": "string",
            "title": "Base64 PNG data for the top/pick images, staged before upload then cleared",
            "description": "Base64 PNG data for the top/pick images, staged before upload then cleared."
          },
          "pickData": {
            "type": "string"
          },
          "topUploadedUri": {
            "type": "string",
            "title": "Uploaded URIs for the plate's top-down image and color-coded object pick mask",
            "description": "Uploaded URIs for the plate's top-down image and color-coded object pick mask.\nUsed by the visual skip-objects picker."
          },
          "pickUploadedUri": {
            "type": "string"
          },
          "patternBboxFile": {
            "type": "string"
          },
          "sliced": {
            "$ref": "#/components/schemas/PlateSliceInfo"
          },
          "filamentIds": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        },
        "required": [
          "id"
        ]
      },
      "PlateSliceInfo": {
        "type": "object",
        "properties": {
          "index": {
            "type": "number"
          },
          "extruderType": {
            "type": "string"
          },
          "nozzleVolumeType": {
            "type": "string"
          },
          "printerModelId": {
            "type": "string"
          },
          "nozzleDiameters": {
            "type": "string"
          },
          "timelapseType": {
            "type": "string"
          },
          "prediction": {
            "type": "number"
          },
          "weight": {
            "type": "number"
          },
          "outside": {
            "type": "boolean"
          },
          "supportUsed": {
            "type": "boolean"
          },
          "labelObjectEnabled": {
            "type": "boolean"
          },
          "filamentMaps": {
            "type": "string"
          },
          "objects": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "identifyId": {
                  "type": "string"
                },
                "name": {
                  "type": "string"
                },
                "skipped": {
                  "type": "boolean"
                }
              },
              "required": [
                "identifyId",
                "name",
                "skipped"
              ]
            }
          },
          "filaments": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string"
                },
                "trayInfoIdx": {
                  "type": "string"
                },
                "type": {
                  "type": "string"
                },
                "color": {
                  "type": "string"
                },
                "usedM": {
                  "type": "number"
                },
                "usedG": {
                  "type": "number"
                }
              },
              "required": [
                "id",
                "trayInfoIdx",
                "type",
                "color",
                "usedM",
                "usedG"
              ]
            }
          },
          "warnings": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "msg": {
                  "type": "string"
                },
                "level": {
                  "type": "number"
                },
                "errorCode": {
                  "type": "string"
                }
              },
              "required": [
                "msg",
                "level",
                "errorCode"
              ]
            }
          },
          "layerFilamentLists": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "filamentList": {
                  "type": "number"
                },
                "layerRanges": {
                  "type": "string"
                }
              },
              "required": [
                "filamentList",
                "layerRanges"
              ]
            }
          }
        }
      },
      "TextSlot3MF": {
        "type": "object",
        "properties": {
          "key": {
            "type": "string",
            "title": "The matching volume/object name — the substitution key",
            "description": "The matching volume/object name — the substitution key."
          },
          "label": {
            "type": "string",
            "title": "The label this slot's parameter is shown under",
            "description": "The label this slot's parameter is shown under."
          },
          "text": {
            "type": "string",
            "description": "The text authored into the volume. It prints as-is when the slot goes\nunfilled, which makes it the parameter's default."
          },
          "volumeCount": {
            "type": "number",
            "title": "How many text volumes in the file carry this slot name",
            "description": "How many text volumes in the file carry this slot name."
          },
          "fontName": {
            "type": "string",
            "title": "`font_name` of the first volume seen with this key",
            "description": "`font_name` of the first volume seen with this key."
          },
          "fontVersion": {
            "type": "string",
            "title": "`font_version` of the first volume seen with this key",
            "description": "`font_version` of the first volume seen with this key."
          },
          "surfaceType": {
            "type": "number",
            "title": "`surface_type` of the first volume seen with this key (0=flat)",
            "description": "`surface_type` of the first volume seen with this key (0=flat)."
          },
          "occurrences": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TextSlotOccurrence"
            },
            "title": "Every printable object instance carrying this slot, across all plates",
            "description": "Every printable object instance carrying this slot, across all plates.\nAbsent when the file predates occurrence detection or has no plate\nmetadata to resolve instances against."
          }
        },
        "required": [
          "key",
          "label",
          "text",
          "volumeCount"
        ]
      },
      "TextSlotOccurrence": {
        "type": "object",
        "properties": {
          "plateId": {
            "type": "number"
          },
          "objectId": {
            "type": "string",
            "title": "`model_settings.config` object id (matches the root model's build items)",
            "description": "`model_settings.config` object id (matches the root model's build items)."
          },
          "instanceId": {
            "type": "number",
            "title": "0-based instance index among the object's build items",
            "description": "0-based instance index among the object's build items."
          },
          "identifyId": {
            "type": "string",
            "title": "Bambu's per-instance id, when present (matches gcode object labels)",
            "description": "Bambu's per-instance id, when present (matches gcode object labels)."
          }
        },
        "required": [
          "plateId",
          "objectId",
          "instanceId"
        ],
        "description": "One printable object instance carrying a text slot: a plate's\n`model_instance` (Bambu's stable `(object_id, instance_id)` identity)\nwhose object definition contains at least one text volume with the slot's\nname. Order within a slot's `occurrences` is document order — plates in\nfile order, instances in each plate's `model_instance` order — which is\nthe deterministic order increment-mode serials are assigned in."
      },
      "SlicingEstimate": {
        "type": "object",
        "properties": {
          "estimatedPrintTimeSeconds": {
            "type": "number"
          },
          "materials": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SlicingMaterialUsage"
            }
          },
          "totalWeightGrams": {
            "type": "number"
          },
          "profiles": {
            "$ref": "#/components/schemas/SlicingProfileInfo"
          },
          "slicedAt": {
            "type": "string"
          },
          "slicerVersion": {
            "type": "string"
          },
          "plates": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PlateSlicingEstimate"
            }
          }
        },
        "required": [
          "estimatedPrintTimeSeconds",
          "materials",
          "totalWeightGrams",
          "slicedAt",
          "slicerVersion"
        ]
      },
      "SlicingMaterialUsage": {
        "type": "object",
        "properties": {
          "index": {
            "type": "number"
          },
          "usedGrams": {
            "type": "number"
          },
          "usedMeters": {
            "type": "number"
          },
          "materialType": {
            "type": "string"
          },
          "color": {
            "type": "string"
          }
        },
        "required": [
          "index",
          "usedGrams",
          "usedMeters",
          "materialType"
        ]
      },
      "SlicingProfileInfo": {
        "type": "object",
        "properties": {
          "machineProfileId": {
            "type": "string"
          },
          "machineProfileName": {
            "type": "string"
          },
          "processProfileId": {
            "type": "string"
          },
          "processProfileName": {
            "type": "string"
          },
          "filamentProfileIds": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "filamentProfileNames": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        },
        "required": [
          "machineProfileId",
          "machineProfileName",
          "processProfileId",
          "processProfileName",
          "filamentProfileIds",
          "filamentProfileNames"
        ]
      },
      "PlateSlicingEstimate": {
        "type": "object",
        "properties": {
          "plateId": {
            "type": "number"
          },
          "estimatedPrintTimeSeconds": {
            "type": "number"
          },
          "materials": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SlicingMaterialUsage"
            }
          },
          "totalWeightGrams": {
            "type": "number"
          }
        },
        "required": [
          "plateId",
          "estimatedPrintTimeSeconds",
          "materials",
          "totalWeightGrams"
        ]
      },
      "Recordstringstring": {
        "type": "object",
        "properties": {},
        "description": "Construct a type with a set of properties K of type T",
        "additionalProperties": {
          "type": "string"
        }
      },
      "Recordstringunknown": {
        "type": "object",
        "properties": {},
        "description": "Construct a type with a set of properties K of type T",
        "additionalProperties": {}
      },
      "PartProcessing": {
        "type": "object",
        "properties": {
          "workflowKey": {
            "type": "string",
            "description": "The workflow run that owns this state. A retry or a file replacement\nwrites a new key first, so a superseded run's writes no longer match\nand are dropped instead of clobbering the newer run's progress."
          },
          "fileHash": {
            "type": "string",
            "title": "`fileHashes[0]` this ingest describes; replacing the file retires it",
            "description": "`fileHashes[0]` this ingest describes; replacing the file retires it."
          },
          "attempt": {
            "type": "number",
            "description": "How many ingests this part has had before this one — a monotonic per-part\ncounter, not a per-file retry count, so no two runs can ever share a\nworkflow key. See {@link nextPartIngestAttempt }."
          },
          "startedAt": {
            "type": "string"
          },
          "finishedAt": {
            "type": "string"
          },
          "failedStage": {
            "oneOf": [
              {
                "const": "fetch"
              },
              {
                "const": "read-metadata"
              },
              {
                "const": "thumbnails"
              },
              {
                "const": "split-plates"
              },
              {
                "const": "estimate"
              }
            ]
          },
          "error": {
            "type": "string"
          },
          "stages": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PartIngestStageState"
            }
          }
        },
        "required": [
          "workflowKey",
          "fileHash",
          "attempt",
          "startedAt",
          "stages"
        ]
      },
      "PartIngestStageState": {
        "type": "object",
        "properties": {
          "key": {
            "oneOf": [
              {
                "const": "fetch"
              },
              {
                "const": "read-metadata"
              },
              {
                "const": "thumbnails"
              },
              {
                "const": "split-plates"
              },
              {
                "const": "estimate"
              }
            ]
          },
          "status": {
            "oneOf": [
              {
                "const": "running"
              },
              {
                "const": "done"
              },
              {
                "const": "pending"
              },
              {
                "const": "failed"
              },
              {
                "const": "skipped"
              }
            ]
          },
          "attempts": {
            "type": "number",
            "title": "Times the stage has been started, so the UI can say \"retrying · attempt N\"",
            "description": "Times the stage has been started, so the UI can say \"retrying · attempt N\"."
          },
          "error": {
            "type": "string"
          }
        },
        "required": [
          "key",
          "status"
        ]
      },
      "SearchResponse": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Recordstringany"
            },
            "title": "Data",
            "description": "Array of matching entities"
          },
          "meta": {
            "type": "object",
            "properties": {
              "total": {
                "type": "number",
                "title": "Total",
                "description": "Total number of matching records (before pagination)"
              },
              "count": {
                "type": "number",
                "title": "Count",
                "description": "Number of records returned in this response"
              },
              "offset": {
                "type": "number",
                "title": "Offset",
                "description": "Number of records skipped"
              },
              "limit": {
                "type": "number",
                "title": "Limit",
                "description": "Maximum number of records requested"
              },
              "hasMore": {
                "type": "boolean",
                "title": "Has More",
                "description": "Whether there are more records available"
              },
              "executionTime": {
                "type": "number",
                "title": "Execution Time",
                "description": "Query execution time in milliseconds"
              }
            },
            "required": [
              "total",
              "count",
              "offset",
              "limit",
              "hasMore",
              "executionTime"
            ],
            "title": "Metadata",
            "description": "Pagination and result metadata"
          }
        },
        "required": [
          "data",
          "meta"
        ],
        "title": "Search Response",
        "description": "Standardized search response with data, metadata, and query information"
      },
      "Recordstringany": {
        "type": "object",
        "properties": {},
        "description": "Construct a type with a set of properties K of type T",
        "additionalProperties": {}
      },
      "namestringundefinedtypestringundefineddescriptionstringundefinedfileUrisstringundefinedfileHashesstringundefinedthumbnailUristringundefined...23more...updatedAtstringundefinedQuerySettings...": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "type": {
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "fileUris": {
            "type": "string"
          },
          "fileHashes": {
            "type": "string"
          },
          "thumbnailUri": {
            "type": "string"
          },
          "parameters": {
            "type": "string"
          },
          "printTags": {
            "type": "string"
          },
          "overriddenProcessProfileId": {
            "type": "string"
          },
          "folderId": {
            "type": "string"
          },
          "materials": {
            "type": "string"
          },
          "slicerOverride": {
            "type": "string"
          },
          "metadata": {
            "type": "string"
          },
          "slicingEstimate": {
            "type": "string"
          },
          "use3MFProcessProfile": {
            "type": "string",
            "description": "Slice this part with the process profile embedded in its 3MF rather than\nthe matched printer's. Omit it when creating a 3MF part and it is turned\non for you, unless you also send an `overriddenProcessProfileId`; send\n`false` to slice with the printer's profile instead. Ignored for every\nother part type."
          },
          "arrangeable": {
            "type": "string"
          },
          "userTags": {
            "type": "string"
          },
          "gcodePlateUris": {
            "type": "string"
          },
          "meshUri": {
            "type": "string",
            "title": "Tessellated mesh derived from a boundary-representation source (STEP)",
            "description": "Tessellated mesh derived from a boundary-representation source (STEP).\nThe slicer CLI only reads meshes, so this — not `fileUris[0]` — is what\nthe print and estimation paths feed it."
          },
          "meshSourceHash": {
            "type": "string",
            "description": "`fileHashes[0]` of the source the mesh state describes — the file\n`meshUri` was tessellated from, or the one `meshError` failed on."
          },
          "meshError": {
            "type": "string",
            "description": "Why tessellating this source failed. Set with `meshUri` cleared, so a\nfile that cannot be meshed is stated once instead of re-converting on\nevery print forever. Replacing the source moves `fileHashes[0]` off this\nhash, which retires the error without anything having to clear it."
          },
          "uploadedAt": {
            "type": "string"
          },
          "customMetadata": {
            "type": "string"
          },
          "source": {
            "type": "string",
            "description": "Which integration created this part. Set only by the cloud-storage\nproviders today; null on every other creation path (upload, API, OpenSCAD,\n…) rather than carrying a synthetic \"manual\" value, so existing parts need\nno backfill. Not user-editable — it records what happened, not a preference."
          },
          "processingStatus": {
            "type": "string",
            "description": "Where the file's ingest (metadata extraction, thumbnails, plate split,\nestimation) stands. `null` means ready — parts that predate the ingest\nworkflow are healthy without backfill. System-set, not user-editable."
          },
          "processing": {
            "type": "string",
            "title": "Per-stage ingest progress and, on failure, which stage stopped and why",
            "description": "Per-stage ingest progress and, on failure, which stage stopped and why."
          },
          "id": {
            "type": "string"
          },
          "storeId": {
            "type": "string"
          },
          "createdAt": {
            "type": "string"
          },
          "updatedAt": {
            "type": "string"
          },
          "sort": {
            "type": "string",
            "title": "Sort",
            "description": "Sort specification in format \"field:asc,field2:desc\""
          },
          "limit": {
            "type": "number",
            "minimum": 1,
            "maximum": 1000,
            "title": "Limit",
            "description": "Maximum number of results to return (default: 1000, max: 1000)"
          },
          "offset": {
            "type": "number",
            "minimum": 0,
            "title": "Offset",
            "description": "Number of results to skip for pagination"
          },
          "fields": {
            "type": "string",
            "title": "Fields",
            "description": "Comma-separated list of fields to return"
          },
          "include": {
            "type": "string",
            "title": "Include",
            "description": "Comma-separated list of relations to include (max 4, max 2 levels deep).\nExample: \"linkedParts,linkedParts.part,folder\""
          },
          "meta": {
            "type": "boolean",
            "title": "Meta",
            "description": "If true, returns response with metadata (total, count, hasMore, etc.)"
          },
          "hints": {
            "type": "boolean",
            "title": "Hints",
            "description": "If true, returns AI-friendly hints about available actions. Implies meta=true."
          }
        }
      },
      "SearchQueryDtoPart": {
        "type": "object",
        "properties": {
          "filter": {
            "$ref": "#/components/schemas/FilterConditionPart",
            "title": "Filter",
            "description": "Complex filter conditions using logical and field operators.\nAvailable field operators: eq, ne, gt, gte, lt, lte, contains, startsWith, endsWith, in, notIn, isNull, between.\nUsage example: {\"filter\": {\"and\": [{\"name\": {\"contains\": \"benchy\"}}, {\"or\": [{\"type\": {\"eq\": \"3mf\"}}, {\"type\": {\"eq\": \"gcode3mf\"}}]}}}"
          },
          "sort": {
            "type": "string",
            "title": "Sort",
            "description": "Sort specification in format \"field:asc,field2:desc\""
          },
          "limit": {
            "type": "number",
            "minimum": 1,
            "maximum": 1000,
            "title": "Limit",
            "description": "Maximum number of results to return (default: 1000, max: 1000)"
          },
          "offset": {
            "type": "number",
            "minimum": 0,
            "title": "Offset",
            "description": "Number of results to skip for pagination"
          },
          "fields": {
            "type": "string",
            "title": "Fields",
            "description": "Comma-separated list of fields to return"
          },
          "include": {
            "type": "string",
            "title": "Include",
            "description": "Comma-separated list of relations to include (max 4, max 2 levels deep).\nExample: \"linkedParts,linkedParts.part,folder\""
          },
          "meta": {
            "type": "boolean",
            "title": "Meta",
            "description": "If true, returns response with metadata (total, count, hasMore, etc.)"
          },
          "hints": {
            "type": "boolean",
            "title": "Hints",
            "description": "If true, returns AI-friendly hints about available actions. Implies meta=true."
          }
        },
        "title": "Search Query",
        "description": "Complete search request with filter conditions and query settings"
      },
      "FilterConditionPart": {
        "type": "object",
        "properties": {
          "and": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FilterConditionPart"
            },
            "title": "AND Conditions",
            "description": "All conditions must be true"
          },
          "or": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FilterConditionPart"
            },
            "title": "OR Conditions",
            "description": "At least one condition must be true"
          },
          "name": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "type": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "description": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "fileUris": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "fileHashes": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "thumbnailUri": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "parameters": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "printTags": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "overriddenProcessProfileId": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "folderId": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "materials": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "slicerOverride": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "metadata": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "slicingEstimate": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "use3MFProcessProfile": {
            "$ref": "#/components/schemas/FieldOperators",
            "description": "Slice this part with the process profile embedded in its 3MF rather than\nthe matched printer's. Omit it when creating a 3MF part and it is turned\non for you, unless you also send an `overriddenProcessProfileId`; send\n`false` to slice with the printer's profile instead. Ignored for every\nother part type."
          },
          "arrangeable": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "userTags": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "gcodePlateUris": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "meshUri": {
            "$ref": "#/components/schemas/FieldOperators",
            "title": "Tessellated mesh derived from a boundary-representation source (STEP)",
            "description": "Tessellated mesh derived from a boundary-representation source (STEP).\nThe slicer CLI only reads meshes, so this — not `fileUris[0]` — is what\nthe print and estimation paths feed it."
          },
          "meshSourceHash": {
            "$ref": "#/components/schemas/FieldOperators",
            "description": "`fileHashes[0]` of the source the mesh state describes — the file\n`meshUri` was tessellated from, or the one `meshError` failed on."
          },
          "meshError": {
            "$ref": "#/components/schemas/FieldOperators",
            "description": "Why tessellating this source failed. Set with `meshUri` cleared, so a\nfile that cannot be meshed is stated once instead of re-converting on\nevery print forever. Replacing the source moves `fileHashes[0]` off this\nhash, which retires the error without anything having to clear it."
          },
          "uploadedAt": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "customMetadata": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "source": {
            "$ref": "#/components/schemas/FieldOperators",
            "description": "Which integration created this part. Set only by the cloud-storage\nproviders today; null on every other creation path (upload, API, OpenSCAD,\n…) rather than carrying a synthetic \"manual\" value, so existing parts need\nno backfill. Not user-editable — it records what happened, not a preference."
          },
          "processingStatus": {
            "$ref": "#/components/schemas/FieldOperators",
            "description": "Where the file's ingest (metadata extraction, thumbnails, plate split,\nestimation) stands. `null` means ready — parts that predate the ingest\nworkflow are healthy without backfill. System-set, not user-editable."
          },
          "processing": {
            "$ref": "#/components/schemas/FieldOperators",
            "title": "Per-stage ingest progress and, on failure, which stage stopped and why",
            "description": "Per-stage ingest progress and, on failure, which stage stopped and why."
          },
          "id": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "storeId": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "createdAt": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "updatedAt": {
            "$ref": "#/components/schemas/FieldOperators"
          }
        },
        "title": "Filter Condition",
        "description": "Root filter condition that can be either a logical condition (AND/OR) or field-based condition"
      },
      "FieldOperators": {
        "type": "object",
        "properties": {
          "eq": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "string"
              },
              {
                "type": "number"
              },
              {
                "type": "boolean"
              }
            ],
            "title": "Equals",
            "description": "Field value equals the specified value"
          },
          "ne": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "string"
              },
              {
                "type": "number"
              },
              {
                "type": "boolean"
              }
            ],
            "title": "Not Equals",
            "description": "Field value does not equal the specified value"
          },
          "gt": {
            "oneOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "string"
              },
              {
                "type": "number"
              }
            ],
            "title": "Greater Than",
            "description": "Field value is greater than the specified value"
          },
          "gte": {
            "oneOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "string"
              },
              {
                "type": "number"
              }
            ],
            "title": "Greater Than or Equal",
            "description": "Field value is greater than or equal to the specified value"
          },
          "lt": {
            "oneOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "string"
              },
              {
                "type": "number"
              }
            ],
            "title": "Less Than",
            "description": "Field value is less than the specified value"
          },
          "lte": {
            "oneOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "string"
              },
              {
                "type": "number"
              }
            ],
            "title": "Less Than or Equal",
            "description": "Field value is less than or equal to the specified value"
          },
          "contains": {
            "type": "string",
            "title": "Contains",
            "description": "Field value contains the specified substring (case-insensitive)"
          },
          "startsWith": {
            "type": "string",
            "title": "Starts With",
            "description": "Field value starts with the specified string (case-insensitive)"
          },
          "endsWith": {
            "type": "string",
            "title": "Ends With",
            "description": "Field value ends with the specified string (case-insensitive)"
          },
          "in": {
            "type": "array",
            "items": {
              "oneOf": [
                {
                  "type": "null"
                },
                {
                  "type": "string",
                  "format": "date-time"
                },
                {
                  "type": "string"
                },
                {
                  "type": "number"
                },
                {
                  "type": "boolean"
                }
              ]
            },
            "title": "In Array",
            "description": "Field value is one of the specified values"
          },
          "notIn": {
            "type": "array",
            "items": {
              "oneOf": [
                {
                  "type": "null"
                },
                {
                  "type": "string",
                  "format": "date-time"
                },
                {
                  "type": "string"
                },
                {
                  "type": "number"
                },
                {
                  "type": "boolean"
                }
              ]
            },
            "title": "Not In Array",
            "description": "Field value is not one of the specified values"
          },
          "isNull": {
            "type": "boolean",
            "title": "Is Null",
            "description": "Field value is null or not null"
          },
          "between": {
            "type": "array",
            "prefixItems": [
              {
                "oneOf": [
                  {
                    "type": "string",
                    "format": "date-time"
                  },
                  {
                    "type": "string"
                  },
                  {
                    "type": "number"
                  }
                ]
              },
              {
                "oneOf": [
                  {
                    "type": "string",
                    "format": "date-time"
                  },
                  {
                    "type": "string"
                  },
                  {
                    "type": "number"
                  }
                ]
              }
            ],
            "additionalItems": false,
            "title": "Between",
            "description": "Field value is between two values (inclusive)"
          }
        },
        "title": "Field Operators",
        "description": "Available operators for filtering field values"
      },
      "PartInsertWithMaterials": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "minLength": 1,
            "maxLength": 1024
          },
          "type": {
            "oneOf": [
              {
                "const": "scad"
              },
              {
                "const": "cadquery"
              },
              {
                "const": "build123d"
              },
              {
                "const": "stl"
              },
              {
                "const": "step"
              },
              {
                "const": "3mf"
              },
              {
                "const": "gcode3mf"
              },
              {
                "const": "gcode"
              }
            ]
          },
          "description": {
            "type": "string",
            "default": ""
          },
          "fileUris": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "minItems": 1
          },
          "parameters": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PartParameter"
            }
          },
          "printTags": {
            "$ref": "#/components/schemas/Tags"
          },
          "customMetadata": {
            "$ref": "#/components/schemas/Recordstringunknown"
          },
          "overriddenProcessProfileId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "pattern": "^[a-z0-9]{24}$"
              }
            ]
          },
          "folderId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "pattern": "^[a-z0-9]{24}$"
              }
            ]
          },
          "slicerOverride": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "use3MFProcessProfile": {
            "type": "boolean",
            "description": "Slice this part with the process profile embedded in its 3MF rather than\nthe matched printer's. Omit it when creating a 3MF part and it is turned\non for you, unless you also send an `overriddenProcessProfileId`; send\n`false` to slice with the printer's profile instead. Ignored for every\nother part type."
          },
          "arrangeable": {
            "type": "boolean"
          },
          "userTags": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "maxItems": 10
          },
          "assignedMaterials": {
            "$ref": "#/components/schemas/EmbeddedPartMaterialAssignments"
          }
        },
        "required": [
          "name",
          "type",
          "description",
          "fileUris",
          "parameters",
          "printTags",
          "overriddenProcessProfileId"
        ]
      },
      "EmbeddedPartMaterialAssignments": {
        "type": "object",
        "properties": {},
        "additionalProperties": {
          "type": "array",
          "items": {
            "oneOf": [
              {
                "type": "object",
                "properties": {
                  "materialId": {
                    "type": "string"
                  }
                },
                "required": [
                  "materialId"
                ]
              },
              {
                "type": "object",
                "properties": {
                  "variantId": {
                    "type": "string"
                  }
                },
                "required": [
                  "variantId"
                ]
              },
              {
                "type": "object",
                "properties": {
                  "materialType": {
                    "type": "string"
                  }
                },
                "required": [
                  "materialType"
                ]
              },
              {
                "type": "object",
                "properties": {
                  "groupId": {
                    "type": "string"
                  }
                },
                "required": [
                  "groupId"
                ]
              }
            ]
          }
        }
      },
      "PartWriteQuery": {
        "type": "object",
        "properties": {
          "async": {
            "type": "boolean",
            "description": "When true, the response returns as soon as file processing is\nsubmitted, with `processingStatus: \"processing\"`; poll the part until\nthe status clears. When false or omitted, the response waits for\nprocessing to finish (bounded — a part still processing after the wait\nis returned as-is, to be polled)."
          }
        }
      },
      "UpdateManyRequestPartUpdateWithMaterials": {
        "type": "object",
        "properties": {
          "ids": {
            "type": "array",
            "items": {
              "type": "string",
              "pattern": "^[a-z0-9]{24}$"
            }
          },
          "update": {
            "$ref": "#/components/schemas/PartialPartUpdateWithMaterials"
          }
        },
        "required": [
          "ids",
          "update"
        ]
      },
      "PartialPartUpdateWithMaterials": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "minLength": 1,
            "maxLength": 1024
          },
          "type": {
            "oneOf": [
              {
                "const": "scad"
              },
              {
                "const": "cadquery"
              },
              {
                "const": "build123d"
              },
              {
                "const": "stl"
              },
              {
                "const": "step"
              },
              {
                "const": "3mf"
              },
              {
                "const": "gcode3mf"
              },
              {
                "const": "gcode"
              }
            ]
          },
          "description": {
            "type": "string",
            "default": ""
          },
          "fileUris": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "minItems": 1
          },
          "parameters": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PartParameter"
            }
          },
          "printTags": {
            "$ref": "#/components/schemas/Tags"
          },
          "customMetadata": {
            "$ref": "#/components/schemas/Recordstringunknown"
          },
          "overriddenProcessProfileId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "pattern": "^[a-z0-9]{24}$"
              }
            ]
          },
          "folderId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "pattern": "^[a-z0-9]{24}$"
              }
            ]
          },
          "slicerOverride": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "use3MFProcessProfile": {
            "type": "boolean",
            "description": "Slice this part with the process profile embedded in its 3MF rather than\nthe matched printer's. Omit it when creating a 3MF part and it is turned\non for you, unless you also send an `overriddenProcessProfileId`; send\n`false` to slice with the printer's profile instead. Ignored for every\nother part type."
          },
          "arrangeable": {
            "type": "boolean"
          },
          "userTags": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "maxItems": 10
          },
          "assignedMaterials": {
            "$ref": "#/components/schemas/EmbeddedPartMaterialAssignments"
          }
        },
        "description": "Make all properties in T optional"
      },
      "PartUpdateWithMaterials": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "minLength": 1,
            "maxLength": 1024
          },
          "type": {
            "oneOf": [
              {
                "const": "scad"
              },
              {
                "const": "cadquery"
              },
              {
                "const": "build123d"
              },
              {
                "const": "stl"
              },
              {
                "const": "step"
              },
              {
                "const": "3mf"
              },
              {
                "const": "gcode3mf"
              },
              {
                "const": "gcode"
              }
            ]
          },
          "description": {
            "type": "string",
            "default": ""
          },
          "fileUris": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "minItems": 1
          },
          "parameters": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PartParameter"
            }
          },
          "printTags": {
            "$ref": "#/components/schemas/Tags"
          },
          "customMetadata": {
            "$ref": "#/components/schemas/Recordstringunknown"
          },
          "overriddenProcessProfileId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "pattern": "^[a-z0-9]{24}$"
              }
            ]
          },
          "folderId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "pattern": "^[a-z0-9]{24}$"
              }
            ]
          },
          "slicerOverride": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "use3MFProcessProfile": {
            "type": "boolean",
            "description": "Slice this part with the process profile embedded in its 3MF rather than\nthe matched printer's. Omit it when creating a 3MF part and it is turned\non for you, unless you also send an `overriddenProcessProfileId`; send\n`false` to slice with the printer's profile instead. Ignored for every\nother part type."
          },
          "arrangeable": {
            "type": "boolean"
          },
          "userTags": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "maxItems": 10
          },
          "assignedMaterials": {
            "$ref": "#/components/schemas/EmbeddedPartMaterialAssignments"
          }
        }
      },
      "Sku": {
        "type": "object",
        "properties": {
          "sku": {
            "type": "string",
            "minLength": 1,
            "maxLength": 1024
          },
          "title": {
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "externalId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "minLength": 1,
                "maxLength": 1024
              }
            ]
          },
          "externalProvider": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "const": "etsy"
              },
              {
                "const": "shopify"
              }
            ]
          },
          "folderId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "pattern": "^[a-z0-9]{24}$"
              }
            ]
          },
          "totalCogs": {
            "type": "number"
          },
          "customMetadata": {
            "$ref": "#/components/schemas/Recordstringunknown"
          },
          "id": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "storeId": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time"
          }
        },
        "required": [
          "sku",
          "title",
          "description",
          "externalId",
          "externalProvider",
          "totalCogs",
          "id",
          "storeId",
          "createdAt",
          "updatedAt"
        ]
      },
      "Extract3MFMetadataResponse": {
        "type": "object",
        "properties": {
          "metadata": {
            "$ref": "#/components/schemas/Metadata3MF"
          },
          "materials": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PartMaterial"
            }
          },
          "hasEmbeddedGcode": {
            "type": "boolean"
          }
        },
        "required": [
          "metadata",
          "materials",
          "hasEmbeddedGcode"
        ]
      },
      "Extract3MFMetadataRequest": {
        "type": "object",
        "properties": {
          "fileUri": {
            "type": "string",
            "description": "An `uploads:`-prefixed staging path returned by signed-upload-urls"
          }
        },
        "required": [
          "fileUri"
        ]
      },
      "Printer": {
        "type": "object",
        "properties": {
          "provider": {
            "oneOf": [
              {
                "const": "OctoPrint"
              },
              {
                "const": "Prusa"
              },
              {
                "const": "Bambu"
              },
              {
                "const": "Klipper"
              },
              {
                "const": "SDCP"
              },
              {
                "const": "ElegooMqtt",
                "description": "Elegoo Centauri Carbon 2 family — uses MQTT-on-printer (embedded\nbroker on port 1883) rather than SDCP WebSocket. Distinct provider\nbecause the protocol shape, discovery (UDP 52700), and auth model\n(default `elegoo`/`123456` or access-code-derived password) all\ndiffer from `SDCP`."
              },
              {
                "const": "Anycubic",
                "description": "Anycubic Kobra-series (Kobra X / S1 / S1 Max) — uses the Anycubic\nLAN-mode MQTTS protocol (broker on port 9883, mutual-TLS with the\nAnycubicSlicer client cert) reached after an HTTP `/info` + `/ctrl`\ncredential-minting handshake on port 18910. EXPERIMENTAL."
              }
            ]
          },
          "deviceId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "providerConfig": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/BambuConfig"
              }
            ]
          },
          "machineUserProfileId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "pattern": "^[a-z0-9]{24}$"
              }
            ]
          },
          "machineSystemProfileId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "number"
              }
            ]
          },
          "processUserProfileId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "pattern": "^[a-z0-9]{24}$"
              }
            ]
          },
          "processSystemProfileId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "number"
              }
            ]
          },
          "name": {
            "type": "string",
            "minLength": 1,
            "maxLength": 1024
          },
          "nozzleDiameter": {
            "type": "string"
          },
          "metadata": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/BambuPrinterMetadata"
              },
              {
                "$ref": "#/components/schemas/KlipperMetadata"
              },
              {
                "$ref": "#/components/schemas/PrusaMetadata"
              },
              {
                "$ref": "#/components/schemas/SdcpMetadata"
              },
              {
                "$ref": "#/components/schemas/OctoPrintMetadata"
              }
            ]
          },
          "proxyClientId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "commMethod": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "const": "bambu-global-mqtt"
              },
              {
                "const": "bambu-cloud-v2"
              },
              {
                "const": "octoprint-mqtt"
              },
              {
                "const": "fuse"
              }
            ]
          },
          "enabled": {
            "type": "boolean"
          },
          "tags": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "confirmedReady": {
            "type": "boolean"
          },
          "isAvailable": {
            "type": "boolean"
          },
          "isOnline": {
            "type": "boolean"
          },
          "printingJobId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "pattern": "^[a-z0-9]{24}$"
              }
            ]
          },
          "lastPrintedAt": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "format": "date-time"
              }
            ]
          },
          "integrationId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "integrationType": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "const": "bambulab"
              },
              {
                "const": "etsy"
              },
              {
                "const": "shopify"
              },
              {
                "const": "ebay"
              },
              {
                "const": "tiktok-shop"
              },
              {
                "const": "woocommerce"
              },
              {
                "const": "shipstation"
              },
              {
                "const": "google-drive"
              },
              {
                "const": "onedrive"
              }
            ]
          },
          "continuousPrint": {
            "type": "boolean"
          },
          "fabmaticRemainingJobs": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "number"
              }
            ]
          },
          "bedSize": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "object",
                "properties": {
                  "x": {
                    "type": "number"
                  },
                  "y": {
                    "type": "number"
                  },
                  "z": {
                    "type": "number"
                  }
                },
                "required": [
                  "x",
                  "y",
                  "z"
                ]
              }
            ],
            "description": "{x,y,z} mm build volume, denormalized from the machine profile's\nprintable_area/printable_height. Cache only — refreshed whenever the\nprinter's machine profile changes; the profile is the source of truth."
          },
          "modelName": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ],
            "description": "Human-readable model name (e.g. \"P1S\", \"Snapmaker U1\", \"Prusa CORE One\")"
          },
          "vendorName": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ],
            "description": "Vendor/manufacturer name (e.g. \"Bambu Lab\", \"Prusa\", \"Snapmaker\")"
          },
          "vendorModelId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "number"
              }
            ]
          },
          "printerCapabilityPatch": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/JsonMergePatchPrinterCommCapabilities"
              }
            ],
            "title": "Per-printer capability override applied last (web Advanced Capabilities panel)",
            "description": "Per-printer capability override applied last (web Advanced Capabilities panel)."
          },
          "printerAdapterBindingsPatch": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/JsonMergePatchPrinterAdapterBindings"
              }
            ],
            "title": "Per-printer adapter binding override applied last",
            "description": "Per-printer adapter binding override applied last."
          },
          "lifetimePrintHours": {
            "type": "number"
          },
          "lifetimeJobCount": {
            "type": "number"
          },
          "isInMaintenance": {
            "type": "boolean"
          },
          "lastMaintenanceOfflineAt": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "format": "date-time"
              }
            ]
          },
          "lastMaintenanceOnlineAt": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "format": "date-time"
              }
            ]
          },
          "customMetadata": {
            "$ref": "#/components/schemas/Recordstringunknown"
          },
          "id": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "storeId": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time"
          }
        },
        "required": [
          "provider",
          "deviceId",
          "providerConfig",
          "machineUserProfileId",
          "machineSystemProfileId",
          "processUserProfileId",
          "processSystemProfileId",
          "name",
          "nozzleDiameter",
          "metadata",
          "proxyClientId",
          "commMethod",
          "enabled",
          "confirmedReady",
          "isAvailable",
          "isOnline",
          "printingJobId",
          "lastPrintedAt",
          "integrationId",
          "integrationType",
          "continuousPrint",
          "fabmaticRemainingJobs",
          "bedSize",
          "modelName",
          "vendorName",
          "vendorModelId",
          "printerCapabilityPatch",
          "printerAdapterBindingsPatch",
          "lifetimePrintHours",
          "lifetimeJobCount",
          "lastMaintenanceOfflineAt",
          "lastMaintenanceOnlineAt",
          "id",
          "storeId",
          "createdAt",
          "updatedAt"
        ]
      },
      "BambuConfig": {
        "type": "object",
        "properties": {
          "use_ams": {
            "type": "boolean"
          },
          "do_bed_leveling": {
            "type": "boolean"
          },
          "do_flow_cali": {
            "type": "boolean"
          },
          "do_vibration_compensation": {
            "type": "boolean"
          },
          "bed_type": {
            "oneOf": [
              {
                "const": "Cool Plate"
              },
              {
                "const": "Engineering Plate"
              },
              {
                "const": "High Temp Plate"
              },
              {
                "const": "Textured PEI Plate"
              },
              {
                "const": "Supertack Plate"
              }
            ]
          },
          "enable_timelapse": {
            "type": "boolean"
          },
          "print_platform_type": {
            "type": "string"
          }
        }
      },
      "BambuPrinterMetadata": {
        "type": "object",
        "properties": {
          "provider": {
            "const": "bambu"
          },
          "name": {
            "type": "string"
          },
          "dev_id": {
            "type": "string"
          },
          "online": {
            "type": "boolean"
          },
          "print_status": {
            "type": "string"
          },
          "dev_model_name": {
            "type": "string"
          },
          "dev_access_code": {
            "type": "string"
          },
          "nozzle_diameter": {
            "type": "number"
          },
          "dev_product_name": {
            "type": "string"
          }
        },
        "required": [
          "name",
          "dev_id",
          "online",
          "print_status",
          "dev_model_name",
          "dev_access_code",
          "nozzle_diameter",
          "dev_product_name"
        ]
      },
      "KlipperMetadata": {
        "type": "object",
        "properties": {
          "provider": {
            "const": "klipper"
          },
          "moonraker_host": {
            "type": "string"
          },
          "moonraker_port": {
            "type": "number"
          },
          "api_key": {
            "type": "string"
          },
          "nozzle_diameter": {
            "type": "number"
          },
          "extruder_count": {
            "type": "number"
          },
          "kinematics": {
            "type": "string"
          },
          "max_velocity": {
            "type": "number"
          },
          "max_accel": {
            "type": "number"
          },
          "mmu_type": {
            "oneOf": [
              {
                "const": "none"
              },
              {
                "const": "ercf"
              },
              {
                "const": "mmu"
              },
              {
                "const": "toolchanger"
              }
            ]
          },
          "mmu_slots": {
            "type": "number"
          }
        },
        "required": [
          "provider",
          "moonraker_port",
          "nozzle_diameter",
          "extruder_count"
        ]
      },
      "PrusaMetadata": {
        "type": "object",
        "properties": {
          "provider": {
            "const": "prusa"
          },
          "password": {
            "type": "string"
          },
          "nozzle_diameter": {
            "type": "number"
          },
          "poll_interval_ms": {
            "type": "number"
          }
        },
        "required": [
          "provider",
          "password",
          "nozzle_diameter"
        ]
      },
      "SdcpMetadata": {
        "type": "object",
        "properties": {
          "provider": {
            "const": "sdcp"
          },
          "nozzle_diameter": {
            "type": "number"
          },
          "mainboard_id": {
            "type": "string"
          }
        },
        "required": [
          "provider",
          "nozzle_diameter"
        ]
      },
      "OctoPrintMetadata": {
        "type": "object",
        "properties": {
          "provider": {
            "const": "octoprint"
          },
          "host": {
            "type": "string"
          },
          "port": {
            "type": "number"
          },
          "api_key": {
            "type": "string"
          },
          "use_https": {
            "type": "boolean"
          },
          "nozzle_diameter": {
            "type": "number"
          },
          "poll_interval_ms": {
            "type": "number"
          }
        },
        "required": [
          "provider",
          "host",
          "port",
          "api_key"
        ]
      },
      "JsonMergePatchPrinterCommCapabilities": {
        "type": "object",
        "properties": {
          "nozzles": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "temperature": {
                      "type": "object",
                      "properties": {
                        "read": {
                          "type": "boolean"
                        },
                        "set": {
                          "type": "boolean"
                        }
                      }
                    },
                    "extrude": {
                      "type": "boolean"
                    },
                    "toolRef": {
                      "type": "string"
                    },
                    "ref": {
                      "type": "string",
                      "title": "Logical reference, unique within its array. ASCII, lowercase, deterministic",
                      "description": "Logical reference, unique within its array. ASCII, lowercase, deterministic."
                    },
                    "label": {
                      "type": "string",
                      "description": "Human-readable display name"
                    },
                    "kind": {
                      "type": "string",
                      "description": "Optional vendor/extensible subtype when the base role is not enough"
                    }
                  }
                }
              }
            ]
          },
          "tools": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "selectable": {
                      "type": "boolean"
                    },
                    "nozzleRefs": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    },
                    "fanRefs": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    },
                    "sensorRefs": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    },
                    "ref": {
                      "type": "string",
                      "title": "Logical reference, unique within its array. ASCII, lowercase, deterministic",
                      "description": "Logical reference, unique within its array. ASCII, lowercase, deterministic."
                    },
                    "label": {
                      "type": "string",
                      "description": "Human-readable display name"
                    },
                    "kind": {
                      "type": "string",
                      "description": "Optional vendor/extensible subtype when the base role is not enough"
                    }
                  }
                }
              }
            ]
          },
          "fans": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "role": {
                      "oneOf": [
                        {
                          "const": "part"
                        },
                        {
                          "const": "aux"
                        },
                        {
                          "const": "chamber"
                        },
                        {
                          "const": "hotend"
                        },
                        {
                          "const": "exhaust"
                        },
                        {
                          "type": "object",
                          "properties": {
                            "length": {
                              "type": "number",
                              "title": "Returns the length of a String object",
                              "description": "Returns the length of a String object."
                            }
                          },
                          "additionalProperties": {
                            "type": "string"
                          }
                        }
                      ]
                    },
                    "controllable": {
                      "type": "boolean"
                    },
                    "reportsSpeed": {
                      "type": "boolean",
                      "description": "Whether the printer reports back a live fan speed. Defaults to true\n(omitted). Set false for write-only fans (e.g. OctoPrint, whose REST API\naccepts M106 but never surfaces a speed) so diagnostics skip the readback\nverification instead of failing a check they can't perform."
                    },
                    "nozzleRef": {
                      "type": "string"
                    },
                    "toolRef": {
                      "type": "string"
                    },
                    "ref": {
                      "type": "string",
                      "title": "Logical reference, unique within its array. ASCII, lowercase, deterministic",
                      "description": "Logical reference, unique within its array. ASCII, lowercase, deterministic."
                    },
                    "label": {
                      "type": "string",
                      "description": "Human-readable display name"
                    },
                    "kind": {
                      "type": "string",
                      "description": "Optional vendor/extensible subtype when the base role is not enough"
                    }
                  }
                }
              }
            ]
          },
          "lights": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "role": {
                      "oneOf": [
                        {
                          "const": "chamber"
                        },
                        {
                          "const": "work"
                        },
                        {
                          "const": "indicator"
                        },
                        {
                          "const": "strip"
                        },
                        {
                          "type": "object",
                          "properties": {
                            "length": {
                              "type": "number",
                              "title": "Returns the length of a String object",
                              "description": "Returns the length of a String object."
                            }
                          },
                          "additionalProperties": {
                            "type": "string"
                          }
                        }
                      ]
                    },
                    "dimmable": {
                      "type": "boolean"
                    },
                    "ref": {
                      "type": "string",
                      "title": "Logical reference, unique within its array. ASCII, lowercase, deterministic",
                      "description": "Logical reference, unique within its array. ASCII, lowercase, deterministic."
                    },
                    "label": {
                      "type": "string",
                      "description": "Human-readable display name"
                    },
                    "kind": {
                      "type": "string",
                      "description": "Optional vendor/extensible subtype when the base role is not enough"
                    }
                  }
                }
              }
            ]
          },
          "sensors": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "role": {
                      "oneOf": [
                        {
                          "const": "lidar"
                        },
                        {
                          "const": "filament_runout"
                        },
                        {
                          "const": "door"
                        },
                        {
                          "const": "accelerometer"
                        },
                        {
                          "const": "bed_mesh"
                        },
                        {
                          "type": "object",
                          "properties": {
                            "length": {
                              "type": "number",
                              "title": "Returns the length of a String object",
                              "description": "Returns the length of a String object."
                            }
                          },
                          "additionalProperties": {
                            "type": "string"
                          }
                        }
                      ]
                    },
                    "nozzleRef": {
                      "type": "string"
                    },
                    "toolRef": {
                      "type": "string"
                    },
                    "ref": {
                      "type": "string",
                      "title": "Logical reference, unique within its array. ASCII, lowercase, deterministic",
                      "description": "Logical reference, unique within its array. ASCII, lowercase, deterministic."
                    },
                    "label": {
                      "type": "string",
                      "description": "Human-readable display name"
                    },
                    "kind": {
                      "type": "string",
                      "description": "Optional vendor/extensible subtype when the base role is not enough"
                    }
                  }
                }
              }
            ]
          },
          "beds": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "temperature": {
                      "type": "object",
                      "properties": {
                        "read": {
                          "type": "boolean"
                        },
                        "set": {
                          "type": "boolean"
                        }
                      }
                    },
                    "hasMesh": {
                      "type": "boolean"
                    },
                    "ref": {
                      "type": "string",
                      "title": "Logical reference, unique within its array. ASCII, lowercase, deterministic",
                      "description": "Logical reference, unique within its array. ASCII, lowercase, deterministic."
                    },
                    "label": {
                      "type": "string",
                      "description": "Human-readable display name"
                    },
                    "kind": {
                      "type": "string",
                      "description": "Optional vendor/extensible subtype when the base role is not enough"
                    }
                  }
                }
              }
            ]
          },
          "chambers": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "temperature": {
                      "type": "object",
                      "properties": {
                        "read": {
                          "type": "boolean"
                        },
                        "set": {
                          "type": "boolean"
                        }
                      }
                    },
                    "ref": {
                      "type": "string",
                      "title": "Logical reference, unique within its array. ASCII, lowercase, deterministic",
                      "description": "Logical reference, unique within its array. ASCII, lowercase, deterministic."
                    },
                    "label": {
                      "type": "string",
                      "description": "Human-readable display name"
                    },
                    "kind": {
                      "type": "string",
                      "description": "Optional vendor/extensible subtype when the base role is not enough"
                    }
                  }
                }
              }
            ]
          },
          "axes": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "axis": {
                      "oneOf": [
                        {
                          "const": "x"
                        },
                        {
                          "const": "y"
                        },
                        {
                          "const": "z"
                        }
                      ]
                    },
                    "move": {
                      "type": "boolean"
                    },
                    "home": {
                      "type": "boolean"
                    },
                    "flipped": {
                      "type": "boolean"
                    },
                    "ref": {
                      "type": "string",
                      "title": "Logical reference, unique within its array. ASCII, lowercase, deterministic",
                      "description": "Logical reference, unique within its array. ASCII, lowercase, deterministic."
                    },
                    "label": {
                      "type": "string",
                      "description": "Human-readable display name"
                    },
                    "kind": {
                      "type": "string",
                      "description": "Optional vendor/extensible subtype when the base role is not enough"
                    }
                  }
                }
              }
            ]
          },
          "filaments": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "canReadFilament": {
                      "type": "boolean",
                      "title": "True if printer hardware can read filament info from this source",
                      "description": "True if printer hardware can read filament info from this source."
                    },
                    "canLoad": {
                      "type": "boolean",
                      "title": "True if printer can auto-load filament into this source",
                      "description": "True if printer can auto-load filament into this source."
                    },
                    "canUnload": {
                      "type": "boolean",
                      "title": "True if printer can auto-unload filament",
                      "description": "True if printer can auto-unload filament."
                    },
                    "ref": {
                      "type": "string",
                      "title": "Logical reference, unique within its array. ASCII, lowercase, deterministic",
                      "description": "Logical reference, unique within its array. ASCII, lowercase, deterministic."
                    },
                    "label": {
                      "type": "string",
                      "description": "Human-readable display name"
                    },
                    "kind": {
                      "type": "string",
                      "description": "Optional vendor/extensible subtype when the base role is not enough"
                    }
                  }
                }
              }
            ],
            "description": "Directly-fed filament sources. An array because some printers feed\nmultiple positions simultaneously (Bambu external bay = 2, Snapmaker\nU1 = 4, Bambu H2D = 2+). Each entry is one loadable position.\nAMS / MMU / ERCF / CFS / toolchanger live separately under\n`peripherals` and are presented alongside these in the UI's\nFilaments view."
          },
          "cameras": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "protocol": {
                      "oneOf": [
                        {
                          "const": "mjpeg-bambu"
                        },
                        {
                          "const": "rtsps-bambu"
                        },
                        {
                          "const": "webrtc"
                        },
                        {
                          "const": "rtsp"
                        },
                        {
                          "const": "rtsps"
                        },
                        {
                          "const": "mjpeg-http"
                        },
                        {
                          "const": "http-flv"
                        },
                        {
                          "const": "http-snapshot"
                        },
                        {
                          "const": "http-snapshot-poll"
                        }
                      ]
                    },
                    "mounting": {
                      "oneOf": [
                        {
                          "const": "external"
                        },
                        {
                          "const": "builtin"
                        }
                      ],
                      "title": "`builtin`: seeded by the capability set, locked in the UI",
                      "description": "`builtin`: seeded by the capability set, locked in the UI.\n`external`: user-attached; editable + removable via printer config."
                    },
                    "url": {
                      "type": "string",
                      "description": "Literal stream URL. Required for non-Bambu protocols, EXCEPT for\n`mjpeg-http` cameras whose endpoint can be synthesized from\n`printer.ip + port` (path-agnostic MJPEG, e.g. Elegoo Centauri\nCarbon 2 on `:8080`). Set `url` when the camera is at a third-party\nabsolute address; otherwise just set `port` and let the go2rtc\ngenerator build `http://${printer.ip}:${port}/`."
                    },
                    "port": {
                      "type": "number",
                      "title": "Override default port for the protocol",
                      "description": "Override default port for the protocol."
                    },
                    "path": {
                      "type": "string",
                      "description": "Override the URL path for `mjpeg-http` (default `/`). Used when the\nstream sits behind a fixed path on the printer's web server — e.g.\nMainsail/Fluidd-style `/webcam/?action=stream` for camera-streamer\nor mjpg-streamer. Combined with `printer.ip + port` to build the\nfull URL when `url` isn't set."
                    },
                    "auth": {
                      "type": "string",
                      "description": "Auth credentials for the stream — `Bearer ...`, `user:pass`, or a\nquery-string fragment. Bambu protocols ignore this; their auth is\nderived from `printer.accessCode`."
                    },
                    "role": {
                      "oneOf": [
                        {
                          "const": "overhead"
                        },
                        {
                          "const": "bed"
                        },
                        {
                          "const": "chamber"
                        },
                        {
                          "const": "toolhead"
                        },
                        {
                          "type": "object",
                          "properties": {
                            "length": {
                              "type": "number",
                              "title": "Returns the length of a String object",
                              "description": "Returns the length of a String object."
                            }
                          },
                          "additionalProperties": {
                            "type": "string"
                          }
                        }
                      ],
                      "title": "UX-only role for grouping/labeling",
                      "description": "UX-only role for grouping/labeling."
                    },
                    "snapshots": {
                      "type": "boolean",
                      "title": "Whether to capture periodic snapshots. Defaults true if unset",
                      "description": "Whether to capture periodic snapshots. Defaults true if unset."
                    },
                    "timelapse": {
                      "type": "boolean",
                      "title": "Whether to record timelapses. Defaults true if unset",
                      "description": "Whether to record timelapses. Defaults true if unset."
                    },
                    "primary": {
                      "type": "boolean",
                      "description": "When true, this is the printer's primary camera: it owns the bare\n`printer.id` go2rtc stream key, so the live dashboard/printer tile,\nperiodic snapshots, the print-completion thumbnail, and timelapses\nall read from it instead of the built-in camera. At most one camera\nper printer should set this; when none do, the first camera\n(index 0, normally the built-in) is the implicit primary."
                    },
                    "webrtcSignaling": {
                      "type": "object",
                      "properties": {
                        "flavor": {
                          "oneOf": [
                            {
                              "const": "whep"
                            },
                            {
                              "const": "creality-base64-json"
                            },
                            {
                              "const": "go2rtc-ws"
                            }
                          ]
                        },
                        "path": {
                          "type": "string",
                          "title": "Endpoint path or full URL for the signaling request",
                          "description": "Endpoint path or full URL for the signaling request."
                        }
                      },
                      "description": "SDP-exchange config for `protocol: 'webrtc'`. Required when protocol\nis `'webrtc'`; ignored otherwise. The transport itself is always\nstandard WebRTC; this only describes how the offer/answer get traded.\n\nFor `creality-base64-json`, the signaling URL is built from\n`printer.ip:port` + `path` (e.g. http://192.168.1.26:8000/call/webrtc_local).\nFor `whep`, `path` may be a full URL or a path appended to the camera's\nbase URL."
                    },
                    "ref": {
                      "type": "string",
                      "title": "Logical reference, unique within its array. ASCII, lowercase, deterministic",
                      "description": "Logical reference, unique within its array. ASCII, lowercase, deterministic."
                    },
                    "label": {
                      "type": "string",
                      "description": "Human-readable display name"
                    },
                    "kind": {
                      "type": "string",
                      "description": "Optional vendor/extensible subtype when the base role is not enough"
                    }
                  }
                }
              }
            ],
            "description": "Cameras attached to the printer. Built-in (`mounting:'builtin'`)\ncameras come from the printer's capability set; external IP/RTSP\ncameras (`mounting:'external'`) are added via printer config.\n\nReplaces the legacy `getCameraProtocol(modelCode)` lookup — all\ncamera config flows through this array."
          },
          "peripherals": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "oneOf": [
                        {
                          "const": "ercf"
                        },
                        {
                          "const": "mmu"
                        },
                        {
                          "const": "toolchanger"
                        },
                        {
                          "const": "ams"
                        },
                        {
                          "type": "object",
                          "properties": {
                            "length": {
                              "type": "number",
                              "title": "Returns the length of a String object",
                              "description": "Returns the length of a String object."
                            }
                          },
                          "additionalProperties": {
                            "type": "string"
                          }
                        }
                      ]
                    },
                    "maxUnits": {
                      "type": "number"
                    },
                    "slotsPerUnit": {
                      "type": "number"
                    },
                    "minSlotsPerUnit": {
                      "type": "number"
                    },
                    "maxSlotsPerUnit": {
                      "type": "number"
                    },
                    "canReadFilament": {
                      "type": "boolean"
                    },
                    "canLoad": {
                      "type": "boolean"
                    },
                    "canUnload": {
                      "type": "boolean"
                    },
                    "ref": {
                      "type": "string",
                      "title": "Logical reference, unique within its array. ASCII, lowercase, deterministic",
                      "description": "Logical reference, unique within its array. ASCII, lowercase, deterministic."
                    },
                    "label": {
                      "type": "string",
                      "description": "Human-readable display name"
                    },
                    "kind": {
                      "type": "string",
                      "description": "Optional vendor/extensible subtype when the base role is not enough"
                    }
                  }
                }
              }
            ]
          },
          "printing": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/JsonMergePatch__type"
              }
            ]
          },
          "filament": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/JsonMergePatch__type.o1"
              }
            ]
          },
          "files": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/JsonMergePatch__type.o2"
              }
            ]
          },
          "gcode": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "boolean"
              }
            ]
          },
          "printOptions": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "kind": {
                      "oneOf": [
                        {
                          "const": "boolean"
                        },
                        {
                          "const": "enum"
                        }
                      ]
                    },
                    "default": {
                      "oneOf": [
                        {
                          "type": "string"
                        },
                        {
                          "type": "boolean"
                        }
                      ],
                      "title": "UI default when the stored providerConfig is null / missing the key",
                      "description": "UI default when the stored providerConfig is null / missing the key."
                    },
                    "choices": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "value": {
                            "type": "string"
                          },
                          "label": {
                            "type": "string"
                          }
                        }
                      },
                      "title": "For `kind: \"enum\"`: allowed values with display labels",
                      "description": "For `kind: \"enum\"`: allowed values with display labels."
                    },
                    "description": {
                      "type": "string",
                      "title": "Tooltip help text rendered next to the label",
                      "description": "Tooltip help text rendered next to the label."
                    },
                    "ref": {
                      "type": "string",
                      "title": "Logical reference, unique within its array. ASCII, lowercase, deterministic",
                      "description": "Logical reference, unique within its array. ASCII, lowercase, deterministic."
                    },
                    "label": {
                      "type": "string",
                      "description": "Human-readable display name"
                    }
                  }
                }
              }
            ]
          }
        },
        "description": "JSON Merge Patch style type:\n- `null` removes a key\n- arrays replace the target value (or merge-by-ref for component arrays,\n  handled at runtime in `applyCapabilitiesPatch`)\n\nArray elements use `DeepPartial<U>` so callers can supply just the\nfields they're changing (e.g. `{ ref: 'fan_part', controllable: false }`\nwithout restating `role` / `label`). `applyCapabilitiesPatch` merges\ncomponent arrays by `ref` at runtime, so partial elements compose with\nthe base shape correctly. Non-component arrays follow standard\nreplace-the-whole-thing semantics — supply full elements for those.\n\nTests `NonNullable<T[P]>` first so optional fields recurse correctly:\nthe previous `T[P] extends Array<infer U>` check failed for optional\narrays (the `undefined` union member kept the array branch from\nmatching) and fell through to the object branch, producing\n`Array<string | null | undefined>` shapes that nestia rejects."
      },
      "JsonMergePatch__type": {
        "type": "object",
        "properties": {
          "start": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "boolean"
              }
            ]
          },
          "pause": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "boolean"
              }
            ]
          },
          "resume": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "boolean"
              }
            ]
          },
          "stop": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "boolean"
              }
            ]
          },
          "skipObjects": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "boolean"
              }
            ]
          }
        },
        "description": "JSON Merge Patch style type:\n- `null` removes a key\n- arrays replace the target value (or merge-by-ref for component arrays,\n  handled at runtime in `applyCapabilitiesPatch`)\n\nArray elements use `DeepPartial<U>` so callers can supply just the\nfields they're changing (e.g. `{ ref: 'fan_part', controllable: false }`\nwithout restating `role` / `label`). `applyCapabilitiesPatch` merges\ncomponent arrays by `ref` at runtime, so partial elements compose with\nthe base shape correctly. Non-component arrays follow standard\nreplace-the-whole-thing semantics — supply full elements for those.\n\nTests `NonNullable<T[P]>` first so optional fields recurse correctly:\nthe previous `T[P] extends Array<infer U>` check failed for optional\narrays (the `undefined` union member kept the array branch from\nmatching) and fell through to the object branch, producing\n`Array<string | null | undefined>` shapes that nestia rejects."
      },
      "JsonMergePatch__type.o1": {
        "type": "object",
        "properties": {
          "setInfo": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "boolean"
              }
            ]
          },
          "read": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "boolean"
              }
            ]
          },
          "dynamicSlots": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "boolean"
              }
            ]
          }
        },
        "description": "JSON Merge Patch style type:\n- `null` removes a key\n- arrays replace the target value (or merge-by-ref for component arrays,\n  handled at runtime in `applyCapabilitiesPatch`)\n\nArray elements use `DeepPartial<U>` so callers can supply just the\nfields they're changing (e.g. `{ ref: 'fan_part', controllable: false }`\nwithout restating `role` / `label`). `applyCapabilitiesPatch` merges\ncomponent arrays by `ref` at runtime, so partial elements compose with\nthe base shape correctly. Non-component arrays follow standard\nreplace-the-whole-thing semantics — supply full elements for those.\n\nTests `NonNullable<T[P]>` first so optional fields recurse correctly:\nthe previous `T[P] extends Array<infer U>` check failed for optional\narrays (the `undefined` union member kept the array branch from\nmatching) and fell through to the object branch, producing\n`Array<string | null | undefined>` shapes that nestia rejects."
      },
      "JsonMergePatch__type.o2": {
        "type": "object",
        "properties": {
          "upload": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "boolean"
              }
            ]
          },
          "list": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "boolean"
              }
            ]
          }
        },
        "description": "JSON Merge Patch style type:\n- `null` removes a key\n- arrays replace the target value (or merge-by-ref for component arrays,\n  handled at runtime in `applyCapabilitiesPatch`)\n\nArray elements use `DeepPartial<U>` so callers can supply just the\nfields they're changing (e.g. `{ ref: 'fan_part', controllable: false }`\nwithout restating `role` / `label`). `applyCapabilitiesPatch` merges\ncomponent arrays by `ref` at runtime, so partial elements compose with\nthe base shape correctly. Non-component arrays follow standard\nreplace-the-whole-thing semantics — supply full elements for those.\n\nTests `NonNullable<T[P]>` first so optional fields recurse correctly:\nthe previous `T[P] extends Array<infer U>` check failed for optional\narrays (the `undefined` union member kept the array branch from\nmatching) and fell through to the object branch, producing\n`Array<string | null | undefined>` shapes that nestia rejects."
      },
      "JsonMergePatchPrinterAdapterBindings": {
        "type": "object",
        "properties": {
          "bambu": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/JsonMergePatchBambuAdapterBindings"
              }
            ]
          },
          "klipper": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/JsonMergePatchKlipperAdapterBindings"
              }
            ]
          },
          "prusa": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/JsonMergePatchPrusaAdapterBindings"
              }
            ]
          },
          "sdcp": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/JsonMergePatchSdcpAdapterBindings"
              }
            ]
          },
          "elegoo-mqtt": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/JsonMergePatchElegooMqttAdapterBindings"
              }
            ]
          },
          "anycubic": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/JsonMergePatchAnycubicAdapterBindings"
              }
            ]
          },
          "octoprint": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/JsonMergePatchOctoprintAdapterBindings"
              }
            ]
          }
        },
        "description": "JSON Merge Patch style type:\n- `null` removes a key\n- arrays replace the target value (or merge-by-ref for component arrays,\n  handled at runtime in `applyCapabilitiesPatch`)\n\nArray elements use `DeepPartial<U>` so callers can supply just the\nfields they're changing (e.g. `{ ref: 'fan_part', controllable: false }`\nwithout restating `role` / `label`). `applyCapabilitiesPatch` merges\ncomponent arrays by `ref` at runtime, so partial elements compose with\nthe base shape correctly. Non-component arrays follow standard\nreplace-the-whole-thing semantics — supply full elements for those.\n\nTests `NonNullable<T[P]>` first so optional fields recurse correctly:\nthe previous `T[P] extends Array<infer U>` check failed for optional\narrays (the `undefined` union member kept the array branch from\nmatching) and fell through to the object branch, producing\n`Array<string | null | undefined>` shapes that nestia rejects."
      },
      "JsonMergePatchBambuAdapterBindings": {
        "type": "object",
        "properties": {
          "schemaVersion": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "const": 1
              }
            ],
            "description": "Shape version. Present on v1 payloads; absent on legacy payloads that\npre-date the refactor. Resolvers branch on this: v1 uses the adapter-\nlevel `commands` map + component kinds; legacy falls back to per-ref\nprefix conventions so old data keeps rendering."
          },
          "commands": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/JsonMergePatchPartialRecordBambuCommandNameTemplateBinding"
              }
            ],
            "title": "Adapter-level command templates. Populated on v1 bindings",
            "description": "Adapter-level command templates. Populated on v1 bindings."
          },
          "components": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/JsonMergePatchRecordstringBambuComponentBinding"
              }
            ],
            "title": "Component bindings keyed by Printago ref",
            "description": "Component bindings keyed by Printago ref."
          },
          "printOptions": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/JsonMergePatchRecordstringBambuPrintOptionBinding"
              }
            ],
            "description": "Print-option bindings keyed by capability ref. Used by the Bambu\ncommand generator to build the `print.project_file` payload from the\nstored `providerConfig`. Also consumed by the web form to bind each\nUI widget to the right storage key."
          }
        },
        "description": "JSON Merge Patch style type:\n- `null` removes a key\n- arrays replace the target value (or merge-by-ref for component arrays,\n  handled at runtime in `applyCapabilitiesPatch`)\n\nArray elements use `DeepPartial<U>` so callers can supply just the\nfields they're changing (e.g. `{ ref: 'fan_part', controllable: false }`\nwithout restating `role` / `label`). `applyCapabilitiesPatch` merges\ncomponent arrays by `ref` at runtime, so partial elements compose with\nthe base shape correctly. Non-component arrays follow standard\nreplace-the-whole-thing semantics — supply full elements for those.\n\nTests `NonNullable<T[P]>` first so optional fields recurse correctly:\nthe previous `T[P] extends Array<infer U>` check failed for optional\narrays (the `undefined` union member kept the array branch from\nmatching) and fell through to the object branch, producing\n`Array<string | null | undefined>` shapes that nestia rejects."
      },
      "JsonMergePatchPartialRecordBambuCommandNameTemplateBinding": {
        "type": "object",
        "properties": {
          "setNozzleTemperature": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/JsonMergePatchTemplateBinding"
              }
            ]
          },
          "setBedTemperature": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/JsonMergePatchTemplateBinding"
              }
            ]
          },
          "setFan": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/JsonMergePatchTemplateBinding"
              }
            ]
          },
          "setLight": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/JsonMergePatchTemplateBinding"
              }
            ]
          },
          "selectTool": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/JsonMergePatchTemplateBinding"
              }
            ]
          }
        },
        "description": "JSON Merge Patch style type:\n- `null` removes a key\n- arrays replace the target value (or merge-by-ref for component arrays,\n  handled at runtime in `applyCapabilitiesPatch`)\n\nArray elements use `DeepPartial<U>` so callers can supply just the\nfields they're changing (e.g. `{ ref: 'fan_part', controllable: false }`\nwithout restating `role` / `label`). `applyCapabilitiesPatch` merges\ncomponent arrays by `ref` at runtime, so partial elements compose with\nthe base shape correctly. Non-component arrays follow standard\nreplace-the-whole-thing semantics — supply full elements for those.\n\nTests `NonNullable<T[P]>` first so optional fields recurse correctly:\nthe previous `T[P] extends Array<infer U>` check failed for optional\narrays (the `undefined` union member kept the array branch from\nmatching) and fell through to the object branch, producing\n`Array<string | null | undefined>` shapes that nestia rejects."
      },
      "JsonMergePatchTemplateBinding": {
        "type": "object",
        "properties": {
          "template": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ],
            "description": "Protocol-specific command template. Supports flat and dotted-path\nplaceholders resolved by renderBindingTemplate. Common placeholders:\n- {temperature}, {speed}, {fraction}, {pwm}, {value} — scalar arguments\n- {component.heater}, {component.fan}, {component.selectCommand} — fields\n  from the resolved component binding\n- {klipper.<field>} — adapter-level fields (reserved; currently unused)\nMissing placeholders cause the template to fail rendering with the\nstructured { ok: false, missing: string[] } result."
          }
        },
        "description": "JSON Merge Patch style type:\n- `null` removes a key\n- arrays replace the target value (or merge-by-ref for component arrays,\n  handled at runtime in `applyCapabilitiesPatch`)\n\nArray elements use `DeepPartial<U>` so callers can supply just the\nfields they're changing (e.g. `{ ref: 'fan_part', controllable: false }`\nwithout restating `role` / `label`). `applyCapabilitiesPatch` merges\ncomponent arrays by `ref` at runtime, so partial elements compose with\nthe base shape correctly. Non-component arrays follow standard\nreplace-the-whole-thing semantics — supply full elements for those.\n\nTests `NonNullable<T[P]>` first so optional fields recurse correctly:\nthe previous `T[P] extends Array<infer U>` check failed for optional\narrays (the `undefined` union member kept the array branch from\nmatching) and fell through to the object branch, producing\n`Array<string | null | undefined>` shapes that nestia rejects."
      },
      "JsonMergePatchRecordstringBambuComponentBinding": {
        "type": "object",
        "properties": {},
        "description": "JSON Merge Patch style type:\n- `null` removes a key\n- arrays replace the target value (or merge-by-ref for component arrays,\n  handled at runtime in `applyCapabilitiesPatch`)\n\nArray elements use `DeepPartial<U>` so callers can supply just the\nfields they're changing (e.g. `{ ref: 'fan_part', controllable: false }`\nwithout restating `role` / `label`). `applyCapabilitiesPatch` merges\ncomponent arrays by `ref` at runtime, so partial elements compose with\nthe base shape correctly. Non-component arrays follow standard\nreplace-the-whole-thing semantics — supply full elements for those.\n\nTests `NonNullable<T[P]>` first so optional fields recurse correctly:\nthe previous `T[P] extends Array<infer U>` check failed for optional\narrays (the `undefined` union member kept the array branch from\nmatching) and fell through to the object branch, producing\n`Array<string | null | undefined>` shapes that nestia rejects.",
        "additionalProperties": {
          "oneOf": [
            {
              "type": "null"
            },
            {
              "$ref": "#/components/schemas/JsonMergePatchBambuComponentBinding"
            }
          ]
        }
      },
      "JsonMergePatchBambuComponentBinding": {
        "type": "object",
        "properties": {
          "kind": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "const": "bed"
              },
              {
                "const": "nozzle"
              },
              {
                "const": "fan"
              },
              {
                "const": "light"
              },
              {
                "const": "tool"
              }
            ],
            "description": "Kind discriminator. Present on every v1 component. Legacy Bambu\nbindings (pre-v1) may omit this; the resolver falls back to the\nref-prefix convention (`nozzle_` → nozzle, `fan_` → fan, etc.) so\nolder data keeps working through the deprecation window."
          },
          "fanChannel": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ],
            "description": "For `fan` components: Bambu's channel label used by the adapter-level\n`setFan` template (`M106 {component.fanChannel} S{pwm}`). Examples:\n`P1`, `P2`, `P3`."
          },
          "ledNode": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ],
            "title": "For `light` components: the printer-side LED node name (e.g",
            "description": "For `light` components: the printer-side LED node name (e.g.\n`chamber_light`, `work_light`) used by the adapter-level `setLight`\ntemplate. Bambu light commands are MQTT JSON, not gcode — callers\nread this value directly via `resolveBambuLedNode`."
          },
          "selectCommand": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ],
            "description": "For `tool` components: the gcode fragment the `selectTool` template\nuses to switch to this tool. IDEX printers (H2D/H2C) expose this."
          },
          "temperatureCommand": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/JsonMergePatchTemplateBinding"
              }
            ],
            "title": "Optional per-component override for the temperature command template",
            "description": "Optional per-component override for the temperature command template.\nTakes precedence over the adapter-level `commands.setNozzleTemperature`\n/ `setBedTemperature`. Use only when a specific ref needs non-standard\ngcode (very rare on Bambu, which uses Marlin-style M104/M140 for every\nnozzle + bed)."
          },
          "fanCommand": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/JsonMergePatchTemplateBinding"
              }
            ],
            "title": "Per-component override for the fan command template. Rare",
            "description": "Per-component override for the fan command template. Rare."
          },
          "toolSelectCommand": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/JsonMergePatchTemplateBinding"
              }
            ],
            "title": "Per-component override for the tool-select template. Rare",
            "description": "Per-component override for the tool-select template. Rare."
          }
        },
        "description": "JSON Merge Patch style type:\n- `null` removes a key\n- arrays replace the target value (or merge-by-ref for component arrays,\n  handled at runtime in `applyCapabilitiesPatch`)\n\nArray elements use `DeepPartial<U>` so callers can supply just the\nfields they're changing (e.g. `{ ref: 'fan_part', controllable: false }`\nwithout restating `role` / `label`). `applyCapabilitiesPatch` merges\ncomponent arrays by `ref` at runtime, so partial elements compose with\nthe base shape correctly. Non-component arrays follow standard\nreplace-the-whole-thing semantics — supply full elements for those.\n\nTests `NonNullable<T[P]>` first so optional fields recurse correctly:\nthe previous `T[P] extends Array<infer U>` check failed for optional\narrays (the `undefined` union member kept the array branch from\nmatching) and fell through to the object branch, producing\n`Array<string | null | undefined>` shapes that nestia rejects."
      },
      "JsonMergePatchRecordstringBambuPrintOptionBinding": {
        "type": "object",
        "properties": {},
        "description": "JSON Merge Patch style type:\n- `null` removes a key\n- arrays replace the target value (or merge-by-ref for component arrays,\n  handled at runtime in `applyCapabilitiesPatch`)\n\nArray elements use `DeepPartial<U>` so callers can supply just the\nfields they're changing (e.g. `{ ref: 'fan_part', controllable: false }`\nwithout restating `role` / `label`). `applyCapabilitiesPatch` merges\ncomponent arrays by `ref` at runtime, so partial elements compose with\nthe base shape correctly. Non-component arrays follow standard\nreplace-the-whole-thing semantics — supply full elements for those.\n\nTests `NonNullable<T[P]>` first so optional fields recurse correctly:\nthe previous `T[P] extends Array<infer U>` check failed for optional\narrays (the `undefined` union member kept the array branch from\nmatching) and fell through to the object branch, producing\n`Array<string | null | undefined>` shapes that nestia rejects.",
        "additionalProperties": {
          "oneOf": [
            {
              "type": "null"
            },
            {
              "$ref": "#/components/schemas/JsonMergePatchBambuPrintOptionBinding"
            }
          ]
        }
      },
      "JsonMergePatchBambuPrintOptionBinding": {
        "type": "object",
        "properties": {
          "storageKey": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ],
            "description": "Key inside `printer.providerConfig` (a `BambuConfig` today) that\nholds this option's stored value. Lets the capability-schema ref\nstay clean (`bed_leveling`) while the stored field keeps its\nhistorical name (`do_bed_leveling`). No DB migration on stored rows."
          },
          "payloadField": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ],
            "title": "Field name inside the MQTT `print.project_file` payload",
            "description": "Field name inside the MQTT `print.project_file` payload."
          },
          "defaultValue": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              },
              {
                "type": "boolean"
              }
            ],
            "description": "Value written into the payload when `providerConfig` omits the\noption entirely. Matches the current hardcoded `?? false` / `?? \"auto\"`\ndefaults so behaviour doesn't change when this field is absent."
          }
        },
        "description": "JSON Merge Patch style type:\n- `null` removes a key\n- arrays replace the target value (or merge-by-ref for component arrays,\n  handled at runtime in `applyCapabilitiesPatch`)\n\nArray elements use `DeepPartial<U>` so callers can supply just the\nfields they're changing (e.g. `{ ref: 'fan_part', controllable: false }`\nwithout restating `role` / `label`). `applyCapabilitiesPatch` merges\ncomponent arrays by `ref` at runtime, so partial elements compose with\nthe base shape correctly. Non-component arrays follow standard\nreplace-the-whole-thing semantics — supply full elements for those.\n\nTests `NonNullable<T[P]>` first so optional fields recurse correctly:\nthe previous `T[P] extends Array<infer U>` check failed for optional\narrays (the `undefined` union member kept the array branch from\nmatching) and fell through to the object branch, producing\n`Array<string | null | undefined>` shapes that nestia rejects."
      },
      "JsonMergePatchKlipperAdapterBindings": {
        "type": "object",
        "properties": {
          "schemaVersion": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "const": 1
              }
            ]
          },
          "modules": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "array",
                "items": {
                  "type": "string"
                }
              }
            ],
            "description": "Stable identifiers of fuse-lib Klipper modules that own vendor-specific\nparsing, subscriptions, side-channel pollers, and commands for this\nprinter. Mixins declare their required modules here; the resolver\nunions across mixins (see `resolveAdapterBindings`). Names that the\nrunning fuse build doesn't recognize are non-fatal — fuse logs a\nwarning and ignores them, matching the same drift-tolerance pattern\nas `getMixinsForVendorModel`'s `matchType`.\n\nExamples: `snapmaker_u1`, `creality_cfs`, `creality_filament_rack`,\n`creality_k2_commands`."
          },
          "commands": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/JsonMergePatchPartialRecordKlipperCommandNameTemplateBinding"
              }
            ],
            "title": "Adapter-level default command templates, keyed by canonical name",
            "description": "Adapter-level default command templates, keyed by canonical name.\nTemplates pull per-ref fields via placeholders such as\n`{component.heater}` so one template covers every nozzle or bed."
          },
          "components": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/JsonMergePatchRecordstringKlipperComponentBinding"
              }
            ],
            "description": "Component bindings keyed by Printago ref. The same ref map is both\nthe stats-lookup source and the command-resolution source."
          },
          "printOptions": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/JsonMergePatchRecordstringAdapterPrintOptionBinding"
              }
            ],
            "title": "Per-print-job option bindings — empty today; reserved for future use",
            "description": "Per-print-job option bindings — empty today; reserved for future use."
          }
        },
        "description": "JSON Merge Patch style type:\n- `null` removes a key\n- arrays replace the target value (or merge-by-ref for component arrays,\n  handled at runtime in `applyCapabilitiesPatch`)\n\nArray elements use `DeepPartial<U>` so callers can supply just the\nfields they're changing (e.g. `{ ref: 'fan_part', controllable: false }`\nwithout restating `role` / `label`). `applyCapabilitiesPatch` merges\ncomponent arrays by `ref` at runtime, so partial elements compose with\nthe base shape correctly. Non-component arrays follow standard\nreplace-the-whole-thing semantics — supply full elements for those.\n\nTests `NonNullable<T[P]>` first so optional fields recurse correctly:\nthe previous `T[P] extends Array<infer U>` check failed for optional\narrays (the `undefined` union member kept the array branch from\nmatching) and fell through to the object branch, producing\n`Array<string | null | undefined>` shapes that nestia rejects."
      },
      "JsonMergePatchPartialRecordKlipperCommandNameTemplateBinding": {
        "type": "object",
        "properties": {
          "setNozzleTemperature": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/JsonMergePatchTemplateBinding"
              }
            ]
          },
          "setBedTemperature": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/JsonMergePatchTemplateBinding"
              }
            ]
          },
          "setFan": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/JsonMergePatchTemplateBinding"
              }
            ]
          },
          "setLight": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/JsonMergePatchTemplateBinding"
              }
            ]
          },
          "selectTool": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/JsonMergePatchTemplateBinding"
              }
            ]
          },
          "setChamberTemperature": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/JsonMergePatchTemplateBinding"
              }
            ]
          }
        },
        "description": "JSON Merge Patch style type:\n- `null` removes a key\n- arrays replace the target value (or merge-by-ref for component arrays,\n  handled at runtime in `applyCapabilitiesPatch`)\n\nArray elements use `DeepPartial<U>` so callers can supply just the\nfields they're changing (e.g. `{ ref: 'fan_part', controllable: false }`\nwithout restating `role` / `label`). `applyCapabilitiesPatch` merges\ncomponent arrays by `ref` at runtime, so partial elements compose with\nthe base shape correctly. Non-component arrays follow standard\nreplace-the-whole-thing semantics — supply full elements for those.\n\nTests `NonNullable<T[P]>` first so optional fields recurse correctly:\nthe previous `T[P] extends Array<infer U>` check failed for optional\narrays (the `undefined` union member kept the array branch from\nmatching) and fell through to the object branch, producing\n`Array<string | null | undefined>` shapes that nestia rejects."
      },
      "JsonMergePatchRecordstringKlipperComponentBinding": {
        "type": "object",
        "properties": {},
        "description": "JSON Merge Patch style type:\n- `null` removes a key\n- arrays replace the target value (or merge-by-ref for component arrays,\n  handled at runtime in `applyCapabilitiesPatch`)\n\nArray elements use `DeepPartial<U>` so callers can supply just the\nfields they're changing (e.g. `{ ref: 'fan_part', controllable: false }`\nwithout restating `role` / `label`). `applyCapabilitiesPatch` merges\ncomponent arrays by `ref` at runtime, so partial elements compose with\nthe base shape correctly. Non-component arrays follow standard\nreplace-the-whole-thing semantics — supply full elements for those.\n\nTests `NonNullable<T[P]>` first so optional fields recurse correctly:\nthe previous `T[P] extends Array<infer U>` check failed for optional\narrays (the `undefined` union member kept the array branch from\nmatching) and fell through to the object branch, producing\n`Array<string | null | undefined>` shapes that nestia rejects.",
        "additionalProperties": {
          "oneOf": [
            {
              "type": "null"
            },
            {
              "$ref": "#/components/schemas/JsonMergePatchKlipperComponentBinding"
            }
          ]
        }
      },
      "JsonMergePatchKlipperComponentBinding": {
        "type": "object",
        "properties": {
          "kind": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "const": "bed"
              },
              {
                "const": "nozzle"
              },
              {
                "const": "chamber"
              },
              {
                "const": "fan"
              },
              {
                "const": "light"
              },
              {
                "const": "tool"
              }
            ],
            "title": "Required for every binding — drives parser/UI dispatch",
            "description": "Required for every binding — drives parser/UI dispatch."
          },
          "statusObject": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ],
            "description": "Moonraker object name that the Klipper state parser reads (and that\nthe Moonraker subscription builder derives its object list from).\nExamples: `extruder`, `extruder1`, `heater_bed`,\n`temperature_sensor chamber`, `fan`, `fan_generic aux`.\nOmit on abstract/virtual components (e.g. a `tool` that only\ngenerates a gcode select command and has no readable status)."
          },
          "heater": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ],
            "description": "Klipper heater command target used by the adapter-level\n`setNozzleTemperature` / `setBedTemperature` / `setChamberTemperature`\ntemplates (e.g. `SET_HEATER_TEMPERATURE HEATER={component.heater}`).\nNot every component that has `statusObject` has a heater — a read-only\n`temperature_sensor` chamber is the canonical example."
          },
          "activeExtruderObject": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ],
            "title": "Klipper extruder object name as it appears in `toolhead.extruder`",
            "description": "Klipper extruder object name as it appears in `toolhead.extruder`.\nUsed to invert the active-tool status back into a ref. Usually\nidentical to `statusObject` for nozzles; kept separate so exotic\nconfigurations can diverge."
          },
          "toolRef": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ],
            "description": "For heater-bearing components (nozzles) that have a selectable tool\ncounterpart: the ref of the matching `tool_N` component. Single-extruder\nprinters with no selectable-tool concept leave this undefined."
          },
          "selectCommand": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ],
            "description": "For `tool` components: the gcode fragment the `selectTool` template\nuses to switch to this tool (e.g. `T0`, `ACTIVATE_EXTRUDER EXTRUDER=extruder1`,\nor a vendor-specific macro call)."
          },
          "nozzleRefs": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "array",
                "items": {
                  "type": "string"
                }
              }
            ],
            "description": "For `tool` components: the nozzle refs this tool activates. For most\nmachines a tool drives exactly one nozzle, but toolchangers can\ntheoretically share heaters."
          },
          "fan": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ],
            "description": "For `fan` components: the Klipper fan name used by\n`SET_FAN_SPEED FAN={component.fan}` (no value for the primary `[fan]`\nsection, which uses M106 and gets a per-component override template\ninstead)."
          },
          "led": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ],
            "description": "For `light` components: the Klipper-side pin or LED node identifier\nreferenced from the `setLight` template (e.g. `{component.led}` in\n`SET_PIN PIN={component.led} VALUE={value}` or\n`SET_LED LED={component.led} ...`). The exact gcode/macro shape lives\nin the adapter's command template; this field just carries the name."
          },
          "commandTemplate": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/JsonMergePatchTemplateBinding"
              }
            ],
            "description": "Optional per-component command-template override. Takes precedence\nover the adapter-level `commands` template when resolving. Use only\nwhen a specific printer needs non-standard gcode for this ref\n(e.g. `M106 S{pwm}` for the primary part fan, or a vendor macro)."
          }
        },
        "description": "JSON Merge Patch style type:\n- `null` removes a key\n- arrays replace the target value (or merge-by-ref for component arrays,\n  handled at runtime in `applyCapabilitiesPatch`)\n\nArray elements use `DeepPartial<U>` so callers can supply just the\nfields they're changing (e.g. `{ ref: 'fan_part', controllable: false }`\nwithout restating `role` / `label`). `applyCapabilitiesPatch` merges\ncomponent arrays by `ref` at runtime, so partial elements compose with\nthe base shape correctly. Non-component arrays follow standard\nreplace-the-whole-thing semantics — supply full elements for those.\n\nTests `NonNullable<T[P]>` first so optional fields recurse correctly:\nthe previous `T[P] extends Array<infer U>` check failed for optional\narrays (the `undefined` union member kept the array branch from\nmatching) and fell through to the object branch, producing\n`Array<string | null | undefined>` shapes that nestia rejects."
      },
      "JsonMergePatchRecordstringAdapterPrintOptionBinding": {
        "type": "object",
        "properties": {},
        "description": "JSON Merge Patch style type:\n- `null` removes a key\n- arrays replace the target value (or merge-by-ref for component arrays,\n  handled at runtime in `applyCapabilitiesPatch`)\n\nArray elements use `DeepPartial<U>` so callers can supply just the\nfields they're changing (e.g. `{ ref: 'fan_part', controllable: false }`\nwithout restating `role` / `label`). `applyCapabilitiesPatch` merges\ncomponent arrays by `ref` at runtime, so partial elements compose with\nthe base shape correctly. Non-component arrays follow standard\nreplace-the-whole-thing semantics — supply full elements for those.\n\nTests `NonNullable<T[P]>` first so optional fields recurse correctly:\nthe previous `T[P] extends Array<infer U>` check failed for optional\narrays (the `undefined` union member kept the array branch from\nmatching) and fell through to the object branch, producing\n`Array<string | null | undefined>` shapes that nestia rejects.",
        "additionalProperties": {
          "oneOf": [
            {
              "type": "null"
            },
            {
              "$ref": "#/components/schemas/JsonMergePatchAdapterPrintOptionBinding"
            }
          ]
        }
      },
      "JsonMergePatchAdapterPrintOptionBinding": {
        "type": "object",
        "properties": {
          "storageKey": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "payloadField": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "defaultValue": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              },
              {
                "type": "boolean"
              }
            ]
          }
        },
        "description": "JSON Merge Patch style type:\n- `null` removes a key\n- arrays replace the target value (or merge-by-ref for component arrays,\n  handled at runtime in `applyCapabilitiesPatch`)\n\nArray elements use `DeepPartial<U>` so callers can supply just the\nfields they're changing (e.g. `{ ref: 'fan_part', controllable: false }`\nwithout restating `role` / `label`). `applyCapabilitiesPatch` merges\ncomponent arrays by `ref` at runtime, so partial elements compose with\nthe base shape correctly. Non-component arrays follow standard\nreplace-the-whole-thing semantics — supply full elements for those.\n\nTests `NonNullable<T[P]>` first so optional fields recurse correctly:\nthe previous `T[P] extends Array<infer U>` check failed for optional\narrays (the `undefined` union member kept the array branch from\nmatching) and fell through to the object branch, producing\n`Array<string | null | undefined>` shapes that nestia rejects."
      },
      "JsonMergePatchPrusaAdapterBindings": {
        "type": "object",
        "properties": {
          "schemaVersion": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "const": 1
              }
            ]
          },
          "components": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/JsonMergePatchRecordstringPrusaComponentBinding"
              }
            ],
            "description": "Component bindings keyed by Printago ref. Used by\n`PrusaStateParser` to turn PrusaLink status fields into ref-indexed\nPrinterStatData entries. PrusaLink's command surface is API-level\n(start/pause/resume/stop), so this adapter has no `commands` map —\nthat's the key shape difference from Klipper v1."
          },
          "printOptions": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/JsonMergePatchRecordstringAdapterPrintOptionBinding"
              }
            ],
            "title": "Per-print-job option bindings — empty today; reserved for future use",
            "description": "Per-print-job option bindings — empty today; reserved for future use."
          }
        },
        "description": "JSON Merge Patch style type:\n- `null` removes a key\n- arrays replace the target value (or merge-by-ref for component arrays,\n  handled at runtime in `applyCapabilitiesPatch`)\n\nArray elements use `DeepPartial<U>` so callers can supply just the\nfields they're changing (e.g. `{ ref: 'fan_part', controllable: false }`\nwithout restating `role` / `label`). `applyCapabilitiesPatch` merges\ncomponent arrays by `ref` at runtime, so partial elements compose with\nthe base shape correctly. Non-component arrays follow standard\nreplace-the-whole-thing semantics — supply full elements for those.\n\nTests `NonNullable<T[P]>` first so optional fields recurse correctly:\nthe previous `T[P] extends Array<infer U>` check failed for optional\narrays (the `undefined` union member kept the array branch from\nmatching) and fell through to the object branch, producing\n`Array<string | null | undefined>` shapes that nestia rejects."
      },
      "JsonMergePatchRecordstringPrusaComponentBinding": {
        "type": "object",
        "properties": {},
        "description": "JSON Merge Patch style type:\n- `null` removes a key\n- arrays replace the target value (or merge-by-ref for component arrays,\n  handled at runtime in `applyCapabilitiesPatch`)\n\nArray elements use `DeepPartial<U>` so callers can supply just the\nfields they're changing (e.g. `{ ref: 'fan_part', controllable: false }`\nwithout restating `role` / `label`). `applyCapabilitiesPatch` merges\ncomponent arrays by `ref` at runtime, so partial elements compose with\nthe base shape correctly. Non-component arrays follow standard\nreplace-the-whole-thing semantics — supply full elements for those.\n\nTests `NonNullable<T[P]>` first so optional fields recurse correctly:\nthe previous `T[P] extends Array<infer U>` check failed for optional\narrays (the `undefined` union member kept the array branch from\nmatching) and fell through to the object branch, producing\n`Array<string | null | undefined>` shapes that nestia rejects.",
        "additionalProperties": {
          "oneOf": [
            {
              "type": "null"
            },
            {
              "$ref": "#/components/schemas/JsonMergePatchPrusaComponentBinding"
            }
          ]
        }
      },
      "JsonMergePatchPrusaComponentBinding": {
        "type": "object",
        "properties": {
          "kind": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "const": "bed"
              },
              {
                "const": "nozzle"
              },
              {
                "const": "chamber"
              },
              {
                "const": "fan"
              }
            ],
            "title": "Required for every binding — drives parser/UI dispatch",
            "description": "Required for every binding — drives parser/UI dispatch."
          },
          "currentField": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ],
            "description": "Field on the PrusaLink `printer` object that provides the current\nvalue. Examples: `temp_nozzle`, `temp_bed`, `temp_chamber`,\n`fan_print`, `fan_hotend`."
          },
          "targetField": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ],
            "description": "Field on the PrusaLink `printer` object that provides the target /\nsetpoint value. Omit for read-only components (chamber sensors,\nhotend fans)."
          },
          "scale": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "const": "raw"
              },
              {
                "const": "pwm255"
              },
              {
                "const": "rpm"
              }
            ],
            "description": "For `fan` components: how the raw PrusaLink value should be normalised\ninto the PrinterStatData fans map (which is `0..100` for controllable\nfans, RPM for hotend fans). `pwm255` divides by 255 and scales to 100;\n`rpm` passes through; `raw` is the default for already-normalised\npercentages."
          }
        },
        "description": "JSON Merge Patch style type:\n- `null` removes a key\n- arrays replace the target value (or merge-by-ref for component arrays,\n  handled at runtime in `applyCapabilitiesPatch`)\n\nArray elements use `DeepPartial<U>` so callers can supply just the\nfields they're changing (e.g. `{ ref: 'fan_part', controllable: false }`\nwithout restating `role` / `label`). `applyCapabilitiesPatch` merges\ncomponent arrays by `ref` at runtime, so partial elements compose with\nthe base shape correctly. Non-component arrays follow standard\nreplace-the-whole-thing semantics — supply full elements for those.\n\nTests `NonNullable<T[P]>` first so optional fields recurse correctly:\nthe previous `T[P] extends Array<infer U>` check failed for optional\narrays (the `undefined` union member kept the array branch from\nmatching) and fell through to the object branch, producing\n`Array<string | null | undefined>` shapes that nestia rejects."
      },
      "JsonMergePatchSdcpAdapterBindings": {
        "type": "object",
        "properties": {
          "schemaVersion": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "const": 1
              }
            ]
          },
          "components": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/JsonMergePatchRecordstringSdcpComponentBinding"
              }
            ]
          },
          "printOptions": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/JsonMergePatchRecordstringAdapterPrintOptionBinding"
              }
            ],
            "title": "Per-print-job option bindings — empty today; reserved for future use",
            "description": "Per-print-job option bindings — empty today; reserved for future use."
          }
        },
        "description": "JSON Merge Patch style type:\n- `null` removes a key\n- arrays replace the target value (or merge-by-ref for component arrays,\n  handled at runtime in `applyCapabilitiesPatch`)\n\nArray elements use `DeepPartial<U>` so callers can supply just the\nfields they're changing (e.g. `{ ref: 'fan_part', controllable: false }`\nwithout restating `role` / `label`). `applyCapabilitiesPatch` merges\ncomponent arrays by `ref` at runtime, so partial elements compose with\nthe base shape correctly. Non-component arrays follow standard\nreplace-the-whole-thing semantics — supply full elements for those.\n\nTests `NonNullable<T[P]>` first so optional fields recurse correctly:\nthe previous `T[P] extends Array<infer U>` check failed for optional\narrays (the `undefined` union member kept the array branch from\nmatching) and fell through to the object branch, producing\n`Array<string | null | undefined>` shapes that nestia rejects."
      },
      "JsonMergePatchRecordstringSdcpComponentBinding": {
        "type": "object",
        "properties": {},
        "description": "JSON Merge Patch style type:\n- `null` removes a key\n- arrays replace the target value (or merge-by-ref for component arrays,\n  handled at runtime in `applyCapabilitiesPatch`)\n\nArray elements use `DeepPartial<U>` so callers can supply just the\nfields they're changing (e.g. `{ ref: 'fan_part', controllable: false }`\nwithout restating `role` / `label`). `applyCapabilitiesPatch` merges\ncomponent arrays by `ref` at runtime, so partial elements compose with\nthe base shape correctly. Non-component arrays follow standard\nreplace-the-whole-thing semantics — supply full elements for those.\n\nTests `NonNullable<T[P]>` first so optional fields recurse correctly:\nthe previous `T[P] extends Array<infer U>` check failed for optional\narrays (the `undefined` union member kept the array branch from\nmatching) and fell through to the object branch, producing\n`Array<string | null | undefined>` shapes that nestia rejects.",
        "additionalProperties": {
          "oneOf": [
            {
              "type": "null"
            },
            {
              "$ref": "#/components/schemas/JsonMergePatchSdcpComponentBinding"
            }
          ]
        }
      },
      "JsonMergePatchSdcpComponentBinding": {
        "type": "object",
        "properties": {
          "kind": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "const": "bed"
              },
              {
                "const": "nozzle"
              },
              {
                "const": "chamber"
              },
              {
                "const": "fan"
              },
              {
                "const": "light"
              }
            ],
            "title": "Required for every binding — drives parser/UI dispatch",
            "description": "Required for every binding — drives parser/UI dispatch."
          },
          "currentPath": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ],
            "description": "Dotted path relative to the SDCP `Data.Status` object for the current\nvalue. Example: `TempOfNozzle`, `CurrentFanSpeed.ModelFan`,\n`LightStatus.SecondLight`."
          },
          "targetPath": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ],
            "title": "Dotted path relative to `Data.Status` for the target / setpoint value",
            "description": "Dotted path relative to `Data.Status` for the target / setpoint value.\nOmit for components with no controllable setpoint (chamber sensors,\nlights, auxiliary-read-only fans)."
          },
          "scale": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "const": "raw"
              },
              {
                "const": "pwm255"
              }
            ],
            "description": "For `fan` components: how the raw SDCP value should be normalised into\nthe PrinterStatData fans map (which is `0..100`). Most SDCP printers\nreport 0..255 PWM, so `pwm255` is the common default; `raw` passes the\nvalue through unchanged."
          },
          "onValue": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ],
            "description": "For `light` components: the truthy value (or comma-separated values)\nthe parser matches against the current-path read to decide whether\nthe light is on. SDCP's `LightStatus.SecondLight` uses `1` for on,\n`0` for off; this value is compared loosely (`String(value) === onValue`)."
          }
        },
        "description": "JSON Merge Patch style type:\n- `null` removes a key\n- arrays replace the target value (or merge-by-ref for component arrays,\n  handled at runtime in `applyCapabilitiesPatch`)\n\nArray elements use `DeepPartial<U>` so callers can supply just the\nfields they're changing (e.g. `{ ref: 'fan_part', controllable: false }`\nwithout restating `role` / `label`). `applyCapabilitiesPatch` merges\ncomponent arrays by `ref` at runtime, so partial elements compose with\nthe base shape correctly. Non-component arrays follow standard\nreplace-the-whole-thing semantics — supply full elements for those.\n\nTests `NonNullable<T[P]>` first so optional fields recurse correctly:\nthe previous `T[P] extends Array<infer U>` check failed for optional\narrays (the `undefined` union member kept the array branch from\nmatching) and fell through to the object branch, producing\n`Array<string | null | undefined>` shapes that nestia rejects."
      },
      "JsonMergePatchElegooMqttAdapterBindings": {
        "type": "object",
        "properties": {
          "schemaVersion": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "const": 1
              }
            ]
          },
          "components": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/JsonMergePatchRecordstringElegooMqttComponentBinding"
              }
            ]
          },
          "printOptions": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/JsonMergePatchRecordstringAdapterPrintOptionBinding"
              }
            ],
            "title": "Per-print-job option bindings — empty today; reserved for future use",
            "description": "Per-print-job option bindings — empty today; reserved for future use."
          }
        },
        "description": "JSON Merge Patch style type:\n- `null` removes a key\n- arrays replace the target value (or merge-by-ref for component arrays,\n  handled at runtime in `applyCapabilitiesPatch`)\n\nArray elements use `DeepPartial<U>` so callers can supply just the\nfields they're changing (e.g. `{ ref: 'fan_part', controllable: false }`\nwithout restating `role` / `label`). `applyCapabilitiesPatch` merges\ncomponent arrays by `ref` at runtime, so partial elements compose with\nthe base shape correctly. Non-component arrays follow standard\nreplace-the-whole-thing semantics — supply full elements for those.\n\nTests `NonNullable<T[P]>` first so optional fields recurse correctly:\nthe previous `T[P] extends Array<infer U>` check failed for optional\narrays (the `undefined` union member kept the array branch from\nmatching) and fell through to the object branch, producing\n`Array<string | null | undefined>` shapes that nestia rejects."
      },
      "JsonMergePatchRecordstringElegooMqttComponentBinding": {
        "type": "object",
        "properties": {},
        "description": "JSON Merge Patch style type:\n- `null` removes a key\n- arrays replace the target value (or merge-by-ref for component arrays,\n  handled at runtime in `applyCapabilitiesPatch`)\n\nArray elements use `DeepPartial<U>` so callers can supply just the\nfields they're changing (e.g. `{ ref: 'fan_part', controllable: false }`\nwithout restating `role` / `label`). `applyCapabilitiesPatch` merges\ncomponent arrays by `ref` at runtime, so partial elements compose with\nthe base shape correctly. Non-component arrays follow standard\nreplace-the-whole-thing semantics — supply full elements for those.\n\nTests `NonNullable<T[P]>` first so optional fields recurse correctly:\nthe previous `T[P] extends Array<infer U>` check failed for optional\narrays (the `undefined` union member kept the array branch from\nmatching) and fell through to the object branch, producing\n`Array<string | null | undefined>` shapes that nestia rejects.",
        "additionalProperties": {
          "oneOf": [
            {
              "type": "null"
            },
            {
              "$ref": "#/components/schemas/JsonMergePatchElegooMqttComponentBinding"
            }
          ]
        }
      },
      "JsonMergePatchElegooMqttComponentBinding": {
        "type": "object",
        "properties": {
          "kind": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "const": "bed"
              },
              {
                "const": "nozzle"
              },
              {
                "const": "chamber"
              },
              {
                "const": "fan"
              },
              {
                "const": "light"
              }
            ],
            "title": "Required for every binding — drives parser/UI dispatch",
            "description": "Required for every binding — drives parser/UI dispatch."
          },
          "currentPath": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ],
            "title": "Dotted path relative to the CC2 `result` object for the current value",
            "description": "Dotted path relative to the CC2 `result` object for the current value.\nExamples: `extruder.temperature`, `heater_bed.temperature`,\n`fans.fan.speed`, `led.status`."
          },
          "targetPath": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ],
            "description": "Dotted path relative to `result` for the target / setpoint value. Omit\nfor components with no controllable setpoint (chamber sensor, lights,\nread-only fans)."
          },
          "scale": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "const": "raw"
              },
              {
                "const": "pwm255"
              }
            ],
            "description": "For `fan` components: how the raw CC2 value should be normalised into\nthe PrinterStatData fans map (which is `0..100`). CC2 reports fan\nspeed as 0..255 PWM, so `pwm255` is the default; `raw` passes the value\nthrough unchanged."
          },
          "onValue": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ],
            "description": "For `light` components: the truthy value the parser matches against\nthe current-path read to decide whether the light is on. CC2's\n`led.status` is `1` for on / `0` for off (and may also surface 0..255\nbrightness — TODO: confirm with hardware once the MQTT client lands)."
          }
        },
        "description": "JSON Merge Patch style type:\n- `null` removes a key\n- arrays replace the target value (or merge-by-ref for component arrays,\n  handled at runtime in `applyCapabilitiesPatch`)\n\nArray elements use `DeepPartial<U>` so callers can supply just the\nfields they're changing (e.g. `{ ref: 'fan_part', controllable: false }`\nwithout restating `role` / `label`). `applyCapabilitiesPatch` merges\ncomponent arrays by `ref` at runtime, so partial elements compose with\nthe base shape correctly. Non-component arrays follow standard\nreplace-the-whole-thing semantics — supply full elements for those.\n\nTests `NonNullable<T[P]>` first so optional fields recurse correctly:\nthe previous `T[P] extends Array<infer U>` check failed for optional\narrays (the `undefined` union member kept the array branch from\nmatching) and fell through to the object branch, producing\n`Array<string | null | undefined>` shapes that nestia rejects."
      },
      "JsonMergePatchAnycubicAdapterBindings": {
        "type": "object",
        "properties": {
          "schemaVersion": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "const": 1
              }
            ]
          },
          "components": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/JsonMergePatchRecordstringAnycubicComponentBinding"
              }
            ]
          },
          "printOptions": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/JsonMergePatchRecordstringAdapterPrintOptionBinding"
              }
            ]
          }
        },
        "description": "JSON Merge Patch style type:\n- `null` removes a key\n- arrays replace the target value (or merge-by-ref for component arrays,\n  handled at runtime in `applyCapabilitiesPatch`)\n\nArray elements use `DeepPartial<U>` so callers can supply just the\nfields they're changing (e.g. `{ ref: 'fan_part', controllable: false }`\nwithout restating `role` / `label`). `applyCapabilitiesPatch` merges\ncomponent arrays by `ref` at runtime, so partial elements compose with\nthe base shape correctly. Non-component arrays follow standard\nreplace-the-whole-thing semantics — supply full elements for those.\n\nTests `NonNullable<T[P]>` first so optional fields recurse correctly:\nthe previous `T[P] extends Array<infer U>` check failed for optional\narrays (the `undefined` union member kept the array branch from\nmatching) and fell through to the object branch, producing\n`Array<string | null | undefined>` shapes that nestia rejects."
      },
      "JsonMergePatchRecordstringAnycubicComponentBinding": {
        "type": "object",
        "properties": {},
        "description": "JSON Merge Patch style type:\n- `null` removes a key\n- arrays replace the target value (or merge-by-ref for component arrays,\n  handled at runtime in `applyCapabilitiesPatch`)\n\nArray elements use `DeepPartial<U>` so callers can supply just the\nfields they're changing (e.g. `{ ref: 'fan_part', controllable: false }`\nwithout restating `role` / `label`). `applyCapabilitiesPatch` merges\ncomponent arrays by `ref` at runtime, so partial elements compose with\nthe base shape correctly. Non-component arrays follow standard\nreplace-the-whole-thing semantics — supply full elements for those.\n\nTests `NonNullable<T[P]>` first so optional fields recurse correctly:\nthe previous `T[P] extends Array<infer U>` check failed for optional\narrays (the `undefined` union member kept the array branch from\nmatching) and fell through to the object branch, producing\n`Array<string | null | undefined>` shapes that nestia rejects.",
        "additionalProperties": {
          "oneOf": [
            {
              "type": "null"
            },
            {
              "$ref": "#/components/schemas/JsonMergePatchAnycubicComponentBinding"
            }
          ]
        }
      },
      "JsonMergePatchAnycubicComponentBinding": {
        "type": "object",
        "properties": {
          "kind": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "const": "bed"
              },
              {
                "const": "nozzle"
              },
              {
                "const": "chamber"
              },
              {
                "const": "fan"
              },
              {
                "const": "light"
              }
            ]
          },
          "currentPath": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "targetPath": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "onValue": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          }
        },
        "description": "JSON Merge Patch style type:\n- `null` removes a key\n- arrays replace the target value (or merge-by-ref for component arrays,\n  handled at runtime in `applyCapabilitiesPatch`)\n\nArray elements use `DeepPartial<U>` so callers can supply just the\nfields they're changing (e.g. `{ ref: 'fan_part', controllable: false }`\nwithout restating `role` / `label`). `applyCapabilitiesPatch` merges\ncomponent arrays by `ref` at runtime, so partial elements compose with\nthe base shape correctly. Non-component arrays follow standard\nreplace-the-whole-thing semantics — supply full elements for those.\n\nTests `NonNullable<T[P]>` first so optional fields recurse correctly:\nthe previous `T[P] extends Array<infer U>` check failed for optional\narrays (the `undefined` union member kept the array branch from\nmatching) and fell through to the object branch, producing\n`Array<string | null | undefined>` shapes that nestia rejects."
      },
      "JsonMergePatchOctoprintAdapterBindings": {
        "type": "object",
        "properties": {
          "schemaVersion": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "const": 1
              }
            ]
          },
          "components": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/JsonMergePatchRecordstringOctoprintComponentBinding"
              }
            ],
            "description": "Component bindings keyed by Printago ref. Used by `OctoprintStateParser`\nto turn OctoPrint's `temperature` map into ref-indexed PrinterStatData\nentries. OctoPrint's command surface is API-level (REST), so this adapter\nhas no `commands` map — same shape as the Prusa adapter."
          },
          "printOptions": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/JsonMergePatchRecordstringAdapterPrintOptionBinding"
              }
            ],
            "title": "Per-print-job option bindings — empty today; reserved for future use",
            "description": "Per-print-job option bindings — empty today; reserved for future use."
          }
        },
        "description": "JSON Merge Patch style type:\n- `null` removes a key\n- arrays replace the target value (or merge-by-ref for component arrays,\n  handled at runtime in `applyCapabilitiesPatch`)\n\nArray elements use `DeepPartial<U>` so callers can supply just the\nfields they're changing (e.g. `{ ref: 'fan_part', controllable: false }`\nwithout restating `role` / `label`). `applyCapabilitiesPatch` merges\ncomponent arrays by `ref` at runtime, so partial elements compose with\nthe base shape correctly. Non-component arrays follow standard\nreplace-the-whole-thing semantics — supply full elements for those.\n\nTests `NonNullable<T[P]>` first so optional fields recurse correctly:\nthe previous `T[P] extends Array<infer U>` check failed for optional\narrays (the `undefined` union member kept the array branch from\nmatching) and fell through to the object branch, producing\n`Array<string | null | undefined>` shapes that nestia rejects."
      },
      "JsonMergePatchRecordstringOctoprintComponentBinding": {
        "type": "object",
        "properties": {},
        "description": "JSON Merge Patch style type:\n- `null` removes a key\n- arrays replace the target value (or merge-by-ref for component arrays,\n  handled at runtime in `applyCapabilitiesPatch`)\n\nArray elements use `DeepPartial<U>` so callers can supply just the\nfields they're changing (e.g. `{ ref: 'fan_part', controllable: false }`\nwithout restating `role` / `label`). `applyCapabilitiesPatch` merges\ncomponent arrays by `ref` at runtime, so partial elements compose with\nthe base shape correctly. Non-component arrays follow standard\nreplace-the-whole-thing semantics — supply full elements for those.\n\nTests `NonNullable<T[P]>` first so optional fields recurse correctly:\nthe previous `T[P] extends Array<infer U>` check failed for optional\narrays (the `undefined` union member kept the array branch from\nmatching) and fell through to the object branch, producing\n`Array<string | null | undefined>` shapes that nestia rejects.",
        "additionalProperties": {
          "oneOf": [
            {
              "type": "null"
            },
            {
              "$ref": "#/components/schemas/JsonMergePatchOctoprintComponentBinding"
            }
          ]
        }
      },
      "JsonMergePatchOctoprintComponentBinding": {
        "type": "object",
        "properties": {
          "kind": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "const": "bed"
              },
              {
                "const": "nozzle"
              },
              {
                "const": "chamber"
              }
            ],
            "title": "Required for every binding — drives parser/UI dispatch",
            "description": "Required for every binding — drives parser/UI dispatch."
          },
          "sensor": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ],
            "description": "Key into OctoPrint's `temperature` map. Examples: `tool0`, `tool1`,\n`bed`, `chamber`. The parser reads `temperature[sensor].actual` for the\ncurrent value and `temperature[sensor].target` for the setpoint."
          }
        },
        "description": "JSON Merge Patch style type:\n- `null` removes a key\n- arrays replace the target value (or merge-by-ref for component arrays,\n  handled at runtime in `applyCapabilitiesPatch`)\n\nArray elements use `DeepPartial<U>` so callers can supply just the\nfields they're changing (e.g. `{ ref: 'fan_part', controllable: false }`\nwithout restating `role` / `label`). `applyCapabilitiesPatch` merges\ncomponent arrays by `ref` at runtime, so partial elements compose with\nthe base shape correctly. Non-component arrays follow standard\nreplace-the-whole-thing semantics — supply full elements for those.\n\nTests `NonNullable<T[P]>` first so optional fields recurse correctly:\nthe previous `T[P] extends Array<infer U>` check failed for optional\narrays (the `undefined` union member kept the array branch from\nmatching) and fell through to the object branch, producing\n`Array<string | null | undefined>` shapes that nestia rejects."
      },
      "SetProviderConfig": {
        "type": "object",
        "properties": {
          "printerIds": {
            "type": "array",
            "items": {
              "type": "string",
              "pattern": "^[a-z0-9]{24}$"
            }
          },
          "providerConfig": {
            "$ref": "#/components/schemas/BambuConfig"
          },
          "machineUserProfileId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "pattern": "^[a-z0-9]{24}$"
              }
            ]
          },
          "machineSystemProfileId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "number"
              }
            ]
          },
          "processUserProfileId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "pattern": "^[a-z0-9]{24}$"
              }
            ]
          },
          "processSystemProfileId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "number"
              }
            ]
          }
        },
        "required": [
          "printerIds",
          "providerConfig",
          "machineUserProfileId",
          "machineSystemProfileId",
          "processUserProfileId",
          "processSystemProfileId"
        ]
      },
      "ConfirmReadyRequest": {
        "type": "object",
        "properties": {
          "ready": {
            "type": "boolean"
          },
          "ids": {
            "type": "array",
            "items": {
              "type": "string",
              "pattern": "^[a-z0-9]{24}$"
            }
          }
        },
        "required": [
          "ready",
          "ids"
        ]
      },
      "PrinterNextMatch": {
        "type": "object",
        "properties": {
          "printerId": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "printJobId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "pattern": "^[a-z0-9]{24}$"
              }
            ],
            "description": "The pending job the queue would give this printer if it were marked\nready now, or `null` when no pending job matches. It's a prediction:\nanother printer can take the job first, and automatic plate merging can\ncombine it with other jobs."
          },
          "reason": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "const": "no-pending-jobs"
              },
              {
                "const": "no-loaded-slots"
              },
              {
                "const": "no-compatible-job"
              }
            ],
            "title": "Why nothing matched, when `printJobId` is `null`",
            "description": "Why nothing matched, when `printJobId` is `null`."
          },
          "pendingJobCount": {
            "type": "number",
            "title": "How many pending jobs were considered",
            "description": "How many pending jobs were considered."
          },
          "staggeredStart": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "object",
                "properties": {
                  "groupId": {
                    "type": "string",
                    "pattern": "^[a-z0-9]{24}$"
                  },
                  "groupName": {
                    "type": "string"
                  },
                  "active": {
                    "type": "number"
                  },
                  "limit": {
                    "type": "number"
                  }
                },
                "required": [
                  "groupId",
                  "groupName",
                  "active",
                  "limit"
                ]
              }
            ],
            "description": "Set when the printer's Staggered Start group has no free starts right\nnow. The match above is computed as if it had one; until a start frees\nup, the printer won't take it."
          },
          "blockers": {
            "type": "array",
            "items": {
              "oneOf": [
                {
                  "const": "in-maintenance"
                },
                {
                  "const": "offline"
                },
                {
                  "const": "disabled"
                },
                {
                  "const": "needs-configuration"
                }
              ]
            },
            "title": "Conditions besides readiness that also keep the printer from matching",
            "description": "Conditions besides readiness that also keep the printer from matching."
          }
        },
        "required": [
          "printerId",
          "printJobId",
          "reason",
          "pendingJobCount",
          "staggeredStart",
          "blockers"
        ]
      },
      "BulkActionRequest": {
        "type": "object",
        "properties": {
          "ids": {
            "type": "array",
            "items": {
              "type": "string",
              "pattern": "^[a-z0-9]{24}$"
            }
          }
        },
        "required": [
          "ids"
        ]
      },
      "ReconcilePrinterStateResult": {
        "type": "object",
        "properties": {
          "printerId": {
            "type": "string"
          },
          "outcome": {
            "oneOf": [
              {
                "const": "failed"
              },
              {
                "const": "skipped"
              },
              {
                "const": "healed"
              },
              {
                "const": "in-sync"
              },
              {
                "const": "no-live-state"
              }
            ]
          },
          "healed": {
            "type": "object",
            "properties": {
              "isOnline": {
                "type": "boolean"
              },
              "isAvailable": {
                "type": "boolean"
              }
            },
            "title": "Set only for `healed`: which flags were turned on",
            "description": "Set only for `healed`: which flags were turned on."
          }
        },
        "required": [
          "printerId",
          "outcome"
        ]
      },
      "EnabledConfig": {
        "type": "object",
        "properties": {
          "enabled": {
            "type": "boolean"
          },
          "ids": {
            "type": "array",
            "items": {
              "type": "string",
              "pattern": "^[a-z0-9]{24}$"
            }
          }
        },
        "required": [
          "enabled",
          "ids"
        ]
      },
      "ContinuousPrintConfig": {
        "type": "object",
        "properties": {
          "enabled": {
            "type": "boolean"
          },
          "jobLimit": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "number",
                "minimum": 1
              }
            ]
          },
          "ids": {
            "type": "array",
            "items": {
              "type": "string",
              "pattern": "^[a-z0-9]{24}$"
            }
          }
        },
        "required": [
          "enabled",
          "ids"
        ]
      },
      "providerstringundefineddeviceIdstringundefinedproviderConfigstringundefinedmachineUserProfileIdstringundefinedmachineSystemProfileIdstringundefined...33more...updatedAtstringundefinedQuerySettings...": {
        "type": "object",
        "properties": {
          "provider": {
            "type": "string"
          },
          "deviceId": {
            "type": "string"
          },
          "providerConfig": {
            "type": "string"
          },
          "machineUserProfileId": {
            "type": "string"
          },
          "machineSystemProfileId": {
            "type": "string"
          },
          "processUserProfileId": {
            "type": "string"
          },
          "processSystemProfileId": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "nozzleDiameter": {
            "type": "string"
          },
          "metadata": {
            "type": "string"
          },
          "proxyClientId": {
            "type": "string"
          },
          "commMethod": {
            "type": "string"
          },
          "enabled": {
            "type": "string"
          },
          "tags": {
            "type": "string"
          },
          "confirmedReady": {
            "type": "string"
          },
          "isAvailable": {
            "type": "string"
          },
          "isOnline": {
            "type": "string"
          },
          "printingJobId": {
            "type": "string"
          },
          "lastPrintedAt": {
            "type": "string"
          },
          "integrationId": {
            "type": "string"
          },
          "integrationType": {
            "type": "string"
          },
          "continuousPrint": {
            "type": "string"
          },
          "fabmaticRemainingJobs": {
            "type": "string"
          },
          "bedSize": {
            "type": "string",
            "description": "{x,y,z} mm build volume, denormalized from the machine profile's\nprintable_area/printable_height. Cache only — refreshed whenever the\nprinter's machine profile changes; the profile is the source of truth."
          },
          "modelName": {
            "type": "string",
            "description": "Human-readable model name (e.g. \"P1S\", \"Snapmaker U1\", \"Prusa CORE One\")"
          },
          "vendorName": {
            "type": "string",
            "description": "Vendor/manufacturer name (e.g. \"Bambu Lab\", \"Prusa\", \"Snapmaker\")"
          },
          "vendorModelId": {
            "type": "string"
          },
          "printerCapabilityPatch": {
            "type": "string",
            "title": "Per-printer capability override applied last (web Advanced Capabilities panel)",
            "description": "Per-printer capability override applied last (web Advanced Capabilities panel)."
          },
          "printerAdapterBindingsPatch": {
            "type": "string",
            "title": "Per-printer adapter binding override applied last",
            "description": "Per-printer adapter binding override applied last."
          },
          "lifetimePrintHours": {
            "type": "string"
          },
          "lifetimeJobCount": {
            "type": "string"
          },
          "isInMaintenance": {
            "type": "string"
          },
          "lastMaintenanceOfflineAt": {
            "type": "string"
          },
          "lastMaintenanceOnlineAt": {
            "type": "string"
          },
          "customMetadata": {
            "type": "string"
          },
          "id": {
            "type": "string"
          },
          "storeId": {
            "type": "string"
          },
          "createdAt": {
            "type": "string"
          },
          "updatedAt": {
            "type": "string"
          },
          "sort": {
            "type": "string",
            "title": "Sort",
            "description": "Sort specification in format \"field:asc,field2:desc\""
          },
          "limit": {
            "type": "number",
            "minimum": 1,
            "maximum": 1000,
            "title": "Limit",
            "description": "Maximum number of results to return (default: 1000, max: 1000)"
          },
          "offset": {
            "type": "number",
            "minimum": 0,
            "title": "Offset",
            "description": "Number of results to skip for pagination"
          },
          "fields": {
            "type": "string",
            "title": "Fields",
            "description": "Comma-separated list of fields to return"
          },
          "include": {
            "type": "string",
            "title": "Include",
            "description": "Comma-separated list of relations to include (max 4, max 2 levels deep).\nExample: \"linkedParts,linkedParts.part,folder\""
          },
          "meta": {
            "type": "boolean",
            "title": "Meta",
            "description": "If true, returns response with metadata (total, count, hasMore, etc.)"
          },
          "hints": {
            "type": "boolean",
            "title": "Hints",
            "description": "If true, returns AI-friendly hints about available actions. Implies meta=true."
          }
        }
      },
      "SearchQueryDtoPrinter": {
        "type": "object",
        "properties": {
          "filter": {
            "$ref": "#/components/schemas/FilterConditionPrinter",
            "title": "Filter",
            "description": "Complex filter conditions using logical and field operators.\nAvailable field operators: eq, ne, gt, gte, lt, lte, contains, startsWith, endsWith, in, notIn, isNull, between.\nUsage example: {\"filter\": {\"and\": [{\"name\": {\"contains\": \"benchy\"}}, {\"or\": [{\"type\": {\"eq\": \"3mf\"}}, {\"type\": {\"eq\": \"gcode3mf\"}}]}}}"
          },
          "sort": {
            "type": "string",
            "title": "Sort",
            "description": "Sort specification in format \"field:asc,field2:desc\""
          },
          "limit": {
            "type": "number",
            "minimum": 1,
            "maximum": 1000,
            "title": "Limit",
            "description": "Maximum number of results to return (default: 1000, max: 1000)"
          },
          "offset": {
            "type": "number",
            "minimum": 0,
            "title": "Offset",
            "description": "Number of results to skip for pagination"
          },
          "fields": {
            "type": "string",
            "title": "Fields",
            "description": "Comma-separated list of fields to return"
          },
          "include": {
            "type": "string",
            "title": "Include",
            "description": "Comma-separated list of relations to include (max 4, max 2 levels deep).\nExample: \"linkedParts,linkedParts.part,folder\""
          },
          "meta": {
            "type": "boolean",
            "title": "Meta",
            "description": "If true, returns response with metadata (total, count, hasMore, etc.)"
          },
          "hints": {
            "type": "boolean",
            "title": "Hints",
            "description": "If true, returns AI-friendly hints about available actions. Implies meta=true."
          }
        },
        "title": "Search Query",
        "description": "Complete search request with filter conditions and query settings"
      },
      "FilterConditionPrinter": {
        "type": "object",
        "properties": {
          "and": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FilterConditionPrinter"
            },
            "title": "AND Conditions",
            "description": "All conditions must be true"
          },
          "or": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FilterConditionPrinter"
            },
            "title": "OR Conditions",
            "description": "At least one condition must be true"
          },
          "provider": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "deviceId": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "providerConfig": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "machineUserProfileId": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "machineSystemProfileId": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "processUserProfileId": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "processSystemProfileId": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "name": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "nozzleDiameter": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "metadata": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "proxyClientId": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "commMethod": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "enabled": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "tags": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "confirmedReady": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "isAvailable": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "isOnline": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "printingJobId": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "lastPrintedAt": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "integrationId": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "integrationType": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "continuousPrint": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "fabmaticRemainingJobs": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "bedSize": {
            "$ref": "#/components/schemas/FieldOperators",
            "description": "{x,y,z} mm build volume, denormalized from the machine profile's\nprintable_area/printable_height. Cache only — refreshed whenever the\nprinter's machine profile changes; the profile is the source of truth."
          },
          "modelName": {
            "$ref": "#/components/schemas/FieldOperators",
            "description": "Human-readable model name (e.g. \"P1S\", \"Snapmaker U1\", \"Prusa CORE One\")"
          },
          "vendorName": {
            "$ref": "#/components/schemas/FieldOperators",
            "description": "Vendor/manufacturer name (e.g. \"Bambu Lab\", \"Prusa\", \"Snapmaker\")"
          },
          "vendorModelId": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "printerCapabilityPatch": {
            "$ref": "#/components/schemas/FieldOperators",
            "title": "Per-printer capability override applied last (web Advanced Capabilities panel)",
            "description": "Per-printer capability override applied last (web Advanced Capabilities panel)."
          },
          "printerAdapterBindingsPatch": {
            "$ref": "#/components/schemas/FieldOperators",
            "title": "Per-printer adapter binding override applied last",
            "description": "Per-printer adapter binding override applied last."
          },
          "lifetimePrintHours": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "lifetimeJobCount": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "isInMaintenance": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "lastMaintenanceOfflineAt": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "lastMaintenanceOnlineAt": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "customMetadata": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "id": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "storeId": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "createdAt": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "updatedAt": {
            "$ref": "#/components/schemas/FieldOperators"
          }
        },
        "title": "Filter Condition",
        "description": "Root filter condition that can be either a logical condition (AND/OR) or field-based condition"
      },
      "PrinterLatestSnapshot": {
        "type": "object",
        "properties": {
          "url": {
            "type": "string",
            "description": "Short-lived signed download URL for the most recent camera snapshot\nFuse uploaded for this printer. Refresh by calling this endpoint\nagain before `expiresAt`."
          },
          "expiresAt": {
            "type": "number",
            "title": "Unix epoch milliseconds at which `url` stops working",
            "description": "Unix epoch milliseconds at which `url` stops working."
          }
        },
        "required": [
          "url",
          "expiresAt"
        ]
      },
      "ResolvePrinterCapabilitiesResponse": {
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ResolvedPrinterCapabilitiesItem"
            }
          }
        },
        "required": [
          "items"
        ]
      },
      "ResolvedPrinterCapabilitiesItem": {
        "type": "object",
        "properties": {
          "printerId": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "capabilities": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "object",
                "properties": {
                  "nozzles": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "temperature": {
                          "type": "object",
                          "properties": {
                            "read": {
                              "type": "boolean"
                            },
                            "set": {
                              "type": "boolean"
                            }
                          }
                        },
                        "extrude": {
                          "type": "boolean"
                        },
                        "toolRef": {
                          "type": "string"
                        },
                        "ref": {
                          "type": "string",
                          "title": "Logical reference, unique within its array. ASCII, lowercase, deterministic",
                          "description": "Logical reference, unique within its array. ASCII, lowercase, deterministic."
                        },
                        "label": {
                          "type": "string",
                          "description": "Human-readable display name"
                        },
                        "kind": {
                          "type": "string",
                          "description": "Optional vendor/extensible subtype when the base role is not enough"
                        }
                      }
                    }
                  },
                  "tools": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "selectable": {
                          "type": "boolean"
                        },
                        "nozzleRefs": {
                          "type": "array",
                          "items": {
                            "type": "string"
                          }
                        },
                        "fanRefs": {
                          "type": "array",
                          "items": {
                            "type": "string"
                          }
                        },
                        "sensorRefs": {
                          "type": "array",
                          "items": {
                            "type": "string"
                          }
                        },
                        "ref": {
                          "type": "string",
                          "title": "Logical reference, unique within its array. ASCII, lowercase, deterministic",
                          "description": "Logical reference, unique within its array. ASCII, lowercase, deterministic."
                        },
                        "label": {
                          "type": "string",
                          "description": "Human-readable display name"
                        },
                        "kind": {
                          "type": "string",
                          "description": "Optional vendor/extensible subtype when the base role is not enough"
                        }
                      }
                    }
                  },
                  "fans": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "role": {
                          "oneOf": [
                            {
                              "const": "part"
                            },
                            {
                              "const": "aux"
                            },
                            {
                              "const": "chamber"
                            },
                            {
                              "const": "hotend"
                            },
                            {
                              "const": "exhaust"
                            },
                            {
                              "type": "object",
                              "properties": {
                                "length": {
                                  "type": "number",
                                  "title": "Returns the length of a String object",
                                  "description": "Returns the length of a String object."
                                }
                              },
                              "additionalProperties": {
                                "type": "string"
                              }
                            }
                          ]
                        },
                        "controllable": {
                          "type": "boolean"
                        },
                        "reportsSpeed": {
                          "type": "boolean",
                          "description": "Whether the printer reports back a live fan speed. Defaults to true\n(omitted). Set false for write-only fans (e.g. OctoPrint, whose REST API\naccepts M106 but never surfaces a speed) so diagnostics skip the readback\nverification instead of failing a check they can't perform."
                        },
                        "nozzleRef": {
                          "type": "string"
                        },
                        "toolRef": {
                          "type": "string"
                        },
                        "ref": {
                          "type": "string",
                          "title": "Logical reference, unique within its array. ASCII, lowercase, deterministic",
                          "description": "Logical reference, unique within its array. ASCII, lowercase, deterministic."
                        },
                        "label": {
                          "type": "string",
                          "description": "Human-readable display name"
                        },
                        "kind": {
                          "type": "string",
                          "description": "Optional vendor/extensible subtype when the base role is not enough"
                        }
                      }
                    }
                  },
                  "lights": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "role": {
                          "oneOf": [
                            {
                              "const": "chamber"
                            },
                            {
                              "const": "work"
                            },
                            {
                              "const": "indicator"
                            },
                            {
                              "const": "strip"
                            },
                            {
                              "type": "object",
                              "properties": {
                                "length": {
                                  "type": "number",
                                  "title": "Returns the length of a String object",
                                  "description": "Returns the length of a String object."
                                }
                              },
                              "additionalProperties": {
                                "type": "string"
                              }
                            }
                          ]
                        },
                        "dimmable": {
                          "type": "boolean"
                        },
                        "ref": {
                          "type": "string",
                          "title": "Logical reference, unique within its array. ASCII, lowercase, deterministic",
                          "description": "Logical reference, unique within its array. ASCII, lowercase, deterministic."
                        },
                        "label": {
                          "type": "string",
                          "description": "Human-readable display name"
                        },
                        "kind": {
                          "type": "string",
                          "description": "Optional vendor/extensible subtype when the base role is not enough"
                        }
                      }
                    }
                  },
                  "sensors": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "role": {
                          "oneOf": [
                            {
                              "const": "lidar"
                            },
                            {
                              "const": "filament_runout"
                            },
                            {
                              "const": "door"
                            },
                            {
                              "const": "accelerometer"
                            },
                            {
                              "const": "bed_mesh"
                            },
                            {
                              "type": "object",
                              "properties": {
                                "length": {
                                  "type": "number",
                                  "title": "Returns the length of a String object",
                                  "description": "Returns the length of a String object."
                                }
                              },
                              "additionalProperties": {
                                "type": "string"
                              }
                            }
                          ]
                        },
                        "nozzleRef": {
                          "type": "string"
                        },
                        "toolRef": {
                          "type": "string"
                        },
                        "ref": {
                          "type": "string",
                          "title": "Logical reference, unique within its array. ASCII, lowercase, deterministic",
                          "description": "Logical reference, unique within its array. ASCII, lowercase, deterministic."
                        },
                        "label": {
                          "type": "string",
                          "description": "Human-readable display name"
                        },
                        "kind": {
                          "type": "string",
                          "description": "Optional vendor/extensible subtype when the base role is not enough"
                        }
                      }
                    }
                  },
                  "beds": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "temperature": {
                          "type": "object",
                          "properties": {
                            "read": {
                              "type": "boolean"
                            },
                            "set": {
                              "type": "boolean"
                            }
                          }
                        },
                        "hasMesh": {
                          "type": "boolean"
                        },
                        "ref": {
                          "type": "string",
                          "title": "Logical reference, unique within its array. ASCII, lowercase, deterministic",
                          "description": "Logical reference, unique within its array. ASCII, lowercase, deterministic."
                        },
                        "label": {
                          "type": "string",
                          "description": "Human-readable display name"
                        },
                        "kind": {
                          "type": "string",
                          "description": "Optional vendor/extensible subtype when the base role is not enough"
                        }
                      }
                    }
                  },
                  "chambers": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "temperature": {
                          "type": "object",
                          "properties": {
                            "read": {
                              "type": "boolean"
                            },
                            "set": {
                              "type": "boolean"
                            }
                          }
                        },
                        "ref": {
                          "type": "string",
                          "title": "Logical reference, unique within its array. ASCII, lowercase, deterministic",
                          "description": "Logical reference, unique within its array. ASCII, lowercase, deterministic."
                        },
                        "label": {
                          "type": "string",
                          "description": "Human-readable display name"
                        },
                        "kind": {
                          "type": "string",
                          "description": "Optional vendor/extensible subtype when the base role is not enough"
                        }
                      }
                    }
                  },
                  "axes": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "axis": {
                          "oneOf": [
                            {
                              "const": "x"
                            },
                            {
                              "const": "y"
                            },
                            {
                              "const": "z"
                            }
                          ]
                        },
                        "move": {
                          "type": "boolean"
                        },
                        "home": {
                          "type": "boolean"
                        },
                        "flipped": {
                          "type": "boolean"
                        },
                        "ref": {
                          "type": "string",
                          "title": "Logical reference, unique within its array. ASCII, lowercase, deterministic",
                          "description": "Logical reference, unique within its array. ASCII, lowercase, deterministic."
                        },
                        "label": {
                          "type": "string",
                          "description": "Human-readable display name"
                        },
                        "kind": {
                          "type": "string",
                          "description": "Optional vendor/extensible subtype when the base role is not enough"
                        }
                      }
                    }
                  },
                  "filaments": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "canReadFilament": {
                          "type": "boolean",
                          "title": "True if printer hardware can read filament info from this source",
                          "description": "True if printer hardware can read filament info from this source."
                        },
                        "canLoad": {
                          "type": "boolean",
                          "title": "True if printer can auto-load filament into this source",
                          "description": "True if printer can auto-load filament into this source."
                        },
                        "canUnload": {
                          "type": "boolean",
                          "title": "True if printer can auto-unload filament",
                          "description": "True if printer can auto-unload filament."
                        },
                        "ref": {
                          "type": "string",
                          "title": "Logical reference, unique within its array. ASCII, lowercase, deterministic",
                          "description": "Logical reference, unique within its array. ASCII, lowercase, deterministic."
                        },
                        "label": {
                          "type": "string",
                          "description": "Human-readable display name"
                        },
                        "kind": {
                          "type": "string",
                          "description": "Optional vendor/extensible subtype when the base role is not enough"
                        }
                      }
                    },
                    "description": "Directly-fed filament sources. An array because some printers feed\nmultiple positions simultaneously (Bambu external bay = 2, Snapmaker\nU1 = 4, Bambu H2D = 2+). Each entry is one loadable position.\nAMS / MMU / ERCF / CFS / toolchanger live separately under\n`peripherals` and are presented alongside these in the UI's\nFilaments view."
                  },
                  "cameras": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "protocol": {
                          "oneOf": [
                            {
                              "const": "mjpeg-bambu"
                            },
                            {
                              "const": "rtsps-bambu"
                            },
                            {
                              "const": "webrtc"
                            },
                            {
                              "const": "rtsp"
                            },
                            {
                              "const": "rtsps"
                            },
                            {
                              "const": "mjpeg-http"
                            },
                            {
                              "const": "http-flv"
                            },
                            {
                              "const": "http-snapshot"
                            },
                            {
                              "const": "http-snapshot-poll"
                            }
                          ]
                        },
                        "mounting": {
                          "oneOf": [
                            {
                              "const": "external"
                            },
                            {
                              "const": "builtin"
                            }
                          ],
                          "title": "`builtin`: seeded by the capability set, locked in the UI",
                          "description": "`builtin`: seeded by the capability set, locked in the UI.\n`external`: user-attached; editable + removable via printer config."
                        },
                        "url": {
                          "type": "string",
                          "description": "Literal stream URL. Required for non-Bambu protocols, EXCEPT for\n`mjpeg-http` cameras whose endpoint can be synthesized from\n`printer.ip + port` (path-agnostic MJPEG, e.g. Elegoo Centauri\nCarbon 2 on `:8080`). Set `url` when the camera is at a third-party\nabsolute address; otherwise just set `port` and let the go2rtc\ngenerator build `http://${printer.ip}:${port}/`."
                        },
                        "port": {
                          "type": "number",
                          "title": "Override default port for the protocol",
                          "description": "Override default port for the protocol."
                        },
                        "path": {
                          "type": "string",
                          "description": "Override the URL path for `mjpeg-http` (default `/`). Used when the\nstream sits behind a fixed path on the printer's web server — e.g.\nMainsail/Fluidd-style `/webcam/?action=stream` for camera-streamer\nor mjpg-streamer. Combined with `printer.ip + port` to build the\nfull URL when `url` isn't set."
                        },
                        "auth": {
                          "type": "string",
                          "description": "Auth credentials for the stream — `Bearer ...`, `user:pass`, or a\nquery-string fragment. Bambu protocols ignore this; their auth is\nderived from `printer.accessCode`."
                        },
                        "role": {
                          "oneOf": [
                            {
                              "const": "overhead"
                            },
                            {
                              "const": "bed"
                            },
                            {
                              "const": "chamber"
                            },
                            {
                              "const": "toolhead"
                            },
                            {
                              "type": "object",
                              "properties": {
                                "length": {
                                  "type": "number",
                                  "title": "Returns the length of a String object",
                                  "description": "Returns the length of a String object."
                                }
                              },
                              "additionalProperties": {
                                "type": "string"
                              }
                            }
                          ],
                          "title": "UX-only role for grouping/labeling",
                          "description": "UX-only role for grouping/labeling."
                        },
                        "snapshots": {
                          "type": "boolean",
                          "title": "Whether to capture periodic snapshots. Defaults true if unset",
                          "description": "Whether to capture periodic snapshots. Defaults true if unset."
                        },
                        "timelapse": {
                          "type": "boolean",
                          "title": "Whether to record timelapses. Defaults true if unset",
                          "description": "Whether to record timelapses. Defaults true if unset."
                        },
                        "primary": {
                          "type": "boolean",
                          "description": "When true, this is the printer's primary camera: it owns the bare\n`printer.id` go2rtc stream key, so the live dashboard/printer tile,\nperiodic snapshots, the print-completion thumbnail, and timelapses\nall read from it instead of the built-in camera. At most one camera\nper printer should set this; when none do, the first camera\n(index 0, normally the built-in) is the implicit primary."
                        },
                        "webrtcSignaling": {
                          "type": "object",
                          "properties": {
                            "flavor": {
                              "oneOf": [
                                {
                                  "const": "whep"
                                },
                                {
                                  "const": "creality-base64-json"
                                },
                                {
                                  "const": "go2rtc-ws"
                                }
                              ]
                            },
                            "path": {
                              "type": "string",
                              "title": "Endpoint path or full URL for the signaling request",
                              "description": "Endpoint path or full URL for the signaling request."
                            }
                          },
                          "description": "SDP-exchange config for `protocol: 'webrtc'`. Required when protocol\nis `'webrtc'`; ignored otherwise. The transport itself is always\nstandard WebRTC; this only describes how the offer/answer get traded.\n\nFor `creality-base64-json`, the signaling URL is built from\n`printer.ip:port` + `path` (e.g. http://192.168.1.26:8000/call/webrtc_local).\nFor `whep`, `path` may be a full URL or a path appended to the camera's\nbase URL."
                        },
                        "ref": {
                          "type": "string",
                          "title": "Logical reference, unique within its array. ASCII, lowercase, deterministic",
                          "description": "Logical reference, unique within its array. ASCII, lowercase, deterministic."
                        },
                        "label": {
                          "type": "string",
                          "description": "Human-readable display name"
                        },
                        "kind": {
                          "type": "string",
                          "description": "Optional vendor/extensible subtype when the base role is not enough"
                        }
                      }
                    },
                    "description": "Cameras attached to the printer. Built-in (`mounting:'builtin'`)\ncameras come from the printer's capability set; external IP/RTSP\ncameras (`mounting:'external'`) are added via printer config.\n\nReplaces the legacy `getCameraProtocol(modelCode)` lookup — all\ncamera config flows through this array."
                  },
                  "peripherals": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "type": {
                          "oneOf": [
                            {
                              "const": "ercf"
                            },
                            {
                              "const": "mmu"
                            },
                            {
                              "const": "toolchanger"
                            },
                            {
                              "const": "ams"
                            },
                            {
                              "type": "object",
                              "properties": {
                                "length": {
                                  "type": "number",
                                  "title": "Returns the length of a String object",
                                  "description": "Returns the length of a String object."
                                }
                              },
                              "additionalProperties": {
                                "type": "string"
                              }
                            }
                          ]
                        },
                        "maxUnits": {
                          "type": "number"
                        },
                        "slotsPerUnit": {
                          "type": "number"
                        },
                        "minSlotsPerUnit": {
                          "type": "number"
                        },
                        "maxSlotsPerUnit": {
                          "type": "number"
                        },
                        "canReadFilament": {
                          "type": "boolean"
                        },
                        "canLoad": {
                          "type": "boolean"
                        },
                        "canUnload": {
                          "type": "boolean"
                        },
                        "ref": {
                          "type": "string",
                          "title": "Logical reference, unique within its array. ASCII, lowercase, deterministic",
                          "description": "Logical reference, unique within its array. ASCII, lowercase, deterministic."
                        },
                        "label": {
                          "type": "string",
                          "description": "Human-readable display name"
                        },
                        "kind": {
                          "type": "string",
                          "description": "Optional vendor/extensible subtype when the base role is not enough"
                        }
                      }
                    }
                  },
                  "printing": {
                    "type": "object",
                    "properties": {
                      "start": {
                        "type": "boolean"
                      },
                      "pause": {
                        "type": "boolean"
                      },
                      "resume": {
                        "type": "boolean"
                      },
                      "stop": {
                        "type": "boolean"
                      },
                      "skipObjects": {
                        "type": "boolean"
                      }
                    }
                  },
                  "filament": {
                    "type": "object",
                    "properties": {
                      "setInfo": {
                        "type": "boolean"
                      },
                      "read": {
                        "type": "boolean"
                      },
                      "dynamicSlots": {
                        "type": "boolean"
                      }
                    }
                  },
                  "files": {
                    "type": "object",
                    "properties": {
                      "upload": {
                        "type": "boolean"
                      },
                      "list": {
                        "type": "boolean"
                      }
                    }
                  },
                  "gcode": {
                    "type": "boolean"
                  },
                  "printOptions": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "kind": {
                          "oneOf": [
                            {
                              "const": "boolean"
                            },
                            {
                              "const": "enum"
                            }
                          ]
                        },
                        "default": {
                          "oneOf": [
                            {
                              "type": "string"
                            },
                            {
                              "type": "boolean"
                            }
                          ],
                          "title": "UI default when the stored providerConfig is null / missing the key",
                          "description": "UI default when the stored providerConfig is null / missing the key."
                        },
                        "choices": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "value": {
                                "type": "string"
                              },
                              "label": {
                                "type": "string"
                              }
                            }
                          },
                          "title": "For `kind: \"enum\"`: allowed values with display labels",
                          "description": "For `kind: \"enum\"`: allowed values with display labels."
                        },
                        "description": {
                          "type": "string",
                          "title": "Tooltip help text rendered next to the label",
                          "description": "Tooltip help text rendered next to the label."
                        },
                        "ref": {
                          "type": "string",
                          "title": "Logical reference, unique within its array. ASCII, lowercase, deterministic",
                          "description": "Logical reference, unique within its array. ASCII, lowercase, deterministic."
                        },
                        "label": {
                          "type": "string",
                          "description": "Human-readable display name"
                        }
                      }
                    }
                  }
                }
              }
            ]
          }
        },
        "required": [
          "printerId",
          "capabilities"
        ]
      },
      "ResolvePrinterCapabilitiesRequest": {
        "type": "object",
        "properties": {
          "printerIds": {
            "type": "array",
            "items": {
              "type": "string",
              "pattern": "^[a-z0-9]{24}$"
            }
          }
        },
        "required": [
          "printerIds"
        ]
      },
      "PrinterInsert": {
        "type": "object",
        "properties": {
          "vendorModelId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "number"
              }
            ],
            "title": "Catalog vendor-model id. Provide this OR (`vendorName` + `modelName`)",
            "description": "Catalog vendor-model id. Provide this OR (`vendorName` + `modelName`)."
          },
          "vendorName": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ],
            "title": "Resolved server-side from `vendorModelId` when omitted",
            "description": "Resolved server-side from `vendorModelId` when omitted."
          },
          "modelName": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ],
            "title": "Resolved server-side from `vendorModelId` when omitted",
            "description": "Resolved server-side from `vendorModelId` when omitted."
          },
          "printerCapabilityPatch": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/JsonMergePatchPrinterCommCapabilities"
              }
            ]
          },
          "printerAdapterBindingsPatch": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/JsonMergePatchPrinterAdapterBindings"
              }
            ]
          },
          "name": {
            "type": "string",
            "minLength": 1,
            "maxLength": 1024
          },
          "metadata": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/BambuPrinterMetadata"
              },
              {
                "$ref": "#/components/schemas/KlipperMetadata"
              },
              {
                "$ref": "#/components/schemas/PrusaMetadata"
              },
              {
                "$ref": "#/components/schemas/SdcpMetadata"
              },
              {
                "$ref": "#/components/schemas/OctoPrintMetadata"
              }
            ]
          },
          "integrationId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "integrationType": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "const": "bambulab"
              },
              {
                "const": "etsy"
              },
              {
                "const": "shopify"
              },
              {
                "const": "ebay"
              },
              {
                "const": "tiktok-shop"
              },
              {
                "const": "woocommerce"
              },
              {
                "const": "shipstation"
              },
              {
                "const": "google-drive"
              },
              {
                "const": "onedrive"
              }
            ]
          },
          "customMetadata": {
            "$ref": "#/components/schemas/Recordstringunknown"
          },
          "tags": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "provider": {
            "oneOf": [
              {
                "const": "OctoPrint"
              },
              {
                "const": "Prusa"
              },
              {
                "const": "Bambu"
              },
              {
                "const": "Klipper"
              },
              {
                "const": "SDCP"
              },
              {
                "const": "ElegooMqtt",
                "description": "Elegoo Centauri Carbon 2 family — uses MQTT-on-printer (embedded\nbroker on port 1883) rather than SDCP WebSocket. Distinct provider\nbecause the protocol shape, discovery (UDP 52700), and auth model\n(default `elegoo`/`123456` or access-code-derived password) all\ndiffer from `SDCP`."
              },
              {
                "const": "Anycubic",
                "description": "Anycubic Kobra-series (Kobra X / S1 / S1 Max) — uses the Anycubic\nLAN-mode MQTTS protocol (broker on port 9883, mutual-TLS with the\nAnycubicSlicer client cert) reached after an HTTP `/info` + `/ctrl`\ncredential-minting handshake on port 18910. EXPERIMENTAL."
              }
            ]
          },
          "deviceId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "nozzleDiameter": {
            "type": "string"
          },
          "enabled": {
            "type": "boolean"
          },
          "commMethod": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "const": "bambu-global-mqtt"
              },
              {
                "const": "bambu-cloud-v2"
              },
              {
                "const": "octoprint-mqtt"
              },
              {
                "const": "fuse"
              }
            ]
          }
        },
        "required": [
          "name",
          "metadata",
          "integrationId",
          "integrationType",
          "provider",
          "deviceId",
          "nozzleDiameter",
          "enabled",
          "commMethod"
        ]
      },
      "UpdateManyRequestPrinterUpdate": {
        "type": "object",
        "properties": {
          "ids": {
            "type": "array",
            "items": {
              "type": "string",
              "pattern": "^[a-z0-9]{24}$"
            }
          },
          "update": {
            "$ref": "#/components/schemas/PartialPrinterUpdate"
          }
        },
        "required": [
          "ids",
          "update"
        ]
      },
      "PartialPrinterUpdate": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "minLength": 1,
            "maxLength": 1024
          },
          "metadata": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/BambuPrinterMetadata"
              },
              {
                "$ref": "#/components/schemas/KlipperMetadata"
              },
              {
                "$ref": "#/components/schemas/PrusaMetadata"
              },
              {
                "$ref": "#/components/schemas/SdcpMetadata"
              },
              {
                "$ref": "#/components/schemas/OctoPrintMetadata"
              }
            ]
          },
          "integrationId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "integrationType": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "const": "bambulab"
              },
              {
                "const": "etsy"
              },
              {
                "const": "shopify"
              },
              {
                "const": "ebay"
              },
              {
                "const": "tiktok-shop"
              },
              {
                "const": "woocommerce"
              },
              {
                "const": "shipstation"
              },
              {
                "const": "google-drive"
              },
              {
                "const": "onedrive"
              }
            ]
          },
          "customMetadata": {
            "$ref": "#/components/schemas/Recordstringunknown"
          },
          "tags": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "deviceId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "nozzleDiameter": {
            "type": "string"
          },
          "enabled": {
            "type": "boolean"
          },
          "commMethod": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "const": "bambu-global-mqtt"
              },
              {
                "const": "bambu-cloud-v2"
              },
              {
                "const": "octoprint-mqtt"
              },
              {
                "const": "fuse"
              }
            ]
          },
          "vendorModelId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "number"
              }
            ]
          },
          "printerCapabilityPatch": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/JsonMergePatchPrinterCommCapabilities"
              }
            ],
            "title": "Per-printer capability override applied last (web Advanced Capabilities panel)",
            "description": "Per-printer capability override applied last (web Advanced Capabilities panel)."
          },
          "printerAdapterBindingsPatch": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/JsonMergePatchPrinterAdapterBindings"
              }
            ],
            "title": "Per-printer adapter binding override applied last",
            "description": "Per-printer adapter binding override applied last."
          }
        },
        "description": "Make all properties in T optional"
      },
      "PartialPrinterUpdateidstring": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "minLength": 1,
            "maxLength": 1024
          },
          "metadata": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/BambuPrinterMetadata"
              },
              {
                "$ref": "#/components/schemas/KlipperMetadata"
              },
              {
                "$ref": "#/components/schemas/PrusaMetadata"
              },
              {
                "$ref": "#/components/schemas/SdcpMetadata"
              },
              {
                "$ref": "#/components/schemas/OctoPrintMetadata"
              }
            ]
          },
          "integrationId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "integrationType": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "const": "bambulab"
              },
              {
                "const": "etsy"
              },
              {
                "const": "shopify"
              },
              {
                "const": "ebay"
              },
              {
                "const": "tiktok-shop"
              },
              {
                "const": "woocommerce"
              },
              {
                "const": "shipstation"
              },
              {
                "const": "google-drive"
              },
              {
                "const": "onedrive"
              }
            ]
          },
          "customMetadata": {
            "$ref": "#/components/schemas/Recordstringunknown"
          },
          "tags": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "deviceId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "nozzleDiameter": {
            "type": "string"
          },
          "enabled": {
            "type": "boolean"
          },
          "commMethod": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "const": "bambu-global-mqtt"
              },
              {
                "const": "bambu-cloud-v2"
              },
              {
                "const": "octoprint-mqtt"
              },
              {
                "const": "fuse"
              }
            ]
          },
          "vendorModelId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "number"
              }
            ]
          },
          "printerCapabilityPatch": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/JsonMergePatchPrinterCommCapabilities"
              }
            ],
            "title": "Per-printer capability override applied last (web Advanced Capabilities panel)",
            "description": "Per-printer capability override applied last (web Advanced Capabilities panel)."
          },
          "printerAdapterBindingsPatch": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/JsonMergePatchPrinterAdapterBindings"
              }
            ],
            "title": "Per-printer adapter binding override applied last",
            "description": "Per-printer adapter binding override applied last."
          },
          "id": {
            "type": "string"
          }
        },
        "required": [
          "id"
        ]
      },
      "RenamePrinterOptions": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          }
        },
        "required": [
          "name"
        ]
      },
      "LinkedPart": {
        "type": "object",
        "properties": {
          "skuId": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "partId": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "parameters": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PartParameterOverride"
            }
          },
          "quantity": {
            "type": "number",
            "minimum": 0,
            "maximum": 500
          },
          "label": {
            "type": "string",
            "minLength": 1,
            "maxLength": 1024
          },
          "exposedParameters": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "materialAssignments": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/RecordnumberArrayLinkedPartMaterialSpecification"
              }
            ]
          },
          "extensions": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/LinkedPartExtensions"
              }
            ]
          },
          "parameterBindings": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/Recordstringstring"
              }
            ]
          },
          "sequenceBindings": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/Recordstringstring"
              }
            ],
            "title": "Text-parameter name → sequence id: each queued unit consumes the next serial",
            "description": "Text-parameter name → sequence id: each queued unit consumes the next serial."
          },
          "plateQuantitiesBinding": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "id": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "storeId": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time"
          }
        },
        "required": [
          "skuId",
          "partId",
          "parameters",
          "quantity",
          "label",
          "exposedParameters",
          "id",
          "storeId",
          "createdAt",
          "updatedAt"
        ]
      },
      "PartParameterOverride": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "minLength": 1,
            "maxLength": 255
          },
          "type": {
            "oneOf": [
              {
                "const": "number"
              },
              {
                "const": "string"
              },
              {
                "const": "boolean"
              },
              {
                "const": "file"
              }
            ]
          },
          "value": {
            "oneOf": [
              {
                "type": "number"
              },
              {
                "type": "string",
                "minLength": 0,
                "maxLength": 255
              },
              {
                "type": "boolean"
              }
            ]
          }
        },
        "required": [
          "name",
          "type"
        ]
      },
      "RecordnumberArrayLinkedPartMaterialSpecification": {
        "type": "object",
        "properties": {},
        "description": "Construct a type with a set of properties K of type T",
        "additionalProperties": {
          "type": "array",
          "items": {
            "oneOf": [
              {
                "type": "object",
                "properties": {
                  "groupId": {
                    "type": "string",
                    "pattern": "^[a-z0-9]{24}$"
                  }
                },
                "required": [
                  "groupId"
                ]
              },
              {
                "type": "object",
                "properties": {
                  "variantId": {
                    "type": "string",
                    "pattern": "^[a-z0-9]{24}$"
                  }
                },
                "required": [
                  "variantId"
                ]
              },
              {
                "type": "object",
                "properties": {
                  "materialId": {
                    "type": "string",
                    "pattern": "^[a-z0-9]{24}$"
                  }
                },
                "required": [
                  "materialId"
                ]
              },
              {
                "type": "object",
                "properties": {
                  "materialType": {
                    "type": "string"
                  }
                },
                "required": [
                  "materialType"
                ]
              },
              {
                "type": "object",
                "properties": {
                  "propertyId": {
                    "type": "string"
                  }
                },
                "required": [
                  "propertyId"
                ]
              }
            ]
          }
        }
      },
      "LinkedPartExtensions": {
        "type": "object",
        "properties": {
          "3mf": {
            "$ref": "#/components/schemas/LinkedPartExtension3MF"
          }
        }
      },
      "LinkedPartExtension3MF": {
        "type": "object",
        "properties": {
          "skipObjects": {
            "$ref": "#/components/schemas/RecordstringArraystring",
            "title": "Objects to SKIP per plate, keyed by plate id, as identifyId strings (Bambu only)",
            "description": "Objects to SKIP per plate, keyed by plate id, as identifyId strings (Bambu only)."
          },
          "plateQuantities": {
            "$ref": "#/components/schemas/PartExtension3MFPlateQuantities"
          },
          "plateLabels": {
            "$ref": "#/components/schemas/PartExtension3MFPlateLabels"
          }
        },
        "required": [
          "plateQuantities"
        ]
      },
      "RecordstringArraystring": {
        "type": "object",
        "properties": {},
        "description": "Construct a type with a set of properties K of type T",
        "additionalProperties": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      },
      "PartExtension3MFPlateQuantities": {
        "type": "object",
        "properties": {},
        "additionalProperties": {
          "type": "number"
        }
      },
      "PartExtension3MFPlateLabels": {
        "type": "object",
        "properties": {},
        "additionalProperties": {
          "type": "string"
        }
      },
      "skuIdstringundefinedpartIdstringundefinedparametersstringundefinedquantitystringundefinedlabelstringundefinedexposedParametersstringundefined...8more...updatedAtstringundefinedQuerySettings...": {
        "type": "object",
        "properties": {
          "skuId": {
            "type": "string"
          },
          "partId": {
            "type": "string"
          },
          "parameters": {
            "type": "string"
          },
          "quantity": {
            "type": "string"
          },
          "label": {
            "type": "string"
          },
          "exposedParameters": {
            "type": "string"
          },
          "materialAssignments": {
            "type": "string"
          },
          "extensions": {
            "type": "string"
          },
          "parameterBindings": {
            "type": "string"
          },
          "sequenceBindings": {
            "type": "string",
            "title": "Text-parameter name → sequence id: each queued unit consumes the next serial",
            "description": "Text-parameter name → sequence id: each queued unit consumes the next serial."
          },
          "plateQuantitiesBinding": {
            "type": "string"
          },
          "id": {
            "type": "string"
          },
          "storeId": {
            "type": "string"
          },
          "createdAt": {
            "type": "string"
          },
          "updatedAt": {
            "type": "string"
          },
          "sort": {
            "type": "string",
            "title": "Sort",
            "description": "Sort specification in format \"field:asc,field2:desc\""
          },
          "limit": {
            "type": "number",
            "minimum": 1,
            "maximum": 1000,
            "title": "Limit",
            "description": "Maximum number of results to return (default: 1000, max: 1000)"
          },
          "offset": {
            "type": "number",
            "minimum": 0,
            "title": "Offset",
            "description": "Number of results to skip for pagination"
          },
          "fields": {
            "type": "string",
            "title": "Fields",
            "description": "Comma-separated list of fields to return"
          },
          "include": {
            "type": "string",
            "title": "Include",
            "description": "Comma-separated list of relations to include (max 4, max 2 levels deep).\nExample: \"linkedParts,linkedParts.part,folder\""
          },
          "meta": {
            "type": "boolean",
            "title": "Meta",
            "description": "If true, returns response with metadata (total, count, hasMore, etc.)"
          },
          "hints": {
            "type": "boolean",
            "title": "Hints",
            "description": "If true, returns AI-friendly hints about available actions. Implies meta=true."
          }
        }
      },
      "SearchQueryDtoLinkedPart": {
        "type": "object",
        "properties": {
          "filter": {
            "$ref": "#/components/schemas/FilterConditionLinkedPart",
            "title": "Filter",
            "description": "Complex filter conditions using logical and field operators.\nAvailable field operators: eq, ne, gt, gte, lt, lte, contains, startsWith, endsWith, in, notIn, isNull, between.\nUsage example: {\"filter\": {\"and\": [{\"name\": {\"contains\": \"benchy\"}}, {\"or\": [{\"type\": {\"eq\": \"3mf\"}}, {\"type\": {\"eq\": \"gcode3mf\"}}]}}}"
          },
          "sort": {
            "type": "string",
            "title": "Sort",
            "description": "Sort specification in format \"field:asc,field2:desc\""
          },
          "limit": {
            "type": "number",
            "minimum": 1,
            "maximum": 1000,
            "title": "Limit",
            "description": "Maximum number of results to return (default: 1000, max: 1000)"
          },
          "offset": {
            "type": "number",
            "minimum": 0,
            "title": "Offset",
            "description": "Number of results to skip for pagination"
          },
          "fields": {
            "type": "string",
            "title": "Fields",
            "description": "Comma-separated list of fields to return"
          },
          "include": {
            "type": "string",
            "title": "Include",
            "description": "Comma-separated list of relations to include (max 4, max 2 levels deep).\nExample: \"linkedParts,linkedParts.part,folder\""
          },
          "meta": {
            "type": "boolean",
            "title": "Meta",
            "description": "If true, returns response with metadata (total, count, hasMore, etc.)"
          },
          "hints": {
            "type": "boolean",
            "title": "Hints",
            "description": "If true, returns AI-friendly hints about available actions. Implies meta=true."
          }
        },
        "title": "Search Query",
        "description": "Complete search request with filter conditions and query settings"
      },
      "FilterConditionLinkedPart": {
        "type": "object",
        "properties": {
          "and": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FilterConditionLinkedPart"
            },
            "title": "AND Conditions",
            "description": "All conditions must be true"
          },
          "or": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FilterConditionLinkedPart"
            },
            "title": "OR Conditions",
            "description": "At least one condition must be true"
          },
          "skuId": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "partId": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "parameters": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "quantity": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "label": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "exposedParameters": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "materialAssignments": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "extensions": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "parameterBindings": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "sequenceBindings": {
            "$ref": "#/components/schemas/FieldOperators",
            "title": "Text-parameter name → sequence id: each queued unit consumes the next serial",
            "description": "Text-parameter name → sequence id: each queued unit consumes the next serial."
          },
          "plateQuantitiesBinding": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "id": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "storeId": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "createdAt": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "updatedAt": {
            "$ref": "#/components/schemas/FieldOperators"
          }
        },
        "title": "Filter Condition",
        "description": "Root filter condition that can be either a logical condition (AND/OR) or field-based condition"
      },
      "LinkedPartInsert": {
        "type": "object",
        "properties": {
          "skuId": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "parameters": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PartParameterOverride"
            }
          },
          "partId": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "quantity": {
            "type": "number",
            "minimum": 0,
            "maximum": 500
          },
          "label": {
            "type": "string",
            "minLength": 1,
            "maxLength": 1024
          },
          "extensions": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/LinkedPartExtensions"
              }
            ]
          },
          "materialAssignments": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/RecordnumberArrayLinkedPartMaterialSpecification"
              }
            ]
          },
          "exposedParameters": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "parameterBindings": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/Recordstringstring"
              }
            ]
          },
          "sequenceBindings": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/Recordstringstring"
              }
            ],
            "title": "Text-parameter name → sequence id: each queued unit consumes the next serial",
            "description": "Text-parameter name → sequence id: each queued unit consumes the next serial."
          },
          "plateQuantitiesBinding": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          }
        },
        "required": [
          "parameters",
          "partId",
          "quantity",
          "label",
          "exposedParameters"
        ]
      },
      "PartialLinkedPartInsert": {
        "type": "object",
        "properties": {
          "skuId": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "parameters": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PartParameterOverride"
            }
          },
          "partId": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "quantity": {
            "type": "number",
            "minimum": 0,
            "maximum": 500
          },
          "label": {
            "type": "string",
            "minLength": 1,
            "maxLength": 1024
          },
          "extensions": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/LinkedPartExtensions"
              }
            ]
          },
          "materialAssignments": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/RecordnumberArrayLinkedPartMaterialSpecification"
              }
            ]
          },
          "exposedParameters": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "parameterBindings": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/Recordstringstring"
              }
            ]
          },
          "sequenceBindings": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/Recordstringstring"
              }
            ],
            "title": "Text-parameter name → sequence id: each queued unit consumes the next serial",
            "description": "Text-parameter name → sequence id: each queued unit consumes the next serial."
          },
          "plateQuantitiesBinding": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          }
        },
        "description": "Make all properties in T optional"
      },
      "Profile": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "name": {
            "type": "string",
            "minLength": 1,
            "maxLength": 1024
          },
          "type": {
            "oneOf": [
              {
                "const": "process"
              },
              {
                "const": "filament"
              },
              {
                "const": "machine"
              }
            ]
          },
          "externalId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "source": {
            "oneOf": [
              {
                "const": "manual"
              },
              {
                "const": "bambu-account"
              }
            ]
          },
          "inherits": {
            "type": "string"
          },
          "compatibilityList": {
            "type": "string"
          },
          "data": {
            "$ref": "#/components/schemas/Recordstringany"
          },
          "metadata": {
            "$ref": "#/components/schemas/Recordstringany"
          },
          "integrationId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "integrationType": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "const": "bambulab"
              },
              {
                "const": "etsy"
              },
              {
                "const": "shopify"
              },
              {
                "const": "ebay"
              },
              {
                "const": "tiktok-shop"
              },
              {
                "const": "woocommerce"
              },
              {
                "const": "shipstation"
              },
              {
                "const": "google-drive"
              },
              {
                "const": "onedrive"
              }
            ]
          },
          "customMetadata": {
            "$ref": "#/components/schemas/Recordstringunknown"
          },
          "storeId": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          }
        },
        "required": [
          "id",
          "name",
          "type",
          "externalId",
          "source",
          "inherits",
          "compatibilityList",
          "data",
          "metadata",
          "integrationId",
          "integrationType",
          "storeId",
          "updatedAt",
          "createdAt"
        ]
      },
      "idstringundefinednamestringundefinedtypestringundefinedexternalIdstringundefinedsourcestringundefinedinheritsstringundefinedcompatibilityListstringundefined...7more...createdAtstringundefinedQuerySettings...": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "type": {
            "type": "string"
          },
          "externalId": {
            "type": "string"
          },
          "source": {
            "type": "string"
          },
          "inherits": {
            "type": "string"
          },
          "compatibilityList": {
            "type": "string"
          },
          "data": {
            "type": "string"
          },
          "metadata": {
            "type": "string"
          },
          "integrationId": {
            "type": "string"
          },
          "integrationType": {
            "type": "string"
          },
          "customMetadata": {
            "type": "string"
          },
          "storeId": {
            "type": "string"
          },
          "updatedAt": {
            "type": "string"
          },
          "createdAt": {
            "type": "string"
          },
          "sort": {
            "type": "string",
            "title": "Sort",
            "description": "Sort specification in format \"field:asc,field2:desc\""
          },
          "limit": {
            "type": "number",
            "minimum": 1,
            "maximum": 1000,
            "title": "Limit",
            "description": "Maximum number of results to return (default: 1000, max: 1000)"
          },
          "offset": {
            "type": "number",
            "minimum": 0,
            "title": "Offset",
            "description": "Number of results to skip for pagination"
          },
          "fields": {
            "type": "string",
            "title": "Fields",
            "description": "Comma-separated list of fields to return"
          },
          "include": {
            "type": "string",
            "title": "Include",
            "description": "Comma-separated list of relations to include (max 4, max 2 levels deep).\nExample: \"linkedParts,linkedParts.part,folder\""
          },
          "meta": {
            "type": "boolean",
            "title": "Meta",
            "description": "If true, returns response with metadata (total, count, hasMore, etc.)"
          },
          "hints": {
            "type": "boolean",
            "title": "Hints",
            "description": "If true, returns AI-friendly hints about available actions. Implies meta=true."
          }
        }
      },
      "SearchQueryDtoProfile": {
        "type": "object",
        "properties": {
          "filter": {
            "$ref": "#/components/schemas/FilterConditionProfile",
            "title": "Filter",
            "description": "Complex filter conditions using logical and field operators.\nAvailable field operators: eq, ne, gt, gte, lt, lte, contains, startsWith, endsWith, in, notIn, isNull, between.\nUsage example: {\"filter\": {\"and\": [{\"name\": {\"contains\": \"benchy\"}}, {\"or\": [{\"type\": {\"eq\": \"3mf\"}}, {\"type\": {\"eq\": \"gcode3mf\"}}]}}}"
          },
          "sort": {
            "type": "string",
            "title": "Sort",
            "description": "Sort specification in format \"field:asc,field2:desc\""
          },
          "limit": {
            "type": "number",
            "minimum": 1,
            "maximum": 1000,
            "title": "Limit",
            "description": "Maximum number of results to return (default: 1000, max: 1000)"
          },
          "offset": {
            "type": "number",
            "minimum": 0,
            "title": "Offset",
            "description": "Number of results to skip for pagination"
          },
          "fields": {
            "type": "string",
            "title": "Fields",
            "description": "Comma-separated list of fields to return"
          },
          "include": {
            "type": "string",
            "title": "Include",
            "description": "Comma-separated list of relations to include (max 4, max 2 levels deep).\nExample: \"linkedParts,linkedParts.part,folder\""
          },
          "meta": {
            "type": "boolean",
            "title": "Meta",
            "description": "If true, returns response with metadata (total, count, hasMore, etc.)"
          },
          "hints": {
            "type": "boolean",
            "title": "Hints",
            "description": "If true, returns AI-friendly hints about available actions. Implies meta=true."
          }
        },
        "title": "Search Query",
        "description": "Complete search request with filter conditions and query settings"
      },
      "FilterConditionProfile": {
        "type": "object",
        "properties": {
          "and": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FilterConditionProfile"
            },
            "title": "AND Conditions",
            "description": "All conditions must be true"
          },
          "or": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FilterConditionProfile"
            },
            "title": "OR Conditions",
            "description": "At least one condition must be true"
          },
          "id": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "name": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "type": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "externalId": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "source": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "inherits": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "compatibilityList": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "data": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "metadata": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "integrationId": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "integrationType": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "customMetadata": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "storeId": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "updatedAt": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "createdAt": {
            "$ref": "#/components/schemas/FieldOperators"
          }
        },
        "title": "Filter Condition",
        "description": "Root filter condition that can be either a logical condition (AND/OR) or field-based condition"
      },
      "SupportedPrinter": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "nozzleDiameter": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        },
        "required": [
          "name",
          "nozzleDiameter"
        ]
      },
      "PrinterModel": {
        "type": "object",
        "properties": {
          "id": {
            "type": "number"
          },
          "vendorId": {
            "type": "number"
          },
          "name": {
            "type": "string"
          },
          "nozzleDiameters": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "modelId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          }
        },
        "required": [
          "id",
          "vendorId",
          "name",
          "nozzleDiameters",
          "modelId"
        ]
      },
      "CompatibleProfiles": {
        "type": "object",
        "properties": {
          "machine": {
            "$ref": "#/components/schemas/CompatibleProfileList"
          },
          "filament": {
            "$ref": "#/components/schemas/CompatibleProfileList"
          },
          "process": {
            "$ref": "#/components/schemas/CompatibleProfileList"
          }
        },
        "required": [
          "machine",
          "filament",
          "process"
        ]
      },
      "CompatibleProfileList": {
        "type": "object",
        "properties": {
          "system": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SlicerConfig"
            }
          },
          "user": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Profile"
            }
          }
        },
        "required": [
          "system",
          "user"
        ]
      },
      "SlicerConfig": {
        "type": "object",
        "properties": {
          "id": {
            "type": "number"
          },
          "vendorId": {
            "type": "number"
          },
          "name": {
            "type": "string"
          },
          "type": {
            "oneOf": [
              {
                "const": "process"
              },
              {
                "const": "filament"
              },
              {
                "const": "machine"
              }
            ]
          },
          "shown": {
            "type": "boolean"
          },
          "compatibilityList": {
            "type": "string"
          },
          "data": {
            "$ref": "#/components/schemas/Recordstringany"
          },
          "machineVariant": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "machineModel": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "preference": {
            "type": "number"
          },
          "mfgSlicer": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "mfgVersion": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          }
        },
        "required": [
          "id",
          "vendorId",
          "name",
          "type",
          "shown",
          "compatibilityList",
          "data",
          "machineVariant",
          "machineModel",
          "preference",
          "mfgSlicer",
          "mfgVersion"
        ]
      },
      "ProfileWithInheritance": {
        "type": "object",
        "properties": {
          "merged": {
            "$ref": "#/components/schemas/Recordstringany"
          },
          "ownKeys": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "inheritedKeys": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "inheritsFrom": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          }
        },
        "required": [
          "merged",
          "ownKeys",
          "inheritedKeys",
          "inheritsFrom"
        ]
      },
      "ProfilePreviewResult": {
        "type": "object",
        "properties": {
          "bundleType": {
            "oneOf": [
              {
                "const": "printer"
              },
              {
                "const": "filament"
              },
              {
                "const": "presets"
              }
            ]
          },
          "profiles": {
            "type": "object",
            "properties": {
              "machine": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/ProfilePreviewItem"
                }
              },
              "filament": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/ProfilePreviewItem"
                }
              },
              "process": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/ProfilePreviewItem"
                }
              }
            },
            "required": [
              "machine",
              "filament",
              "process"
            ]
          },
          "totalCount": {
            "type": "number"
          }
        },
        "required": [
          "bundleType",
          "profiles",
          "totalCount"
        ]
      },
      "ProfilePreviewItem": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "type": {
            "oneOf": [
              {
                "const": "process"
              },
              {
                "const": "filament"
              },
              {
                "const": "machine"
              }
            ]
          },
          "inherits": {
            "type": "string"
          },
          "filamentType": {
            "type": "string"
          },
          "filamentVendor": {
            "type": "string"
          },
          "color": {
            "type": "string"
          },
          "existsInStore": {
            "type": "boolean"
          }
        },
        "required": [
          "name",
          "type",
          "existsInStore"
        ]
      },
      "ProfileUploadBody": {
        "type": "object",
        "properties": {
          "file": {
            "type": "string",
            "format": "binary"
          }
        },
        "required": [
          "file"
        ]
      },
      "ProfileImportResult": {
        "type": "object",
        "properties": {
          "profiles": {
            "type": "object",
            "properties": {
              "created": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "updated": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "skipped": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              }
            },
            "required": [
              "created",
              "updated",
              "skipped"
            ]
          },
          "materials": {
            "type": "object",
            "properties": {
              "created": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              }
            },
            "required": [
              "created"
            ]
          }
        },
        "required": [
          "profiles"
        ]
      },
      "ProfileImportBody": {
        "type": "object",
        "properties": {
          "file": {
            "type": "string",
            "format": "binary"
          },
          "createMaterials": {
            "type": "boolean"
          },
          "overwriteExisting": {
            "type": "boolean"
          },
          "selectedProfiles": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        },
        "required": [
          "file"
        ]
      },
      "ProfileImportDataBody": {
        "type": "object",
        "properties": {
          "profiles": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ParsedProfileData"
            }
          },
          "createMaterials": {
            "type": "boolean"
          },
          "overwriteExisting": {
            "type": "boolean"
          },
          "materialIdentifiers": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "title": "Filament IDs (uppercase) of materials to create. If not provided, creates all",
            "description": "Filament IDs (uppercase) of materials to create. If not provided, creates all."
          },
          "filamentProfilesForMaterials": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ParsedProfileData"
            },
            "description": "Filament profiles to use for material creation (when not importing them as profiles)"
          }
        },
        "required": [
          "profiles",
          "createMaterials",
          "overwriteExisting"
        ],
        "description": "Request body for importing pre-parsed profile data.\nUsed when profiles are parsed client-side and sent directly to the server."
      },
      "ParsedProfileData": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "type": {
            "oneOf": [
              {
                "const": "process"
              },
              {
                "const": "filament"
              },
              {
                "const": "machine"
              }
            ]
          },
          "data": {
            "$ref": "#/components/schemas/Recordstringany"
          },
          "inherits": {
            "type": "string"
          },
          "compatiblePrinters": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "filamentType": {
            "type": "string"
          },
          "filamentVendor": {
            "type": "string"
          },
          "color": {
            "type": "string"
          }
        },
        "required": [
          "name",
          "type",
          "data"
        ]
      },
      "ProfileInsert": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "minLength": 1,
            "maxLength": 1024
          },
          "type": {
            "oneOf": [
              {
                "const": "process"
              },
              {
                "const": "filament"
              },
              {
                "const": "machine"
              }
            ]
          },
          "data": {
            "$ref": "#/components/schemas/Recordstringany"
          },
          "externalId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "inherits": {
            "type": "string"
          },
          "compatibilityList": {
            "type": "string"
          },
          "source": {
            "oneOf": [
              {
                "const": "manual"
              },
              {
                "const": "bambu-account"
              }
            ]
          },
          "metadata": {
            "$ref": "#/components/schemas/Recordstringany"
          },
          "integrationId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "integrationType": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "const": "bambulab"
              },
              {
                "const": "etsy"
              },
              {
                "const": "shopify"
              },
              {
                "const": "ebay"
              },
              {
                "const": "tiktok-shop"
              },
              {
                "const": "woocommerce"
              },
              {
                "const": "shipstation"
              },
              {
                "const": "google-drive"
              },
              {
                "const": "onedrive"
              }
            ]
          },
          "customMetadata": {
            "$ref": "#/components/schemas/Recordstringunknown"
          }
        },
        "required": [
          "name",
          "type",
          "data",
          "externalId",
          "inherits",
          "compatibilityList",
          "source",
          "metadata",
          "integrationId",
          "integrationType"
        ]
      },
      "ProfileUpdateDto": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "data": {
            "$ref": "#/components/schemas/Recordstringany"
          },
          "inherits": {
            "type": "string"
          },
          "customMetadata": {
            "$ref": "#/components/schemas/Recordstringunknown"
          }
        }
      },
      "MergePlatesResponse": {
        "type": "object",
        "properties": {
          "parentJobId": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$",
            "title": "The newly created merged (parent) print job",
            "description": "The newly created merged (parent) print job."
          },
          "layout": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/LayoutPlacement"
            },
            "title": "The authoritative placements the merged plate was committed with",
            "description": "The authoritative placements the merged plate was committed with."
          }
        },
        "required": [
          "parentJobId",
          "layout"
        ]
      },
      "LayoutPlacement": {
        "type": "object",
        "properties": {
          "jobId": {
            "type": "string"
          },
          "x": {
            "type": "number",
            "title": "World-coordinate center of the placed footprint, mm",
            "description": "World-coordinate center of the placed footprint, mm."
          },
          "y": {
            "type": "number"
          },
          "rotationDeg": {
            "oneOf": [
              {
                "const": 0
              },
              {
                "const": 90
              }
            ]
          }
        },
        "required": [
          "jobId",
          "x",
          "y",
          "rotationDeg"
        ]
      },
      "MergePlatesRequest": {
        "type": "object",
        "properties": {
          "jobIds": {
            "type": "array",
            "items": {
              "type": "string",
              "pattern": "^[a-z0-9]{24}$"
            },
            "minItems": 2
          },
          "bedSize": {
            "$ref": "#/components/schemas/PlateSize"
          },
          "partSpacingMm": {
            "type": "number",
            "minimum": 0,
            "maximum": 100,
            "description": "Per-merge override of the store's part spacing (mm) — some parts need\nmore clearance than the store default. Absent = store setting."
          },
          "plateMarginMm": {
            "type": "number",
            "minimum": 0,
            "maximum": 100,
            "title": "Per-merge override of the store's plate edge margin (mm). Absent = store setting",
            "description": "Per-merge override of the store's plate edge margin (mm). Absent = store setting."
          }
        },
        "required": [
          "jobIds",
          "bedSize"
        ],
        "description": "Merge two or more compatible pending jobs onto one build plate (manual mode).\n`bedSize` is the target plate the operator chose in the minimap; the server\nre-validates compatibility and recomputes the layout authoritatively."
      },
      "PlateSize": {
        "type": "object",
        "properties": {
          "x": {
            "type": "number"
          },
          "y": {
            "type": "number"
          },
          "z": {
            "type": "number"
          }
        },
        "required": [
          "x",
          "y",
          "z"
        ],
        "description": "{x,y,z} mm build volume of the target plate."
      },
      "GetJobFootprintHullsResult": {
        "type": "object",
        "properties": {
          "hulls": {
            "$ref": "#/components/schemas/RecordstringArrayHullPoint",
            "description": "jobId -> trusted convex footprint hull, resolved server-side: the stored\npart hulls apply to a job only when they were computed from the exact\nsource file the job's build snapshot prints. Jobs without a trusted hull\n(legacy parts, pre-sliced, merged parents, replaced source files) are\nabsent — callers pack/render those by bounding box."
          }
        },
        "required": [
          "hulls"
        ]
      },
      "RecordstringArrayHullPoint": {
        "type": "object",
        "properties": {},
        "description": "Construct a type with a set of properties K of type T",
        "additionalProperties": {
          "type": "array",
          "items": {
            "type": "array",
            "prefixItems": [
              {
                "type": "number"
              },
              {
                "type": "number"
              }
            ],
            "additionalItems": false
          }
        }
      },
      "GetJobFootprintHullsRequest": {
        "type": "object",
        "properties": {
          "jobIds": {
            "type": "array",
            "items": {
              "type": "string",
              "pattern": "^[a-z0-9]{24}$"
            },
            "minItems": 1,
            "maxItems": 200,
            "title": "IDs of the print jobs whose footprint hulls are needed",
            "description": "IDs of the print jobs whose footprint hulls are needed."
          }
        },
        "required": [
          "jobIds"
        ]
      },
      "UnmergePlateResponse": {
        "type": "object",
        "properties": {
          "releasedJobIds": {
            "type": "array",
            "items": {
              "type": "string",
              "pattern": "^[a-z0-9]{24}$"
            },
            "title": "The child job ids released back to Pending (parent deleted)",
            "description": "The child job ids released back to Pending (parent deleted)."
          }
        },
        "required": [
          "releasedJobIds"
        ]
      },
      "PrintJob": {
        "type": "object",
        "properties": {
          "partBuildId": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "quantityIndex": {
            "type": "number"
          },
          "quantityTotal": {
            "type": "number"
          },
          "thumbnailUri": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "minLength": 1
              }
            ]
          },
          "coloredThumbnailUri": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "minLength": 1
              }
            ]
          },
          "buildThumbnailUri": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "minLength": 1
              }
            ]
          },
          "cameraThumbnailUri": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "minLength": 1
              }
            ],
            "description": "Camera-captured snapshot from the moment Fuse detected the last\nlayer of the print. Persisted to the files bucket. Null unless Fuse\nsuccessfully captured and uploaded."
          },
          "timelapseUri": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "minLength": 1
              }
            ],
            "description": "MP4 timelapse Fuse encoded from frames captured during the print and\nuploaded to the snapshots bucket under the `timelapses/` prefix.\nNull unless the store has timelapses enabled and Fuse uploaded\nsuccessfully."
          },
          "fuseTelemetryUri": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "minLength": 1
              }
            ],
            "description": "Fuse flight-recorder artifact for the current attempt (gzipped JSONL\nunder the permanent `telemetry/` prefix). Confirmed asynchronously by\nFuse after the print ends, like `timelapseUri`."
          },
          "attemptNumber": {
            "type": "number",
            "description": "1-based counter of print attempts (bumped on requeue once the attempt\nprinted or reached a terminal state). Keys per-attempt media/telemetry\nobjects and aligns with `print_history.attemptNumber`."
          },
          "sendFailureCount": {
            "type": "number",
            "description": "Consecutive send-give-up cycles (EnsureJobStarted exhausted its retries\nwithout the printer starting). Reset on retry from a terminal state."
          },
          "filesToPrint": {
            "type": "array",
            "items": {
              "type": "string",
              "minLength": 1
            }
          },
          "slicerInputHash": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "minLength": 1
              }
            ]
          },
          "isGcodeCached": {
            "type": "boolean"
          },
          "slicedGcodeUri": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "minLength": 1
              }
            ]
          },
          "partId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "pattern": "^[a-z0-9]{24}$"
              }
            ]
          },
          "partName": {
            "type": "string",
            "minLength": 1,
            "maxLength": 1024
          },
          "createdByActorId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ],
            "title": "Who queued this job — see the column comments on `print_jobs`",
            "description": "Who queued this job — see the column comments on `print_jobs`."
          },
          "createdByType": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "createdByLabel": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "skuId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "pattern": "^[a-z0-9]{24}$"
              }
            ]
          },
          "skuName": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "minLength": 1
              }
            ]
          },
          "parameterOverrides": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PartParameterOverride"
            }
          },
          "orderId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "pattern": "^[a-z0-9]{24}$"
              }
            ]
          },
          "label": {
            "type": "string"
          },
          "orderItemId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "pattern": "^[a-z0-9]{24}$"
              }
            ]
          },
          "linkedPartId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "pattern": "^[a-z0-9]{24}$"
              }
            ]
          },
          "skuInstance": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "number"
              }
            ]
          },
          "queueOrder": {
            "type": "number",
            "minimum": 0
          },
          "priority": {
            "oneOf": [
              {
                "const": 100
              },
              {
                "const": 1000
              }
            ]
          },
          "requiredPrinterTags": {
            "$ref": "#/components/schemas/Tags"
          },
          "overriddenProcessProfileId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "pattern": "^[a-z0-9]{24}$"
              }
            ]
          },
          "taskId": {
            "type": "number"
          },
          "profileUris": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "array",
                "items": {
                  "type": "string"
                }
              }
            ]
          },
          "assignedPrinterId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "pattern": "^[a-z0-9]{24}$"
              }
            ]
          },
          "assignmentStartedAt": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "format": "date-time"
              }
            ]
          },
          "assignmentCompletedAt": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "format": "date-time"
              }
            ]
          },
          "printingStartedAt": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "format": "date-time"
              }
            ]
          },
          "printingCompletedAt": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "format": "date-time"
              }
            ]
          },
          "cancelledAt": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "format": "date-time"
              }
            ]
          },
          "status": {
            "oneOf": [
              {
                "const": "pending"
              },
              {
                "const": "assigned"
              },
              {
                "const": "slicing"
              },
              {
                "const": "sliced"
              },
              {
                "const": "finalizing"
              },
              {
                "const": "waiting-for-approval"
              },
              {
                "const": "ready-for-printer"
              },
              {
                "const": "sending-to-printer"
              },
              {
                "const": "printing"
              },
              {
                "const": "paused"
              },
              {
                "const": "completed"
              },
              {
                "const": "failed"
              },
              {
                "const": "cancelled"
              }
            ]
          },
          "errorMessage": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "hidden": {
            "type": "boolean"
          },
          "logsUri": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "extensions": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/PrintJobExtensions"
              }
            ]
          },
          "skipObjectsData": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/SkipObjectsData"
              }
            ]
          },
          "skipObjectIds": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "array",
                "items": {
                  "type": "string"
                }
              }
            ],
            "description": "User-selected objects to skip on this job's plate, as identifyId strings\n(resolved at queue time from the part's plate object list). When the print\nstarts, a Bambu `skip_objects` command is auto-sent for these. Null/empty\nmeans print everything. Stored as strings; converted to integer obj_list at\nsend time."
          },
          "materialMapping": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/PrintJobMaterialMapping"
                }
              }
            ]
          },
          "materialAssignments": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/RecordnumberArraySingleMaterialSpecification"
              }
            ]
          },
          "gcodeAnalysisSha256": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ],
            "description": "SHA256 hash of analyzed gcode content — stable key for extrusion lookup"
          },
          "groupId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "pattern": "^[a-z0-9]{24}$"
              }
            ],
            "description": "Group identifier for visually-collapsed print-queue rows. Assigned at\nemission (one per plate cluster within a build). Split mints fresh\ngroupIds for non-first buckets. May be null for legacy rows that predate\nthe grouping feature."
          },
          "parentJobId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "pattern": "^[a-z0-9]{24}$"
              }
            ],
            "description": "Set on jobs merged onto a shared plate; points at the merged (parent)\njob. Children mirror the parent's status and are excluded from\nindependent matching."
          },
          "boundingBox": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/BoundingBoxMm"
              }
            ],
            "title": "{x,y,z} mm bounding box of what this job prints. Null until computed",
            "description": "{x,y,z} mm bounding box of what this job prints. Null until computed."
          },
          "customMetadata": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/Recordstringunknown"
              }
            ]
          },
          "id": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "storeId": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time"
          }
        },
        "required": [
          "partBuildId",
          "quantityIndex",
          "quantityTotal",
          "thumbnailUri",
          "coloredThumbnailUri",
          "buildThumbnailUri",
          "cameraThumbnailUri",
          "timelapseUri",
          "fuseTelemetryUri",
          "attemptNumber",
          "sendFailureCount",
          "filesToPrint",
          "slicerInputHash",
          "isGcodeCached",
          "slicedGcodeUri",
          "partId",
          "partName",
          "createdByActorId",
          "createdByType",
          "createdByLabel",
          "skuId",
          "skuName",
          "parameterOverrides",
          "orderId",
          "label",
          "orderItemId",
          "linkedPartId",
          "skuInstance",
          "queueOrder",
          "priority",
          "requiredPrinterTags",
          "overriddenProcessProfileId",
          "taskId",
          "profileUris",
          "assignedPrinterId",
          "assignmentStartedAt",
          "assignmentCompletedAt",
          "printingStartedAt",
          "printingCompletedAt",
          "cancelledAt",
          "status",
          "errorMessage",
          "hidden",
          "logsUri",
          "materialMapping",
          "materialAssignments",
          "gcodeAnalysisSha256",
          "groupId",
          "parentJobId",
          "boundingBox",
          "id",
          "storeId",
          "createdAt",
          "updatedAt"
        ]
      },
      "PrintJobExtensions": {
        "type": "object",
        "properties": {
          "3mf": {
            "$ref": "#/components/schemas/PrintJobExtension3MF"
          },
          "mergedPlate": {
            "$ref": "#/components/schemas/PrintJobExtensionMergedPlate",
            "title": "Present on merged-plate parent jobs (see MergedPlateExtension)",
            "description": "Present on merged-plate parent jobs (see MergedPlateExtension)."
          },
          "serials": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SerialStamp"
            },
            "description": "Serials embedded in what this job prints, stamped at job creation. A\nmerged-plate parent aggregates its children's serials so the queue row\nthat is actually shown carries the full list."
          }
        }
      },
      "PrintJobExtension3MF": {
        "type": "object",
        "properties": {
          "plateId": {
            "type": "number"
          },
          "gcodeFile": {
            "type": "string"
          }
        },
        "required": [
          "plateId",
          "gcodeFile"
        ]
      },
      "PrintJobExtensionMergedPlate": {
        "type": "object",
        "properties": {
          "processOverrides": {
            "$ref": "#/components/schemas/Recordstringstring",
            "description": "Plate-wide process values resolved across the merged children — the\nprofile builder merges these over the process profile at dispatch."
          },
          "slicerVersionId": {
            "type": "string",
            "description": "SlicerVersion.id the plate optimizer chose for this merged plate (from the\nstore's slicer-compatibility policy). Honored at dispatch so the plate\nslices with that version instead of the store default. Absent = store\nslicer."
          },
          "childJobIds": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Committed layout mirrored onto the parent row so the web app can render\na live silhouette thumbnail from durable data. The authoritative copy\nlives on the synthetic build's MergedPlateExtension, but success-status\nbuilds are archived out of client caches — the parent job row lives\nexactly as long as the queue entry. Absent on parents created before the\nstamp shipped (clients fall back to the server-authored layout SVG)."
          },
          "layout": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/LayoutPlacement"
            }
          },
          "bedSize": {
            "$ref": "#/components/schemas/PlateSize"
          },
          "footprints": {
            "$ref": "#/components/schemas/RecordstringBoundingBoxMm",
            "title": "childJobId -> placed footprint (bounding box), mm",
            "description": "childJobId -> placed footprint (bounding box), mm."
          },
          "filamentColours": {
            "type": "array",
            "items": {
              "oneOf": [
                {
                  "type": "null"
                },
                {
                  "type": "string"
                }
              ]
            },
            "description": "The plate's filament colours, indexed by slot (gaps null), mirrored for\nthe same reason as `layout`: a merged parent has no part to read them\nfrom, so this is what lets the queue report every filament the plate\ndemands instead of only the first. Absent on single-color plates, which\ncarry exactly one assignment and already render correctly."
          }
        }
      },
      "RecordstringBoundingBoxMm": {
        "type": "object",
        "properties": {},
        "description": "Construct a type with a set of properties K of type T",
        "additionalProperties": {
          "$ref": "#/components/schemas/BoundingBoxMm"
        }
      },
      "BoundingBoxMm": {
        "type": "object",
        "properties": {
          "x": {
            "type": "number"
          },
          "y": {
            "type": "number"
          },
          "z": {
            "type": "number"
          }
        },
        "required": [
          "x",
          "y",
          "z"
        ]
      },
      "SerialStamp": {
        "type": "object",
        "properties": {
          "sequenceId": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "sequenceName": {
            "type": "string"
          },
          "parameterName": {
            "type": "string"
          },
          "value": {
            "type": "number"
          },
          "serial": {
            "type": "string"
          },
          "target": {
            "$ref": "#/components/schemas/SerialStampTarget"
          }
        },
        "required": [
          "sequenceId",
          "sequenceName",
          "parameterName",
          "value",
          "serial"
        ],
        "description": "One serial consumed by a build/print job, denormalized onto the build's and\njob's extensions at allocation time so queue chips and retry warnings can\nread it without a ledger join. `serial` is frozen at allocation — a later\nformatter change never rewrites what was already stamped on a print."
      },
      "SerialStampTarget": {
        "type": "object",
        "properties": {
          "plateId": {
            "type": "number"
          },
          "objectId": {
            "type": "string"
          },
          "instanceId": {
            "type": "number"
          },
          "identifyId": {
            "type": "string"
          }
        },
        "description": "The physical item a serial was allocated for, recorded so queue and\nhistory views can explain which item received which number. A plate-aware\nshare-mode stamp carries only the plate (the value applies to every\nmatching occurrence there); an increment-mode stamp pins the exact object\ninstance in the 3MF's stable `(object_id, instance_id)` identity."
      },
      "SkipObjectsData": {
        "type": "object",
        "properties": {
          "objects": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "identifyId": {
                  "type": "string"
                },
                "name": {
                  "type": "string"
                },
                "skipped": {
                  "type": "boolean"
                }
              },
              "required": [
                "identifyId",
                "name",
                "skipped"
              ]
            }
          },
          "topImageUri": {
            "type": "string"
          },
          "pickImageUri": {
            "type": "string"
          },
          "runtimeSkips": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/RuntimeObjectSkip"
            },
            "description": "Objects skipped at runtime (mid-print or at print start), as observed"
          },
          "excludedUsage": {
            "$ref": "#/components/schemas/SkippedObjectUsage",
            "description": "Material the skipped objects would have used above their skip layer, and\nwhich was therefore left out of the attempt's recorded usage. Written onto\nthe print_history snapshot at capture time (never onto the live job), so a\nreported total can be reconciled against the slicer's plate estimate\nwithout re-deriving it from the gcode."
          }
        },
        "required": [
          "objects"
        ]
      },
      "RuntimeObjectSkip": {
        "type": "object",
        "properties": {
          "identifyId": {
            "type": "string",
            "description": "Bambu label-object id (slice_info identify_id) as a decimal string"
          },
          "layer": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "number"
              }
            ],
            "description": "Printer-reported layer when the skip was observed: material usage for the\nobject is counted up to and including this layer. -1 means the skip was\nsent before printing began; null means the timing is unknown."
          },
          "at": {
            "type": "string",
            "description": "ISO timestamp when the skip was recorded"
          }
        },
        "required": [
          "identifyId",
          "layer"
        ]
      },
      "SkippedObjectUsage": {
        "type": "object",
        "properties": {
          "objectIds": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "title": "Skipped object ids the gcode analysis could actually attribute",
            "description": "Skipped object ids the gcode analysis could actually attribute."
          },
          "bySlot": {
            "$ref": "#/components/schemas/Recordnumbernumber",
            "title": "mm excluded per logical (slicer) slot",
            "description": "mm excluded per logical (slicer) slot."
          },
          "gramsBySlot": {
            "$ref": "#/components/schemas/Recordnumbernumber",
            "title": "grams excluded per logical slot, when the analysis carries the ratios",
            "description": "grams excluded per logical slot, when the analysis carries the ratios."
          },
          "totalMm": {
            "type": "number"
          },
          "totalGrams": {
            "type": "number"
          }
        },
        "required": [
          "objectIds",
          "bySlot",
          "totalMm"
        ],
        "description": "Per-slot material excluded from an attempt because its object was skipped."
      },
      "Recordnumbernumber": {
        "type": "object",
        "properties": {},
        "description": "Construct a type with a set of properties K of type T",
        "additionalProperties": {
          "type": "number"
        }
      },
      "PrintJobMaterialMapping": {
        "type": "object",
        "properties": {
          "slot": {
            "type": "number",
            "deprecated": true
          },
          "amsIndex": {
            "type": "number",
            "description": "Visual AMS array index: -1 for spool, 0+ for AMS units"
          },
          "slotIndex": {
            "type": "number",
            "description": "Slot within the AMS, or spool index for multiple spools"
          },
          "skip": {
            "type": "boolean"
          },
          "variantId": {
            "type": "string"
          },
          "materialId": {
            "type": "string"
          },
          "materialType": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "color": {
            "type": "string"
          },
          "filamentUserProfileId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "pattern": "^[a-z0-9]{24}$"
              }
            ]
          },
          "filamentSystemProfileId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "number"
              }
            ]
          }
        }
      },
      "RecordnumberArraySingleMaterialSpecification": {
        "type": "object",
        "properties": {},
        "description": "Construct a type with a set of properties K of type T",
        "additionalProperties": {
          "type": "array",
          "items": {
            "oneOf": [
              {
                "type": "object",
                "properties": {
                  "groupId": {
                    "type": "string",
                    "pattern": "^[a-z0-9]{24}$"
                  }
                },
                "required": [
                  "groupId"
                ]
              },
              {
                "type": "object",
                "properties": {
                  "variantId": {
                    "type": "string",
                    "pattern": "^[a-z0-9]{24}$"
                  }
                },
                "required": [
                  "variantId"
                ]
              },
              {
                "type": "object",
                "properties": {
                  "materialId": {
                    "type": "string",
                    "pattern": "^[a-z0-9]{24}$"
                  }
                },
                "required": [
                  "materialId"
                ]
              },
              {
                "type": "object",
                "properties": {
                  "materialType": {
                    "type": "string"
                  }
                },
                "required": [
                  "materialType"
                ]
              }
            ]
          }
        }
      },
      "partBuildIdstringundefinedquantityIndexstringundefinedquantityTotalstringundefinedthumbnailUristringundefinedcoloredThumbnailUristringundefined...52more...updatedAtstringundefinedQuerySettings...": {
        "type": "object",
        "properties": {
          "partBuildId": {
            "type": "string"
          },
          "quantityIndex": {
            "type": "string"
          },
          "quantityTotal": {
            "type": "string"
          },
          "thumbnailUri": {
            "type": "string"
          },
          "coloredThumbnailUri": {
            "type": "string"
          },
          "buildThumbnailUri": {
            "type": "string"
          },
          "cameraThumbnailUri": {
            "type": "string",
            "description": "Camera-captured snapshot from the moment Fuse detected the last\nlayer of the print. Persisted to the files bucket. Null unless Fuse\nsuccessfully captured and uploaded."
          },
          "timelapseUri": {
            "type": "string",
            "description": "MP4 timelapse Fuse encoded from frames captured during the print and\nuploaded to the snapshots bucket under the `timelapses/` prefix.\nNull unless the store has timelapses enabled and Fuse uploaded\nsuccessfully."
          },
          "fuseTelemetryUri": {
            "type": "string",
            "description": "Fuse flight-recorder artifact for the current attempt (gzipped JSONL\nunder the permanent `telemetry/` prefix). Confirmed asynchronously by\nFuse after the print ends, like `timelapseUri`."
          },
          "attemptNumber": {
            "type": "string",
            "description": "1-based counter of print attempts (bumped on requeue once the attempt\nprinted or reached a terminal state). Keys per-attempt media/telemetry\nobjects and aligns with `print_history.attemptNumber`."
          },
          "sendFailureCount": {
            "type": "string",
            "description": "Consecutive send-give-up cycles (EnsureJobStarted exhausted its retries\nwithout the printer starting). Reset on retry from a terminal state."
          },
          "filesToPrint": {
            "type": "string"
          },
          "slicerInputHash": {
            "type": "string"
          },
          "isGcodeCached": {
            "type": "string"
          },
          "slicedGcodeUri": {
            "type": "string"
          },
          "partId": {
            "type": "string"
          },
          "partName": {
            "type": "string"
          },
          "createdByActorId": {
            "type": "string",
            "title": "Who queued this job — see the column comments on `print_jobs`",
            "description": "Who queued this job — see the column comments on `print_jobs`."
          },
          "createdByType": {
            "type": "string"
          },
          "createdByLabel": {
            "type": "string"
          },
          "skuId": {
            "type": "string"
          },
          "skuName": {
            "type": "string"
          },
          "parameterOverrides": {
            "type": "string"
          },
          "orderId": {
            "type": "string"
          },
          "label": {
            "type": "string"
          },
          "orderItemId": {
            "type": "string"
          },
          "linkedPartId": {
            "type": "string"
          },
          "skuInstance": {
            "type": "string"
          },
          "queueOrder": {
            "type": "string"
          },
          "priority": {
            "type": "string"
          },
          "requiredPrinterTags": {
            "type": "string"
          },
          "overriddenProcessProfileId": {
            "type": "string"
          },
          "taskId": {
            "type": "string"
          },
          "profileUris": {
            "type": "string"
          },
          "assignedPrinterId": {
            "type": "string"
          },
          "assignmentStartedAt": {
            "type": "string"
          },
          "assignmentCompletedAt": {
            "type": "string"
          },
          "printingStartedAt": {
            "type": "string"
          },
          "printingCompletedAt": {
            "type": "string"
          },
          "cancelledAt": {
            "type": "string"
          },
          "status": {
            "type": "string"
          },
          "errorMessage": {
            "type": "string"
          },
          "hidden": {
            "type": "string"
          },
          "logsUri": {
            "type": "string"
          },
          "extensions": {
            "type": "string"
          },
          "skipObjectsData": {
            "type": "string"
          },
          "skipObjectIds": {
            "type": "string",
            "description": "User-selected objects to skip on this job's plate, as identifyId strings\n(resolved at queue time from the part's plate object list). When the print\nstarts, a Bambu `skip_objects` command is auto-sent for these. Null/empty\nmeans print everything. Stored as strings; converted to integer obj_list at\nsend time."
          },
          "materialMapping": {
            "type": "string"
          },
          "materialAssignments": {
            "type": "string"
          },
          "gcodeAnalysisSha256": {
            "type": "string",
            "description": "SHA256 hash of analyzed gcode content — stable key for extrusion lookup"
          },
          "groupId": {
            "type": "string",
            "description": "Group identifier for visually-collapsed print-queue rows. Assigned at\nemission (one per plate cluster within a build). Split mints fresh\ngroupIds for non-first buckets. May be null for legacy rows that predate\nthe grouping feature."
          },
          "parentJobId": {
            "type": "string",
            "description": "Set on jobs merged onto a shared plate; points at the merged (parent)\njob. Children mirror the parent's status and are excluded from\nindependent matching."
          },
          "boundingBox": {
            "type": "string",
            "title": "{x,y,z} mm bounding box of what this job prints. Null until computed",
            "description": "{x,y,z} mm bounding box of what this job prints. Null until computed."
          },
          "customMetadata": {
            "type": "string"
          },
          "id": {
            "type": "string"
          },
          "storeId": {
            "type": "string"
          },
          "createdAt": {
            "type": "string"
          },
          "updatedAt": {
            "type": "string"
          },
          "sort": {
            "type": "string",
            "title": "Sort",
            "description": "Sort specification in format \"field:asc,field2:desc\""
          },
          "limit": {
            "type": "number",
            "minimum": 1,
            "maximum": 1000,
            "title": "Limit",
            "description": "Maximum number of results to return (default: 1000, max: 1000)"
          },
          "offset": {
            "type": "number",
            "minimum": 0,
            "title": "Offset",
            "description": "Number of results to skip for pagination"
          },
          "fields": {
            "type": "string",
            "title": "Fields",
            "description": "Comma-separated list of fields to return"
          },
          "include": {
            "type": "string",
            "title": "Include",
            "description": "Comma-separated list of relations to include (max 4, max 2 levels deep).\nExample: \"linkedParts,linkedParts.part,folder\""
          },
          "meta": {
            "type": "boolean",
            "title": "Meta",
            "description": "If true, returns response with metadata (total, count, hasMore, etc.)"
          },
          "hints": {
            "type": "boolean",
            "title": "Hints",
            "description": "If true, returns AI-friendly hints about available actions. Implies meta=true."
          }
        }
      },
      "SearchQueryDtoPrintJob": {
        "type": "object",
        "properties": {
          "filter": {
            "$ref": "#/components/schemas/FilterConditionPrintJob",
            "title": "Filter",
            "description": "Complex filter conditions using logical and field operators.\nAvailable field operators: eq, ne, gt, gte, lt, lte, contains, startsWith, endsWith, in, notIn, isNull, between.\nUsage example: {\"filter\": {\"and\": [{\"name\": {\"contains\": \"benchy\"}}, {\"or\": [{\"type\": {\"eq\": \"3mf\"}}, {\"type\": {\"eq\": \"gcode3mf\"}}]}}}"
          },
          "sort": {
            "type": "string",
            "title": "Sort",
            "description": "Sort specification in format \"field:asc,field2:desc\""
          },
          "limit": {
            "type": "number",
            "minimum": 1,
            "maximum": 1000,
            "title": "Limit",
            "description": "Maximum number of results to return (default: 1000, max: 1000)"
          },
          "offset": {
            "type": "number",
            "minimum": 0,
            "title": "Offset",
            "description": "Number of results to skip for pagination"
          },
          "fields": {
            "type": "string",
            "title": "Fields",
            "description": "Comma-separated list of fields to return"
          },
          "include": {
            "type": "string",
            "title": "Include",
            "description": "Comma-separated list of relations to include (max 4, max 2 levels deep).\nExample: \"linkedParts,linkedParts.part,folder\""
          },
          "meta": {
            "type": "boolean",
            "title": "Meta",
            "description": "If true, returns response with metadata (total, count, hasMore, etc.)"
          },
          "hints": {
            "type": "boolean",
            "title": "Hints",
            "description": "If true, returns AI-friendly hints about available actions. Implies meta=true."
          }
        },
        "title": "Search Query",
        "description": "Complete search request with filter conditions and query settings"
      },
      "FilterConditionPrintJob": {
        "type": "object",
        "properties": {
          "and": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FilterConditionPrintJob"
            },
            "title": "AND Conditions",
            "description": "All conditions must be true"
          },
          "or": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FilterConditionPrintJob"
            },
            "title": "OR Conditions",
            "description": "At least one condition must be true"
          },
          "partBuildId": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "quantityIndex": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "quantityTotal": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "thumbnailUri": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "coloredThumbnailUri": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "buildThumbnailUri": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "cameraThumbnailUri": {
            "$ref": "#/components/schemas/FieldOperators",
            "description": "Camera-captured snapshot from the moment Fuse detected the last\nlayer of the print. Persisted to the files bucket. Null unless Fuse\nsuccessfully captured and uploaded."
          },
          "timelapseUri": {
            "$ref": "#/components/schemas/FieldOperators",
            "description": "MP4 timelapse Fuse encoded from frames captured during the print and\nuploaded to the snapshots bucket under the `timelapses/` prefix.\nNull unless the store has timelapses enabled and Fuse uploaded\nsuccessfully."
          },
          "fuseTelemetryUri": {
            "$ref": "#/components/schemas/FieldOperators",
            "description": "Fuse flight-recorder artifact for the current attempt (gzipped JSONL\nunder the permanent `telemetry/` prefix). Confirmed asynchronously by\nFuse after the print ends, like `timelapseUri`."
          },
          "attemptNumber": {
            "$ref": "#/components/schemas/FieldOperators",
            "description": "1-based counter of print attempts (bumped on requeue once the attempt\nprinted or reached a terminal state). Keys per-attempt media/telemetry\nobjects and aligns with `print_history.attemptNumber`."
          },
          "sendFailureCount": {
            "$ref": "#/components/schemas/FieldOperators",
            "description": "Consecutive send-give-up cycles (EnsureJobStarted exhausted its retries\nwithout the printer starting). Reset on retry from a terminal state."
          },
          "filesToPrint": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "slicerInputHash": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "isGcodeCached": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "slicedGcodeUri": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "partId": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "partName": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "createdByActorId": {
            "$ref": "#/components/schemas/FieldOperators",
            "title": "Who queued this job — see the column comments on `print_jobs`",
            "description": "Who queued this job — see the column comments on `print_jobs`."
          },
          "createdByType": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "createdByLabel": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "skuId": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "skuName": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "parameterOverrides": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "orderId": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "label": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "orderItemId": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "linkedPartId": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "skuInstance": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "queueOrder": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "priority": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "requiredPrinterTags": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "overriddenProcessProfileId": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "taskId": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "profileUris": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "assignedPrinterId": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "assignmentStartedAt": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "assignmentCompletedAt": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "printingStartedAt": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "printingCompletedAt": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "cancelledAt": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "status": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "errorMessage": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "hidden": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "logsUri": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "extensions": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "skipObjectsData": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "skipObjectIds": {
            "$ref": "#/components/schemas/FieldOperators",
            "description": "User-selected objects to skip on this job's plate, as identifyId strings\n(resolved at queue time from the part's plate object list). When the print\nstarts, a Bambu `skip_objects` command is auto-sent for these. Null/empty\nmeans print everything. Stored as strings; converted to integer obj_list at\nsend time."
          },
          "materialMapping": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "materialAssignments": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "gcodeAnalysisSha256": {
            "$ref": "#/components/schemas/FieldOperators",
            "description": "SHA256 hash of analyzed gcode content — stable key for extrusion lookup"
          },
          "groupId": {
            "$ref": "#/components/schemas/FieldOperators",
            "description": "Group identifier for visually-collapsed print-queue rows. Assigned at\nemission (one per plate cluster within a build). Split mints fresh\ngroupIds for non-first buckets. May be null for legacy rows that predate\nthe grouping feature."
          },
          "parentJobId": {
            "$ref": "#/components/schemas/FieldOperators",
            "description": "Set on jobs merged onto a shared plate; points at the merged (parent)\njob. Children mirror the parent's status and are excluded from\nindependent matching."
          },
          "boundingBox": {
            "$ref": "#/components/schemas/FieldOperators",
            "title": "{x,y,z} mm bounding box of what this job prints. Null until computed",
            "description": "{x,y,z} mm bounding box of what this job prints. Null until computed."
          },
          "customMetadata": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "id": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "storeId": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "createdAt": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "updatedAt": {
            "$ref": "#/components/schemas/FieldOperators"
          }
        },
        "title": "Filter Condition",
        "description": "Root filter condition that can be either a logical condition (AND/OR) or field-based condition"
      },
      "PrintJobOperationRequest": {
        "type": "object",
        "properties": {
          "printJobIds": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        },
        "required": [
          "printJobIds"
        ]
      },
      "CancelPrintJobsRequest": {
        "type": "object",
        "properties": {
          "sendStop": {
            "type": "boolean",
            "description": "Whether to also send a STOP command to the printer(s) any of these jobs\nare currently on. Defaults to true. Surfaced as the \"Send stop command\nto the printer(s)\" checkbox on the cancel confirmation. The stop is\ndispatched directly to the assigned printer with no taskId/online gate —\nthe operator explicitly asked to stop, so we don't second-guess it from\n(possibly stale) printer state. Set false to only mark the jobs cancelled\nin Printago without touching the hardware."
          },
          "printJobIds": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        },
        "required": [
          "printJobIds"
        ]
      },
      "ArchivedPrintJobsResponse": {
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PrintJob"
            }
          },
          "nextCursor": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          }
        },
        "required": [
          "items",
          "nextCursor"
        ]
      },
      "AdjustGroupQuantityResponse": {
        "type": "object",
        "properties": {
          "group": {
            "$ref": "#/components/schemas/PrintJobGroup"
          }
        },
        "required": [
          "group"
        ]
      },
      "PrintJobGroup": {
        "type": "object",
        "properties": {
          "groupId": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "jobs": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PrintJob"
            }
          }
        },
        "required": [
          "groupId",
          "jobs"
        ]
      },
      "AdjustGroupQuantityRequest": {
        "type": "object",
        "properties": {
          "groupKey": {
            "$ref": "#/components/schemas/PrintJobGroupKey"
          },
          "targetQuantity": {
            "type": "number",
            "minimum": 1,
            "maximum": 500,
            "title": "Desired total quantity for the group. 1..500 inclusive",
            "description": "Desired total quantity for the group. 1..500 inclusive."
          }
        },
        "required": [
          "groupKey",
          "targetQuantity"
        ]
      },
      "PrintJobGroupKey": {
        "type": "object",
        "properties": {
          "groupId": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          }
        },
        "required": [
          "groupId"
        ],
        "description": "Identifies a print-queue group. `groupId` is assigned at emission time by\n`queuePrintJobs` (one groupId per distinct plate cluster within a build),\nso every emitted job has a non-null groupId. Pre-feature legacy rows with\nnull groupId are not addressable by this API."
      },
      "SplitGroupResponse": {
        "type": "object",
        "properties": {
          "groups": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PrintJobGroup"
            }
          },
          "affectedJobs": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PrintJob"
            },
            "description": "Every lane row whose queueOrder changed as a side effect of the split's\nfull lane rebalance — includes the split buckets themselves plus any\nother pending groups in the same priority lane that got renumbered.\nThe client should setMany these into its local cache so the post-split\norder appears immediately instead of waiting for realtime sync."
          }
        },
        "required": [
          "groups",
          "affectedJobs"
        ]
      },
      "SplitGroupRequest": {
        "type": "object",
        "properties": {
          "groupKey": {
            "$ref": "#/components/schemas/PrintJobGroupKey"
          },
          "buckets": {
            "type": "array",
            "items": {
              "type": "number",
              "minimum": 1
            },
            "description": "Sizes of the resulting buckets in queue order. Must contain at least two\nentries and sum to the current group size. Bucket 0 retains the original\ngroupId (null or existing); buckets 1..N-1 get fresh CUID2s."
          }
        },
        "required": [
          "groupKey",
          "buckets"
        ]
      },
      "ReorderGroupResponse": {
        "type": "object",
        "properties": {
          "affectedJobs": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PrintJob"
            },
            "title": "Every PrintJob whose queueOrder changed as a result of the rebalance",
            "description": "Every PrintJob whose queueOrder changed as a result of the rebalance.\nClients should upsert these into their local cache to reflect the\nauthoritative post-state without re-fetching the full queue."
          }
        },
        "required": [
          "affectedJobs"
        ]
      },
      "ReorderGroupRequest": {
        "type": "object",
        "properties": {
          "groupKey": {
            "$ref": "#/components/schemas/PrintJobGroupKey"
          },
          "afterGroupId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "pattern": "^[a-z0-9]{24}$"
              }
            ],
            "description": "Place the target group immediately after this group in the priority\nlane, or at the top when null. The server rebalances the lane so every\ngroup ends up at a clean 1000-spaced queueOrder — this avoids the\n\"same-queueOrder collision\" pitfall where midpoint-averaging between\ntwo groups at the same qo produces that qo and collapses the insert."
          }
        },
        "required": [
          "groupKey",
          "afterGroupId"
        ]
      },
      "PrintJobMatchingDetail": {
        "type": "object",
        "properties": {
          "printJobId": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "details": {
            "$ref": "#/components/schemas/RecordstringMatchingDetails"
          },
          "id": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "storeId": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time"
          }
        },
        "required": [
          "printJobId",
          "details",
          "id",
          "storeId",
          "createdAt",
          "updatedAt"
        ]
      },
      "RecordstringMatchingDetails": {
        "type": "object",
        "properties": {},
        "description": "Construct a type with a set of properties K of type T",
        "additionalProperties": {
          "$ref": "#/components/schemas/MatchingDetails"
        }
      },
      "MatchingDetails": {
        "type": "object",
        "properties": {
          "priority": {
            "type": "number"
          },
          "matched": {
            "type": "boolean"
          },
          "data": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/DetailPreviousMismatch"
              },
              {
                "$ref": "#/components/schemas/DetailDataTagMismatch"
              },
              {
                "$ref": "#/components/schemas/DetailDataNoSlots"
              },
              {
                "$ref": "#/components/schemas/DetailMissingProfile"
              },
              {
                "$ref": "#/components/schemas/DetailDataMaterialMismatch"
              },
              {
                "$ref": "#/components/schemas/DetailDataMatched"
              },
              {
                "$ref": "#/components/schemas/DetailDataHeldForMerge"
              },
              {
                "$ref": "#/components/schemas/DetailDataBedTooSmall"
              }
            ]
          },
          "reason": {
            "type": "string"
          },
          "reasonCode": {
            "oneOf": [
              {
                "const": "missing-profile"
              },
              {
                "const": "tag-mismatch"
              },
              {
                "const": "previous-mismatch"
              },
              {
                "const": "no-slots"
              },
              {
                "const": "material-mismatch"
              },
              {
                "const": "held-for-merge"
              },
              {
                "const": "bed-too-small"
              },
              {
                "const": "matched"
              }
            ]
          }
        },
        "required": [
          "matched",
          "data",
          "reason",
          "reasonCode"
        ]
      },
      "DetailPreviousMismatch": {
        "type": "object",
        "properties": {
          "partId": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "plateId": {
            "type": "number"
          }
        },
        "required": [
          "partId"
        ]
      },
      "DetailDataTagMismatch": {
        "type": "object",
        "properties": {
          "required": {
            "$ref": "#/components/schemas/Tags"
          },
          "printer": {
            "$ref": "#/components/schemas/Recordstringany"
          }
        },
        "required": [
          "required",
          "printer"
        ]
      },
      "DetailDataNoSlots": {
        "type": "object",
        "properties": {
          "config": {
            "$ref": "#/components/schemas/Recordstringany"
          },
          "slots": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PrinterSlot"
            }
          }
        },
        "required": [
          "config",
          "slots"
        ]
      },
      "PrinterSlot": {
        "type": "object",
        "properties": {
          "printerId": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "materialId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "pattern": "^[a-z0-9]{24}$"
              }
            ]
          },
          "variantId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "pattern": "^[a-z0-9]{24}$"
              }
            ]
          },
          "instanceId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "pattern": "^[a-z0-9]{24}$"
              }
            ]
          },
          "materialType": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "expectedData": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/BambuExpectedData"
              }
            ]
          },
          "expectedDataSetAt": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "format": "date-time"
              }
            ]
          },
          "serial": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ],
            "title": "Serial of the roll physically in this slot, null when unknown",
            "description": "Serial of the roll physically in this slot, null when unknown."
          },
          "serialSource": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "const": "tag"
              },
              {
                "const": "manual"
              },
              {
                "const": "integration"
              }
            ]
          },
          "amsIndex": {
            "type": "number",
            "description": "Visual slot position: -1 for spool, 0+ for AMS array index"
          },
          "slotIndex": {
            "type": "number",
            "description": "Slot within AMS, or spool index for multiple spools"
          },
          "slot": {
            "type": "number",
            "minimum": -64,
            "maximum": 255,
            "deprecated": true
          },
          "filamentUserProfileId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "pattern": "^[a-z0-9]{24}$"
              }
            ]
          },
          "filamentSystemProfileId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "number"
              }
            ]
          },
          "id": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "storeId": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time"
          }
        },
        "required": [
          "printerId",
          "materialId",
          "variantId",
          "instanceId",
          "materialType",
          "expectedData",
          "expectedDataSetAt",
          "serial",
          "serialSource",
          "amsIndex",
          "slotIndex",
          "filamentUserProfileId",
          "filamentSystemProfileId",
          "id",
          "storeId",
          "createdAt",
          "updatedAt"
        ]
      },
      "BambuExpectedData": {
        "type": "object",
        "properties": {
          "color": {
            "type": "string"
          },
          "identifier": {
            "type": "string"
          },
          "type": {
            "type": "string"
          },
          "identifiers": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Every `info` value the printer might legitimately echo back for this\nassignment. Only Bambu (`tray_info_idx`) and first-party Creality\n(canonical code) can round-trip `identifier` itself — the U1 echoes\nits RFID SKU or type string, Anycubic its read-only RFID SKU, Elegoo\nnothing at all — so the expected-check accepts any member of this\nset (plus an empty `info` when type+color match). Contains at least\n`identifier` and the `trayType` sent to the printer; assignment\nflows that know the slot's currently-reported `info` (RFID SKU etc.)\ninclude it too, pinning the assignment to the observed physical\nspool. Absent on rows written before this field existed — readers\nfall back to `[identifier]`."
          }
        },
        "required": [
          "color",
          "identifier",
          "type"
        ]
      },
      "DetailMissingProfile": {
        "type": "object",
        "properties": {
          "slots": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PrinterSlot"
            }
          }
        },
        "required": [
          "slots"
        ]
      },
      "DetailDataMaterialMismatch": {
        "type": "object",
        "properties": {
          "slots": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PrinterSlot"
            }
          },
          "jobMaterialAssignments": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/RecordnumberArraySingleMaterialSpecification"
              }
            ]
          },
          "partMaterialAssignments": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/RecordnumberArrayPartMaterialAssignment"
              }
            ]
          },
          "computedAssignments": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/RecordnumberArrayComputedPartMaterialAssignment"
              }
            ]
          }
        },
        "required": [
          "slots",
          "jobMaterialAssignments",
          "partMaterialAssignments",
          "computedAssignments"
        ]
      },
      "RecordnumberArrayPartMaterialAssignment": {
        "type": "object",
        "properties": {},
        "description": "Construct a type with a set of properties K of type T",
        "additionalProperties": {
          "type": "array",
          "items": {
            "$ref": "#/components/schemas/PartMaterialAssignment"
          }
        }
      },
      "PartMaterialAssignment": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "storeId": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time"
          },
          "groupId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "pattern": "^[a-z0-9]{24}$"
              }
            ]
          },
          "variantId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "pattern": "^[a-z0-9]{24}$"
              }
            ]
          },
          "materialId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "pattern": "^[a-z0-9]{24}$"
              }
            ]
          },
          "materialType": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "partId": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "index": {
            "type": "number",
            "minimum": 0
          },
          "priority": {
            "type": "number",
            "minimum": 0
          }
        },
        "required": [
          "id",
          "storeId",
          "createdAt",
          "updatedAt",
          "groupId",
          "variantId",
          "materialId",
          "materialType",
          "partId",
          "index",
          "priority"
        ],
        "description": "Part material assignment entity linking parts to materials or groups"
      },
      "RecordnumberArrayComputedPartMaterialAssignment": {
        "type": "object",
        "properties": {},
        "description": "Construct a type with a set of properties K of type T",
        "additionalProperties": {
          "type": "array",
          "items": {
            "$ref": "#/components/schemas/ComputedPartMaterialAssignment"
          }
        }
      },
      "ComputedPartMaterialAssignment": {
        "type": "object",
        "properties": {
          "partId": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "priority": {
            "type": "number",
            "minimum": 0
          },
          "groupId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "pattern": "^[a-z0-9]{24}$"
              }
            ]
          },
          "materialId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "pattern": "^[a-z0-9]{24}$"
              }
            ]
          },
          "variantId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "pattern": "^[a-z0-9]{24}$"
              }
            ]
          },
          "materialType": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "index": {
            "type": "number",
            "minimum": 0
          }
        },
        "required": [
          "partId",
          "priority",
          "groupId",
          "materialId",
          "variantId",
          "materialType",
          "index"
        ]
      },
      "DetailDataMatched": {
        "type": "object",
        "properties": {
          "slots": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PrinterSlot"
            }
          }
        },
        "required": [
          "slots"
        ]
      },
      "DetailDataHeldForMerge": {
        "type": "object",
        "properties": {
          "releaseAt": {
            "type": "string",
            "title": "ISO timestamp when the hold expires (job createdAt + mergeHoldMinutes)",
            "description": "ISO timestamp when the hold expires (job createdAt + mergeHoldMinutes)."
          }
        },
        "required": [
          "releaseAt"
        ],
        "description": "The job matched this printer but was held back for plate batching\n(plateMerging.mergeHoldMinutes): a young merge-eligible job waits for\ncompanions instead of consuming a printer alone. The hold lifts at\n`releaseAt` — or earlier, once enough compatible jobs accumulate to reach\nthe saturation threshold — after which the job assigns normally."
      },
      "DetailDataBedTooSmall": {
        "type": "object",
        "properties": {
          "plate": {
            "type": "object",
            "properties": {
              "x": {
                "type": "number"
              },
              "y": {
                "type": "number"
              },
              "z": {
                "type": "number"
              }
            },
            "required": [
              "x",
              "y",
              "z"
            ],
            "title": "The authored plate footprint {x,y,z} mm",
            "description": "The authored plate footprint {x,y,z} mm."
          },
          "bed": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "object",
                "properties": {
                  "x": {
                    "type": "number"
                  },
                  "y": {
                    "type": "number"
                  },
                  "z": {
                    "type": "number"
                  }
                },
                "required": [
                  "x",
                  "y",
                  "z"
                ]
              }
            ],
            "title": "The printer's bed {x,y,z} mm (null if not denormalized yet)",
            "description": "The printer's bed {x,y,z} mm (null if not denormalized yet)."
          }
        },
        "required": [
          "plate",
          "bed"
        ],
        "description": "A merged plate (parent job) whose authored footprint is larger than this\nprinter's bed in some axis — the placements are absolute to the authored\nplate, so a smaller bed can't print it. Only merged parents carry this."
      },
      "PrintJobMatchingTroubleshoot": {
        "type": "object",
        "properties": {
          "printJobId": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "printers": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PrinterMatchingStatus"
            }
          }
        },
        "required": [
          "printJobId",
          "printers"
        ]
      },
      "PrinterMatchingStatus": {
        "type": "object",
        "properties": {
          "printerId": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "printerName": {
            "type": "string"
          },
          "matched": {
            "type": "boolean"
          },
          "compatible": {
            "type": "boolean"
          },
          "checks": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PrinterMatchCheck"
            }
          },
          "firstFailedCheck": {
            "oneOf": [
              {
                "const": "enabled"
              },
              {
                "const": "online"
              },
              {
                "const": "available"
              },
              {
                "const": "ready"
              },
              {
                "const": "profiles-configured"
              },
              {
                "const": "subscription-slots"
              },
              {
                "const": "slots-loaded"
              },
              {
                "const": "tags-match"
              },
              {
                "const": "material-match"
              },
              {
                "const": "filament-profiles"
              },
              {
                "const": "in-maintenance"
              },
              {
                "const": "staggered-start-hold"
              }
            ]
          }
        },
        "required": [
          "printerId",
          "printerName",
          "matched",
          "compatible",
          "checks"
        ]
      },
      "PrinterMatchCheck": {
        "type": "object",
        "properties": {
          "code": {
            "oneOf": [
              {
                "const": "enabled"
              },
              {
                "const": "online"
              },
              {
                "const": "available"
              },
              {
                "const": "ready"
              },
              {
                "const": "profiles-configured"
              },
              {
                "const": "subscription-slots"
              },
              {
                "const": "slots-loaded"
              },
              {
                "const": "tags-match"
              },
              {
                "const": "material-match"
              },
              {
                "const": "filament-profiles"
              },
              {
                "const": "in-maintenance"
              },
              {
                "const": "staggered-start-hold"
              }
            ]
          },
          "passed": {
            "type": "boolean"
          },
          "message": {
            "type": "string"
          },
          "context": {
            "$ref": "#/components/schemas/PrinterMatchCheckContext"
          }
        },
        "required": [
          "code",
          "passed",
          "message"
        ]
      },
      "PrinterMatchCheckContext": {
        "type": "object",
        "properties": {
          "materialId": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "variantId": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "tagComparisons": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PrinterTagComparison"
            },
            "title": "Populated on a failed `tags-match` check: every required tag and whether it matched",
            "description": "Populated on a failed `tags-match` check: every required tag and whether it matched."
          },
          "staggeredStartGroupId": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$",
            "title": "Populated on a failed `staggered-start-hold` check: the holding group + capacity",
            "description": "Populated on a failed `staggered-start-hold` check: the holding group + capacity."
          },
          "staggeredStartGroupName": {
            "type": "string"
          },
          "staggeredStartActive": {
            "type": "number"
          },
          "staggeredStartLimit": {
            "type": "number"
          }
        }
      },
      "PrinterTagComparison": {
        "type": "object",
        "properties": {
          "key": {
            "type": "string",
            "title": "TagKey string, e.g. \"printer.modelName\"",
            "description": "TagKey string, e.g. \"printer.modelName\"."
          },
          "label": {
            "type": "string",
            "title": "Human-readable key, e.g. \"Printer Model\"",
            "description": "Human-readable key, e.g. \"Printer Model\"."
          },
          "requirement": {
            "type": "string",
            "title": "Human-readable requirement, e.g. \"Bambu Lab H2D\" or \"≥ 0.6\"",
            "description": "Human-readable requirement, e.g. \"Bambu Lab H2D\" or \"≥ 0.6\"."
          },
          "actual": {
            "type": "string",
            "title": "The printer's actual value, e.g. \"Bambu Lab X1 Carbon\" or \"(not set)\"",
            "description": "The printer's actual value, e.g. \"Bambu Lab X1 Carbon\" or \"(not set)\"."
          },
          "matched": {
            "type": "boolean",
            "title": "Whether the printer's value satisfies the requirement",
            "description": "Whether the printer's value satisfies the requirement."
          }
        },
        "required": [
          "key",
          "label",
          "requirement",
          "actual",
          "matched"
        ],
        "description": "One required tag compared against the printer's value, pre-formatted for display."
      },
      "RunQueueResponse": {
        "type": "object",
        "properties": {
          "skipped": {
            "oneOf": [
              {
                "const": "no-printers"
              },
              {
                "const": "no-jobs"
              },
              {
                "const": "no-subscription-slots"
              },
              {
                "const": "auto-matching-disabled"
              }
            ]
          },
          "assignments": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/QueueMatchAssignment"
            }
          }
        },
        "required": [
          "assignments"
        ],
        "description": "Result of one queue-matcher run. Returned synchronously from the manual\n\"Match queue now\" endpoint so the operator sees what was assigned (or\nwhy the run produced nothing). The same shape backs the future\ndry-run/preview path — that variant just returns assignments without\nhaving committed them."
      },
      "QueueMatchAssignment": {
        "type": "object",
        "properties": {
          "printerId": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "printJobId": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "jobLabel": {
            "type": "string"
          }
        },
        "required": [
          "printerId",
          "printJobId",
          "jobLabel"
        ]
      },
      "QueueGroupMatchingResponse": {
        "type": "object",
        "properties": {
          "groups": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/QueueGroupMatchingEntry"
            }
          },
          "truncated": {
            "type": "boolean",
            "description": "True when the pending queue was larger than the per-request evaluation\nbudget and the tail of the queue was not evaluated. Scope the request\nwith `printJobIds` to get results for a specific group."
          }
        },
        "required": [
          "groups",
          "truncated"
        ]
      },
      "QueueGroupMatchingEntry": {
        "type": "object",
        "properties": {
          "groupId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "pattern": "^[a-z0-9]{24}$"
              }
            ],
            "description": "Group identifier shared by every job in the entry. Null for legacy rows\nthat predate the queue-grouping feature — those rows form a singleton\n\"group of one\" keyed by the job id."
          },
          "representativePrintJobId": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$",
            "title": "Job whose part/materials/tags drive the printer evaluation",
            "description": "Job whose part/materials/tags drive the printer evaluation."
          },
          "memberPrintJobIds": {
            "type": "array",
            "items": {
              "type": "string",
              "pattern": "^[a-z0-9]{24}$"
            },
            "title": "All print job IDs from the request scope that share this groupId",
            "description": "All print job IDs from the request scope that share this groupId."
          },
          "printers": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PrinterMatchSummary"
            },
            "description": "Per-printer verdict for the representative job, ordered\nmatched → compatible → printer name. Verdict only: the per-check\nmessages live on the single-job troubleshooter\n(`GET /v1/print-jobs/{id}/matching-troubleshoot`)."
          }
        },
        "required": [
          "groupId",
          "representativePrintJobId",
          "memberPrintJobIds",
          "printers"
        ]
      },
      "PrinterMatchSummary": {
        "type": "object",
        "properties": {
          "printerId": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "matched": {
            "type": "boolean"
          },
          "compatible": {
            "type": "boolean"
          },
          "firstFailedCheck": {
            "oneOf": [
              {
                "const": "enabled"
              },
              {
                "const": "online"
              },
              {
                "const": "available"
              },
              {
                "const": "ready"
              },
              {
                "const": "profiles-configured"
              },
              {
                "const": "subscription-slots"
              },
              {
                "const": "slots-loaded"
              },
              {
                "const": "tags-match"
              },
              {
                "const": "material-match"
              },
              {
                "const": "filament-profiles"
              },
              {
                "const": "in-maintenance"
              },
              {
                "const": "staggered-start-hold"
              }
            ]
          }
        },
        "required": [
          "printerId",
          "matched",
          "compatible"
        ],
        "description": "Verdict-only form of `PrinterMatchingStatus`. A full status carries twelve\n`checks` with rendered messages and tag comparisons (~1.5 KB per printer),\nwhich is fine for one job but not for a bulk response sized\ngroups x printers. Callers that need the reasons fetch the full statuses\nfor a single job from the troubleshooter."
      },
      "QueueGroupMatchingRequest": {
        "type": "object",
        "properties": {
          "printJobIds": {
            "type": "array",
            "items": {
              "type": "string",
              "pattern": "^[a-z0-9]{24}$"
            }
          }
        },
        "description": "Request body for the bulk group-matching endpoint. When `printJobIds` is\nomitted the server scans every currently-pending unassigned job in the\nstore. When supplied, only those jobs are considered (still de-duped by\ngroupId so each group is evaluated once)."
      },
      "SendPrintJobToPrinterResponse": {
        "type": "object",
        "properties": {
          "printJob": {
            "$ref": "#/components/schemas/PrintJob"
          }
        },
        "required": [
          "printJob"
        ]
      },
      "SendPrintJobToPrinterRequest": {
        "type": "object",
        "properties": {
          "printerId": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "force": {
            "type": "boolean",
            "description": "When true, bypass the printer-job match check. The server still enforces\nthe atomic \"printer not currently busy\" claim and the part-existence\nguard. Use sparingly — a forced mismatch will likely fail at slice/print\ntime."
          },
          "bypassStaggeredStart": {
            "type": "boolean",
            "description": "When true, dispatch even if the printer's Staggered Start group is at\ncapacity. This is an explicit, audited operator override (action B) — it\nstill claims a hold and consumes a slot; it only overrides the block. Leave\nfalse to get a predictable \"Held by staggered start\" 409 when the group is\nfull."
          }
        },
        "required": [
          "printerId"
        ],
        "description": "Request body for the direct-send endpoint. Sends a specific pending job to\na specific printer without running global queue matching."
      },
      "ReorderPrintJobRequest": {
        "type": "object",
        "properties": {
          "newQueueOrder": {
            "type": "number",
            "minimum": 0
          },
          "priority": {
            "type": "number"
          }
        }
      },
      "BulkReorderPrintJobsRequest": {
        "type": "object",
        "properties": {
          "updates": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string"
                },
                "newQueueOrder": {
                  "type": "number",
                  "minimum": 0
                },
                "priority": {
                  "type": "number"
                }
              },
              "required": [
                "id"
              ]
            }
          }
        },
        "required": [
          "updates"
        ]
      },
      "AcknowledgePrintJobStartRequest": {
        "type": "object",
        "properties": {
          "startedSuccessfully": {
            "type": "boolean"
          },
          "errorDetail": {
            "type": "string"
          }
        },
        "required": [
          "startedSuccessfully"
        ]
      },
      "PartialPrintJobInsert": {
        "type": "object",
        "properties": {
          "overriddenProcessProfileId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "pattern": "^[a-z0-9]{24}$"
              }
            ]
          },
          "thumbnailUri": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "minLength": 1
              }
            ]
          },
          "partId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "pattern": "^[a-z0-9]{24}$"
              }
            ]
          },
          "skuId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "pattern": "^[a-z0-9]{24}$"
              }
            ]
          },
          "status": {
            "oneOf": [
              {
                "const": "pending"
              },
              {
                "const": "assigned"
              },
              {
                "const": "slicing"
              },
              {
                "const": "sliced"
              },
              {
                "const": "finalizing"
              },
              {
                "const": "waiting-for-approval"
              },
              {
                "const": "ready-for-printer"
              },
              {
                "const": "sending-to-printer"
              },
              {
                "const": "printing"
              },
              {
                "const": "paused"
              },
              {
                "const": "completed"
              },
              {
                "const": "failed"
              },
              {
                "const": "cancelled"
              }
            ]
          },
          "priority": {
            "oneOf": [
              {
                "const": 100
              },
              {
                "const": 1000
              }
            ]
          },
          "skuName": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "minLength": 1
              }
            ]
          },
          "label": {
            "type": "string"
          },
          "requiredPrinterTags": {
            "$ref": "#/components/schemas/Tags"
          },
          "parameterOverrides": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PartParameterOverride"
            }
          },
          "assignmentStartedAt": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "format": "date-time"
              }
            ]
          },
          "extensions": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/PrintJobExtensions"
              }
            ]
          },
          "materialAssignments": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/RecordnumberArraySingleMaterialSpecification"
              }
            ]
          },
          "partBuildId": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "quantityIndex": {
            "type": "number"
          },
          "quantityTotal": {
            "type": "number"
          },
          "filesToPrint": {
            "type": "array",
            "items": {
              "type": "string",
              "minLength": 1
            }
          },
          "partName": {
            "type": "string",
            "minLength": 1,
            "maxLength": 1024
          },
          "skipObjectsData": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/SkipObjectsData"
              }
            ]
          },
          "customMetadata": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/Recordstringunknown"
              }
            ]
          },
          "orderId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "pattern": "^[a-z0-9]{24}$"
              }
            ]
          },
          "orderItemId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "pattern": "^[a-z0-9]{24}$"
              }
            ]
          },
          "linkedPartId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "pattern": "^[a-z0-9]{24}$"
              }
            ]
          },
          "buildThumbnailUri": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "minLength": 1
              }
            ]
          },
          "createdByActorId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ],
            "title": "Who queued this job — see the column comments on `print_jobs`",
            "description": "Who queued this job — see the column comments on `print_jobs`."
          },
          "createdByType": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "createdByLabel": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "queueOrder": {
            "type": "number",
            "minimum": 0
          },
          "skipObjectIds": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "array",
                "items": {
                  "type": "string"
                }
              }
            ],
            "description": "User-selected objects to skip on this job's plate, as identifyId strings\n(resolved at queue time from the part's plate object list). When the print\nstarts, a Bambu `skip_objects` command is auto-sent for these. Null/empty\nmeans print everything. Stored as strings; converted to integer obj_list at\nsend time."
          },
          "skuInstance": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "number"
              }
            ]
          },
          "groupId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "pattern": "^[a-z0-9]{24}$"
              }
            ],
            "description": "Group identifier for visually-collapsed print-queue rows. Assigned at\nemission (one per plate cluster within a build). Split mints fresh\ngroupIds for non-first buckets. May be null for legacy rows that predate\nthe grouping feature."
          },
          "parentJobId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "pattern": "^[a-z0-9]{24}$"
              }
            ],
            "description": "Set on jobs merged onto a shared plate; points at the merged (parent)\njob. Children mirror the parent's status and are excluded from\nindependent matching."
          },
          "boundingBox": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/BoundingBoxMm"
              }
            ],
            "title": "{x,y,z} mm bounding box of what this job prints. Null until computed",
            "description": "{x,y,z} mm bounding box of what this job prints. Null until computed."
          }
        },
        "description": "Make all properties in T optional"
      },
      "Store": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "minLength": 1,
            "maxLength": 1024
          },
          "timezone": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "country": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "logoLightUrl": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "logoDarkUrl": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "websiteUrl": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "auditEnabled": {
            "type": "boolean"
          },
          "deletionScheduledFor": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "format": "date-time"
              }
            ],
            "description": "Set while a deletion is scheduled, cleared when an owner cancels it, and\ngone with the row once the deletion runs. Every member reads it from\n`GET /v1/stores` to render the scheduled-deletion banner."
          },
          "id": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          }
        },
        "required": [
          "name",
          "auditEnabled",
          "id",
          "updatedAt",
          "createdAt"
        ]
      },
      "StoreUpdate": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "minLength": 1,
            "maxLength": 1024
          },
          "timezone": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "country": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "logoLightUploadPath": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "logoDarkUploadPath": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "websiteUrl": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          }
        }
      },
      "SkuLinkedPartsRelation": {
        "type": "object",
        "properties": {
          "sku": {
            "type": "string",
            "minLength": 1,
            "maxLength": 1024
          },
          "title": {
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "externalId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "minLength": 1,
                "maxLength": 1024
              }
            ]
          },
          "externalProvider": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "const": "etsy"
              },
              {
                "const": "shopify"
              }
            ]
          },
          "folderId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "pattern": "^[a-z0-9]{24}$"
              }
            ]
          },
          "totalCogs": {
            "type": "number"
          },
          "customMetadata": {
            "$ref": "#/components/schemas/Recordstringunknown"
          },
          "id": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "storeId": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time"
          },
          "linkedParts": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/LinkedPart"
            }
          }
        },
        "required": [
          "sku",
          "title",
          "description",
          "externalId",
          "externalProvider",
          "totalCogs",
          "id",
          "storeId",
          "createdAt",
          "updatedAt",
          "linkedParts"
        ]
      },
      "skustringundefinedtitlestringundefineddescriptionstringundefinedexternalIdstringundefinedexternalProviderstringundefinedfolderIdstringundefined...5more...updatedAtstringundefinedQuerySettings...": {
        "type": "object",
        "properties": {
          "sku": {
            "type": "string"
          },
          "title": {
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "externalId": {
            "type": "string"
          },
          "externalProvider": {
            "type": "string"
          },
          "folderId": {
            "type": "string"
          },
          "totalCogs": {
            "type": "string"
          },
          "customMetadata": {
            "type": "string"
          },
          "id": {
            "type": "string"
          },
          "storeId": {
            "type": "string"
          },
          "createdAt": {
            "type": "string"
          },
          "updatedAt": {
            "type": "string"
          },
          "sort": {
            "type": "string",
            "title": "Sort",
            "description": "Sort specification in format \"field:asc,field2:desc\""
          },
          "limit": {
            "type": "number",
            "minimum": 1,
            "maximum": 1000,
            "title": "Limit",
            "description": "Maximum number of results to return (default: 1000, max: 1000)"
          },
          "offset": {
            "type": "number",
            "minimum": 0,
            "title": "Offset",
            "description": "Number of results to skip for pagination"
          },
          "fields": {
            "type": "string",
            "title": "Fields",
            "description": "Comma-separated list of fields to return"
          },
          "include": {
            "type": "string",
            "title": "Include",
            "description": "Comma-separated list of relations to include (max 4, max 2 levels deep).\nExample: \"linkedParts,linkedParts.part,folder\""
          },
          "meta": {
            "type": "boolean",
            "title": "Meta",
            "description": "If true, returns response with metadata (total, count, hasMore, etc.)"
          },
          "hints": {
            "type": "boolean",
            "title": "Hints",
            "description": "If true, returns AI-friendly hints about available actions. Implies meta=true."
          }
        }
      },
      "SearchQueryDtoSku": {
        "type": "object",
        "properties": {
          "filter": {
            "$ref": "#/components/schemas/FilterConditionSku",
            "title": "Filter",
            "description": "Complex filter conditions using logical and field operators.\nAvailable field operators: eq, ne, gt, gte, lt, lte, contains, startsWith, endsWith, in, notIn, isNull, between.\nUsage example: {\"filter\": {\"and\": [{\"name\": {\"contains\": \"benchy\"}}, {\"or\": [{\"type\": {\"eq\": \"3mf\"}}, {\"type\": {\"eq\": \"gcode3mf\"}}]}}}"
          },
          "sort": {
            "type": "string",
            "title": "Sort",
            "description": "Sort specification in format \"field:asc,field2:desc\""
          },
          "limit": {
            "type": "number",
            "minimum": 1,
            "maximum": 1000,
            "title": "Limit",
            "description": "Maximum number of results to return (default: 1000, max: 1000)"
          },
          "offset": {
            "type": "number",
            "minimum": 0,
            "title": "Offset",
            "description": "Number of results to skip for pagination"
          },
          "fields": {
            "type": "string",
            "title": "Fields",
            "description": "Comma-separated list of fields to return"
          },
          "include": {
            "type": "string",
            "title": "Include",
            "description": "Comma-separated list of relations to include (max 4, max 2 levels deep).\nExample: \"linkedParts,linkedParts.part,folder\""
          },
          "meta": {
            "type": "boolean",
            "title": "Meta",
            "description": "If true, returns response with metadata (total, count, hasMore, etc.)"
          },
          "hints": {
            "type": "boolean",
            "title": "Hints",
            "description": "If true, returns AI-friendly hints about available actions. Implies meta=true."
          }
        },
        "title": "Search Query",
        "description": "Complete search request with filter conditions and query settings"
      },
      "FilterConditionSku": {
        "type": "object",
        "properties": {
          "and": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FilterConditionSku"
            },
            "title": "AND Conditions",
            "description": "All conditions must be true"
          },
          "or": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FilterConditionSku"
            },
            "title": "OR Conditions",
            "description": "At least one condition must be true"
          },
          "sku": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "title": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "description": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "externalId": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "externalProvider": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "folderId": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "totalCogs": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "customMetadata": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "id": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "storeId": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "createdAt": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "updatedAt": {
            "$ref": "#/components/schemas/FieldOperators"
          }
        },
        "title": "Filter Condition",
        "description": "Root filter condition that can be either a logical condition (AND/OR) or field-based condition"
      },
      "SkuLinkedPartsWithPartRelation": {
        "type": "object",
        "properties": {
          "sku": {
            "type": "string",
            "minLength": 1,
            "maxLength": 1024
          },
          "title": {
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "externalId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "minLength": 1,
                "maxLength": 1024
              }
            ]
          },
          "externalProvider": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "const": "etsy"
              },
              {
                "const": "shopify"
              }
            ]
          },
          "folderId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "pattern": "^[a-z0-9]{24}$"
              }
            ]
          },
          "totalCogs": {
            "type": "number"
          },
          "customMetadata": {
            "$ref": "#/components/schemas/Recordstringunknown"
          },
          "id": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "storeId": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time"
          },
          "linkedParts": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/LinkedPartPartRelation"
            }
          }
        },
        "required": [
          "sku",
          "title",
          "description",
          "externalId",
          "externalProvider",
          "totalCogs",
          "id",
          "storeId",
          "createdAt",
          "updatedAt",
          "linkedParts"
        ]
      },
      "LinkedPartPartRelation": {
        "type": "object",
        "properties": {
          "skuId": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "partId": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "parameters": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PartParameterOverride"
            }
          },
          "quantity": {
            "type": "number",
            "minimum": 0,
            "maximum": 500
          },
          "label": {
            "type": "string",
            "minLength": 1,
            "maxLength": 1024
          },
          "exposedParameters": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "materialAssignments": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/RecordnumberArrayLinkedPartMaterialSpecification"
              }
            ]
          },
          "extensions": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/LinkedPartExtensions"
              }
            ]
          },
          "parameterBindings": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/Recordstringstring"
              }
            ]
          },
          "sequenceBindings": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/Recordstringstring"
              }
            ],
            "title": "Text-parameter name → sequence id: each queued unit consumes the next serial",
            "description": "Text-parameter name → sequence id: each queued unit consumes the next serial."
          },
          "plateQuantitiesBinding": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "id": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "storeId": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time"
          },
          "part": {
            "$ref": "#/components/schemas/Part"
          }
        },
        "required": [
          "skuId",
          "partId",
          "parameters",
          "quantity",
          "label",
          "exposedParameters",
          "id",
          "storeId",
          "createdAt",
          "updatedAt",
          "part"
        ]
      },
      "SkuInsert": {
        "type": "object",
        "properties": {
          "linkedParts": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/LinkedPartInsert"
            }
          },
          "inputs": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string"
                },
                "type": {
                  "oneOf": [
                    {
                      "const": "text"
                    },
                    {
                      "const": "material"
                    },
                    {
                      "const": "plate_quantities"
                    }
                  ]
                },
                "name": {
                  "type": "string"
                },
                "connectedPropertyId": {
                  "oneOf": [
                    {
                      "type": "null"
                    },
                    {
                      "type": "string"
                    }
                  ]
                }
              },
              "required": [
                "type",
                "name"
              ]
            }
          },
          "optionBindings": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "description": {
            "type": "string"
          },
          "externalId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "minLength": 1,
                "maxLength": 1024
              }
            ]
          },
          "customMetadata": {
            "$ref": "#/components/schemas/Recordstringunknown"
          },
          "folderId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "pattern": "^[a-z0-9]{24}$"
              }
            ]
          },
          "sku": {
            "type": "string",
            "minLength": 1,
            "maxLength": 1024
          },
          "title": {
            "type": "string"
          },
          "externalProvider": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "const": "etsy"
              },
              {
                "const": "shopify"
              }
            ]
          }
        },
        "required": [
          "linkedParts",
          "description",
          "externalId",
          "sku",
          "title",
          "externalProvider"
        ]
      },
      "SkuDuplicateRequest": {
        "type": "object",
        "properties": {
          "sku": {
            "type": "string",
            "minLength": 1,
            "maxLength": 1024
          },
          "title": {
            "type": "string"
          },
          "folderId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "pattern": "^[a-z0-9]{24}$"
              }
            ]
          },
          "includeLinkedParts": {
            "type": "boolean"
          },
          "includeVariantOptions": {
            "type": "boolean"
          },
          "includeCostEntries": {
            "type": "boolean"
          },
          "includeDescription": {
            "type": "boolean"
          }
        },
        "required": [
          "sku"
        ]
      },
      "PartialSkuInsert": {
        "type": "object",
        "properties": {
          "linkedParts": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/LinkedPartInsert"
            }
          },
          "inputs": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string"
                },
                "type": {
                  "oneOf": [
                    {
                      "const": "text"
                    },
                    {
                      "const": "material"
                    },
                    {
                      "const": "plate_quantities"
                    }
                  ]
                },
                "name": {
                  "type": "string"
                },
                "connectedPropertyId": {
                  "oneOf": [
                    {
                      "type": "null"
                    },
                    {
                      "type": "string"
                    }
                  ]
                }
              },
              "required": [
                "type",
                "name"
              ]
            }
          },
          "optionBindings": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "description": {
            "type": "string"
          },
          "externalId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "minLength": 1,
                "maxLength": 1024
              }
            ]
          },
          "customMetadata": {
            "$ref": "#/components/schemas/Recordstringunknown"
          },
          "folderId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "pattern": "^[a-z0-9]{24}$"
              }
            ]
          },
          "sku": {
            "type": "string",
            "minLength": 1,
            "maxLength": 1024
          },
          "title": {
            "type": "string"
          },
          "externalProvider": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "const": "etsy"
              },
              {
                "const": "shopify"
              }
            ]
          }
        },
        "description": "Make all properties in T optional"
      },
      "BuildResultV2": {
        "type": "object",
        "properties": {
          "partBuilds": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PartBuild"
            },
            "description": "Created part build records"
          },
          "skuBuilds": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SkuBuild"
            },
            "description": "Created SKU build records"
          }
        },
        "required": [
          "partBuilds",
          "skuBuilds"
        ],
        "description": "Result of a successful build creation operation\nContains the created part builds and SKU builds with their assigned IDs"
      },
      "PartBuild": {
        "type": "object",
        "properties": {
          "partId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "pattern": "^[a-z0-9]{24}$"
              }
            ]
          },
          "skuBuildId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "pattern": "^[a-z0-9]{24}$"
              }
            ]
          },
          "skuId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "pattern": "^[a-z0-9]{24}$"
              }
            ]
          },
          "skuName": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "minLength": 1,
                "maxLength": 1024
              }
            ]
          },
          "label": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "minLength": 1,
                "maxLength": 1024
              }
            ]
          },
          "partCopy": {
            "type": "object",
            "properties": {
              "name": {
                "type": "string",
                "minLength": 1,
                "maxLength": 1024
              },
              "type": {
                "oneOf": [
                  {
                    "const": "scad"
                  },
                  {
                    "const": "cadquery"
                  },
                  {
                    "const": "build123d"
                  },
                  {
                    "const": "stl"
                  },
                  {
                    "const": "step"
                  },
                  {
                    "const": "3mf"
                  },
                  {
                    "const": "gcode3mf"
                  },
                  {
                    "const": "gcode"
                  }
                ]
              },
              "description": {
                "type": "string",
                "default": ""
              },
              "fileUris": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "fileHashes": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "thumbnailUri": {
                "oneOf": [
                  {
                    "type": "null"
                  },
                  {
                    "type": "string"
                  }
                ]
              },
              "parameters": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "default": {
                      "oneOf": [
                        {
                          "type": "number"
                        },
                        {
                          "type": "string",
                          "minLength": 0,
                          "maxLength": 255
                        },
                        {
                          "type": "boolean"
                        }
                      ]
                    },
                    "options": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "value": {
                            "oneOf": [
                              {
                                "type": "string"
                              },
                              {
                                "type": "number"
                              }
                            ]
                          },
                          "label": {
                            "type": "string"
                          }
                        },
                        "required": [
                          "value"
                        ]
                      }
                    },
                    "description": {
                      "type": "string"
                    },
                    "min": {
                      "type": "number"
                    },
                    "max": {
                      "type": "number"
                    },
                    "step": {
                      "type": "number"
                    },
                    "acceptedContentTypes": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "description": "File-parameter-only fields (populated when\n`type === PartParameterVariableType.File`). Kept optional on the\nshared interface so scalar-parameter call sites do not need\nunion-narrowing. See `FilePartParameter` for the strict shape.\n\n`acceptedContentTypes` is intentionally an OPEN `string[]` (not a\nnarrow union). The customizer emits SVG, but Etsy attachments and\ndirect API order ingestion can carry ANY mime type (PNG / JPG / PDF /\nAI / etc). Builders enforce kind constraints; the shared type stays\nopen."
                    },
                    "multiple": {
                      "type": "boolean",
                      "description": "Whether the slot accepts >1 file. Reserved for forward compat — the\nPhase 5 resolver assumes single-file per slot for v1."
                    },
                    "defaultUri": {
                      "type": "string",
                      "title": "Optional fallback file URI (e.g. a known SVG in storage)",
                      "description": "Optional fallback file URI (e.g. a known SVG in storage)."
                    },
                    "label": {
                      "type": "string",
                      "maxLength": 255,
                      "description": "What the parameter is shown under wherever a customer or an operator\nfills it in; `name` stays the key everything binds by (SKU options,\norder inputs, build overrides, and — for a 3MF text slot — the text\nvolume the substitution travels to). A parameter without one is shown\nunder its name.\n\nThis interface is the one the API's request validators are generated\nfrom, and it is a second declaration of the shape in\n`../part/parameter`. A field added to only one of them is accepted by\nthe code and then pruned off the wire."
                    },
                    "serialReuse": {
                      "oneOf": [
                        {
                          "const": "share",
                          "title": "One serial per plate print, applied to every matching occurrence",
                          "description": "One serial per plate print, applied to every matching occurrence."
                        },
                        {
                          "const": "increment",
                          "title": "The next serial for each matching object instance on the plate",
                          "description": "The next serial for each matching object instance on the plate."
                        }
                      ],
                      "description": "For a 3MF text-slot parameter bound to a sequence: whether occurrences\nrepeated on one plate share a serial or each consume the next one.\nAbsent means {@link TextSlotSerialReuse.Share }, today's duplicate-name\nmeaning."
                    },
                    "sizing": {
                      "oneOf": [
                        {
                          "const": "stretch",
                          "title": "Fill the authored bounds exactly, distorting the glyphs if need be",
                          "description": "Fill the authored bounds exactly, distorting the glyphs if need be."
                        },
                        {
                          "const": "fit",
                          "title": "Keep the authored proportions and size; shrink only to avoid overflow",
                          "description": "Keep the authored proportions and size; shrink only to avoid overflow."
                        },
                        {
                          "const": "unconstrained",
                          "title": "Draw at the authored size and let a long value run past the bounds",
                          "description": "Draw at the authored size and let a long value run past the bounds."
                        }
                      ],
                      "description": "3MF text placeholders only: how a substituted value is sized against the\nbounds of the text volume it replaces. Absent means \"fit within bounds\",\nwhich is what every part declared before the setting existed carries.\nDeclared on this shape as well as on `../part/parameter` for the reason\n`label` is — the API's request validators are generated from this one,\nand a field on only the other is pruned off the wire."
                    },
                    "name": {
                      "type": "string",
                      "minLength": 1,
                      "maxLength": 255
                    },
                    "type": {
                      "oneOf": [
                        {
                          "const": "number"
                        },
                        {
                          "const": "string"
                        },
                        {
                          "const": "boolean"
                        },
                        {
                          "const": "file"
                        }
                      ]
                    },
                    "value": {
                      "oneOf": [
                        {
                          "type": "number"
                        },
                        {
                          "type": "string",
                          "minLength": 0,
                          "maxLength": 255
                        },
                        {
                          "type": "boolean"
                        }
                      ]
                    }
                  },
                  "required": [
                    "name",
                    "type"
                  ]
                }
              },
              "printTags": {
                "type": "object",
                "properties": {
                  "printer.provider": {
                    "type": "string",
                    "minLength": 1
                  },
                  "printer.id": {
                    "type": "string",
                    "minLength": 1
                  },
                  "printer.nozzleDiameter": {
                    "type": "string",
                    "minLength": 1
                  },
                  "printer.modelName": {
                    "type": "string",
                    "minLength": 1
                  },
                  "filament.type": {
                    "type": "string",
                    "minLength": 1
                  },
                  "user.tags": {
                    "type": "string",
                    "minLength": 1
                  }
                }
              },
              "overriddenProcessProfileId": {
                "oneOf": [
                  {
                    "type": "null"
                  },
                  {
                    "type": "string",
                    "pattern": "^[a-z0-9]{24}$"
                  }
                ]
              },
              "folderId": {
                "oneOf": [
                  {
                    "type": "null"
                  },
                  {
                    "type": "string",
                    "pattern": "^[a-z0-9]{24}$"
                  }
                ]
              },
              "materials": {
                "oneOf": [
                  {
                    "type": "null"
                  },
                  {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "index": {
                          "type": "number",
                          "minimum": 0
                        },
                        "color": {
                          "oneOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string",
                              "pattern": "^#{0,1}[0-9A-F]{6}|[0-9A-F]{8}$"
                            }
                          ]
                        },
                        "type": {
                          "oneOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "skip": {
                          "type": "boolean"
                        },
                        "name": {
                          "oneOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "identifier": {
                          "oneOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        }
                      },
                      "required": [
                        "index",
                        "color",
                        "type"
                      ]
                    }
                  }
                ]
              },
              "slicerOverride": {
                "oneOf": [
                  {
                    "type": "null"
                  },
                  {
                    "type": "string"
                  }
                ]
              },
              "metadata": {
                "oneOf": [
                  {
                    "type": "null"
                  },
                  {
                    "type": "object",
                    "properties": {
                      "printerModel": {
                        "type": "string"
                      },
                      "filamentType": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        }
                      },
                      "filamentColors": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        }
                      },
                      "filamentDensities": {
                        "type": "array",
                        "items": {
                          "type": "number"
                        }
                      },
                      "filamentDiameters": {
                        "type": "array",
                        "items": {
                          "type": "number"
                        }
                      },
                      "nozzleDiameter": {
                        "type": "string"
                      },
                      "profileCompat": {
                        "type": "object",
                        "properties": {
                          "sliced": {
                            "type": "string"
                          },
                          "compatible": {
                            "type": "array",
                            "items": {
                              "type": "string"
                            }
                          },
                          "safe": {
                            "type": "array",
                            "items": {
                              "type": "string"
                            }
                          }
                        },
                        "required": [
                          "sliced",
                          "compatible",
                          "safe"
                        ]
                      },
                      "slicerVersion": {
                        "oneOf": [
                          {
                            "type": "null"
                          },
                          {
                            "type": "object",
                            "properties": {
                              "engine": {
                                "oneOf": [
                                  {
                                    "const": "orcaslicer"
                                  },
                                  {
                                    "const": "bambu-studio"
                                  },
                                  {
                                    "const": "prusaslicer"
                                  },
                                  {
                                    "const": "superslicer"
                                  }
                                ]
                              },
                              "version": {
                                "type": "string"
                              }
                            },
                            "required": [
                              "engine",
                              "version"
                            ]
                          }
                        ]
                      },
                      "plates": {
                        "type": "array",
                        "items": {
                          "type": "object",
                          "properties": {
                            "id": {
                              "type": "number"
                            },
                            "name": {
                              "type": "string"
                            },
                            "locked": {
                              "type": "boolean"
                            },
                            "filamentMapMode": {
                              "type": "string"
                            },
                            "filamentMaps": {
                              "type": "array",
                              "items": {
                                "type": "number"
                              }
                            },
                            "gcodeFile": {
                              "type": "string"
                            },
                            "thumbnailFile": {
                              "type": "string"
                            },
                            "thumbnailUploadedUri": {
                              "type": "string",
                              "title": "The archive's own plate preview, copied out at metadata-extraction time",
                              "description": "The archive's own plate preview, copied out at metadata-extraction time."
                            },
                            "thumbnailRenderedUri": {
                              "type": "string",
                              "description": "The plate re-rendered by the three.js builder. Written by a different\nflow, and to a different storage path, than the archive copy above — a\nlater metadata reprocess re-copies the archive image and must not be able\nto overwrite this. Prefer it over `thumbnailUploadedUri`\n(see `plateThumbnailUri`)."
                            },
                            "thumbnailNoLightFile": {
                              "type": "string"
                            },
                            "thumbnailData": {
                              "type": "string"
                            },
                            "topFile": {
                              "type": "string"
                            },
                            "pickFile": {
                              "type": "string"
                            },
                            "topData": {
                              "type": "string",
                              "title": "Base64 PNG data for the top/pick images, staged before upload then cleared",
                              "description": "Base64 PNG data for the top/pick images, staged before upload then cleared."
                            },
                            "pickData": {
                              "type": "string"
                            },
                            "topUploadedUri": {
                              "type": "string",
                              "title": "Uploaded URIs for the plate's top-down image and color-coded object pick mask",
                              "description": "Uploaded URIs for the plate's top-down image and color-coded object pick mask.\nUsed by the visual skip-objects picker."
                            },
                            "pickUploadedUri": {
                              "type": "string"
                            },
                            "patternBboxFile": {
                              "type": "string"
                            },
                            "sliced": {
                              "type": "object",
                              "properties": {
                                "index": {
                                  "type": "number"
                                },
                                "extruderType": {
                                  "type": "string"
                                },
                                "nozzleVolumeType": {
                                  "type": "string"
                                },
                                "printerModelId": {
                                  "type": "string"
                                },
                                "nozzleDiameters": {
                                  "type": "string"
                                },
                                "timelapseType": {
                                  "type": "string"
                                },
                                "prediction": {
                                  "type": "number"
                                },
                                "weight": {
                                  "type": "number"
                                },
                                "outside": {
                                  "type": "boolean"
                                },
                                "supportUsed": {
                                  "type": "boolean"
                                },
                                "labelObjectEnabled": {
                                  "type": "boolean"
                                },
                                "filamentMaps": {
                                  "type": "string"
                                },
                                "objects": {
                                  "type": "array",
                                  "items": {
                                    "type": "object",
                                    "properties": {
                                      "identifyId": {
                                        "type": "string"
                                      },
                                      "name": {
                                        "type": "string"
                                      },
                                      "skipped": {
                                        "type": "boolean"
                                      }
                                    },
                                    "required": [
                                      "identifyId",
                                      "name",
                                      "skipped"
                                    ]
                                  }
                                },
                                "filaments": {
                                  "type": "array",
                                  "items": {
                                    "type": "object",
                                    "properties": {
                                      "id": {
                                        "type": "string"
                                      },
                                      "trayInfoIdx": {
                                        "type": "string"
                                      },
                                      "type": {
                                        "type": "string"
                                      },
                                      "color": {
                                        "type": "string"
                                      },
                                      "usedM": {
                                        "type": "number"
                                      },
                                      "usedG": {
                                        "type": "number"
                                      }
                                    },
                                    "required": [
                                      "id",
                                      "trayInfoIdx",
                                      "type",
                                      "color",
                                      "usedM",
                                      "usedG"
                                    ]
                                  }
                                },
                                "warnings": {
                                  "type": "array",
                                  "items": {
                                    "type": "object",
                                    "properties": {
                                      "msg": {
                                        "type": "string"
                                      },
                                      "level": {
                                        "type": "number"
                                      },
                                      "errorCode": {
                                        "type": "string"
                                      }
                                    },
                                    "required": [
                                      "msg",
                                      "level",
                                      "errorCode"
                                    ]
                                  }
                                },
                                "layerFilamentLists": {
                                  "type": "array",
                                  "items": {
                                    "type": "object",
                                    "properties": {
                                      "filamentList": {
                                        "type": "number"
                                      },
                                      "layerRanges": {
                                        "type": "string"
                                      }
                                    },
                                    "required": [
                                      "filamentList",
                                      "layerRanges"
                                    ]
                                  }
                                }
                              }
                            },
                            "filamentIds": {
                              "type": "array",
                              "items": {
                                "type": "string"
                              }
                            }
                          },
                          "required": [
                            "id"
                          ]
                        }
                      },
                      "filamentIds": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        }
                      },
                      "textSlots": {
                        "type": "array",
                        "items": {
                          "type": "object",
                          "properties": {
                            "key": {
                              "type": "string",
                              "title": "The matching volume/object name — the substitution key",
                              "description": "The matching volume/object name — the substitution key."
                            },
                            "label": {
                              "type": "string",
                              "title": "The label this slot's parameter is shown under",
                              "description": "The label this slot's parameter is shown under."
                            },
                            "text": {
                              "type": "string",
                              "description": "The text authored into the volume. It prints as-is when the slot goes\nunfilled, which makes it the parameter's default."
                            },
                            "volumeCount": {
                              "type": "number",
                              "title": "How many text volumes in the file carry this slot name",
                              "description": "How many text volumes in the file carry this slot name."
                            },
                            "fontName": {
                              "type": "string",
                              "title": "`font_name` of the first volume seen with this key",
                              "description": "`font_name` of the first volume seen with this key."
                            },
                            "fontVersion": {
                              "type": "string",
                              "title": "`font_version` of the first volume seen with this key",
                              "description": "`font_version` of the first volume seen with this key."
                            },
                            "surfaceType": {
                              "type": "number",
                              "title": "`surface_type` of the first volume seen with this key (0=flat)",
                              "description": "`surface_type` of the first volume seen with this key (0=flat)."
                            },
                            "occurrences": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "plateId": {
                                    "type": "number"
                                  },
                                  "objectId": {
                                    "type": "string",
                                    "title": "`model_settings.config` object id (matches the root model's build items)",
                                    "description": "`model_settings.config` object id (matches the root model's build items)."
                                  },
                                  "instanceId": {
                                    "type": "number",
                                    "title": "0-based instance index among the object's build items",
                                    "description": "0-based instance index among the object's build items."
                                  },
                                  "identifyId": {
                                    "type": "string",
                                    "title": "Bambu's per-instance id, when present (matches gcode object labels)",
                                    "description": "Bambu's per-instance id, when present (matches gcode object labels)."
                                  }
                                },
                                "required": [
                                  "plateId",
                                  "objectId",
                                  "instanceId"
                                ]
                              },
                              "title": "Every printable object instance carrying this slot, across all plates",
                              "description": "Every printable object instance carrying this slot, across all plates.\nAbsent when the file predates occurrence detection or has no plate\nmetadata to resolve instances against."
                            }
                          },
                          "required": [
                            "key",
                            "label",
                            "text",
                            "volumeCount"
                          ]
                        },
                        "description": "PrintagoParam text slots with their per-plate occurrence identities,\nre-detected whenever the file is (re)processed. The saved reuse mode\nlives on the slot's parameter, which survives a file replacement; this\nis the geometry-derived half that must always track the current file."
                      },
                      "plateRenderSourceHash": {
                        "type": "string",
                        "description": "`fileHashes[0]` of the source that produced the plates'\n`thumbnailRenderedUri`. Re-extraction carries the renders forward only\nwhile this still matches the part's current source; a replaced file\nleaves them behind rather than showing the previous model's geometry."
                      }
                    },
                    "required": [
                      "printerModel",
                      "filamentType",
                      "filamentColors",
                      "nozzleDiameter",
                      "profileCompat"
                    ]
                  }
                ]
              },
              "slicingEstimate": {
                "oneOf": [
                  {
                    "type": "null"
                  },
                  {
                    "type": "object",
                    "properties": {
                      "estimatedPrintTimeSeconds": {
                        "type": "number"
                      },
                      "materials": {
                        "type": "array",
                        "items": {
                          "type": "object",
                          "properties": {
                            "index": {
                              "type": "number"
                            },
                            "usedGrams": {
                              "type": "number"
                            },
                            "usedMeters": {
                              "type": "number"
                            },
                            "materialType": {
                              "type": "string"
                            },
                            "color": {
                              "type": "string"
                            }
                          },
                          "required": [
                            "index",
                            "usedGrams",
                            "usedMeters",
                            "materialType"
                          ]
                        }
                      },
                      "totalWeightGrams": {
                        "type": "number"
                      },
                      "profiles": {
                        "type": "object",
                        "properties": {
                          "machineProfileId": {
                            "type": "string"
                          },
                          "machineProfileName": {
                            "type": "string"
                          },
                          "processProfileId": {
                            "type": "string"
                          },
                          "processProfileName": {
                            "type": "string"
                          },
                          "filamentProfileIds": {
                            "type": "array",
                            "items": {
                              "type": "string"
                            }
                          },
                          "filamentProfileNames": {
                            "type": "array",
                            "items": {
                              "type": "string"
                            }
                          }
                        },
                        "required": [
                          "machineProfileId",
                          "machineProfileName",
                          "processProfileId",
                          "processProfileName",
                          "filamentProfileIds",
                          "filamentProfileNames"
                        ]
                      },
                      "slicedAt": {
                        "type": "string"
                      },
                      "slicerVersion": {
                        "type": "string"
                      },
                      "plates": {
                        "type": "array",
                        "items": {
                          "type": "object",
                          "properties": {
                            "plateId": {
                              "type": "number"
                            },
                            "estimatedPrintTimeSeconds": {
                              "type": "number"
                            },
                            "materials": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "index": {
                                    "type": "number"
                                  },
                                  "usedGrams": {
                                    "type": "number"
                                  },
                                  "usedMeters": {
                                    "type": "number"
                                  },
                                  "materialType": {
                                    "type": "string"
                                  },
                                  "color": {
                                    "type": "string"
                                  }
                                },
                                "required": [
                                  "index",
                                  "usedGrams",
                                  "usedMeters",
                                  "materialType"
                                ]
                              }
                            },
                            "totalWeightGrams": {
                              "type": "number"
                            }
                          },
                          "required": [
                            "plateId",
                            "estimatedPrintTimeSeconds",
                            "materials",
                            "totalWeightGrams"
                          ]
                        }
                      }
                    },
                    "required": [
                      "estimatedPrintTimeSeconds",
                      "materials",
                      "totalWeightGrams",
                      "slicedAt",
                      "slicerVersion"
                    ]
                  }
                ]
              },
              "use3MFProcessProfile": {
                "type": "boolean",
                "description": "Slice this part with the process profile embedded in its 3MF rather than\nthe matched printer's. Omit it when creating a 3MF part and it is turned\non for you, unless you also send an `overriddenProcessProfileId`; send\n`false` to slice with the printer's profile instead. Ignored for every\nother part type."
              },
              "arrangeable": {
                "type": "boolean"
              },
              "userTags": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "gcodePlateUris": {
                "oneOf": [
                  {
                    "type": "null"
                  },
                  {
                    "type": "object",
                    "properties": {},
                    "additionalProperties": {
                      "type": "string"
                    }
                  }
                ]
              },
              "meshUri": {
                "oneOf": [
                  {
                    "type": "null"
                  },
                  {
                    "type": "string"
                  }
                ],
                "title": "Tessellated mesh derived from a boundary-representation source (STEP)",
                "description": "Tessellated mesh derived from a boundary-representation source (STEP).\nThe slicer CLI only reads meshes, so this — not `fileUris[0]` — is what\nthe print and estimation paths feed it."
              },
              "meshSourceHash": {
                "oneOf": [
                  {
                    "type": "null"
                  },
                  {
                    "type": "string"
                  }
                ],
                "description": "`fileHashes[0]` of the source the mesh state describes — the file\n`meshUri` was tessellated from, or the one `meshError` failed on."
              },
              "meshError": {
                "oneOf": [
                  {
                    "type": "null"
                  },
                  {
                    "type": "string"
                  }
                ],
                "description": "Why tessellating this source failed. Set with `meshUri` cleared, so a\nfile that cannot be meshed is stated once instead of re-converting on\nevery print forever. Replacing the source moves `fileHashes[0]` off this\nhash, which retires the error without anything having to clear it."
              },
              "uploadedAt": {
                "oneOf": [
                  {
                    "type": "null"
                  },
                  {
                    "type": "string"
                  }
                ]
              },
              "customMetadata": {
                "type": "object",
                "properties": {},
                "additionalProperties": {}
              },
              "source": {
                "oneOf": [
                  {
                    "type": "null"
                  },
                  {
                    "const": "google-drive"
                  },
                  {
                    "const": "onedrive"
                  }
                ],
                "description": "Which integration created this part. Set only by the cloud-storage\nproviders today; null on every other creation path (upload, API, OpenSCAD,\n…) rather than carrying a synthetic \"manual\" value, so existing parts need\nno backfill. Not user-editable — it records what happened, not a preference."
              },
              "processingStatus": {
                "oneOf": [
                  {
                    "type": "null"
                  },
                  {
                    "const": "processing"
                  },
                  {
                    "const": "failed"
                  }
                ],
                "description": "Where the file's ingest (metadata extraction, thumbnails, plate split,\nestimation) stands. `null` means ready — parts that predate the ingest\nworkflow are healthy without backfill. System-set, not user-editable."
              },
              "processing": {
                "oneOf": [
                  {
                    "type": "null"
                  },
                  {
                    "type": "object",
                    "properties": {
                      "workflowKey": {
                        "type": "string",
                        "description": "The workflow run that owns this state. A retry or a file replacement\nwrites a new key first, so a superseded run's writes no longer match\nand are dropped instead of clobbering the newer run's progress."
                      },
                      "fileHash": {
                        "type": "string",
                        "title": "`fileHashes[0]` this ingest describes; replacing the file retires it",
                        "description": "`fileHashes[0]` this ingest describes; replacing the file retires it."
                      },
                      "attempt": {
                        "type": "number",
                        "description": "How many ingests this part has had before this one — a monotonic per-part\ncounter, not a per-file retry count, so no two runs can ever share a\nworkflow key. See {@link nextPartIngestAttempt }."
                      },
                      "startedAt": {
                        "type": "string"
                      },
                      "finishedAt": {
                        "type": "string"
                      },
                      "failedStage": {
                        "oneOf": [
                          {
                            "const": "fetch"
                          },
                          {
                            "const": "read-metadata"
                          },
                          {
                            "const": "thumbnails"
                          },
                          {
                            "const": "split-plates"
                          },
                          {
                            "const": "estimate"
                          }
                        ]
                      },
                      "error": {
                        "type": "string"
                      },
                      "stages": {
                        "type": "array",
                        "items": {
                          "type": "object",
                          "properties": {
                            "key": {
                              "oneOf": [
                                {
                                  "const": "fetch"
                                },
                                {
                                  "const": "read-metadata"
                                },
                                {
                                  "const": "thumbnails"
                                },
                                {
                                  "const": "split-plates"
                                },
                                {
                                  "const": "estimate"
                                }
                              ]
                            },
                            "status": {
                              "oneOf": [
                                {
                                  "const": "running"
                                },
                                {
                                  "const": "done"
                                },
                                {
                                  "const": "pending"
                                },
                                {
                                  "const": "failed"
                                },
                                {
                                  "const": "skipped"
                                }
                              ]
                            },
                            "attempts": {
                              "type": "number",
                              "title": "Times the stage has been started, so the UI can say \"retrying · attempt N\"",
                              "description": "Times the stage has been started, so the UI can say \"retrying · attempt N\"."
                            },
                            "error": {
                              "type": "string"
                            }
                          },
                          "required": [
                            "key",
                            "status"
                          ]
                        }
                      }
                    },
                    "required": [
                      "workflowKey",
                      "fileHash",
                      "attempt",
                      "startedAt",
                      "stages"
                    ]
                  }
                ],
                "title": "Per-stage ingest progress and, on failure, which stage stopped and why",
                "description": "Per-stage ingest progress and, on failure, which stage stopped and why."
              },
              "id": {
                "type": "string",
                "pattern": "^[a-z0-9]{24}$"
              },
              "storeId": {
                "type": "string",
                "pattern": "^[a-z0-9]{24}$"
              },
              "createdAt": {
                "type": "string"
              },
              "updatedAt": {
                "type": "string"
              }
            },
            "required": [
              "name",
              "type",
              "description",
              "fileUris",
              "fileHashes",
              "thumbnailUri",
              "parameters",
              "printTags",
              "overriddenProcessProfileId",
              "materials",
              "id",
              "storeId",
              "createdAt",
              "updatedAt"
            ]
          },
          "requiredPrinterTags": {
            "$ref": "#/components/schemas/Tags"
          },
          "quantity": {
            "type": "number",
            "minimum": 0,
            "maximum": 500
          },
          "numPartsPerSku": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "number"
              }
            ]
          },
          "skuInstanceStart": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "number"
              }
            ]
          },
          "parameterOverrides": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PartParameterOverride"
            }
          },
          "status": {
            "oneOf": [
              {
                "const": "pending"
              },
              {
                "const": "building"
              },
              {
                "const": "queued"
              },
              {
                "const": "fulfilling"
              },
              {
                "const": "preparing"
              },
              {
                "const": "sending-to-printer"
              },
              {
                "const": "printing"
              },
              {
                "const": "success"
              },
              {
                "const": "error"
              },
              {
                "const": "cancelled"
              }
            ]
          },
          "outputFiles": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "array",
                "items": {
                  "type": "string"
                }
              }
            ]
          },
          "thumbnailUri": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "assignmentStartedAt": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "format": "date-time"
              }
            ]
          },
          "assignmentCompletedAt": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "format": "date-time"
              }
            ]
          },
          "printingStartedAt": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "format": "date-time"
              }
            ]
          },
          "printingCompletedAt": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "format": "date-time"
              }
            ]
          },
          "printStatus": {
            "oneOf": [
              {
                "const": "pending"
              },
              {
                "const": "printing"
              },
              {
                "const": "success"
              },
              {
                "const": "error"
              },
              {
                "const": "cancelled"
              }
            ]
          },
          "extensions": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/PartBuildExtensions"
              }
            ]
          },
          "materialAssignments": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/MaterialAssignments"
              }
            ]
          },
          "priority": {
            "oneOf": [
              {
                "const": 100
              },
              {
                "const": 1000
              }
            ]
          },
          "position": {
            "oneOf": [
              {
                "const": "front"
              },
              {
                "const": "back"
              }
            ]
          },
          "orderId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "pattern": "^[a-z0-9]{24}$"
              }
            ]
          },
          "orderItemId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "pattern": "^[a-z0-9]{24}$"
              }
            ]
          },
          "linkedPartId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "pattern": "^[a-z0-9]{24}$"
              }
            ]
          },
          "dismissed": {
            "type": "boolean"
          },
          "customMetadata": {
            "$ref": "#/components/schemas/Recordstringunknown"
          },
          "id": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "storeId": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time"
          }
        },
        "required": [
          "partId",
          "skuBuildId",
          "skuId",
          "skuName",
          "label",
          "partCopy",
          "requiredPrinterTags",
          "quantity",
          "parameterOverrides",
          "status",
          "outputFiles",
          "thumbnailUri",
          "assignmentStartedAt",
          "assignmentCompletedAt",
          "printingStartedAt",
          "printingCompletedAt",
          "printStatus",
          "materialAssignments",
          "priority",
          "position",
          "orderId",
          "orderItemId",
          "linkedPartId",
          "dismissed",
          "id",
          "storeId",
          "createdAt",
          "updatedAt"
        ]
      },
      "PartBuildExtensions": {
        "type": "object",
        "properties": {
          "3mf": {
            "$ref": "#/components/schemas/PartBuildExtension3MF"
          },
          "createdBy": {
            "$ref": "#/components/schemas/BuildInitiator",
            "description": "The build pipeline queues jobs asynchronously under a system context, so\nthe queue's \"queued by\" is carried on the build rather than taken from\nwhichever context happens to insert the jobs."
          },
          "orderInfo": {
            "$ref": "#/components/schemas/PartBuildOrderInfo"
          },
          "boundingBox": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/BoundingBoxMm"
              }
            ],
            "description": "{x,y,z} mm footprint of this build's generated geometry, stashed after a\nparametric (OpenSCAD/CadQuery) render so per-job boundingBox denormalization\ncan read it without re-parsing the output STL."
          },
          "mergedPlate": {
            "$ref": "#/components/schemas/MergedPlateExtension",
            "description": "Present on the SYNTHETIC build backing a merged (parent) print job. Marks\nthe job as a merged plate and carries everything the async authoring step\nand status mirroring need (Plate Packer v2 §7.1 / §10). The merged 3MF is\nauthored post-commit from the children's source files (see\n`AuthorMergedPlateEvent`); `objectManifest` is filled in once authoring\ncompletes."
          },
          "consolidation": {
            "$ref": "#/components/schemas/BuildConsolidation",
            "description": "Build-time consolidation request (issue #437): stashed on a NORMAL part\nbuild so `queuePrintJobs` knows to pack this build's quantity onto plates.\nDistinct from `mergedPlate`, which marks the resulting synthetic parents."
          },
          "customizer": {
            "$ref": "#/components/schemas/PartBuildExtensionCustomizer"
          },
          "serials": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SerialStamp"
            },
            "title": "Serials consumed by this build, stamped at allocation time",
            "description": "Serials consumed by this build, stamped at allocation time."
          },
          "sequenceFanout": {
            "$ref": "#/components/schemas/SequenceFanout",
            "title": "Present on per-unit sibling builds created by sequence fan-out",
            "description": "Present on per-unit sibling builds created by sequence fan-out."
          }
        }
      },
      "PartBuildExtension3MF": {
        "type": "object",
        "properties": {
          "plateQuantities": {
            "$ref": "#/components/schemas/PartExtension3MFPlateQuantities"
          },
          "skipObjects": {
            "$ref": "#/components/schemas/RecordstringArraystring",
            "title": "Objects to SKIP per plate, keyed by plate id, as identifyId strings (Bambu only)",
            "description": "Objects to SKIP per plate, keyed by plate id, as identifyId strings (Bambu only)."
          },
          "plateLabels": {
            "$ref": "#/components/schemas/PartExtension3MFPlateLabels"
          }
        }
      },
      "BuildInitiator": {
        "type": "object",
        "properties": {
          "actorId": {
            "type": "string",
            "description": "Firebase UID or system identifier"
          },
          "actorType": {
            "oneOf": [
              {
                "const": "user"
              },
              {
                "const": "api_key"
              },
              {
                "const": "webhook"
              },
              {
                "const": "system"
              },
              {
                "const": "scheduler"
              },
              {
                "const": "fuse"
              }
            ],
            "description": "Type of actor performing the operation"
          },
          "actorEmail": {
            "type": "string",
            "description": "Actor's email for readability in logs"
          },
          "apiKeyId": {
            "type": "string",
            "description": "API key ID if action was via API key"
          }
        },
        "required": [
          "actorId",
          "actorType"
        ],
        "description": "The person or API key that asked for a build, kept on the build itself."
      },
      "PartBuildOrderInfo": {
        "type": "object",
        "properties": {
          "linkedPartId": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "linkedPartQuantity": {
            "type": "number"
          }
        },
        "required": [
          "linkedPartId",
          "linkedPartQuantity"
        ]
      },
      "MergedPlateExtension": {
        "type": "object",
        "properties": {
          "childJobIds": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "title": "The child (merged-in) print job ids, in layout order",
            "description": "The child (merged-in) print job ids, in layout order."
          },
          "layout": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/LayoutPlacement"
            },
            "title": "Committed, authoritative placements the merged 3MF is authored from",
            "description": "Committed, authoritative placements the merged 3MF is authored from."
          },
          "bedSize": {
            "$ref": "#/components/schemas/PlateSize",
            "title": "Bed the layout was computed against (the target plate build volume)",
            "description": "Bed the layout was computed against (the target plate build volume)."
          },
          "mode": {
            "oneOf": [
              {
                "const": "manual"
              },
              {
                "const": "auto"
              },
              {
                "const": "consolidation"
              }
            ],
            "title": "How this plate was created",
            "description": "How this plate was created."
          },
          "policy": {
            "oneOf": [
              {
                "const": "same-order"
              },
              {
                "const": "any"
              }
            ],
            "title": "Automatic-mode scope policy the merge was selected under (auto only)",
            "description": "Automatic-mode scope policy the merge was selected under (auto only)."
          },
          "objectManifest": {
            "$ref": "#/components/schemas/RecordstringArraynumber",
            "title": "jobId -> merged-file object ids, set once authoring completes",
            "description": "jobId -> merged-file object ids, set once authoring completes."
          },
          "machineName": {
            "type": "string",
            "title": "Target machine profile name, written into the merged file's config",
            "description": "Target machine profile name, written into the merged file's config."
          },
          "excludeAreas": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ExclusionRect"
            },
            "title": "Bed keep-out rects the layout respected (from the machine profile)",
            "description": "Bed keep-out rects the layout respected (from the machine profile)."
          },
          "filamentCount": {
            "type": "number",
            "description": "Filaments the merged plate declares. Absent/1 = a single-color plate,\nwhose objects are clamped to filament 1 at authoring time. >1 marks N\ncopies of one multi-color plate, whose extruder ids carry through."
          },
          "filamentColours": {
            "type": "array",
            "items": {
              "oneOf": [
                {
                  "type": "null"
                },
                {
                  "type": "string"
                }
              ]
            },
            "description": "Per-filament colours, indexed by slot (gaps null). Written into the\nmerged 3MF, and mirrored onto the parent JOB's copy of this extension —\nthe queue reports the plate's per-slot material requirements from the\ndurable job row, since the synthetic build is archived out of client\ncaches once authoring succeeds."
          },
          "processOverrides": {
            "$ref": "#/components/schemas/Recordstringstring",
            "description": "Plate-wide process values resolved across the children by the store's\nmerge policies — merged over the process profile at dispatch. Canonical\nstrings keyed by slicer config key."
          },
          "childProcessSettings": {
            "$ref": "#/components/schemas/RecordstringRecordstringstring",
            "description": "childJobId -> per-object process settings written onto that child's\nobjects in the merged model_settings.config at authoring time."
          },
          "slicerVersionId": {
            "type": "string",
            "description": "SlicerVersion.id the plate optimizer chose for this plate under the store's\nslicer-compatibility policy. Mirrored onto the parent job's mergedPlate\nextension and honored at dispatch. Absent = store slicer."
          },
          "failure": {
            "type": "object",
            "properties": {
              "message": {
                "type": "string"
              }
            },
            "required": [
              "message"
            ],
            "title": "Set when async authoring failed and the merge was unwound",
            "description": "Set when async authoring failed and the merge was unwound."
          }
        },
        "required": [
          "childJobIds",
          "layout",
          "bedSize",
          "mode"
        ],
        "description": "Marker + payload stored on a merged parent job's synthetic PartBuild."
      },
      "RecordstringArraynumber": {
        "type": "object",
        "properties": {},
        "description": "Construct a type with a set of properties K of type T",
        "additionalProperties": {
          "type": "array",
          "items": {
            "type": "number"
          }
        }
      },
      "ExclusionRect": {
        "type": "object",
        "properties": {
          "x": {
            "type": "number"
          },
          "y": {
            "type": "number"
          },
          "width": {
            "type": "number"
          },
          "height": {
            "type": "number"
          }
        },
        "required": [
          "x",
          "y",
          "width",
          "height"
        ],
        "description": "Keep-out rectangle in plate world coordinates (mm), e.g. a Bambu\nbed_exclude_area (P1S front-left wiper zone). Parts never overlap these."
      },
      "RecordstringRecordstringstring": {
        "type": "object",
        "properties": {},
        "description": "Construct a type with a set of properties K of type T",
        "additionalProperties": {
          "$ref": "#/components/schemas/Recordstringstring"
        }
      },
      "BuildConsolidation": {
        "type": "object",
        "properties": {
          "enabled": {
            "type": "boolean",
            "title": "Off by default. When true, this build's copies are consolidated",
            "description": "Off by default. When true, this build's copies are consolidated."
          },
          "partSpacingMm": {
            "type": "number",
            "title": "Per-build override of the store's part spacing (mm)",
            "description": "Per-build override of the store's part spacing (mm)."
          },
          "plateMarginMm": {
            "type": "number",
            "title": "Per-build override of the store's plate edge margin (mm)",
            "description": "Per-build override of the store's plate edge margin (mm)."
          },
          "bedSize": {
            "$ref": "#/components/schemas/PlateSize",
            "title": "Target plate to pack against. Omitted = the account's smallest bed",
            "description": "Target plate to pack against. Omitted = the account's smallest bed."
          }
        },
        "required": [
          "enabled"
        ],
        "description": "Build-time plate consolidation (issue #437): when printing quantity N of a\npart, pack the copies onto as few plates as possible and emit one merged\nplate per full plate instead of N separate jobs. Reuses the merge core, so\na consolidated plate is an ordinary merged parent (unmergeable back into\nits copies). All layout fields default to the store's PlateMergingSettings\n/ the account's smallest bed when omitted."
      },
      "PartBuildExtensionCustomizer": {
        "type": "object",
        "properties": {
          "unresolvedChannels": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "index": {
                  "type": "number"
                },
                "hex": {
                  "type": "string"
                }
              },
              "required": [
                "index",
                "hex"
              ]
            },
            "title": "Palette channels whose customer hex could not be mapped to a material",
            "description": "Palette channels whose customer hex could not be mapped to a material."
          }
        }
      },
      "SequenceFanout": {
        "type": "object",
        "properties": {
          "groupId": {
            "type": "string",
            "title": "Shared print-queue groupId for the whole sibling set",
            "description": "Shared print-queue groupId for the whole sibling set."
          },
          "unitIndex": {
            "type": "number",
            "title": "0-based index of this unit within the sibling set",
            "description": "0-based index of this unit within the sibling set."
          },
          "unitCount": {
            "type": "number",
            "title": "Total number of sibling builds in the set",
            "description": "Total number of sibling builds in the set."
          },
          "buildIds": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "title": "All sibling build ids in unit order (index 0 first)",
            "description": "All sibling build ids in unit order (index 0 first)."
          },
          "queueOrder": {
            "type": "number",
            "title": "Pre-allocated queueOrder shared by every sibling's job",
            "description": "Pre-allocated queueOrder shared by every sibling's job."
          }
        },
        "required": [
          "groupId",
          "unitIndex",
          "unitCount",
          "buildIds",
          "queueOrder"
        ],
        "description": "Fan-out bookkeeping stamped on each per-unit sibling build when a sequence\nbinding splits a quantity-N build into N quantity-1 builds. The siblings\nshare one queue group and one queueOrder so the run prints in serial order,\nand their jobs carry contiguous quantityIndex values across the set."
      },
      "MaterialAssignments": {
        "type": "object",
        "properties": {},
        "additionalProperties": {
          "type": "array",
          "items": {
            "oneOf": [
              {
                "type": "object",
                "properties": {
                  "groupId": {
                    "type": "string",
                    "pattern": "^[a-z0-9]{24}$"
                  }
                },
                "required": [
                  "groupId"
                ]
              },
              {
                "type": "object",
                "properties": {
                  "variantId": {
                    "type": "string",
                    "pattern": "^[a-z0-9]{24}$"
                  }
                },
                "required": [
                  "variantId"
                ]
              },
              {
                "type": "object",
                "properties": {
                  "materialId": {
                    "type": "string",
                    "pattern": "^[a-z0-9]{24}$"
                  }
                },
                "required": [
                  "materialId"
                ]
              },
              {
                "type": "object",
                "properties": {
                  "materialType": {
                    "type": "string"
                  }
                },
                "required": [
                  "materialType"
                ]
              }
            ]
          }
        }
      },
      "SkuBuild": {
        "type": "object",
        "properties": {
          "skuId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "pattern": "^[a-z0-9]{24}$"
              }
            ]
          },
          "skuCopy": {
            "type": "object",
            "properties": {
              "sku": {
                "type": "string",
                "minLength": 1,
                "maxLength": 1024
              },
              "title": {
                "type": "string"
              },
              "description": {
                "type": "string"
              },
              "externalId": {
                "oneOf": [
                  {
                    "type": "null"
                  },
                  {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 1024
                  }
                ]
              },
              "externalProvider": {
                "oneOf": [
                  {
                    "type": "null"
                  },
                  {
                    "const": "etsy"
                  },
                  {
                    "const": "shopify"
                  }
                ]
              },
              "folderId": {
                "oneOf": [
                  {
                    "type": "null"
                  },
                  {
                    "type": "string",
                    "pattern": "^[a-z0-9]{24}$"
                  }
                ]
              },
              "totalCogs": {
                "type": "number"
              },
              "customMetadata": {
                "type": "object",
                "properties": {},
                "additionalProperties": {}
              },
              "id": {
                "type": "string",
                "pattern": "^[a-z0-9]{24}$"
              },
              "storeId": {
                "type": "string",
                "pattern": "^[a-z0-9]{24}$"
              },
              "createdAt": {
                "type": "string"
              },
              "updatedAt": {
                "type": "string"
              }
            },
            "required": [
              "sku",
              "title",
              "description",
              "externalId",
              "externalProvider",
              "totalCogs",
              "id",
              "storeId",
              "createdAt",
              "updatedAt"
            ]
          },
          "status": {
            "oneOf": [
              {
                "const": "pending"
              },
              {
                "const": "running"
              },
              {
                "const": "success"
              },
              {
                "const": "error"
              },
              {
                "const": "cancelled"
              }
            ]
          },
          "skuInstanceStart": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "number"
              }
            ]
          },
          "orderId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "pattern": "^[a-z0-9]{24}$"
              }
            ]
          },
          "orderItemId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "pattern": "^[a-z0-9]{24}$"
              }
            ]
          },
          "priority": {
            "oneOf": [
              {
                "const": 100
              },
              {
                "const": 1000
              }
            ]
          },
          "selectedOptions": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/Recordstringstringnull"
              }
            ]
          },
          "id": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "storeId": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time"
          }
        },
        "required": [
          "skuId",
          "skuCopy",
          "status",
          "orderId",
          "orderItemId",
          "priority",
          "id",
          "storeId",
          "createdAt",
          "updatedAt"
        ]
      },
      "Recordstringstringnull": {
        "type": "object",
        "properties": {},
        "description": "Construct a type with a set of properties K of type T",
        "additionalProperties": {
          "oneOf": [
            {
              "type": "null"
            },
            {
              "type": "string"
            }
          ]
        }
      },
      "BuildConfigV2": {
        "type": "object",
        "properties": {
          "parts": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PartBuildConfigV2"
            },
            "description": "Individual parts to print"
          },
          "skus": {
            "type": "array",
            "items": {
              "oneOf": [
                {
                  "$ref": "#/components/schemas/skuIdCuid2quantityQuantityMin1undefinedlinkedPartConfigsRecordCuid2LinkedPartConfigV2undefined...6more...optionsSkuOptionSpecundefined"
                },
                {
                  "$ref": "#/components/schemas/skustringquantityQuantityMin1undefinedlinkedPartConfigsRecordCuid2LinkedPartConfigV2undefined...6more...optionsSkuOptionSpecundefined"
                }
              ]
            },
            "description": "SKUs (product bundles) to print"
          }
        },
        "description": "Configuration for creating a new build containing parts and/or SKUs"
      },
      "PartBuildConfigV2": {
        "type": "object",
        "properties": {
          "partId": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$",
            "description": "ID of the part to print"
          },
          "priority": {
            "oneOf": [
              {
                "const": 100
              },
              {
                "const": 1000
              }
            ],
            "description": "Priority level for print job queue processing"
          },
          "position": {
            "oneOf": [
              {
                "const": "front"
              },
              {
                "const": "back"
              }
            ],
            "description": "Position in the queue: 'front' places jobs at front of priority tier, 'back' at end"
          },
          "consolidation": {
            "$ref": "#/components/schemas/BuildConsolidation",
            "title": "Build-time plate consolidation for this part's quantity",
            "description": "Build-time plate consolidation for this part's quantity."
          },
          "quantity": {
            "type": "number",
            "minimum": 0,
            "maximum": 500,
            "title": "Number of copies to print",
            "description": "Number of copies to print."
          },
          "parameters": {
            "$ref": "#/components/schemas/Parameters",
            "description": "Custom parameters to override part defaults"
          },
          "label": {
            "type": "string",
            "minLength": 1,
            "maxLength": 1024,
            "title": "Custom label for this part in the build",
            "description": "Custom label for this part in the build."
          },
          "tags": {
            "$ref": "#/components/schemas/Tags",
            "description": "Printer tags this part's jobs require. Merged with the part's own print\ntags, so jobs only go to printers that have all of them."
          },
          "plateQuantities": {
            "$ref": "#/components/schemas/PartExtension3MFPlateQuantities",
            "description": "Quantity distribution across plates.  Only applies to 3MF and GCODE 3MF files"
          },
          "plateLabels": {
            "$ref": "#/components/schemas/PartExtension3MFPlateLabels",
            "title": "Per-plate label overrides keyed by plate ID. Only applies to 3MF and GCODE 3MF files",
            "description": "Per-plate label overrides keyed by plate ID. Only applies to 3MF and GCODE 3MF files.\n\nWhen set, the print job label for that plate becomes `${label} - ${plateLabels[plateId]}`\ninstead of the plate's name embedded in the file."
          },
          "materials": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/RecordnumberArraySingleMaterialSpecification"
              }
            ],
            "description": "Material assignments per extruder/channel (channel index -> material specifications)"
          },
          "skipObjects": {
            "$ref": "#/components/schemas/RecordstringArraystring",
            "title": "Objects to SKIP per plate, keyed by plate id, as identifyId strings",
            "description": "Objects to SKIP per plate, keyed by plate id, as identifyId strings.\n\nBambu only. The print starts normally and a `skip_objects` command is sent\nfor these objects once the printer reports it has started. identifyIds come\nfrom `part.metadata.plates[].sliced.objects[]`. Objects not listed are printed."
          }
        },
        "required": [
          "partId"
        ],
        "description": "Configuration for building a specific part"
      },
      "Parameters": {
        "type": "object",
        "properties": {},
        "description": "Key-value pairs of parameter names to their values for customizing parts",
        "additionalProperties": {
          "oneOf": [
            {
              "type": "number"
            },
            {
              "type": "string",
              "minLength": 0,
              "maxLength": 255
            },
            {
              "type": "boolean"
            }
          ]
        }
      },
      "skuIdCuid2quantityQuantityMin1undefinedlinkedPartConfigsRecordCuid2LinkedPartConfigV2undefined...6more...optionsSkuOptionSpecundefined": {
        "type": "object",
        "properties": {
          "skuId": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$",
            "description": "Internal unique identifier for the SKU"
          },
          "quantity": {
            "type": "number",
            "minimum": 1,
            "maximum": 500,
            "description": "Number of complete SKU units to build\n\nThis value is multiplied by the quantity configured on each linked part, respecting any quantity overrides defined in linkedPartConfigs."
          },
          "linkedPartConfigs": {
            "$ref": "#/components/schemas/RecordCuid2LinkedPartConfigV2",
            "description": "Configuration overrides for specific parts within this SKU, keyed by\nlinked part ID (the `id` of an entry in the SKU's `linkedParts`, not the part ID)"
          },
          "tags": {
            "$ref": "#/components/schemas/Tags",
            "description": "Printer tags every job in this SKU build requires, merged with each\nlinked part's tags"
          },
          "priority": {
            "oneOf": [
              {
                "const": 100
              },
              {
                "const": 1000
              }
            ],
            "description": "Priority level for all parts in this SKU build"
          },
          "position": {
            "oneOf": [
              {
                "const": "front"
              },
              {
                "const": "back"
              }
            ],
            "description": "Position in the queue: 'front' places jobs at front of priority tier, 'back' at end"
          },
          "consolidation": {
            "$ref": "#/components/schemas/BuildConsolidation",
            "title": "Build-time plate consolidation applied to every part in this SKU",
            "description": "Build-time plate consolidation applied to every part in this SKU."
          },
          "skuInstanceStart": {
            "type": "number",
            "minimum": 1,
            "description": "Starting SKU instance number for tracking (1-based)\nUsed internally for order reconciliation"
          },
          "order": {
            "$ref": "#/components/schemas/OmitOrderInfoV2linkedPartId",
            "description": "Order information for tracking this SKU build to an order"
          },
          "options": {
            "type": "array",
            "items": {
              "oneOf": [
                {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "string",
                      "pattern": "^[a-z0-9]{24}$"
                    },
                    "value": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "id",
                    "value"
                  ]
                },
                {
                  "type": "object",
                  "properties": {
                    "name": {
                      "type": "string"
                    },
                    "value": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "name",
                    "value"
                  ]
                }
              ]
            },
            "description": "SKU options selected for this build\nArray of option selections that can reference options by ID or name\nThese will be converted to selectedOptions format (optionId -> value name)"
          }
        },
        "required": [
          "skuId"
        ]
      },
      "RecordCuid2LinkedPartConfigV2": {
        "type": "object",
        "properties": {},
        "description": "Construct a type with a set of properties K of type T",
        "additionalProperties": {
          "$ref": "#/components/schemas/LinkedPartConfigV2"
        }
      },
      "LinkedPartConfigV2": {
        "type": "object",
        "properties": {
          "parameters": {
            "$ref": "#/components/schemas/Parameters",
            "description": "Custom parameters to override part defaults"
          },
          "tags": {
            "$ref": "#/components/schemas/Tags",
            "description": "Printer tags this part's jobs require. Merged with the part's own print\ntags, so jobs only go to printers that have all of them."
          },
          "quantity": {
            "type": "number",
            "minimum": 0,
            "maximum": 500,
            "title": "Number of copies to print",
            "description": "Number of copies to print."
          },
          "label": {
            "type": "string",
            "minLength": 1,
            "maxLength": 1024,
            "title": "Custom label for this part in the build",
            "description": "Custom label for this part in the build."
          },
          "plateQuantities": {
            "$ref": "#/components/schemas/PartExtension3MFPlateQuantities",
            "description": "Quantity distribution across plates.  Only applies to 3MF and GCODE 3MF files"
          },
          "plateLabels": {
            "$ref": "#/components/schemas/PartExtension3MFPlateLabels",
            "title": "Per-plate label overrides keyed by plate ID. Only applies to 3MF and GCODE 3MF files",
            "description": "Per-plate label overrides keyed by plate ID. Only applies to 3MF and GCODE 3MF files.\n\nWhen set, the print job label for that plate becomes `${label} - ${plateLabels[plateId]}`\ninstead of the plate's name embedded in the file."
          },
          "skipObjects": {
            "$ref": "#/components/schemas/RecordstringArraystring",
            "title": "Objects to SKIP per plate, keyed by plate id, as identifyId strings",
            "description": "Objects to SKIP per plate, keyed by plate id, as identifyId strings.\n\nBambu only. The print starts normally and a `skip_objects` command is sent\nfor these objects once the printer reports it has started. identifyIds come\nfrom `part.metadata.plates[].sliced.objects[]`. Objects not listed are printed."
          },
          "materials": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/RecordnumberArrayLinkedPartMaterialSpecification"
              }
            ]
          }
        },
        "description": "Additional configuration/overrides for linked parts within a SKU build"
      },
      "OmitOrderInfoV2linkedPartId": {
        "type": "object",
        "properties": {
          "orderId": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "orderItemId": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          }
        },
        "required": [
          "orderId",
          "orderItemId"
        ],
        "description": "Construct a type with the properties of T except for those in type K."
      },
      "skustringquantityQuantityMin1undefinedlinkedPartConfigsRecordCuid2LinkedPartConfigV2undefined...6more...optionsSkuOptionSpecundefined": {
        "type": "object",
        "properties": {
          "sku": {
            "type": "string",
            "description": "External SKU code/name"
          },
          "quantity": {
            "type": "number",
            "minimum": 1,
            "maximum": 500,
            "description": "Number of complete SKU units to build\n\nThis value is multiplied by the quantity configured on each linked part, respecting any quantity overrides defined in linkedPartConfigs."
          },
          "linkedPartConfigs": {
            "$ref": "#/components/schemas/RecordCuid2LinkedPartConfigV2",
            "description": "Configuration overrides for specific parts within this SKU, keyed by\nlinked part ID (the `id` of an entry in the SKU's `linkedParts`, not the part ID)"
          },
          "tags": {
            "$ref": "#/components/schemas/Tags",
            "description": "Printer tags every job in this SKU build requires, merged with each\nlinked part's tags"
          },
          "priority": {
            "oneOf": [
              {
                "const": 100
              },
              {
                "const": 1000
              }
            ],
            "description": "Priority level for all parts in this SKU build"
          },
          "position": {
            "oneOf": [
              {
                "const": "front"
              },
              {
                "const": "back"
              }
            ],
            "description": "Position in the queue: 'front' places jobs at front of priority tier, 'back' at end"
          },
          "consolidation": {
            "$ref": "#/components/schemas/BuildConsolidation",
            "title": "Build-time plate consolidation applied to every part in this SKU",
            "description": "Build-time plate consolidation applied to every part in this SKU."
          },
          "skuInstanceStart": {
            "type": "number",
            "minimum": 1,
            "description": "Starting SKU instance number for tracking (1-based)\nUsed internally for order reconciliation"
          },
          "order": {
            "$ref": "#/components/schemas/OmitOrderInfoV2linkedPartId",
            "description": "Order information for tracking this SKU build to an order"
          },
          "options": {
            "type": "array",
            "items": {
              "oneOf": [
                {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "string",
                      "pattern": "^[a-z0-9]{24}$"
                    },
                    "value": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "id",
                    "value"
                  ]
                },
                {
                  "type": "object",
                  "properties": {
                    "name": {
                      "type": "string"
                    },
                    "value": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "name",
                    "value"
                  ]
                }
              ]
            },
            "description": "SKU options selected for this build\nArray of option selections that can reference options by ID or name\nThese will be converted to selectedOptions format (optionId -> value name)"
          }
        },
        "required": [
          "sku"
        ]
      },
      "BuildPreviewV2": {
        "type": "object",
        "properties": {
          "partBuilds": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/BuildPreviewPartBuildV2"
            },
            "description": "Previewed part builds grouped with their corresponding jobs"
          },
          "summary": {
            "type": "object",
            "properties": {
              "partBuildCount": {
                "type": "number"
              },
              "skuBuildCount": {
                "type": "number"
              },
              "jobCount": {
                "type": "number"
              }
            },
            "required": [
              "partBuildCount",
              "skuBuildCount",
              "jobCount"
            ],
            "description": "Summary counts for quick display"
          }
        },
        "required": [
          "partBuilds",
          "summary"
        ],
        "description": "Dry-run preview for a v2 build request."
      },
      "BuildPreviewPartBuildV2": {
        "type": "object",
        "properties": {
          "source": {
            "oneOf": [
              {
                "const": "sku"
              },
              {
                "const": "part"
              }
            ],
            "description": "Indicates whether this part build comes from direct part config or a SKU config"
          },
          "partId": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$",
            "description": "Part ID for this previewed part build"
          },
          "partName": {
            "type": "string",
            "description": "Part name"
          },
          "partThumbnailUri": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ],
            "description": "Optional part-level thumbnail URI"
          },
          "label": {
            "type": "string",
            "description": "Label that the part build will use"
          },
          "quantity": {
            "type": "number",
            "description": "Part build quantity"
          },
          "sku": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "object",
                "properties": {
                  "skuId": {
                    "type": "string",
                    "pattern": "^[a-z0-9]{24}$"
                  },
                  "sku": {
                    "type": "string"
                  }
                },
                "required": [
                  "skuId",
                  "sku"
                ]
              }
            ],
            "description": "SKU metadata when source is \"sku\""
          },
          "materials": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/RecordnumberArraySingleMaterialSpecification"
              }
            ],
            "description": "Material assignments that will be used for this part build"
          },
          "plateQuantities": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/Recordstringnumber"
              }
            ],
            "description": "3MF plate quantities, if applicable"
          },
          "jobs": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/BuildPreviewJobV2"
            },
            "description": "Print jobs that would be created for this part build"
          }
        },
        "required": [
          "source",
          "partId",
          "partName",
          "label",
          "quantity",
          "jobs"
        ],
        "description": "Preview of a part build and its resulting jobs."
      },
      "Recordstringnumber": {
        "type": "object",
        "properties": {},
        "description": "Construct a type with a set of properties K of type T",
        "additionalProperties": {
          "type": "number"
        }
      },
      "BuildPreviewJobV2": {
        "type": "object",
        "properties": {
          "label": {
            "type": "string",
            "description": "Label that the print job will use in queue"
          },
          "quantityIndex": {
            "type": "number",
            "description": "1-based index of this job within the part build"
          },
          "quantityTotal": {
            "type": "number",
            "description": "Total jobs that would be created for this part build"
          },
          "plateId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              },
              {
                "type": "number"
              }
            ],
            "description": "Optional plate ID for 3MF/GCODE 3MF jobs"
          },
          "plateName": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ],
            "description": "Optional plate name for 3MF/GCODE 3MF jobs"
          },
          "thumbnailUri": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ],
            "description": "Optional thumbnail URI for this job"
          }
        },
        "required": [
          "label",
          "quantityIndex",
          "quantityTotal"
        ],
        "description": "Preview of a single print job that would be created."
      },
      "PartBuildWithRelation": {
        "type": "object",
        "properties": {
          "partId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "pattern": "^[a-z0-9]{24}$"
              }
            ]
          },
          "skuBuildId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "pattern": "^[a-z0-9]{24}$"
              }
            ]
          },
          "skuId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "pattern": "^[a-z0-9]{24}$"
              }
            ]
          },
          "skuName": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "minLength": 1,
                "maxLength": 1024
              }
            ]
          },
          "label": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "minLength": 1,
                "maxLength": 1024
              }
            ]
          },
          "partCopy": {
            "type": "object",
            "properties": {
              "name": {
                "type": "string",
                "minLength": 1,
                "maxLength": 1024
              },
              "type": {
                "oneOf": [
                  {
                    "const": "scad"
                  },
                  {
                    "const": "cadquery"
                  },
                  {
                    "const": "build123d"
                  },
                  {
                    "const": "stl"
                  },
                  {
                    "const": "step"
                  },
                  {
                    "const": "3mf"
                  },
                  {
                    "const": "gcode3mf"
                  },
                  {
                    "const": "gcode"
                  }
                ]
              },
              "description": {
                "type": "string",
                "default": ""
              },
              "fileUris": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "fileHashes": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "thumbnailUri": {
                "oneOf": [
                  {
                    "type": "null"
                  },
                  {
                    "type": "string"
                  }
                ]
              },
              "parameters": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "default": {
                      "oneOf": [
                        {
                          "type": "number"
                        },
                        {
                          "type": "string",
                          "minLength": 0,
                          "maxLength": 255
                        },
                        {
                          "type": "boolean"
                        }
                      ]
                    },
                    "options": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "value": {
                            "oneOf": [
                              {
                                "type": "string"
                              },
                              {
                                "type": "number"
                              }
                            ]
                          },
                          "label": {
                            "type": "string"
                          }
                        },
                        "required": [
                          "value"
                        ]
                      }
                    },
                    "description": {
                      "type": "string"
                    },
                    "min": {
                      "type": "number"
                    },
                    "max": {
                      "type": "number"
                    },
                    "step": {
                      "type": "number"
                    },
                    "acceptedContentTypes": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "description": "File-parameter-only fields (populated when\n`type === PartParameterVariableType.File`). Kept optional on the\nshared interface so scalar-parameter call sites do not need\nunion-narrowing. See `FilePartParameter` for the strict shape.\n\n`acceptedContentTypes` is intentionally an OPEN `string[]` (not a\nnarrow union). The customizer emits SVG, but Etsy attachments and\ndirect API order ingestion can carry ANY mime type (PNG / JPG / PDF /\nAI / etc). Builders enforce kind constraints; the shared type stays\nopen."
                    },
                    "multiple": {
                      "type": "boolean",
                      "description": "Whether the slot accepts >1 file. Reserved for forward compat — the\nPhase 5 resolver assumes single-file per slot for v1."
                    },
                    "defaultUri": {
                      "type": "string",
                      "title": "Optional fallback file URI (e.g. a known SVG in storage)",
                      "description": "Optional fallback file URI (e.g. a known SVG in storage)."
                    },
                    "label": {
                      "type": "string",
                      "maxLength": 255,
                      "description": "What the parameter is shown under wherever a customer or an operator\nfills it in; `name` stays the key everything binds by (SKU options,\norder inputs, build overrides, and — for a 3MF text slot — the text\nvolume the substitution travels to). A parameter without one is shown\nunder its name.\n\nThis interface is the one the API's request validators are generated\nfrom, and it is a second declaration of the shape in\n`../part/parameter`. A field added to only one of them is accepted by\nthe code and then pruned off the wire."
                    },
                    "serialReuse": {
                      "oneOf": [
                        {
                          "const": "share",
                          "title": "One serial per plate print, applied to every matching occurrence",
                          "description": "One serial per plate print, applied to every matching occurrence."
                        },
                        {
                          "const": "increment",
                          "title": "The next serial for each matching object instance on the plate",
                          "description": "The next serial for each matching object instance on the plate."
                        }
                      ],
                      "description": "For a 3MF text-slot parameter bound to a sequence: whether occurrences\nrepeated on one plate share a serial or each consume the next one.\nAbsent means {@link TextSlotSerialReuse.Share }, today's duplicate-name\nmeaning."
                    },
                    "sizing": {
                      "oneOf": [
                        {
                          "const": "stretch",
                          "title": "Fill the authored bounds exactly, distorting the glyphs if need be",
                          "description": "Fill the authored bounds exactly, distorting the glyphs if need be."
                        },
                        {
                          "const": "fit",
                          "title": "Keep the authored proportions and size; shrink only to avoid overflow",
                          "description": "Keep the authored proportions and size; shrink only to avoid overflow."
                        },
                        {
                          "const": "unconstrained",
                          "title": "Draw at the authored size and let a long value run past the bounds",
                          "description": "Draw at the authored size and let a long value run past the bounds."
                        }
                      ],
                      "description": "3MF text placeholders only: how a substituted value is sized against the\nbounds of the text volume it replaces. Absent means \"fit within bounds\",\nwhich is what every part declared before the setting existed carries.\nDeclared on this shape as well as on `../part/parameter` for the reason\n`label` is — the API's request validators are generated from this one,\nand a field on only the other is pruned off the wire."
                    },
                    "name": {
                      "type": "string",
                      "minLength": 1,
                      "maxLength": 255
                    },
                    "type": {
                      "oneOf": [
                        {
                          "const": "number"
                        },
                        {
                          "const": "string"
                        },
                        {
                          "const": "boolean"
                        },
                        {
                          "const": "file"
                        }
                      ]
                    },
                    "value": {
                      "oneOf": [
                        {
                          "type": "number"
                        },
                        {
                          "type": "string",
                          "minLength": 0,
                          "maxLength": 255
                        },
                        {
                          "type": "boolean"
                        }
                      ]
                    }
                  },
                  "required": [
                    "name",
                    "type"
                  ]
                }
              },
              "printTags": {
                "type": "object",
                "properties": {
                  "printer.provider": {
                    "type": "string",
                    "minLength": 1
                  },
                  "printer.id": {
                    "type": "string",
                    "minLength": 1
                  },
                  "printer.nozzleDiameter": {
                    "type": "string",
                    "minLength": 1
                  },
                  "printer.modelName": {
                    "type": "string",
                    "minLength": 1
                  },
                  "filament.type": {
                    "type": "string",
                    "minLength": 1
                  },
                  "user.tags": {
                    "type": "string",
                    "minLength": 1
                  }
                }
              },
              "overriddenProcessProfileId": {
                "oneOf": [
                  {
                    "type": "null"
                  },
                  {
                    "type": "string",
                    "pattern": "^[a-z0-9]{24}$"
                  }
                ]
              },
              "folderId": {
                "oneOf": [
                  {
                    "type": "null"
                  },
                  {
                    "type": "string",
                    "pattern": "^[a-z0-9]{24}$"
                  }
                ]
              },
              "materials": {
                "oneOf": [
                  {
                    "type": "null"
                  },
                  {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "index": {
                          "type": "number",
                          "minimum": 0
                        },
                        "color": {
                          "oneOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string",
                              "pattern": "^#{0,1}[0-9A-F]{6}|[0-9A-F]{8}$"
                            }
                          ]
                        },
                        "type": {
                          "oneOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "skip": {
                          "type": "boolean"
                        },
                        "name": {
                          "oneOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "identifier": {
                          "oneOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        }
                      },
                      "required": [
                        "index",
                        "color",
                        "type"
                      ]
                    }
                  }
                ]
              },
              "slicerOverride": {
                "oneOf": [
                  {
                    "type": "null"
                  },
                  {
                    "type": "string"
                  }
                ]
              },
              "metadata": {
                "oneOf": [
                  {
                    "type": "null"
                  },
                  {
                    "type": "object",
                    "properties": {
                      "printerModel": {
                        "type": "string"
                      },
                      "filamentType": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        }
                      },
                      "filamentColors": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        }
                      },
                      "filamentDensities": {
                        "type": "array",
                        "items": {
                          "type": "number"
                        }
                      },
                      "filamentDiameters": {
                        "type": "array",
                        "items": {
                          "type": "number"
                        }
                      },
                      "nozzleDiameter": {
                        "type": "string"
                      },
                      "profileCompat": {
                        "type": "object",
                        "properties": {
                          "sliced": {
                            "type": "string"
                          },
                          "compatible": {
                            "type": "array",
                            "items": {
                              "type": "string"
                            }
                          },
                          "safe": {
                            "type": "array",
                            "items": {
                              "type": "string"
                            }
                          }
                        },
                        "required": [
                          "sliced",
                          "compatible",
                          "safe"
                        ]
                      },
                      "slicerVersion": {
                        "oneOf": [
                          {
                            "type": "null"
                          },
                          {
                            "type": "object",
                            "properties": {
                              "engine": {
                                "oneOf": [
                                  {
                                    "const": "orcaslicer"
                                  },
                                  {
                                    "const": "bambu-studio"
                                  },
                                  {
                                    "const": "prusaslicer"
                                  },
                                  {
                                    "const": "superslicer"
                                  }
                                ]
                              },
                              "version": {
                                "type": "string"
                              }
                            },
                            "required": [
                              "engine",
                              "version"
                            ]
                          }
                        ]
                      },
                      "plates": {
                        "type": "array",
                        "items": {
                          "type": "object",
                          "properties": {
                            "id": {
                              "type": "number"
                            },
                            "name": {
                              "type": "string"
                            },
                            "locked": {
                              "type": "boolean"
                            },
                            "filamentMapMode": {
                              "type": "string"
                            },
                            "filamentMaps": {
                              "type": "array",
                              "items": {
                                "type": "number"
                              }
                            },
                            "gcodeFile": {
                              "type": "string"
                            },
                            "thumbnailFile": {
                              "type": "string"
                            },
                            "thumbnailUploadedUri": {
                              "type": "string",
                              "title": "The archive's own plate preview, copied out at metadata-extraction time",
                              "description": "The archive's own plate preview, copied out at metadata-extraction time."
                            },
                            "thumbnailRenderedUri": {
                              "type": "string",
                              "description": "The plate re-rendered by the three.js builder. Written by a different\nflow, and to a different storage path, than the archive copy above — a\nlater metadata reprocess re-copies the archive image and must not be able\nto overwrite this. Prefer it over `thumbnailUploadedUri`\n(see `plateThumbnailUri`)."
                            },
                            "thumbnailNoLightFile": {
                              "type": "string"
                            },
                            "thumbnailData": {
                              "type": "string"
                            },
                            "topFile": {
                              "type": "string"
                            },
                            "pickFile": {
                              "type": "string"
                            },
                            "topData": {
                              "type": "string",
                              "title": "Base64 PNG data for the top/pick images, staged before upload then cleared",
                              "description": "Base64 PNG data for the top/pick images, staged before upload then cleared."
                            },
                            "pickData": {
                              "type": "string"
                            },
                            "topUploadedUri": {
                              "type": "string",
                              "title": "Uploaded URIs for the plate's top-down image and color-coded object pick mask",
                              "description": "Uploaded URIs for the plate's top-down image and color-coded object pick mask.\nUsed by the visual skip-objects picker."
                            },
                            "pickUploadedUri": {
                              "type": "string"
                            },
                            "patternBboxFile": {
                              "type": "string"
                            },
                            "sliced": {
                              "type": "object",
                              "properties": {
                                "index": {
                                  "type": "number"
                                },
                                "extruderType": {
                                  "type": "string"
                                },
                                "nozzleVolumeType": {
                                  "type": "string"
                                },
                                "printerModelId": {
                                  "type": "string"
                                },
                                "nozzleDiameters": {
                                  "type": "string"
                                },
                                "timelapseType": {
                                  "type": "string"
                                },
                                "prediction": {
                                  "type": "number"
                                },
                                "weight": {
                                  "type": "number"
                                },
                                "outside": {
                                  "type": "boolean"
                                },
                                "supportUsed": {
                                  "type": "boolean"
                                },
                                "labelObjectEnabled": {
                                  "type": "boolean"
                                },
                                "filamentMaps": {
                                  "type": "string"
                                },
                                "objects": {
                                  "type": "array",
                                  "items": {
                                    "type": "object",
                                    "properties": {
                                      "identifyId": {
                                        "type": "string"
                                      },
                                      "name": {
                                        "type": "string"
                                      },
                                      "skipped": {
                                        "type": "boolean"
                                      }
                                    },
                                    "required": [
                                      "identifyId",
                                      "name",
                                      "skipped"
                                    ]
                                  }
                                },
                                "filaments": {
                                  "type": "array",
                                  "items": {
                                    "type": "object",
                                    "properties": {
                                      "id": {
                                        "type": "string"
                                      },
                                      "trayInfoIdx": {
                                        "type": "string"
                                      },
                                      "type": {
                                        "type": "string"
                                      },
                                      "color": {
                                        "type": "string"
                                      },
                                      "usedM": {
                                        "type": "number"
                                      },
                                      "usedG": {
                                        "type": "number"
                                      }
                                    },
                                    "required": [
                                      "id",
                                      "trayInfoIdx",
                                      "type",
                                      "color",
                                      "usedM",
                                      "usedG"
                                    ]
                                  }
                                },
                                "warnings": {
                                  "type": "array",
                                  "items": {
                                    "type": "object",
                                    "properties": {
                                      "msg": {
                                        "type": "string"
                                      },
                                      "level": {
                                        "type": "number"
                                      },
                                      "errorCode": {
                                        "type": "string"
                                      }
                                    },
                                    "required": [
                                      "msg",
                                      "level",
                                      "errorCode"
                                    ]
                                  }
                                },
                                "layerFilamentLists": {
                                  "type": "array",
                                  "items": {
                                    "type": "object",
                                    "properties": {
                                      "filamentList": {
                                        "type": "number"
                                      },
                                      "layerRanges": {
                                        "type": "string"
                                      }
                                    },
                                    "required": [
                                      "filamentList",
                                      "layerRanges"
                                    ]
                                  }
                                }
                              }
                            },
                            "filamentIds": {
                              "type": "array",
                              "items": {
                                "type": "string"
                              }
                            }
                          },
                          "required": [
                            "id"
                          ]
                        }
                      },
                      "filamentIds": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        }
                      },
                      "textSlots": {
                        "type": "array",
                        "items": {
                          "type": "object",
                          "properties": {
                            "key": {
                              "type": "string",
                              "title": "The matching volume/object name — the substitution key",
                              "description": "The matching volume/object name — the substitution key."
                            },
                            "label": {
                              "type": "string",
                              "title": "The label this slot's parameter is shown under",
                              "description": "The label this slot's parameter is shown under."
                            },
                            "text": {
                              "type": "string",
                              "description": "The text authored into the volume. It prints as-is when the slot goes\nunfilled, which makes it the parameter's default."
                            },
                            "volumeCount": {
                              "type": "number",
                              "title": "How many text volumes in the file carry this slot name",
                              "description": "How many text volumes in the file carry this slot name."
                            },
                            "fontName": {
                              "type": "string",
                              "title": "`font_name` of the first volume seen with this key",
                              "description": "`font_name` of the first volume seen with this key."
                            },
                            "fontVersion": {
                              "type": "string",
                              "title": "`font_version` of the first volume seen with this key",
                              "description": "`font_version` of the first volume seen with this key."
                            },
                            "surfaceType": {
                              "type": "number",
                              "title": "`surface_type` of the first volume seen with this key (0=flat)",
                              "description": "`surface_type` of the first volume seen with this key (0=flat)."
                            },
                            "occurrences": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "plateId": {
                                    "type": "number"
                                  },
                                  "objectId": {
                                    "type": "string",
                                    "title": "`model_settings.config` object id (matches the root model's build items)",
                                    "description": "`model_settings.config` object id (matches the root model's build items)."
                                  },
                                  "instanceId": {
                                    "type": "number",
                                    "title": "0-based instance index among the object's build items",
                                    "description": "0-based instance index among the object's build items."
                                  },
                                  "identifyId": {
                                    "type": "string",
                                    "title": "Bambu's per-instance id, when present (matches gcode object labels)",
                                    "description": "Bambu's per-instance id, when present (matches gcode object labels)."
                                  }
                                },
                                "required": [
                                  "plateId",
                                  "objectId",
                                  "instanceId"
                                ]
                              },
                              "title": "Every printable object instance carrying this slot, across all plates",
                              "description": "Every printable object instance carrying this slot, across all plates.\nAbsent when the file predates occurrence detection or has no plate\nmetadata to resolve instances against."
                            }
                          },
                          "required": [
                            "key",
                            "label",
                            "text",
                            "volumeCount"
                          ]
                        },
                        "description": "PrintagoParam text slots with their per-plate occurrence identities,\nre-detected whenever the file is (re)processed. The saved reuse mode\nlives on the slot's parameter, which survives a file replacement; this\nis the geometry-derived half that must always track the current file."
                      },
                      "plateRenderSourceHash": {
                        "type": "string",
                        "description": "`fileHashes[0]` of the source that produced the plates'\n`thumbnailRenderedUri`. Re-extraction carries the renders forward only\nwhile this still matches the part's current source; a replaced file\nleaves them behind rather than showing the previous model's geometry."
                      }
                    },
                    "required": [
                      "printerModel",
                      "filamentType",
                      "filamentColors",
                      "nozzleDiameter",
                      "profileCompat"
                    ]
                  }
                ]
              },
              "slicingEstimate": {
                "oneOf": [
                  {
                    "type": "null"
                  },
                  {
                    "type": "object",
                    "properties": {
                      "estimatedPrintTimeSeconds": {
                        "type": "number"
                      },
                      "materials": {
                        "type": "array",
                        "items": {
                          "type": "object",
                          "properties": {
                            "index": {
                              "type": "number"
                            },
                            "usedGrams": {
                              "type": "number"
                            },
                            "usedMeters": {
                              "type": "number"
                            },
                            "materialType": {
                              "type": "string"
                            },
                            "color": {
                              "type": "string"
                            }
                          },
                          "required": [
                            "index",
                            "usedGrams",
                            "usedMeters",
                            "materialType"
                          ]
                        }
                      },
                      "totalWeightGrams": {
                        "type": "number"
                      },
                      "profiles": {
                        "type": "object",
                        "properties": {
                          "machineProfileId": {
                            "type": "string"
                          },
                          "machineProfileName": {
                            "type": "string"
                          },
                          "processProfileId": {
                            "type": "string"
                          },
                          "processProfileName": {
                            "type": "string"
                          },
                          "filamentProfileIds": {
                            "type": "array",
                            "items": {
                              "type": "string"
                            }
                          },
                          "filamentProfileNames": {
                            "type": "array",
                            "items": {
                              "type": "string"
                            }
                          }
                        },
                        "required": [
                          "machineProfileId",
                          "machineProfileName",
                          "processProfileId",
                          "processProfileName",
                          "filamentProfileIds",
                          "filamentProfileNames"
                        ]
                      },
                      "slicedAt": {
                        "type": "string"
                      },
                      "slicerVersion": {
                        "type": "string"
                      },
                      "plates": {
                        "type": "array",
                        "items": {
                          "type": "object",
                          "properties": {
                            "plateId": {
                              "type": "number"
                            },
                            "estimatedPrintTimeSeconds": {
                              "type": "number"
                            },
                            "materials": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "index": {
                                    "type": "number"
                                  },
                                  "usedGrams": {
                                    "type": "number"
                                  },
                                  "usedMeters": {
                                    "type": "number"
                                  },
                                  "materialType": {
                                    "type": "string"
                                  },
                                  "color": {
                                    "type": "string"
                                  }
                                },
                                "required": [
                                  "index",
                                  "usedGrams",
                                  "usedMeters",
                                  "materialType"
                                ]
                              }
                            },
                            "totalWeightGrams": {
                              "type": "number"
                            }
                          },
                          "required": [
                            "plateId",
                            "estimatedPrintTimeSeconds",
                            "materials",
                            "totalWeightGrams"
                          ]
                        }
                      }
                    },
                    "required": [
                      "estimatedPrintTimeSeconds",
                      "materials",
                      "totalWeightGrams",
                      "slicedAt",
                      "slicerVersion"
                    ]
                  }
                ]
              },
              "use3MFProcessProfile": {
                "type": "boolean",
                "description": "Slice this part with the process profile embedded in its 3MF rather than\nthe matched printer's. Omit it when creating a 3MF part and it is turned\non for you, unless you also send an `overriddenProcessProfileId`; send\n`false` to slice with the printer's profile instead. Ignored for every\nother part type."
              },
              "arrangeable": {
                "type": "boolean"
              },
              "userTags": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "gcodePlateUris": {
                "oneOf": [
                  {
                    "type": "null"
                  },
                  {
                    "type": "object",
                    "properties": {},
                    "additionalProperties": {
                      "type": "string"
                    }
                  }
                ]
              },
              "meshUri": {
                "oneOf": [
                  {
                    "type": "null"
                  },
                  {
                    "type": "string"
                  }
                ],
                "title": "Tessellated mesh derived from a boundary-representation source (STEP)",
                "description": "Tessellated mesh derived from a boundary-representation source (STEP).\nThe slicer CLI only reads meshes, so this — not `fileUris[0]` — is what\nthe print and estimation paths feed it."
              },
              "meshSourceHash": {
                "oneOf": [
                  {
                    "type": "null"
                  },
                  {
                    "type": "string"
                  }
                ],
                "description": "`fileHashes[0]` of the source the mesh state describes — the file\n`meshUri` was tessellated from, or the one `meshError` failed on."
              },
              "meshError": {
                "oneOf": [
                  {
                    "type": "null"
                  },
                  {
                    "type": "string"
                  }
                ],
                "description": "Why tessellating this source failed. Set with `meshUri` cleared, so a\nfile that cannot be meshed is stated once instead of re-converting on\nevery print forever. Replacing the source moves `fileHashes[0]` off this\nhash, which retires the error without anything having to clear it."
              },
              "uploadedAt": {
                "oneOf": [
                  {
                    "type": "null"
                  },
                  {
                    "type": "string"
                  }
                ]
              },
              "customMetadata": {
                "type": "object",
                "properties": {},
                "additionalProperties": {}
              },
              "source": {
                "oneOf": [
                  {
                    "type": "null"
                  },
                  {
                    "const": "google-drive"
                  },
                  {
                    "const": "onedrive"
                  }
                ],
                "description": "Which integration created this part. Set only by the cloud-storage\nproviders today; null on every other creation path (upload, API, OpenSCAD,\n…) rather than carrying a synthetic \"manual\" value, so existing parts need\nno backfill. Not user-editable — it records what happened, not a preference."
              },
              "processingStatus": {
                "oneOf": [
                  {
                    "type": "null"
                  },
                  {
                    "const": "processing"
                  },
                  {
                    "const": "failed"
                  }
                ],
                "description": "Where the file's ingest (metadata extraction, thumbnails, plate split,\nestimation) stands. `null` means ready — parts that predate the ingest\nworkflow are healthy without backfill. System-set, not user-editable."
              },
              "processing": {
                "oneOf": [
                  {
                    "type": "null"
                  },
                  {
                    "type": "object",
                    "properties": {
                      "workflowKey": {
                        "type": "string",
                        "description": "The workflow run that owns this state. A retry or a file replacement\nwrites a new key first, so a superseded run's writes no longer match\nand are dropped instead of clobbering the newer run's progress."
                      },
                      "fileHash": {
                        "type": "string",
                        "title": "`fileHashes[0]` this ingest describes; replacing the file retires it",
                        "description": "`fileHashes[0]` this ingest describes; replacing the file retires it."
                      },
                      "attempt": {
                        "type": "number",
                        "description": "How many ingests this part has had before this one — a monotonic per-part\ncounter, not a per-file retry count, so no two runs can ever share a\nworkflow key. See {@link nextPartIngestAttempt }."
                      },
                      "startedAt": {
                        "type": "string"
                      },
                      "finishedAt": {
                        "type": "string"
                      },
                      "failedStage": {
                        "oneOf": [
                          {
                            "const": "fetch"
                          },
                          {
                            "const": "read-metadata"
                          },
                          {
                            "const": "thumbnails"
                          },
                          {
                            "const": "split-plates"
                          },
                          {
                            "const": "estimate"
                          }
                        ]
                      },
                      "error": {
                        "type": "string"
                      },
                      "stages": {
                        "type": "array",
                        "items": {
                          "type": "object",
                          "properties": {
                            "key": {
                              "oneOf": [
                                {
                                  "const": "fetch"
                                },
                                {
                                  "const": "read-metadata"
                                },
                                {
                                  "const": "thumbnails"
                                },
                                {
                                  "const": "split-plates"
                                },
                                {
                                  "const": "estimate"
                                }
                              ]
                            },
                            "status": {
                              "oneOf": [
                                {
                                  "const": "running"
                                },
                                {
                                  "const": "done"
                                },
                                {
                                  "const": "pending"
                                },
                                {
                                  "const": "failed"
                                },
                                {
                                  "const": "skipped"
                                }
                              ]
                            },
                            "attempts": {
                              "type": "number",
                              "title": "Times the stage has been started, so the UI can say \"retrying · attempt N\"",
                              "description": "Times the stage has been started, so the UI can say \"retrying · attempt N\"."
                            },
                            "error": {
                              "type": "string"
                            }
                          },
                          "required": [
                            "key",
                            "status"
                          ]
                        }
                      }
                    },
                    "required": [
                      "workflowKey",
                      "fileHash",
                      "attempt",
                      "startedAt",
                      "stages"
                    ]
                  }
                ],
                "title": "Per-stage ingest progress and, on failure, which stage stopped and why",
                "description": "Per-stage ingest progress and, on failure, which stage stopped and why."
              },
              "id": {
                "type": "string",
                "pattern": "^[a-z0-9]{24}$"
              },
              "storeId": {
                "type": "string",
                "pattern": "^[a-z0-9]{24}$"
              },
              "createdAt": {
                "type": "string"
              },
              "updatedAt": {
                "type": "string"
              }
            },
            "required": [
              "name",
              "type",
              "description",
              "fileUris",
              "fileHashes",
              "thumbnailUri",
              "parameters",
              "printTags",
              "overriddenProcessProfileId",
              "materials",
              "id",
              "storeId",
              "createdAt",
              "updatedAt"
            ]
          },
          "requiredPrinterTags": {
            "$ref": "#/components/schemas/Tags"
          },
          "quantity": {
            "type": "number",
            "minimum": 0,
            "maximum": 500
          },
          "numPartsPerSku": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "number"
              }
            ]
          },
          "skuInstanceStart": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "number"
              }
            ]
          },
          "parameterOverrides": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PartParameterOverride"
            }
          },
          "status": {
            "oneOf": [
              {
                "const": "pending"
              },
              {
                "const": "building"
              },
              {
                "const": "queued"
              },
              {
                "const": "fulfilling"
              },
              {
                "const": "preparing"
              },
              {
                "const": "sending-to-printer"
              },
              {
                "const": "printing"
              },
              {
                "const": "success"
              },
              {
                "const": "error"
              },
              {
                "const": "cancelled"
              }
            ]
          },
          "outputFiles": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "array",
                "items": {
                  "type": "string"
                }
              }
            ]
          },
          "thumbnailUri": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "assignmentStartedAt": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "format": "date-time"
              }
            ]
          },
          "assignmentCompletedAt": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "format": "date-time"
              }
            ]
          },
          "printingStartedAt": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "format": "date-time"
              }
            ]
          },
          "printingCompletedAt": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "format": "date-time"
              }
            ]
          },
          "printStatus": {
            "oneOf": [
              {
                "const": "pending"
              },
              {
                "const": "printing"
              },
              {
                "const": "success"
              },
              {
                "const": "error"
              },
              {
                "const": "cancelled"
              }
            ]
          },
          "extensions": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/PartBuildExtensions"
              }
            ]
          },
          "materialAssignments": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/MaterialAssignments"
              }
            ]
          },
          "priority": {
            "oneOf": [
              {
                "const": 100
              },
              {
                "const": 1000
              }
            ]
          },
          "position": {
            "oneOf": [
              {
                "const": "front"
              },
              {
                "const": "back"
              }
            ]
          },
          "orderId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "pattern": "^[a-z0-9]{24}$"
              }
            ]
          },
          "orderItemId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "pattern": "^[a-z0-9]{24}$"
              }
            ]
          },
          "linkedPartId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "pattern": "^[a-z0-9]{24}$"
              }
            ]
          },
          "dismissed": {
            "type": "boolean"
          },
          "customMetadata": {
            "$ref": "#/components/schemas/Recordstringunknown"
          },
          "id": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "storeId": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time"
          },
          "steps": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PartBuildStep"
            }
          },
          "printJobs": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PrintJob"
            }
          }
        },
        "required": [
          "partId",
          "skuBuildId",
          "skuId",
          "skuName",
          "label",
          "partCopy",
          "requiredPrinterTags",
          "quantity",
          "parameterOverrides",
          "status",
          "outputFiles",
          "thumbnailUri",
          "assignmentStartedAt",
          "assignmentCompletedAt",
          "printingStartedAt",
          "printingCompletedAt",
          "printStatus",
          "materialAssignments",
          "priority",
          "position",
          "orderId",
          "orderItemId",
          "linkedPartId",
          "dismissed",
          "id",
          "storeId",
          "createdAt",
          "updatedAt",
          "steps",
          "printJobs"
        ]
      },
      "PartBuildStep": {
        "type": "object",
        "properties": {
          "partBuildId": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "order": {
            "type": "number",
            "minimum": 0
          },
          "builder": {
            "oneOf": [
              {
                "const": "slic3r"
              },
              {
                "const": "openscad"
              },
              {
                "const": "cadquery"
              },
              {
                "const": "text3mf"
              }
            ]
          },
          "inputFiles": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "minItems": 1
          },
          "inputParameters": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/OpenSCADInputParameters"
              },
              {
                "$ref": "#/components/schemas/CadQueryInputParameters"
              },
              {
                "$ref": "#/components/schemas/Text3MFInputParameters"
              }
            ]
          },
          "inputHash": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "minLength": 1
              }
            ]
          },
          "cachedBuildStepId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "pattern": "^[a-z0-9]{24}$"
              }
            ]
          },
          "cachedOutputFile": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "outputFiles": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "minItems": 1
          },
          "status": {
            "oneOf": [
              {
                "const": "pending"
              },
              {
                "const": "running"
              },
              {
                "const": "success"
              },
              {
                "const": "error"
              },
              {
                "const": "cancelled"
              },
              {
                "const": "cached"
              },
              {
                "const": "force_running"
              }
            ]
          },
          "logs": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "requiresAssignedPrinter": {
            "type": "boolean"
          },
          "nextStepId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "pattern": "^[a-z0-9]{24}$"
              }
            ]
          },
          "startedAt": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "format": "date-time"
              }
            ]
          },
          "completedAt": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "format": "date-time"
              }
            ]
          },
          "dismissed": {
            "type": "boolean"
          },
          "id": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "storeId": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time"
          }
        },
        "required": [
          "partBuildId",
          "order",
          "builder",
          "inputFiles",
          "inputHash",
          "cachedBuildStepId",
          "cachedOutputFile",
          "outputFiles",
          "status",
          "logs",
          "requiresAssignedPrinter",
          "nextStepId",
          "startedAt",
          "completedAt",
          "dismissed",
          "id",
          "storeId",
          "createdAt",
          "updatedAt"
        ]
      },
      "OpenSCADInputParameters": {
        "type": "object",
        "properties": {
          "buildVariables": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "colors": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "index": {
                  "type": "number"
                },
                "color": {
                  "type": "string"
                },
                "type": {
                  "oneOf": [
                    {
                      "type": "null"
                    },
                    {
                      "type": "string"
                    }
                  ]
                }
              },
              "required": [
                "index",
                "color",
                "type"
              ]
            }
          }
        }
      },
      "CadQueryInputParameters": {
        "type": "object",
        "properties": {
          "params": {
            "$ref": "#/components/schemas/Recordstringany"
          },
          "mode": {
            "oneOf": [
              {
                "const": "step"
              },
              {
                "const": "script"
              }
            ],
            "title": "\"step\" tessellates the input STEP file instead of running a script",
            "description": "\"step\" tessellates the input STEP file instead of running a script."
          }
        }
      },
      "Text3MFInputParameters": {
        "type": "object",
        "properties": {
          "substitutions": {
            "$ref": "#/components/schemas/Recordstringstring",
            "title": "Slot key (a `PrintagoParam*` volume name) -> replacement text",
            "description": "Slot key (a `PrintagoParam*` volume name) -> replacement text."
          },
          "occurrenceSubstitutions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Text3MFOccurrenceSubstitution"
            },
            "title": "Instance-addressed replacements; they win over the name-keyed map",
            "description": "Instance-addressed replacements; they win over the name-keyed map."
          },
          "sizing": {
            "$ref": "#/components/schemas/RecordstringTextSlotSizing",
            "description": "Slot key -> replacement sizing policy, resolved from the part's\nparameters. Present for every key that gets substituted — whether by name\nthrough `substitutions` or per-instance through\n`occurrenceSubstitutions` — since a slot nothing is substituted into is\nnever re-rendered."
          },
          "outputFiles": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        }
      },
      "Text3MFOccurrenceSubstitution": {
        "type": "object",
        "properties": {
          "key": {
            "type": "string",
            "title": "Slot key (a `PrintagoParam*` volume name)",
            "description": "Slot key (a `PrintagoParam*` volume name)."
          },
          "objectId": {
            "type": "string",
            "title": "`model_settings.config` object id of the target object definition",
            "description": "`model_settings.config` object id of the target object definition."
          },
          "instanceId": {
            "type": "number",
            "title": "0-based instance index among the object's build items",
            "description": "0-based instance index among the object's build items."
          },
          "text": {
            "type": "string"
          }
        },
        "required": [
          "key",
          "objectId",
          "instanceId",
          "text"
        ],
        "description": "A replacement addressed to one object instance rather than to every\nvolume sharing the slot name. Multiple same-named text volumes within the\ntargeted instance all receive `text` — separate instances get separate\nentries. The engine clones a shared object definition when instances of\nit need different text."
      },
      "RecordstringTextSlotSizing": {
        "type": "object",
        "properties": {},
        "description": "Construct a type with a set of properties K of type T",
        "additionalProperties": {
          "oneOf": [
            {
              "const": "stretch",
              "title": "Fill the authored bounds exactly, distorting the glyphs if need be",
              "description": "Fill the authored bounds exactly, distorting the glyphs if need be."
            },
            {
              "const": "fit",
              "title": "Keep the authored proportions and size; shrink only to avoid overflow",
              "description": "Keep the authored proportions and size; shrink only to avoid overflow."
            },
            {
              "const": "unconstrained",
              "title": "Draw at the authored size and let a long value run past the bounds",
              "description": "Draw at the authored size and let a long value run past the bounds."
            }
          ]
        }
      },
      "partIdstringundefinedskuBuildIdstringundefinedskuIdstringundefinedskuNamestringundefinedlabelstringundefinedpartCopystringundefined...25more...updatedAtstringundefinedQuerySettings...": {
        "type": "object",
        "properties": {
          "partId": {
            "type": "string"
          },
          "skuBuildId": {
            "type": "string"
          },
          "skuId": {
            "type": "string"
          },
          "skuName": {
            "type": "string"
          },
          "label": {
            "type": "string"
          },
          "partCopy": {
            "type": "string"
          },
          "requiredPrinterTags": {
            "type": "string"
          },
          "quantity": {
            "type": "string"
          },
          "numPartsPerSku": {
            "type": "string"
          },
          "skuInstanceStart": {
            "type": "string"
          },
          "parameterOverrides": {
            "type": "string"
          },
          "status": {
            "type": "string"
          },
          "outputFiles": {
            "type": "string"
          },
          "thumbnailUri": {
            "type": "string"
          },
          "assignmentStartedAt": {
            "type": "string"
          },
          "assignmentCompletedAt": {
            "type": "string"
          },
          "printingStartedAt": {
            "type": "string"
          },
          "printingCompletedAt": {
            "type": "string"
          },
          "printStatus": {
            "type": "string"
          },
          "extensions": {
            "type": "string"
          },
          "materialAssignments": {
            "type": "string"
          },
          "priority": {
            "type": "string"
          },
          "position": {
            "type": "string"
          },
          "orderId": {
            "type": "string"
          },
          "orderItemId": {
            "type": "string"
          },
          "linkedPartId": {
            "type": "string"
          },
          "dismissed": {
            "type": "string"
          },
          "customMetadata": {
            "type": "string"
          },
          "id": {
            "type": "string"
          },
          "storeId": {
            "type": "string"
          },
          "createdAt": {
            "type": "string"
          },
          "updatedAt": {
            "type": "string"
          },
          "sort": {
            "type": "string",
            "title": "Sort",
            "description": "Sort specification in format \"field:asc,field2:desc\""
          },
          "limit": {
            "type": "number",
            "minimum": 1,
            "maximum": 1000,
            "title": "Limit",
            "description": "Maximum number of results to return (default: 1000, max: 1000)"
          },
          "offset": {
            "type": "number",
            "minimum": 0,
            "title": "Offset",
            "description": "Number of results to skip for pagination"
          },
          "fields": {
            "type": "string",
            "title": "Fields",
            "description": "Comma-separated list of fields to return"
          },
          "include": {
            "type": "string",
            "title": "Include",
            "description": "Comma-separated list of relations to include (max 4, max 2 levels deep).\nExample: \"linkedParts,linkedParts.part,folder\""
          },
          "meta": {
            "type": "boolean",
            "title": "Meta",
            "description": "If true, returns response with metadata (total, count, hasMore, etc.)"
          },
          "hints": {
            "type": "boolean",
            "title": "Hints",
            "description": "If true, returns AI-friendly hints about available actions. Implies meta=true."
          }
        }
      },
      "SearchQueryDtoPartBuild": {
        "type": "object",
        "properties": {
          "filter": {
            "$ref": "#/components/schemas/FilterConditionPartBuild",
            "title": "Filter",
            "description": "Complex filter conditions using logical and field operators.\nAvailable field operators: eq, ne, gt, gte, lt, lte, contains, startsWith, endsWith, in, notIn, isNull, between.\nUsage example: {\"filter\": {\"and\": [{\"name\": {\"contains\": \"benchy\"}}, {\"or\": [{\"type\": {\"eq\": \"3mf\"}}, {\"type\": {\"eq\": \"gcode3mf\"}}]}}}"
          },
          "sort": {
            "type": "string",
            "title": "Sort",
            "description": "Sort specification in format \"field:asc,field2:desc\""
          },
          "limit": {
            "type": "number",
            "minimum": 1,
            "maximum": 1000,
            "title": "Limit",
            "description": "Maximum number of results to return (default: 1000, max: 1000)"
          },
          "offset": {
            "type": "number",
            "minimum": 0,
            "title": "Offset",
            "description": "Number of results to skip for pagination"
          },
          "fields": {
            "type": "string",
            "title": "Fields",
            "description": "Comma-separated list of fields to return"
          },
          "include": {
            "type": "string",
            "title": "Include",
            "description": "Comma-separated list of relations to include (max 4, max 2 levels deep).\nExample: \"linkedParts,linkedParts.part,folder\""
          },
          "meta": {
            "type": "boolean",
            "title": "Meta",
            "description": "If true, returns response with metadata (total, count, hasMore, etc.)"
          },
          "hints": {
            "type": "boolean",
            "title": "Hints",
            "description": "If true, returns AI-friendly hints about available actions. Implies meta=true."
          }
        },
        "title": "Search Query",
        "description": "Complete search request with filter conditions and query settings"
      },
      "FilterConditionPartBuild": {
        "type": "object",
        "properties": {
          "and": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FilterConditionPartBuild"
            },
            "title": "AND Conditions",
            "description": "All conditions must be true"
          },
          "or": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FilterConditionPartBuild"
            },
            "title": "OR Conditions",
            "description": "At least one condition must be true"
          },
          "partId": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "skuBuildId": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "skuId": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "skuName": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "label": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "partCopy": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "requiredPrinterTags": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "quantity": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "numPartsPerSku": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "skuInstanceStart": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "parameterOverrides": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "status": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "outputFiles": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "thumbnailUri": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "assignmentStartedAt": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "assignmentCompletedAt": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "printingStartedAt": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "printingCompletedAt": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "printStatus": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "extensions": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "materialAssignments": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "priority": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "position": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "orderId": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "orderItemId": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "linkedPartId": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "dismissed": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "customMetadata": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "id": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "storeId": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "createdAt": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "updatedAt": {
            "$ref": "#/components/schemas/FieldOperators"
          }
        },
        "title": "Filter Condition",
        "description": "Root filter condition that can be either a logical condition (AND/OR) or field-based condition"
      },
      "PartBuildOperationRequest": {
        "type": "object",
        "properties": {
          "partBuildIds": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        },
        "required": [
          "partBuildIds"
        ]
      },
      "GetUsersResponse": {
        "type": "object",
        "properties": {
          "users": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/UserSummary"
            }
          },
          "total": {
            "type": "number"
          }
        },
        "required": [
          "users",
          "total"
        ]
      },
      "UserSummary": {
        "type": "object",
        "properties": {
          "userId": {
            "type": "string"
          },
          "email": {
            "type": "string"
          },
          "displayName": {
            "type": "string"
          },
          "isOwner": {
            "type": "boolean"
          },
          "roles": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "title": "Role identifiers (usually system role keys like \"operator\", or role IDs for custom roles)",
            "description": "Role identifiers (usually system role keys like \"operator\", or role IDs for custom roles)."
          },
          "permissions": {
            "type": "array",
            "items": {
              "oneOf": [
                {
                  "const": "organization.owner"
                },
                {
                  "const": "organization.edit"
                },
                {
                  "const": "organization.delete"
                },
                {
                  "const": "user.view"
                },
                {
                  "const": "user.invite"
                },
                {
                  "const": "user.edit"
                },
                {
                  "const": "user.delete"
                },
                {
                  "const": "permission.view"
                },
                {
                  "const": "permission.grant"
                },
                {
                  "const": "permission.revoke"
                },
                {
                  "const": "part.view"
                },
                {
                  "const": "part.create"
                },
                {
                  "const": "part.edit"
                },
                {
                  "const": "part.delete"
                },
                {
                  "const": "part.export"
                },
                {
                  "const": "sku.view"
                },
                {
                  "const": "sku.create"
                },
                {
                  "const": "sku.edit"
                },
                {
                  "const": "sku.delete"
                },
                {
                  "const": "material.view"
                },
                {
                  "const": "material.create"
                },
                {
                  "const": "material.edit"
                },
                {
                  "const": "material.delete"
                },
                {
                  "const": "material.instance.view"
                },
                {
                  "const": "material.instance.create"
                },
                {
                  "const": "material.instance.edit"
                },
                {
                  "const": "material.instance.delete"
                },
                {
                  "const": "printer.view"
                },
                {
                  "const": "printer.create"
                },
                {
                  "const": "printer.edit"
                },
                {
                  "const": "printer.delete"
                },
                {
                  "const": "printer.control"
                },
                {
                  "const": "printer.ready"
                },
                {
                  "const": "printer.config"
                },
                {
                  "const": "printer.stats"
                },
                {
                  "const": "printer.camera"
                },
                {
                  "const": "profile.view"
                },
                {
                  "const": "profile.create"
                },
                {
                  "const": "profile.edit"
                },
                {
                  "const": "profile.delete"
                },
                {
                  "const": "queue.view"
                },
                {
                  "const": "queue.manage"
                },
                {
                  "const": "queue.override"
                },
                {
                  "const": "job.create"
                },
                {
                  "const": "job.edit.own"
                },
                {
                  "const": "job.edit.all"
                },
                {
                  "const": "job.delete.own"
                },
                {
                  "const": "job.delete.all"
                },
                {
                  "const": "build.view"
                },
                {
                  "const": "build.create"
                },
                {
                  "const": "build.edit"
                },
                {
                  "const": "build.delete"
                },
                {
                  "const": "settings.view"
                },
                {
                  "const": "settings.edit"
                },
                {
                  "const": "integration.view"
                },
                {
                  "const": "integration.manage"
                },
                {
                  "const": "subscription.view"
                },
                {
                  "const": "subscription.manage"
                },
                {
                  "const": "analytics.view"
                },
                {
                  "const": "reports.generate"
                },
                {
                  "const": "audit.log.view"
                },
                {
                  "const": "audit.logs.configure"
                },
                {
                  "const": "order.view"
                },
                {
                  "const": "order.create"
                },
                {
                  "const": "order.edit"
                },
                {
                  "const": "order.delete"
                },
                {
                  "const": "order.print"
                },
                {
                  "const": "apiKey.view"
                },
                {
                  "const": "apiKey.create"
                },
                {
                  "const": "apiKey.edit"
                },
                {
                  "const": "apiKey.delete"
                },
                {
                  "const": "file.download"
                },
                {
                  "const": "maintenance.view"
                },
                {
                  "const": "maintenance.create"
                },
                {
                  "const": "maintenance.edit"
                },
                {
                  "const": "maintenance.delete"
                },
                {
                  "const": "maintenance.complete"
                },
                {
                  "const": "routing.manage"
                },
                {
                  "const": "customizer.manage"
                },
                {
                  "const": "macro.view"
                },
                {
                  "const": "macro.create"
                },
                {
                  "const": "macro.edit"
                },
                {
                  "const": "macro.delete"
                },
                {
                  "const": "macro.run"
                },
                {
                  "const": "card.view"
                },
                {
                  "const": "card.create"
                },
                {
                  "const": "card.edit"
                },
                {
                  "const": "card.delete"
                },
                {
                  "const": "layout.view"
                },
                {
                  "const": "layout.create"
                },
                {
                  "const": "layout.edit"
                },
                {
                  "const": "layout.delete"
                },
                {
                  "const": "classwork.viewer"
                },
                {
                  "const": "classwork.editor"
                },
                {
                  "const": "sequence.view"
                },
                {
                  "const": "sequence.edit"
                },
                {
                  "const": "qr.scan"
                },
                {
                  "const": "qr.manage"
                },
                {
                  "const": "internal.shopify"
                },
                {
                  "const": "queue.admin"
                },
                {
                  "const": "part.viewer"
                },
                {
                  "const": "part.editor"
                },
                {
                  "const": "sku.viewer"
                },
                {
                  "const": "sku.editor"
                },
                {
                  "const": "orders.admin"
                },
                {
                  "const": "material.viewer"
                },
                {
                  "const": "material.editor"
                },
                {
                  "const": "printer.viewer"
                },
                {
                  "const": "printer.editor"
                },
                {
                  "const": "profile.viewer"
                },
                {
                  "const": "profile.editor"
                },
                {
                  "const": "settings.admin"
                },
                {
                  "const": "subscription.admin"
                }
              ]
            }
          },
          "lastActive": {
            "type": "string",
            "format": "date-time"
          },
          "status": {
            "oneOf": [
              {
                "const": "active"
              },
              {
                "const": "invited"
              },
              {
                "const": "inactive"
              },
              {
                "const": "expired"
              }
            ]
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "invitationId": {
            "type": "string",
            "title": "Present only for invited/expired rows",
            "description": "Present only for invited/expired rows."
          },
          "expiresAt": {
            "type": "string",
            "title": "Invitation expiry date (invited/expired rows only)",
            "description": "Invitation expiry date (invited/expired rows only).",
            "format": "date-time"
          },
          "invitedByEmail": {
            "type": "string",
            "title": "Email of the person who sent the invitation",
            "description": "Email of the person who sent the invitation."
          }
        },
        "required": [
          "email",
          "isOwner",
          "roles",
          "permissions",
          "status",
          "createdAt"
        ]
      },
      "UserDetails": {
        "type": "object",
        "properties": {
          "activityLog": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ActivityLogEntry"
            }
          },
          "userId": {
            "type": "string"
          },
          "email": {
            "type": "string"
          },
          "displayName": {
            "type": "string"
          },
          "isOwner": {
            "type": "boolean"
          },
          "roles": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "title": "Role identifiers (usually system role keys like \"operator\", or role IDs for custom roles)",
            "description": "Role identifiers (usually system role keys like \"operator\", or role IDs for custom roles)."
          },
          "permissions": {
            "type": "array",
            "items": {
              "oneOf": [
                {
                  "const": "organization.owner"
                },
                {
                  "const": "organization.edit"
                },
                {
                  "const": "organization.delete"
                },
                {
                  "const": "user.view"
                },
                {
                  "const": "user.invite"
                },
                {
                  "const": "user.edit"
                },
                {
                  "const": "user.delete"
                },
                {
                  "const": "permission.view"
                },
                {
                  "const": "permission.grant"
                },
                {
                  "const": "permission.revoke"
                },
                {
                  "const": "part.view"
                },
                {
                  "const": "part.create"
                },
                {
                  "const": "part.edit"
                },
                {
                  "const": "part.delete"
                },
                {
                  "const": "part.export"
                },
                {
                  "const": "sku.view"
                },
                {
                  "const": "sku.create"
                },
                {
                  "const": "sku.edit"
                },
                {
                  "const": "sku.delete"
                },
                {
                  "const": "material.view"
                },
                {
                  "const": "material.create"
                },
                {
                  "const": "material.edit"
                },
                {
                  "const": "material.delete"
                },
                {
                  "const": "material.instance.view"
                },
                {
                  "const": "material.instance.create"
                },
                {
                  "const": "material.instance.edit"
                },
                {
                  "const": "material.instance.delete"
                },
                {
                  "const": "printer.view"
                },
                {
                  "const": "printer.create"
                },
                {
                  "const": "printer.edit"
                },
                {
                  "const": "printer.delete"
                },
                {
                  "const": "printer.control"
                },
                {
                  "const": "printer.ready"
                },
                {
                  "const": "printer.config"
                },
                {
                  "const": "printer.stats"
                },
                {
                  "const": "printer.camera"
                },
                {
                  "const": "profile.view"
                },
                {
                  "const": "profile.create"
                },
                {
                  "const": "profile.edit"
                },
                {
                  "const": "profile.delete"
                },
                {
                  "const": "queue.view"
                },
                {
                  "const": "queue.manage"
                },
                {
                  "const": "queue.override"
                },
                {
                  "const": "job.create"
                },
                {
                  "const": "job.edit.own"
                },
                {
                  "const": "job.edit.all"
                },
                {
                  "const": "job.delete.own"
                },
                {
                  "const": "job.delete.all"
                },
                {
                  "const": "build.view"
                },
                {
                  "const": "build.create"
                },
                {
                  "const": "build.edit"
                },
                {
                  "const": "build.delete"
                },
                {
                  "const": "settings.view"
                },
                {
                  "const": "settings.edit"
                },
                {
                  "const": "integration.view"
                },
                {
                  "const": "integration.manage"
                },
                {
                  "const": "subscription.view"
                },
                {
                  "const": "subscription.manage"
                },
                {
                  "const": "analytics.view"
                },
                {
                  "const": "reports.generate"
                },
                {
                  "const": "audit.log.view"
                },
                {
                  "const": "audit.logs.configure"
                },
                {
                  "const": "order.view"
                },
                {
                  "const": "order.create"
                },
                {
                  "const": "order.edit"
                },
                {
                  "const": "order.delete"
                },
                {
                  "const": "order.print"
                },
                {
                  "const": "apiKey.view"
                },
                {
                  "const": "apiKey.create"
                },
                {
                  "const": "apiKey.edit"
                },
                {
                  "const": "apiKey.delete"
                },
                {
                  "const": "file.download"
                },
                {
                  "const": "maintenance.view"
                },
                {
                  "const": "maintenance.create"
                },
                {
                  "const": "maintenance.edit"
                },
                {
                  "const": "maintenance.delete"
                },
                {
                  "const": "maintenance.complete"
                },
                {
                  "const": "routing.manage"
                },
                {
                  "const": "customizer.manage"
                },
                {
                  "const": "macro.view"
                },
                {
                  "const": "macro.create"
                },
                {
                  "const": "macro.edit"
                },
                {
                  "const": "macro.delete"
                },
                {
                  "const": "macro.run"
                },
                {
                  "const": "card.view"
                },
                {
                  "const": "card.create"
                },
                {
                  "const": "card.edit"
                },
                {
                  "const": "card.delete"
                },
                {
                  "const": "layout.view"
                },
                {
                  "const": "layout.create"
                },
                {
                  "const": "layout.edit"
                },
                {
                  "const": "layout.delete"
                },
                {
                  "const": "classwork.viewer"
                },
                {
                  "const": "classwork.editor"
                },
                {
                  "const": "sequence.view"
                },
                {
                  "const": "sequence.edit"
                },
                {
                  "const": "qr.scan"
                },
                {
                  "const": "qr.manage"
                },
                {
                  "const": "internal.shopify"
                },
                {
                  "const": "queue.admin"
                },
                {
                  "const": "part.viewer"
                },
                {
                  "const": "part.editor"
                },
                {
                  "const": "sku.viewer"
                },
                {
                  "const": "sku.editor"
                },
                {
                  "const": "orders.admin"
                },
                {
                  "const": "material.viewer"
                },
                {
                  "const": "material.editor"
                },
                {
                  "const": "printer.viewer"
                },
                {
                  "const": "printer.editor"
                },
                {
                  "const": "profile.viewer"
                },
                {
                  "const": "profile.editor"
                },
                {
                  "const": "settings.admin"
                },
                {
                  "const": "subscription.admin"
                }
              ]
            }
          },
          "lastActive": {
            "type": "string",
            "format": "date-time"
          },
          "status": {
            "oneOf": [
              {
                "const": "active"
              },
              {
                "const": "invited"
              },
              {
                "const": "inactive"
              },
              {
                "const": "expired"
              }
            ]
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "invitationId": {
            "type": "string",
            "title": "Present only for invited/expired rows",
            "description": "Present only for invited/expired rows."
          },
          "expiresAt": {
            "type": "string",
            "title": "Invitation expiry date (invited/expired rows only)",
            "description": "Invitation expiry date (invited/expired rows only).",
            "format": "date-time"
          },
          "invitedByEmail": {
            "type": "string",
            "title": "Email of the person who sent the invitation",
            "description": "Email of the person who sent the invitation."
          }
        },
        "required": [
          "activityLog",
          "email",
          "isOwner",
          "roles",
          "permissions",
          "status",
          "createdAt"
        ]
      },
      "ActivityLogEntry": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "action": {
            "type": "string"
          },
          "timestamp": {
            "type": "string",
            "format": "date-time"
          },
          "details": {
            "type": "string"
          }
        },
        "required": [
          "id",
          "action",
          "timestamp"
        ]
      },
      "InviteUserResponse": {
        "type": "object",
        "properties": {
          "invitationId": {
            "type": "string"
          },
          "email": {
            "type": "string"
          },
          "expiresAt": {
            "type": "string",
            "format": "date-time"
          }
        },
        "required": [
          "invitationId",
          "email",
          "expiresAt"
        ]
      },
      "InviteUserRequest": {
        "type": "object",
        "properties": {
          "email": {
            "type": "string",
            "format": "email"
          },
          "roleId": {
            "type": "string"
          },
          "permissions": {
            "type": "array",
            "items": {
              "oneOf": [
                {
                  "const": "organization.owner"
                },
                {
                  "const": "organization.edit"
                },
                {
                  "const": "organization.delete"
                },
                {
                  "const": "user.view"
                },
                {
                  "const": "user.invite"
                },
                {
                  "const": "user.edit"
                },
                {
                  "const": "user.delete"
                },
                {
                  "const": "permission.view"
                },
                {
                  "const": "permission.grant"
                },
                {
                  "const": "permission.revoke"
                },
                {
                  "const": "part.view"
                },
                {
                  "const": "part.create"
                },
                {
                  "const": "part.edit"
                },
                {
                  "const": "part.delete"
                },
                {
                  "const": "part.export"
                },
                {
                  "const": "sku.view"
                },
                {
                  "const": "sku.create"
                },
                {
                  "const": "sku.edit"
                },
                {
                  "const": "sku.delete"
                },
                {
                  "const": "material.view"
                },
                {
                  "const": "material.create"
                },
                {
                  "const": "material.edit"
                },
                {
                  "const": "material.delete"
                },
                {
                  "const": "material.instance.view"
                },
                {
                  "const": "material.instance.create"
                },
                {
                  "const": "material.instance.edit"
                },
                {
                  "const": "material.instance.delete"
                },
                {
                  "const": "printer.view"
                },
                {
                  "const": "printer.create"
                },
                {
                  "const": "printer.edit"
                },
                {
                  "const": "printer.delete"
                },
                {
                  "const": "printer.control"
                },
                {
                  "const": "printer.ready"
                },
                {
                  "const": "printer.config"
                },
                {
                  "const": "printer.stats"
                },
                {
                  "const": "printer.camera"
                },
                {
                  "const": "profile.view"
                },
                {
                  "const": "profile.create"
                },
                {
                  "const": "profile.edit"
                },
                {
                  "const": "profile.delete"
                },
                {
                  "const": "queue.view"
                },
                {
                  "const": "queue.manage"
                },
                {
                  "const": "queue.override"
                },
                {
                  "const": "job.create"
                },
                {
                  "const": "job.edit.own"
                },
                {
                  "const": "job.edit.all"
                },
                {
                  "const": "job.delete.own"
                },
                {
                  "const": "job.delete.all"
                },
                {
                  "const": "build.view"
                },
                {
                  "const": "build.create"
                },
                {
                  "const": "build.edit"
                },
                {
                  "const": "build.delete"
                },
                {
                  "const": "settings.view"
                },
                {
                  "const": "settings.edit"
                },
                {
                  "const": "integration.view"
                },
                {
                  "const": "integration.manage"
                },
                {
                  "const": "subscription.view"
                },
                {
                  "const": "subscription.manage"
                },
                {
                  "const": "analytics.view"
                },
                {
                  "const": "reports.generate"
                },
                {
                  "const": "audit.log.view"
                },
                {
                  "const": "audit.logs.configure"
                },
                {
                  "const": "order.view"
                },
                {
                  "const": "order.create"
                },
                {
                  "const": "order.edit"
                },
                {
                  "const": "order.delete"
                },
                {
                  "const": "order.print"
                },
                {
                  "const": "apiKey.view"
                },
                {
                  "const": "apiKey.create"
                },
                {
                  "const": "apiKey.edit"
                },
                {
                  "const": "apiKey.delete"
                },
                {
                  "const": "file.download"
                },
                {
                  "const": "maintenance.view"
                },
                {
                  "const": "maintenance.create"
                },
                {
                  "const": "maintenance.edit"
                },
                {
                  "const": "maintenance.delete"
                },
                {
                  "const": "maintenance.complete"
                },
                {
                  "const": "routing.manage"
                },
                {
                  "const": "customizer.manage"
                },
                {
                  "const": "macro.view"
                },
                {
                  "const": "macro.create"
                },
                {
                  "const": "macro.edit"
                },
                {
                  "const": "macro.delete"
                },
                {
                  "const": "macro.run"
                },
                {
                  "const": "card.view"
                },
                {
                  "const": "card.create"
                },
                {
                  "const": "card.edit"
                },
                {
                  "const": "card.delete"
                },
                {
                  "const": "layout.view"
                },
                {
                  "const": "layout.create"
                },
                {
                  "const": "layout.edit"
                },
                {
                  "const": "layout.delete"
                },
                {
                  "const": "classwork.viewer"
                },
                {
                  "const": "classwork.editor"
                },
                {
                  "const": "sequence.view"
                },
                {
                  "const": "sequence.edit"
                },
                {
                  "const": "qr.scan"
                },
                {
                  "const": "qr.manage"
                },
                {
                  "const": "internal.shopify"
                },
                {
                  "const": "queue.admin"
                },
                {
                  "const": "part.viewer"
                },
                {
                  "const": "part.editor"
                },
                {
                  "const": "sku.viewer"
                },
                {
                  "const": "sku.editor"
                },
                {
                  "const": "orders.admin"
                },
                {
                  "const": "material.viewer"
                },
                {
                  "const": "material.editor"
                },
                {
                  "const": "printer.viewer"
                },
                {
                  "const": "printer.editor"
                },
                {
                  "const": "profile.viewer"
                },
                {
                  "const": "profile.editor"
                },
                {
                  "const": "settings.admin"
                },
                {
                  "const": "subscription.admin"
                }
              ]
            }
          }
        },
        "required": [
          "email"
        ]
      },
      "RemoveUserRequest": {
        "type": "object",
        "properties": {
          "userId": {
            "type": "string"
          },
          "transferOwnershipTo": {
            "type": "string"
          }
        },
        "required": [
          "userId"
        ]
      },
      "BulkUpdateUsersResponse": {
        "type": "object",
        "properties": {
          "succeeded": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "failed": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "userId": {
                  "type": "string"
                },
                "error": {
                  "type": "string"
                }
              },
              "required": [
                "userId",
                "error"
              ]
            }
          }
        },
        "required": [
          "succeeded",
          "failed"
        ]
      },
      "BulkUpdateUsersRequest": {
        "type": "object",
        "properties": {
          "userIds": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "operation": {
            "const": "remove"
          },
          "roleId": {
            "type": "string"
          },
          "permissions": {
            "type": "array",
            "items": {
              "oneOf": [
                {
                  "const": "organization.owner"
                },
                {
                  "const": "organization.edit"
                },
                {
                  "const": "organization.delete"
                },
                {
                  "const": "user.view"
                },
                {
                  "const": "user.invite"
                },
                {
                  "const": "user.edit"
                },
                {
                  "const": "user.delete"
                },
                {
                  "const": "permission.view"
                },
                {
                  "const": "permission.grant"
                },
                {
                  "const": "permission.revoke"
                },
                {
                  "const": "part.view"
                },
                {
                  "const": "part.create"
                },
                {
                  "const": "part.edit"
                },
                {
                  "const": "part.delete"
                },
                {
                  "const": "part.export"
                },
                {
                  "const": "sku.view"
                },
                {
                  "const": "sku.create"
                },
                {
                  "const": "sku.edit"
                },
                {
                  "const": "sku.delete"
                },
                {
                  "const": "material.view"
                },
                {
                  "const": "material.create"
                },
                {
                  "const": "material.edit"
                },
                {
                  "const": "material.delete"
                },
                {
                  "const": "material.instance.view"
                },
                {
                  "const": "material.instance.create"
                },
                {
                  "const": "material.instance.edit"
                },
                {
                  "const": "material.instance.delete"
                },
                {
                  "const": "printer.view"
                },
                {
                  "const": "printer.create"
                },
                {
                  "const": "printer.edit"
                },
                {
                  "const": "printer.delete"
                },
                {
                  "const": "printer.control"
                },
                {
                  "const": "printer.ready"
                },
                {
                  "const": "printer.config"
                },
                {
                  "const": "printer.stats"
                },
                {
                  "const": "printer.camera"
                },
                {
                  "const": "profile.view"
                },
                {
                  "const": "profile.create"
                },
                {
                  "const": "profile.edit"
                },
                {
                  "const": "profile.delete"
                },
                {
                  "const": "queue.view"
                },
                {
                  "const": "queue.manage"
                },
                {
                  "const": "queue.override"
                },
                {
                  "const": "job.create"
                },
                {
                  "const": "job.edit.own"
                },
                {
                  "const": "job.edit.all"
                },
                {
                  "const": "job.delete.own"
                },
                {
                  "const": "job.delete.all"
                },
                {
                  "const": "build.view"
                },
                {
                  "const": "build.create"
                },
                {
                  "const": "build.edit"
                },
                {
                  "const": "build.delete"
                },
                {
                  "const": "settings.view"
                },
                {
                  "const": "settings.edit"
                },
                {
                  "const": "integration.view"
                },
                {
                  "const": "integration.manage"
                },
                {
                  "const": "subscription.view"
                },
                {
                  "const": "subscription.manage"
                },
                {
                  "const": "analytics.view"
                },
                {
                  "const": "reports.generate"
                },
                {
                  "const": "audit.log.view"
                },
                {
                  "const": "audit.logs.configure"
                },
                {
                  "const": "order.view"
                },
                {
                  "const": "order.create"
                },
                {
                  "const": "order.edit"
                },
                {
                  "const": "order.delete"
                },
                {
                  "const": "order.print"
                },
                {
                  "const": "apiKey.view"
                },
                {
                  "const": "apiKey.create"
                },
                {
                  "const": "apiKey.edit"
                },
                {
                  "const": "apiKey.delete"
                },
                {
                  "const": "file.download"
                },
                {
                  "const": "maintenance.view"
                },
                {
                  "const": "maintenance.create"
                },
                {
                  "const": "maintenance.edit"
                },
                {
                  "const": "maintenance.delete"
                },
                {
                  "const": "maintenance.complete"
                },
                {
                  "const": "routing.manage"
                },
                {
                  "const": "customizer.manage"
                },
                {
                  "const": "macro.view"
                },
                {
                  "const": "macro.create"
                },
                {
                  "const": "macro.edit"
                },
                {
                  "const": "macro.delete"
                },
                {
                  "const": "macro.run"
                },
                {
                  "const": "card.view"
                },
                {
                  "const": "card.create"
                },
                {
                  "const": "card.edit"
                },
                {
                  "const": "card.delete"
                },
                {
                  "const": "layout.view"
                },
                {
                  "const": "layout.create"
                },
                {
                  "const": "layout.edit"
                },
                {
                  "const": "layout.delete"
                },
                {
                  "const": "classwork.viewer"
                },
                {
                  "const": "classwork.editor"
                },
                {
                  "const": "sequence.view"
                },
                {
                  "const": "sequence.edit"
                },
                {
                  "const": "qr.scan"
                },
                {
                  "const": "qr.manage"
                },
                {
                  "const": "internal.shopify"
                },
                {
                  "const": "queue.admin"
                },
                {
                  "const": "part.viewer"
                },
                {
                  "const": "part.editor"
                },
                {
                  "const": "sku.viewer"
                },
                {
                  "const": "sku.editor"
                },
                {
                  "const": "orders.admin"
                },
                {
                  "const": "material.viewer"
                },
                {
                  "const": "material.editor"
                },
                {
                  "const": "printer.viewer"
                },
                {
                  "const": "printer.editor"
                },
                {
                  "const": "profile.viewer"
                },
                {
                  "const": "profile.editor"
                },
                {
                  "const": "settings.admin"
                },
                {
                  "const": "subscription.admin"
                }
              ]
            }
          }
        },
        "required": [
          "userIds",
          "operation"
        ]
      },
      "SkuBuildWithRelation": {
        "type": "object",
        "properties": {
          "skuId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "pattern": "^[a-z0-9]{24}$"
              }
            ]
          },
          "skuCopy": {
            "type": "object",
            "properties": {
              "sku": {
                "type": "string",
                "minLength": 1,
                "maxLength": 1024
              },
              "title": {
                "type": "string"
              },
              "description": {
                "type": "string"
              },
              "externalId": {
                "oneOf": [
                  {
                    "type": "null"
                  },
                  {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 1024
                  }
                ]
              },
              "externalProvider": {
                "oneOf": [
                  {
                    "type": "null"
                  },
                  {
                    "const": "etsy"
                  },
                  {
                    "const": "shopify"
                  }
                ]
              },
              "folderId": {
                "oneOf": [
                  {
                    "type": "null"
                  },
                  {
                    "type": "string",
                    "pattern": "^[a-z0-9]{24}$"
                  }
                ]
              },
              "totalCogs": {
                "type": "number"
              },
              "customMetadata": {
                "type": "object",
                "properties": {},
                "additionalProperties": {}
              },
              "id": {
                "type": "string",
                "pattern": "^[a-z0-9]{24}$"
              },
              "storeId": {
                "type": "string",
                "pattern": "^[a-z0-9]{24}$"
              },
              "createdAt": {
                "type": "string"
              },
              "updatedAt": {
                "type": "string"
              }
            },
            "required": [
              "sku",
              "title",
              "description",
              "externalId",
              "externalProvider",
              "totalCogs",
              "id",
              "storeId",
              "createdAt",
              "updatedAt"
            ]
          },
          "status": {
            "oneOf": [
              {
                "const": "pending"
              },
              {
                "const": "running"
              },
              {
                "const": "success"
              },
              {
                "const": "error"
              },
              {
                "const": "cancelled"
              }
            ]
          },
          "skuInstanceStart": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "number"
              }
            ]
          },
          "orderId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "pattern": "^[a-z0-9]{24}$"
              }
            ]
          },
          "orderItemId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "pattern": "^[a-z0-9]{24}$"
              }
            ]
          },
          "priority": {
            "oneOf": [
              {
                "const": 100
              },
              {
                "const": 1000
              }
            ]
          },
          "selectedOptions": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/Recordstringstringnull"
              }
            ]
          },
          "id": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "storeId": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time"
          },
          "partBuilds": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PartBuildPrintJobsRelationPartBuildStepRelation"
            }
          }
        },
        "required": [
          "skuId",
          "skuCopy",
          "status",
          "orderId",
          "orderItemId",
          "priority",
          "id",
          "storeId",
          "createdAt",
          "updatedAt",
          "partBuilds"
        ]
      },
      "PartBuildPrintJobsRelationPartBuildStepRelation": {
        "type": "object",
        "properties": {
          "partId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "pattern": "^[a-z0-9]{24}$"
              }
            ]
          },
          "skuBuildId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "pattern": "^[a-z0-9]{24}$"
              }
            ]
          },
          "skuId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "pattern": "^[a-z0-9]{24}$"
              }
            ]
          },
          "skuName": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "minLength": 1,
                "maxLength": 1024
              }
            ]
          },
          "label": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "minLength": 1,
                "maxLength": 1024
              }
            ]
          },
          "partCopy": {
            "type": "object",
            "properties": {
              "name": {
                "type": "string",
                "minLength": 1,
                "maxLength": 1024
              },
              "type": {
                "oneOf": [
                  {
                    "const": "scad"
                  },
                  {
                    "const": "cadquery"
                  },
                  {
                    "const": "build123d"
                  },
                  {
                    "const": "stl"
                  },
                  {
                    "const": "step"
                  },
                  {
                    "const": "3mf"
                  },
                  {
                    "const": "gcode3mf"
                  },
                  {
                    "const": "gcode"
                  }
                ]
              },
              "description": {
                "type": "string",
                "default": ""
              },
              "fileUris": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "fileHashes": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "thumbnailUri": {
                "oneOf": [
                  {
                    "type": "null"
                  },
                  {
                    "type": "string"
                  }
                ]
              },
              "parameters": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "default": {
                      "oneOf": [
                        {
                          "type": "number"
                        },
                        {
                          "type": "string",
                          "minLength": 0,
                          "maxLength": 255
                        },
                        {
                          "type": "boolean"
                        }
                      ]
                    },
                    "options": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "value": {
                            "oneOf": [
                              {
                                "type": "string"
                              },
                              {
                                "type": "number"
                              }
                            ]
                          },
                          "label": {
                            "type": "string"
                          }
                        },
                        "required": [
                          "value"
                        ]
                      }
                    },
                    "description": {
                      "type": "string"
                    },
                    "min": {
                      "type": "number"
                    },
                    "max": {
                      "type": "number"
                    },
                    "step": {
                      "type": "number"
                    },
                    "acceptedContentTypes": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "description": "File-parameter-only fields (populated when\n`type === PartParameterVariableType.File`). Kept optional on the\nshared interface so scalar-parameter call sites do not need\nunion-narrowing. See `FilePartParameter` for the strict shape.\n\n`acceptedContentTypes` is intentionally an OPEN `string[]` (not a\nnarrow union). The customizer emits SVG, but Etsy attachments and\ndirect API order ingestion can carry ANY mime type (PNG / JPG / PDF /\nAI / etc). Builders enforce kind constraints; the shared type stays\nopen."
                    },
                    "multiple": {
                      "type": "boolean",
                      "description": "Whether the slot accepts >1 file. Reserved for forward compat — the\nPhase 5 resolver assumes single-file per slot for v1."
                    },
                    "defaultUri": {
                      "type": "string",
                      "title": "Optional fallback file URI (e.g. a known SVG in storage)",
                      "description": "Optional fallback file URI (e.g. a known SVG in storage)."
                    },
                    "label": {
                      "type": "string",
                      "maxLength": 255,
                      "description": "What the parameter is shown under wherever a customer or an operator\nfills it in; `name` stays the key everything binds by (SKU options,\norder inputs, build overrides, and — for a 3MF text slot — the text\nvolume the substitution travels to). A parameter without one is shown\nunder its name.\n\nThis interface is the one the API's request validators are generated\nfrom, and it is a second declaration of the shape in\n`../part/parameter`. A field added to only one of them is accepted by\nthe code and then pruned off the wire."
                    },
                    "serialReuse": {
                      "oneOf": [
                        {
                          "const": "share",
                          "title": "One serial per plate print, applied to every matching occurrence",
                          "description": "One serial per plate print, applied to every matching occurrence."
                        },
                        {
                          "const": "increment",
                          "title": "The next serial for each matching object instance on the plate",
                          "description": "The next serial for each matching object instance on the plate."
                        }
                      ],
                      "description": "For a 3MF text-slot parameter bound to a sequence: whether occurrences\nrepeated on one plate share a serial or each consume the next one.\nAbsent means {@link TextSlotSerialReuse.Share }, today's duplicate-name\nmeaning."
                    },
                    "sizing": {
                      "oneOf": [
                        {
                          "const": "stretch",
                          "title": "Fill the authored bounds exactly, distorting the glyphs if need be",
                          "description": "Fill the authored bounds exactly, distorting the glyphs if need be."
                        },
                        {
                          "const": "fit",
                          "title": "Keep the authored proportions and size; shrink only to avoid overflow",
                          "description": "Keep the authored proportions and size; shrink only to avoid overflow."
                        },
                        {
                          "const": "unconstrained",
                          "title": "Draw at the authored size and let a long value run past the bounds",
                          "description": "Draw at the authored size and let a long value run past the bounds."
                        }
                      ],
                      "description": "3MF text placeholders only: how a substituted value is sized against the\nbounds of the text volume it replaces. Absent means \"fit within bounds\",\nwhich is what every part declared before the setting existed carries.\nDeclared on this shape as well as on `../part/parameter` for the reason\n`label` is — the API's request validators are generated from this one,\nand a field on only the other is pruned off the wire."
                    },
                    "name": {
                      "type": "string",
                      "minLength": 1,
                      "maxLength": 255
                    },
                    "type": {
                      "oneOf": [
                        {
                          "const": "number"
                        },
                        {
                          "const": "string"
                        },
                        {
                          "const": "boolean"
                        },
                        {
                          "const": "file"
                        }
                      ]
                    },
                    "value": {
                      "oneOf": [
                        {
                          "type": "number"
                        },
                        {
                          "type": "string",
                          "minLength": 0,
                          "maxLength": 255
                        },
                        {
                          "type": "boolean"
                        }
                      ]
                    }
                  },
                  "required": [
                    "name",
                    "type"
                  ]
                }
              },
              "printTags": {
                "type": "object",
                "properties": {
                  "printer.provider": {
                    "type": "string",
                    "minLength": 1
                  },
                  "printer.id": {
                    "type": "string",
                    "minLength": 1
                  },
                  "printer.nozzleDiameter": {
                    "type": "string",
                    "minLength": 1
                  },
                  "printer.modelName": {
                    "type": "string",
                    "minLength": 1
                  },
                  "filament.type": {
                    "type": "string",
                    "minLength": 1
                  },
                  "user.tags": {
                    "type": "string",
                    "minLength": 1
                  }
                }
              },
              "overriddenProcessProfileId": {
                "oneOf": [
                  {
                    "type": "null"
                  },
                  {
                    "type": "string",
                    "pattern": "^[a-z0-9]{24}$"
                  }
                ]
              },
              "folderId": {
                "oneOf": [
                  {
                    "type": "null"
                  },
                  {
                    "type": "string",
                    "pattern": "^[a-z0-9]{24}$"
                  }
                ]
              },
              "materials": {
                "oneOf": [
                  {
                    "type": "null"
                  },
                  {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "index": {
                          "type": "number",
                          "minimum": 0
                        },
                        "color": {
                          "oneOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string",
                              "pattern": "^#{0,1}[0-9A-F]{6}|[0-9A-F]{8}$"
                            }
                          ]
                        },
                        "type": {
                          "oneOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "skip": {
                          "type": "boolean"
                        },
                        "name": {
                          "oneOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        },
                        "identifier": {
                          "oneOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "string"
                            }
                          ]
                        }
                      },
                      "required": [
                        "index",
                        "color",
                        "type"
                      ]
                    }
                  }
                ]
              },
              "slicerOverride": {
                "oneOf": [
                  {
                    "type": "null"
                  },
                  {
                    "type": "string"
                  }
                ]
              },
              "metadata": {
                "oneOf": [
                  {
                    "type": "null"
                  },
                  {
                    "type": "object",
                    "properties": {
                      "printerModel": {
                        "type": "string"
                      },
                      "filamentType": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        }
                      },
                      "filamentColors": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        }
                      },
                      "filamentDensities": {
                        "type": "array",
                        "items": {
                          "type": "number"
                        }
                      },
                      "filamentDiameters": {
                        "type": "array",
                        "items": {
                          "type": "number"
                        }
                      },
                      "nozzleDiameter": {
                        "type": "string"
                      },
                      "profileCompat": {
                        "type": "object",
                        "properties": {
                          "sliced": {
                            "type": "string"
                          },
                          "compatible": {
                            "type": "array",
                            "items": {
                              "type": "string"
                            }
                          },
                          "safe": {
                            "type": "array",
                            "items": {
                              "type": "string"
                            }
                          }
                        },
                        "required": [
                          "sliced",
                          "compatible",
                          "safe"
                        ]
                      },
                      "slicerVersion": {
                        "oneOf": [
                          {
                            "type": "null"
                          },
                          {
                            "type": "object",
                            "properties": {
                              "engine": {
                                "oneOf": [
                                  {
                                    "const": "orcaslicer"
                                  },
                                  {
                                    "const": "bambu-studio"
                                  },
                                  {
                                    "const": "prusaslicer"
                                  },
                                  {
                                    "const": "superslicer"
                                  }
                                ]
                              },
                              "version": {
                                "type": "string"
                              }
                            },
                            "required": [
                              "engine",
                              "version"
                            ]
                          }
                        ]
                      },
                      "plates": {
                        "type": "array",
                        "items": {
                          "type": "object",
                          "properties": {
                            "id": {
                              "type": "number"
                            },
                            "name": {
                              "type": "string"
                            },
                            "locked": {
                              "type": "boolean"
                            },
                            "filamentMapMode": {
                              "type": "string"
                            },
                            "filamentMaps": {
                              "type": "array",
                              "items": {
                                "type": "number"
                              }
                            },
                            "gcodeFile": {
                              "type": "string"
                            },
                            "thumbnailFile": {
                              "type": "string"
                            },
                            "thumbnailUploadedUri": {
                              "type": "string",
                              "title": "The archive's own plate preview, copied out at metadata-extraction time",
                              "description": "The archive's own plate preview, copied out at metadata-extraction time."
                            },
                            "thumbnailRenderedUri": {
                              "type": "string",
                              "description": "The plate re-rendered by the three.js builder. Written by a different\nflow, and to a different storage path, than the archive copy above — a\nlater metadata reprocess re-copies the archive image and must not be able\nto overwrite this. Prefer it over `thumbnailUploadedUri`\n(see `plateThumbnailUri`)."
                            },
                            "thumbnailNoLightFile": {
                              "type": "string"
                            },
                            "thumbnailData": {
                              "type": "string"
                            },
                            "topFile": {
                              "type": "string"
                            },
                            "pickFile": {
                              "type": "string"
                            },
                            "topData": {
                              "type": "string",
                              "title": "Base64 PNG data for the top/pick images, staged before upload then cleared",
                              "description": "Base64 PNG data for the top/pick images, staged before upload then cleared."
                            },
                            "pickData": {
                              "type": "string"
                            },
                            "topUploadedUri": {
                              "type": "string",
                              "title": "Uploaded URIs for the plate's top-down image and color-coded object pick mask",
                              "description": "Uploaded URIs for the plate's top-down image and color-coded object pick mask.\nUsed by the visual skip-objects picker."
                            },
                            "pickUploadedUri": {
                              "type": "string"
                            },
                            "patternBboxFile": {
                              "type": "string"
                            },
                            "sliced": {
                              "type": "object",
                              "properties": {
                                "index": {
                                  "type": "number"
                                },
                                "extruderType": {
                                  "type": "string"
                                },
                                "nozzleVolumeType": {
                                  "type": "string"
                                },
                                "printerModelId": {
                                  "type": "string"
                                },
                                "nozzleDiameters": {
                                  "type": "string"
                                },
                                "timelapseType": {
                                  "type": "string"
                                },
                                "prediction": {
                                  "type": "number"
                                },
                                "weight": {
                                  "type": "number"
                                },
                                "outside": {
                                  "type": "boolean"
                                },
                                "supportUsed": {
                                  "type": "boolean"
                                },
                                "labelObjectEnabled": {
                                  "type": "boolean"
                                },
                                "filamentMaps": {
                                  "type": "string"
                                },
                                "objects": {
                                  "type": "array",
                                  "items": {
                                    "type": "object",
                                    "properties": {
                                      "identifyId": {
                                        "type": "string"
                                      },
                                      "name": {
                                        "type": "string"
                                      },
                                      "skipped": {
                                        "type": "boolean"
                                      }
                                    },
                                    "required": [
                                      "identifyId",
                                      "name",
                                      "skipped"
                                    ]
                                  }
                                },
                                "filaments": {
                                  "type": "array",
                                  "items": {
                                    "type": "object",
                                    "properties": {
                                      "id": {
                                        "type": "string"
                                      },
                                      "trayInfoIdx": {
                                        "type": "string"
                                      },
                                      "type": {
                                        "type": "string"
                                      },
                                      "color": {
                                        "type": "string"
                                      },
                                      "usedM": {
                                        "type": "number"
                                      },
                                      "usedG": {
                                        "type": "number"
                                      }
                                    },
                                    "required": [
                                      "id",
                                      "trayInfoIdx",
                                      "type",
                                      "color",
                                      "usedM",
                                      "usedG"
                                    ]
                                  }
                                },
                                "warnings": {
                                  "type": "array",
                                  "items": {
                                    "type": "object",
                                    "properties": {
                                      "msg": {
                                        "type": "string"
                                      },
                                      "level": {
                                        "type": "number"
                                      },
                                      "errorCode": {
                                        "type": "string"
                                      }
                                    },
                                    "required": [
                                      "msg",
                                      "level",
                                      "errorCode"
                                    ]
                                  }
                                },
                                "layerFilamentLists": {
                                  "type": "array",
                                  "items": {
                                    "type": "object",
                                    "properties": {
                                      "filamentList": {
                                        "type": "number"
                                      },
                                      "layerRanges": {
                                        "type": "string"
                                      }
                                    },
                                    "required": [
                                      "filamentList",
                                      "layerRanges"
                                    ]
                                  }
                                }
                              }
                            },
                            "filamentIds": {
                              "type": "array",
                              "items": {
                                "type": "string"
                              }
                            }
                          },
                          "required": [
                            "id"
                          ]
                        }
                      },
                      "filamentIds": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        }
                      },
                      "textSlots": {
                        "type": "array",
                        "items": {
                          "type": "object",
                          "properties": {
                            "key": {
                              "type": "string",
                              "title": "The matching volume/object name — the substitution key",
                              "description": "The matching volume/object name — the substitution key."
                            },
                            "label": {
                              "type": "string",
                              "title": "The label this slot's parameter is shown under",
                              "description": "The label this slot's parameter is shown under."
                            },
                            "text": {
                              "type": "string",
                              "description": "The text authored into the volume. It prints as-is when the slot goes\nunfilled, which makes it the parameter's default."
                            },
                            "volumeCount": {
                              "type": "number",
                              "title": "How many text volumes in the file carry this slot name",
                              "description": "How many text volumes in the file carry this slot name."
                            },
                            "fontName": {
                              "type": "string",
                              "title": "`font_name` of the first volume seen with this key",
                              "description": "`font_name` of the first volume seen with this key."
                            },
                            "fontVersion": {
                              "type": "string",
                              "title": "`font_version` of the first volume seen with this key",
                              "description": "`font_version` of the first volume seen with this key."
                            },
                            "surfaceType": {
                              "type": "number",
                              "title": "`surface_type` of the first volume seen with this key (0=flat)",
                              "description": "`surface_type` of the first volume seen with this key (0=flat)."
                            },
                            "occurrences": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "plateId": {
                                    "type": "number"
                                  },
                                  "objectId": {
                                    "type": "string",
                                    "title": "`model_settings.config` object id (matches the root model's build items)",
                                    "description": "`model_settings.config` object id (matches the root model's build items)."
                                  },
                                  "instanceId": {
                                    "type": "number",
                                    "title": "0-based instance index among the object's build items",
                                    "description": "0-based instance index among the object's build items."
                                  },
                                  "identifyId": {
                                    "type": "string",
                                    "title": "Bambu's per-instance id, when present (matches gcode object labels)",
                                    "description": "Bambu's per-instance id, when present (matches gcode object labels)."
                                  }
                                },
                                "required": [
                                  "plateId",
                                  "objectId",
                                  "instanceId"
                                ]
                              },
                              "title": "Every printable object instance carrying this slot, across all plates",
                              "description": "Every printable object instance carrying this slot, across all plates.\nAbsent when the file predates occurrence detection or has no plate\nmetadata to resolve instances against."
                            }
                          },
                          "required": [
                            "key",
                            "label",
                            "text",
                            "volumeCount"
                          ]
                        },
                        "description": "PrintagoParam text slots with their per-plate occurrence identities,\nre-detected whenever the file is (re)processed. The saved reuse mode\nlives on the slot's parameter, which survives a file replacement; this\nis the geometry-derived half that must always track the current file."
                      },
                      "plateRenderSourceHash": {
                        "type": "string",
                        "description": "`fileHashes[0]` of the source that produced the plates'\n`thumbnailRenderedUri`. Re-extraction carries the renders forward only\nwhile this still matches the part's current source; a replaced file\nleaves them behind rather than showing the previous model's geometry."
                      }
                    },
                    "required": [
                      "printerModel",
                      "filamentType",
                      "filamentColors",
                      "nozzleDiameter",
                      "profileCompat"
                    ]
                  }
                ]
              },
              "slicingEstimate": {
                "oneOf": [
                  {
                    "type": "null"
                  },
                  {
                    "type": "object",
                    "properties": {
                      "estimatedPrintTimeSeconds": {
                        "type": "number"
                      },
                      "materials": {
                        "type": "array",
                        "items": {
                          "type": "object",
                          "properties": {
                            "index": {
                              "type": "number"
                            },
                            "usedGrams": {
                              "type": "number"
                            },
                            "usedMeters": {
                              "type": "number"
                            },
                            "materialType": {
                              "type": "string"
                            },
                            "color": {
                              "type": "string"
                            }
                          },
                          "required": [
                            "index",
                            "usedGrams",
                            "usedMeters",
                            "materialType"
                          ]
                        }
                      },
                      "totalWeightGrams": {
                        "type": "number"
                      },
                      "profiles": {
                        "type": "object",
                        "properties": {
                          "machineProfileId": {
                            "type": "string"
                          },
                          "machineProfileName": {
                            "type": "string"
                          },
                          "processProfileId": {
                            "type": "string"
                          },
                          "processProfileName": {
                            "type": "string"
                          },
                          "filamentProfileIds": {
                            "type": "array",
                            "items": {
                              "type": "string"
                            }
                          },
                          "filamentProfileNames": {
                            "type": "array",
                            "items": {
                              "type": "string"
                            }
                          }
                        },
                        "required": [
                          "machineProfileId",
                          "machineProfileName",
                          "processProfileId",
                          "processProfileName",
                          "filamentProfileIds",
                          "filamentProfileNames"
                        ]
                      },
                      "slicedAt": {
                        "type": "string"
                      },
                      "slicerVersion": {
                        "type": "string"
                      },
                      "plates": {
                        "type": "array",
                        "items": {
                          "type": "object",
                          "properties": {
                            "plateId": {
                              "type": "number"
                            },
                            "estimatedPrintTimeSeconds": {
                              "type": "number"
                            },
                            "materials": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "index": {
                                    "type": "number"
                                  },
                                  "usedGrams": {
                                    "type": "number"
                                  },
                                  "usedMeters": {
                                    "type": "number"
                                  },
                                  "materialType": {
                                    "type": "string"
                                  },
                                  "color": {
                                    "type": "string"
                                  }
                                },
                                "required": [
                                  "index",
                                  "usedGrams",
                                  "usedMeters",
                                  "materialType"
                                ]
                              }
                            },
                            "totalWeightGrams": {
                              "type": "number"
                            }
                          },
                          "required": [
                            "plateId",
                            "estimatedPrintTimeSeconds",
                            "materials",
                            "totalWeightGrams"
                          ]
                        }
                      }
                    },
                    "required": [
                      "estimatedPrintTimeSeconds",
                      "materials",
                      "totalWeightGrams",
                      "slicedAt",
                      "slicerVersion"
                    ]
                  }
                ]
              },
              "use3MFProcessProfile": {
                "type": "boolean",
                "description": "Slice this part with the process profile embedded in its 3MF rather than\nthe matched printer's. Omit it when creating a 3MF part and it is turned\non for you, unless you also send an `overriddenProcessProfileId`; send\n`false` to slice with the printer's profile instead. Ignored for every\nother part type."
              },
              "arrangeable": {
                "type": "boolean"
              },
              "userTags": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "gcodePlateUris": {
                "oneOf": [
                  {
                    "type": "null"
                  },
                  {
                    "type": "object",
                    "properties": {},
                    "additionalProperties": {
                      "type": "string"
                    }
                  }
                ]
              },
              "meshUri": {
                "oneOf": [
                  {
                    "type": "null"
                  },
                  {
                    "type": "string"
                  }
                ],
                "title": "Tessellated mesh derived from a boundary-representation source (STEP)",
                "description": "Tessellated mesh derived from a boundary-representation source (STEP).\nThe slicer CLI only reads meshes, so this — not `fileUris[0]` — is what\nthe print and estimation paths feed it."
              },
              "meshSourceHash": {
                "oneOf": [
                  {
                    "type": "null"
                  },
                  {
                    "type": "string"
                  }
                ],
                "description": "`fileHashes[0]` of the source the mesh state describes — the file\n`meshUri` was tessellated from, or the one `meshError` failed on."
              },
              "meshError": {
                "oneOf": [
                  {
                    "type": "null"
                  },
                  {
                    "type": "string"
                  }
                ],
                "description": "Why tessellating this source failed. Set with `meshUri` cleared, so a\nfile that cannot be meshed is stated once instead of re-converting on\nevery print forever. Replacing the source moves `fileHashes[0]` off this\nhash, which retires the error without anything having to clear it."
              },
              "uploadedAt": {
                "oneOf": [
                  {
                    "type": "null"
                  },
                  {
                    "type": "string"
                  }
                ]
              },
              "customMetadata": {
                "type": "object",
                "properties": {},
                "additionalProperties": {}
              },
              "source": {
                "oneOf": [
                  {
                    "type": "null"
                  },
                  {
                    "const": "google-drive"
                  },
                  {
                    "const": "onedrive"
                  }
                ],
                "description": "Which integration created this part. Set only by the cloud-storage\nproviders today; null on every other creation path (upload, API, OpenSCAD,\n…) rather than carrying a synthetic \"manual\" value, so existing parts need\nno backfill. Not user-editable — it records what happened, not a preference."
              },
              "processingStatus": {
                "oneOf": [
                  {
                    "type": "null"
                  },
                  {
                    "const": "processing"
                  },
                  {
                    "const": "failed"
                  }
                ],
                "description": "Where the file's ingest (metadata extraction, thumbnails, plate split,\nestimation) stands. `null` means ready — parts that predate the ingest\nworkflow are healthy without backfill. System-set, not user-editable."
              },
              "processing": {
                "oneOf": [
                  {
                    "type": "null"
                  },
                  {
                    "type": "object",
                    "properties": {
                      "workflowKey": {
                        "type": "string",
                        "description": "The workflow run that owns this state. A retry or a file replacement\nwrites a new key first, so a superseded run's writes no longer match\nand are dropped instead of clobbering the newer run's progress."
                      },
                      "fileHash": {
                        "type": "string",
                        "title": "`fileHashes[0]` this ingest describes; replacing the file retires it",
                        "description": "`fileHashes[0]` this ingest describes; replacing the file retires it."
                      },
                      "attempt": {
                        "type": "number",
                        "description": "How many ingests this part has had before this one — a monotonic per-part\ncounter, not a per-file retry count, so no two runs can ever share a\nworkflow key. See {@link nextPartIngestAttempt }."
                      },
                      "startedAt": {
                        "type": "string"
                      },
                      "finishedAt": {
                        "type": "string"
                      },
                      "failedStage": {
                        "oneOf": [
                          {
                            "const": "fetch"
                          },
                          {
                            "const": "read-metadata"
                          },
                          {
                            "const": "thumbnails"
                          },
                          {
                            "const": "split-plates"
                          },
                          {
                            "const": "estimate"
                          }
                        ]
                      },
                      "error": {
                        "type": "string"
                      },
                      "stages": {
                        "type": "array",
                        "items": {
                          "type": "object",
                          "properties": {
                            "key": {
                              "oneOf": [
                                {
                                  "const": "fetch"
                                },
                                {
                                  "const": "read-metadata"
                                },
                                {
                                  "const": "thumbnails"
                                },
                                {
                                  "const": "split-plates"
                                },
                                {
                                  "const": "estimate"
                                }
                              ]
                            },
                            "status": {
                              "oneOf": [
                                {
                                  "const": "running"
                                },
                                {
                                  "const": "done"
                                },
                                {
                                  "const": "pending"
                                },
                                {
                                  "const": "failed"
                                },
                                {
                                  "const": "skipped"
                                }
                              ]
                            },
                            "attempts": {
                              "type": "number",
                              "title": "Times the stage has been started, so the UI can say \"retrying · attempt N\"",
                              "description": "Times the stage has been started, so the UI can say \"retrying · attempt N\"."
                            },
                            "error": {
                              "type": "string"
                            }
                          },
                          "required": [
                            "key",
                            "status"
                          ]
                        }
                      }
                    },
                    "required": [
                      "workflowKey",
                      "fileHash",
                      "attempt",
                      "startedAt",
                      "stages"
                    ]
                  }
                ],
                "title": "Per-stage ingest progress and, on failure, which stage stopped and why",
                "description": "Per-stage ingest progress and, on failure, which stage stopped and why."
              },
              "id": {
                "type": "string",
                "pattern": "^[a-z0-9]{24}$"
              },
              "storeId": {
                "type": "string",
                "pattern": "^[a-z0-9]{24}$"
              },
              "createdAt": {
                "type": "string"
              },
              "updatedAt": {
                "type": "string"
              }
            },
            "required": [
              "name",
              "type",
              "description",
              "fileUris",
              "fileHashes",
              "thumbnailUri",
              "parameters",
              "printTags",
              "overriddenProcessProfileId",
              "materials",
              "id",
              "storeId",
              "createdAt",
              "updatedAt"
            ]
          },
          "requiredPrinterTags": {
            "$ref": "#/components/schemas/Tags"
          },
          "quantity": {
            "type": "number",
            "minimum": 0,
            "maximum": 500
          },
          "numPartsPerSku": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "number"
              }
            ]
          },
          "skuInstanceStart": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "number"
              }
            ]
          },
          "parameterOverrides": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PartParameterOverride"
            }
          },
          "status": {
            "oneOf": [
              {
                "const": "pending"
              },
              {
                "const": "building"
              },
              {
                "const": "queued"
              },
              {
                "const": "fulfilling"
              },
              {
                "const": "preparing"
              },
              {
                "const": "sending-to-printer"
              },
              {
                "const": "printing"
              },
              {
                "const": "success"
              },
              {
                "const": "error"
              },
              {
                "const": "cancelled"
              }
            ]
          },
          "outputFiles": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "array",
                "items": {
                  "type": "string"
                }
              }
            ]
          },
          "thumbnailUri": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "assignmentStartedAt": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "format": "date-time"
              }
            ]
          },
          "assignmentCompletedAt": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "format": "date-time"
              }
            ]
          },
          "printingStartedAt": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "format": "date-time"
              }
            ]
          },
          "printingCompletedAt": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "format": "date-time"
              }
            ]
          },
          "printStatus": {
            "oneOf": [
              {
                "const": "pending"
              },
              {
                "const": "printing"
              },
              {
                "const": "success"
              },
              {
                "const": "error"
              },
              {
                "const": "cancelled"
              }
            ]
          },
          "extensions": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/PartBuildExtensions"
              }
            ]
          },
          "materialAssignments": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/MaterialAssignments"
              }
            ]
          },
          "priority": {
            "oneOf": [
              {
                "const": 100
              },
              {
                "const": 1000
              }
            ]
          },
          "position": {
            "oneOf": [
              {
                "const": "front"
              },
              {
                "const": "back"
              }
            ]
          },
          "orderId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "pattern": "^[a-z0-9]{24}$"
              }
            ]
          },
          "orderItemId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "pattern": "^[a-z0-9]{24}$"
              }
            ]
          },
          "linkedPartId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "pattern": "^[a-z0-9]{24}$"
              }
            ]
          },
          "dismissed": {
            "type": "boolean"
          },
          "customMetadata": {
            "$ref": "#/components/schemas/Recordstringunknown"
          },
          "id": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "storeId": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time"
          },
          "printJobs": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PrintJob"
            }
          },
          "steps": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PartBuildStep"
            }
          }
        },
        "required": [
          "partId",
          "skuBuildId",
          "skuId",
          "skuName",
          "label",
          "partCopy",
          "requiredPrinterTags",
          "quantity",
          "parameterOverrides",
          "status",
          "outputFiles",
          "thumbnailUri",
          "assignmentStartedAt",
          "assignmentCompletedAt",
          "printingStartedAt",
          "printingCompletedAt",
          "printStatus",
          "materialAssignments",
          "priority",
          "position",
          "orderId",
          "orderItemId",
          "linkedPartId",
          "dismissed",
          "id",
          "storeId",
          "createdAt",
          "updatedAt",
          "printJobs",
          "steps"
        ]
      },
      "skuIdstringundefinedskuCopystringundefinedstatusstringundefinedskuInstanceStartstringundefinedorderIdstringundefinedorderItemIdstringundefined...5more...updatedAtstringundefinedQuerySettings...": {
        "type": "object",
        "properties": {
          "skuId": {
            "type": "string"
          },
          "skuCopy": {
            "type": "string"
          },
          "status": {
            "type": "string"
          },
          "skuInstanceStart": {
            "type": "string"
          },
          "orderId": {
            "type": "string"
          },
          "orderItemId": {
            "type": "string"
          },
          "priority": {
            "type": "string"
          },
          "selectedOptions": {
            "type": "string"
          },
          "id": {
            "type": "string"
          },
          "storeId": {
            "type": "string"
          },
          "createdAt": {
            "type": "string"
          },
          "updatedAt": {
            "type": "string"
          },
          "sort": {
            "type": "string",
            "title": "Sort",
            "description": "Sort specification in format \"field:asc,field2:desc\""
          },
          "limit": {
            "type": "number",
            "minimum": 1,
            "maximum": 1000,
            "title": "Limit",
            "description": "Maximum number of results to return (default: 1000, max: 1000)"
          },
          "offset": {
            "type": "number",
            "minimum": 0,
            "title": "Offset",
            "description": "Number of results to skip for pagination"
          },
          "fields": {
            "type": "string",
            "title": "Fields",
            "description": "Comma-separated list of fields to return"
          },
          "include": {
            "type": "string",
            "title": "Include",
            "description": "Comma-separated list of relations to include (max 4, max 2 levels deep).\nExample: \"linkedParts,linkedParts.part,folder\""
          },
          "meta": {
            "type": "boolean",
            "title": "Meta",
            "description": "If true, returns response with metadata (total, count, hasMore, etc.)"
          },
          "hints": {
            "type": "boolean",
            "title": "Hints",
            "description": "If true, returns AI-friendly hints about available actions. Implies meta=true."
          }
        }
      },
      "SearchQueryDtoSkuBuild": {
        "type": "object",
        "properties": {
          "filter": {
            "$ref": "#/components/schemas/FilterConditionSkuBuild",
            "title": "Filter",
            "description": "Complex filter conditions using logical and field operators.\nAvailable field operators: eq, ne, gt, gte, lt, lte, contains, startsWith, endsWith, in, notIn, isNull, between.\nUsage example: {\"filter\": {\"and\": [{\"name\": {\"contains\": \"benchy\"}}, {\"or\": [{\"type\": {\"eq\": \"3mf\"}}, {\"type\": {\"eq\": \"gcode3mf\"}}]}}}"
          },
          "sort": {
            "type": "string",
            "title": "Sort",
            "description": "Sort specification in format \"field:asc,field2:desc\""
          },
          "limit": {
            "type": "number",
            "minimum": 1,
            "maximum": 1000,
            "title": "Limit",
            "description": "Maximum number of results to return (default: 1000, max: 1000)"
          },
          "offset": {
            "type": "number",
            "minimum": 0,
            "title": "Offset",
            "description": "Number of results to skip for pagination"
          },
          "fields": {
            "type": "string",
            "title": "Fields",
            "description": "Comma-separated list of fields to return"
          },
          "include": {
            "type": "string",
            "title": "Include",
            "description": "Comma-separated list of relations to include (max 4, max 2 levels deep).\nExample: \"linkedParts,linkedParts.part,folder\""
          },
          "meta": {
            "type": "boolean",
            "title": "Meta",
            "description": "If true, returns response with metadata (total, count, hasMore, etc.)"
          },
          "hints": {
            "type": "boolean",
            "title": "Hints",
            "description": "If true, returns AI-friendly hints about available actions. Implies meta=true."
          }
        },
        "title": "Search Query",
        "description": "Complete search request with filter conditions and query settings"
      },
      "FilterConditionSkuBuild": {
        "type": "object",
        "properties": {
          "and": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FilterConditionSkuBuild"
            },
            "title": "AND Conditions",
            "description": "All conditions must be true"
          },
          "or": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FilterConditionSkuBuild"
            },
            "title": "OR Conditions",
            "description": "At least one condition must be true"
          },
          "skuId": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "skuCopy": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "status": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "skuInstanceStart": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "orderId": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "orderItemId": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "priority": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "selectedOptions": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "id": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "storeId": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "createdAt": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "updatedAt": {
            "$ref": "#/components/schemas/FieldOperators"
          }
        },
        "title": "Filter Condition",
        "description": "Root filter condition that can be either a logical condition (AND/OR) or field-based condition"
      },
      "partBuildIdstringundefinedorderstringundefinedbuilderstringundefinedinputFilesstringundefinedinputParametersstringundefinedinputHashstringundefined...13more...updatedAtstringundefinedQuerySettings...": {
        "type": "object",
        "properties": {
          "partBuildId": {
            "type": "string"
          },
          "order": {
            "type": "string"
          },
          "builder": {
            "type": "string"
          },
          "inputFiles": {
            "type": "string"
          },
          "inputParameters": {
            "type": "string"
          },
          "inputHash": {
            "type": "string"
          },
          "cachedBuildStepId": {
            "type": "string"
          },
          "cachedOutputFile": {
            "type": "string"
          },
          "outputFiles": {
            "type": "string"
          },
          "status": {
            "type": "string"
          },
          "logs": {
            "type": "string"
          },
          "requiresAssignedPrinter": {
            "type": "string"
          },
          "nextStepId": {
            "type": "string"
          },
          "startedAt": {
            "type": "string"
          },
          "completedAt": {
            "type": "string"
          },
          "dismissed": {
            "type": "string"
          },
          "id": {
            "type": "string"
          },
          "storeId": {
            "type": "string"
          },
          "createdAt": {
            "type": "string"
          },
          "updatedAt": {
            "type": "string"
          },
          "sort": {
            "type": "string",
            "title": "Sort",
            "description": "Sort specification in format \"field:asc,field2:desc\""
          },
          "limit": {
            "type": "number",
            "minimum": 1,
            "maximum": 1000,
            "title": "Limit",
            "description": "Maximum number of results to return (default: 1000, max: 1000)"
          },
          "offset": {
            "type": "number",
            "minimum": 0,
            "title": "Offset",
            "description": "Number of results to skip for pagination"
          },
          "fields": {
            "type": "string",
            "title": "Fields",
            "description": "Comma-separated list of fields to return"
          },
          "include": {
            "type": "string",
            "title": "Include",
            "description": "Comma-separated list of relations to include (max 4, max 2 levels deep).\nExample: \"linkedParts,linkedParts.part,folder\""
          },
          "meta": {
            "type": "boolean",
            "title": "Meta",
            "description": "If true, returns response with metadata (total, count, hasMore, etc.)"
          },
          "hints": {
            "type": "boolean",
            "title": "Hints",
            "description": "If true, returns AI-friendly hints about available actions. Implies meta=true."
          }
        }
      },
      "SearchQueryDtoPartBuildStep": {
        "type": "object",
        "properties": {
          "filter": {
            "$ref": "#/components/schemas/FilterConditionPartBuildStep",
            "title": "Filter",
            "description": "Complex filter conditions using logical and field operators.\nAvailable field operators: eq, ne, gt, gte, lt, lte, contains, startsWith, endsWith, in, notIn, isNull, between.\nUsage example: {\"filter\": {\"and\": [{\"name\": {\"contains\": \"benchy\"}}, {\"or\": [{\"type\": {\"eq\": \"3mf\"}}, {\"type\": {\"eq\": \"gcode3mf\"}}]}}}"
          },
          "sort": {
            "type": "string",
            "title": "Sort",
            "description": "Sort specification in format \"field:asc,field2:desc\""
          },
          "limit": {
            "type": "number",
            "minimum": 1,
            "maximum": 1000,
            "title": "Limit",
            "description": "Maximum number of results to return (default: 1000, max: 1000)"
          },
          "offset": {
            "type": "number",
            "minimum": 0,
            "title": "Offset",
            "description": "Number of results to skip for pagination"
          },
          "fields": {
            "type": "string",
            "title": "Fields",
            "description": "Comma-separated list of fields to return"
          },
          "include": {
            "type": "string",
            "title": "Include",
            "description": "Comma-separated list of relations to include (max 4, max 2 levels deep).\nExample: \"linkedParts,linkedParts.part,folder\""
          },
          "meta": {
            "type": "boolean",
            "title": "Meta",
            "description": "If true, returns response with metadata (total, count, hasMore, etc.)"
          },
          "hints": {
            "type": "boolean",
            "title": "Hints",
            "description": "If true, returns AI-friendly hints about available actions. Implies meta=true."
          }
        },
        "title": "Search Query",
        "description": "Complete search request with filter conditions and query settings"
      },
      "FilterConditionPartBuildStep": {
        "type": "object",
        "properties": {
          "and": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FilterConditionPartBuildStep"
            },
            "title": "AND Conditions",
            "description": "All conditions must be true"
          },
          "or": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FilterConditionPartBuildStep"
            },
            "title": "OR Conditions",
            "description": "At least one condition must be true"
          },
          "partBuildId": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "order": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "builder": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "inputFiles": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "inputParameters": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "inputHash": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "cachedBuildStepId": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "cachedOutputFile": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "outputFiles": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "status": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "logs": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "requiresAssignedPrinter": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "nextStepId": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "startedAt": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "completedAt": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "dismissed": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "id": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "storeId": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "createdAt": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "updatedAt": {
            "$ref": "#/components/schemas/FieldOperators"
          }
        },
        "title": "Filter Condition",
        "description": "Root filter condition that can be either a logical condition (AND/OR) or field-based condition"
      },
      "Folder": {
        "type": "object",
        "properties": {
          "type": {
            "oneOf": [
              {
                "const": "part"
              },
              {
                "const": "sku"
              },
              {
                "const": "classwork"
              }
            ]
          },
          "name": {
            "type": "string"
          },
          "parentId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "pattern": "^[a-z0-9]{24}$"
              }
            ]
          },
          "customMetadata": {
            "$ref": "#/components/schemas/Recordstringunknown"
          },
          "id": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "storeId": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time"
          }
        },
        "required": [
          "type",
          "name",
          "parentId",
          "id",
          "storeId",
          "createdAt",
          "updatedAt"
        ]
      },
      "typestringundefinednamestringundefinedparentIdstringundefinedcustomMetadatastringundefinedidstringundefinedstoreIdstringundefinedcreatedAtstringundefinedupdatedAtstringundefinedQuerySettings...": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "parentId": {
            "type": "string"
          },
          "customMetadata": {
            "type": "string"
          },
          "id": {
            "type": "string"
          },
          "storeId": {
            "type": "string"
          },
          "createdAt": {
            "type": "string"
          },
          "updatedAt": {
            "type": "string"
          },
          "sort": {
            "type": "string",
            "title": "Sort",
            "description": "Sort specification in format \"field:asc,field2:desc\""
          },
          "limit": {
            "type": "number",
            "minimum": 1,
            "maximum": 1000,
            "title": "Limit",
            "description": "Maximum number of results to return (default: 1000, max: 1000)"
          },
          "offset": {
            "type": "number",
            "minimum": 0,
            "title": "Offset",
            "description": "Number of results to skip for pagination"
          },
          "fields": {
            "type": "string",
            "title": "Fields",
            "description": "Comma-separated list of fields to return"
          },
          "include": {
            "type": "string",
            "title": "Include",
            "description": "Comma-separated list of relations to include (max 4, max 2 levels deep).\nExample: \"linkedParts,linkedParts.part,folder\""
          },
          "meta": {
            "type": "boolean",
            "title": "Meta",
            "description": "If true, returns response with metadata (total, count, hasMore, etc.)"
          },
          "hints": {
            "type": "boolean",
            "title": "Hints",
            "description": "If true, returns AI-friendly hints about available actions. Implies meta=true."
          }
        }
      },
      "SearchQueryDtoFolder": {
        "type": "object",
        "properties": {
          "filter": {
            "$ref": "#/components/schemas/FilterConditionFolder",
            "title": "Filter",
            "description": "Complex filter conditions using logical and field operators.\nAvailable field operators: eq, ne, gt, gte, lt, lte, contains, startsWith, endsWith, in, notIn, isNull, between.\nUsage example: {\"filter\": {\"and\": [{\"name\": {\"contains\": \"benchy\"}}, {\"or\": [{\"type\": {\"eq\": \"3mf\"}}, {\"type\": {\"eq\": \"gcode3mf\"}}]}}}"
          },
          "sort": {
            "type": "string",
            "title": "Sort",
            "description": "Sort specification in format \"field:asc,field2:desc\""
          },
          "limit": {
            "type": "number",
            "minimum": 1,
            "maximum": 1000,
            "title": "Limit",
            "description": "Maximum number of results to return (default: 1000, max: 1000)"
          },
          "offset": {
            "type": "number",
            "minimum": 0,
            "title": "Offset",
            "description": "Number of results to skip for pagination"
          },
          "fields": {
            "type": "string",
            "title": "Fields",
            "description": "Comma-separated list of fields to return"
          },
          "include": {
            "type": "string",
            "title": "Include",
            "description": "Comma-separated list of relations to include (max 4, max 2 levels deep).\nExample: \"linkedParts,linkedParts.part,folder\""
          },
          "meta": {
            "type": "boolean",
            "title": "Meta",
            "description": "If true, returns response with metadata (total, count, hasMore, etc.)"
          },
          "hints": {
            "type": "boolean",
            "title": "Hints",
            "description": "If true, returns AI-friendly hints about available actions. Implies meta=true."
          }
        },
        "title": "Search Query",
        "description": "Complete search request with filter conditions and query settings"
      },
      "FilterConditionFolder": {
        "type": "object",
        "properties": {
          "and": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FilterConditionFolder"
            },
            "title": "AND Conditions",
            "description": "All conditions must be true"
          },
          "or": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FilterConditionFolder"
            },
            "title": "OR Conditions",
            "description": "At least one condition must be true"
          },
          "type": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "name": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "parentId": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "customMetadata": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "id": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "storeId": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "createdAt": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "updatedAt": {
            "$ref": "#/components/schemas/FieldOperators"
          }
        },
        "title": "Filter Condition",
        "description": "Root filter condition that can be either a logical condition (AND/OR) or field-based condition"
      },
      "CreateFolderRequest": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "minLength": 1,
            "maxLength": 255
          },
          "type": {
            "oneOf": [
              {
                "const": "part"
              },
              {
                "const": "sku"
              },
              {
                "const": "classwork"
              }
            ]
          },
          "parentId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "pattern": "^[a-z0-9]{24}$"
              }
            ]
          },
          "customMetadata": {
            "$ref": "#/components/schemas/CustomMetadataValues"
          }
        },
        "required": [
          "name",
          "type",
          "parentId"
        ]
      },
      "CustomMetadataValues": {
        "type": "object",
        "properties": {},
        "additionalProperties": {}
      },
      "BatchMoveFolderResponse": {
        "type": "object",
        "properties": {
          "folderIds": {
            "type": "array",
            "items": {
              "type": "string",
              "pattern": "^[a-z0-9]{24}$"
            }
          },
          "partIds": {
            "type": "array",
            "items": {
              "type": "string",
              "pattern": "^[a-z0-9]{24}$"
            }
          },
          "skuIds": {
            "type": "array",
            "items": {
              "type": "string",
              "pattern": "^[a-z0-9]{24}$"
            }
          },
          "classworkIds": {
            "type": "array",
            "items": {
              "type": "string",
              "pattern": "^[a-z0-9]{24}$"
            }
          }
        },
        "required": [
          "folderIds",
          "partIds",
          "skuIds",
          "classworkIds"
        ]
      },
      "BatchMoveFolderRequest": {
        "type": "object",
        "properties": {
          "entities": {
            "type": "object",
            "properties": {
              "folderIds": {
                "type": "array",
                "items": {
                  "type": "string",
                  "pattern": "^[a-z0-9]{24}$"
                }
              },
              "partIds": {
                "type": "array",
                "items": {
                  "type": "string",
                  "pattern": "^[a-z0-9]{24}$"
                }
              },
              "skuIds": {
                "type": "array",
                "items": {
                  "type": "string",
                  "pattern": "^[a-z0-9]{24}$"
                }
              },
              "classworkIds": {
                "type": "array",
                "items": {
                  "type": "string",
                  "pattern": "^[a-z0-9]{24}$"
                }
              }
            }
          },
          "toFolderId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "pattern": "^[a-z0-9]{24}$"
              }
            ]
          }
        },
        "required": [
          "entities",
          "toFolderId"
        ]
      },
      "RenameFolderRequest": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "name": {
            "type": "string",
            "minLength": 1,
            "maxLength": 255
          }
        },
        "required": [
          "id",
          "name"
        ]
      },
      "DeleteFolderRequest": {
        "type": "object",
        "properties": {
          "folderIds": {
            "type": "array",
            "items": {
              "type": "string",
              "pattern": "^[a-z0-9]{24}$"
            }
          },
          "type": {
            "oneOf": [
              {
                "const": "part"
              },
              {
                "const": "sku"
              },
              {
                "const": "classwork"
              }
            ]
          }
        },
        "required": [
          "folderIds",
          "type"
        ]
      },
      "Entitlement": {
        "type": "object",
        "properties": {
          "entitlement": {
            "type": "string"
          },
          "enabledAt": {
            "type": "string",
            "format": "date-time"
          },
          "id": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "storeId": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time"
          }
        },
        "required": [
          "entitlement",
          "enabledAt",
          "id",
          "storeId",
          "createdAt",
          "updatedAt"
        ]
      },
      "entitlementstringundefinedenabledAtstringundefinedidstringundefinedstoreIdstringundefinedcreatedAtstringundefinedupdatedAtstringundefinedQuerySettings...": {
        "type": "object",
        "properties": {
          "entitlement": {
            "type": "string"
          },
          "enabledAt": {
            "type": "string"
          },
          "id": {
            "type": "string"
          },
          "storeId": {
            "type": "string"
          },
          "createdAt": {
            "type": "string"
          },
          "updatedAt": {
            "type": "string"
          },
          "sort": {
            "type": "string",
            "title": "Sort",
            "description": "Sort specification in format \"field:asc,field2:desc\""
          },
          "limit": {
            "type": "number",
            "minimum": 1,
            "maximum": 1000,
            "title": "Limit",
            "description": "Maximum number of results to return (default: 1000, max: 1000)"
          },
          "offset": {
            "type": "number",
            "minimum": 0,
            "title": "Offset",
            "description": "Number of results to skip for pagination"
          },
          "fields": {
            "type": "string",
            "title": "Fields",
            "description": "Comma-separated list of fields to return"
          },
          "include": {
            "type": "string",
            "title": "Include",
            "description": "Comma-separated list of relations to include (max 4, max 2 levels deep).\nExample: \"linkedParts,linkedParts.part,folder\""
          },
          "meta": {
            "type": "boolean",
            "title": "Meta",
            "description": "If true, returns response with metadata (total, count, hasMore, etc.)"
          },
          "hints": {
            "type": "boolean",
            "title": "Hints",
            "description": "If true, returns AI-friendly hints about available actions. Implies meta=true."
          }
        }
      },
      "SearchQueryDtoEntitlement": {
        "type": "object",
        "properties": {
          "filter": {
            "$ref": "#/components/schemas/FilterConditionEntitlement",
            "title": "Filter",
            "description": "Complex filter conditions using logical and field operators.\nAvailable field operators: eq, ne, gt, gte, lt, lte, contains, startsWith, endsWith, in, notIn, isNull, between.\nUsage example: {\"filter\": {\"and\": [{\"name\": {\"contains\": \"benchy\"}}, {\"or\": [{\"type\": {\"eq\": \"3mf\"}}, {\"type\": {\"eq\": \"gcode3mf\"}}]}}}"
          },
          "sort": {
            "type": "string",
            "title": "Sort",
            "description": "Sort specification in format \"field:asc,field2:desc\""
          },
          "limit": {
            "type": "number",
            "minimum": 1,
            "maximum": 1000,
            "title": "Limit",
            "description": "Maximum number of results to return (default: 1000, max: 1000)"
          },
          "offset": {
            "type": "number",
            "minimum": 0,
            "title": "Offset",
            "description": "Number of results to skip for pagination"
          },
          "fields": {
            "type": "string",
            "title": "Fields",
            "description": "Comma-separated list of fields to return"
          },
          "include": {
            "type": "string",
            "title": "Include",
            "description": "Comma-separated list of relations to include (max 4, max 2 levels deep).\nExample: \"linkedParts,linkedParts.part,folder\""
          },
          "meta": {
            "type": "boolean",
            "title": "Meta",
            "description": "If true, returns response with metadata (total, count, hasMore, etc.)"
          },
          "hints": {
            "type": "boolean",
            "title": "Hints",
            "description": "If true, returns AI-friendly hints about available actions. Implies meta=true."
          }
        },
        "title": "Search Query",
        "description": "Complete search request with filter conditions and query settings"
      },
      "FilterConditionEntitlement": {
        "type": "object",
        "properties": {
          "and": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FilterConditionEntitlement"
            },
            "title": "AND Conditions",
            "description": "All conditions must be true"
          },
          "or": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FilterConditionEntitlement"
            },
            "title": "OR Conditions",
            "description": "At least one condition must be true"
          },
          "entitlement": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "enabledAt": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "id": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "storeId": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "createdAt": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "updatedAt": {
            "$ref": "#/components/schemas/FieldOperators"
          }
        },
        "title": "Filter Condition",
        "description": "Root filter condition that can be either a logical condition (AND/OR) or field-based condition"
      },
      "Permission": {
        "type": "object",
        "properties": {
          "userId": {
            "type": "string"
          },
          "permission": {
            "oneOf": [
              {
                "const": "organization.owner"
              },
              {
                "const": "organization.edit"
              },
              {
                "const": "organization.delete"
              },
              {
                "const": "user.view"
              },
              {
                "const": "user.invite"
              },
              {
                "const": "user.edit"
              },
              {
                "const": "user.delete"
              },
              {
                "const": "permission.view"
              },
              {
                "const": "permission.grant"
              },
              {
                "const": "permission.revoke"
              },
              {
                "const": "part.view"
              },
              {
                "const": "part.create"
              },
              {
                "const": "part.edit"
              },
              {
                "const": "part.delete"
              },
              {
                "const": "part.export"
              },
              {
                "const": "sku.view"
              },
              {
                "const": "sku.create"
              },
              {
                "const": "sku.edit"
              },
              {
                "const": "sku.delete"
              },
              {
                "const": "material.view"
              },
              {
                "const": "material.create"
              },
              {
                "const": "material.edit"
              },
              {
                "const": "material.delete"
              },
              {
                "const": "material.instance.view"
              },
              {
                "const": "material.instance.create"
              },
              {
                "const": "material.instance.edit"
              },
              {
                "const": "material.instance.delete"
              },
              {
                "const": "printer.view"
              },
              {
                "const": "printer.create"
              },
              {
                "const": "printer.edit"
              },
              {
                "const": "printer.delete"
              },
              {
                "const": "printer.control"
              },
              {
                "const": "printer.ready"
              },
              {
                "const": "printer.config"
              },
              {
                "const": "printer.stats"
              },
              {
                "const": "printer.camera"
              },
              {
                "const": "profile.view"
              },
              {
                "const": "profile.create"
              },
              {
                "const": "profile.edit"
              },
              {
                "const": "profile.delete"
              },
              {
                "const": "queue.view"
              },
              {
                "const": "queue.manage"
              },
              {
                "const": "queue.override"
              },
              {
                "const": "job.create"
              },
              {
                "const": "job.edit.own"
              },
              {
                "const": "job.edit.all"
              },
              {
                "const": "job.delete.own"
              },
              {
                "const": "job.delete.all"
              },
              {
                "const": "build.view"
              },
              {
                "const": "build.create"
              },
              {
                "const": "build.edit"
              },
              {
                "const": "build.delete"
              },
              {
                "const": "settings.view"
              },
              {
                "const": "settings.edit"
              },
              {
                "const": "integration.view"
              },
              {
                "const": "integration.manage"
              },
              {
                "const": "subscription.view"
              },
              {
                "const": "subscription.manage"
              },
              {
                "const": "analytics.view"
              },
              {
                "const": "reports.generate"
              },
              {
                "const": "audit.log.view"
              },
              {
                "const": "audit.logs.configure"
              },
              {
                "const": "order.view"
              },
              {
                "const": "order.create"
              },
              {
                "const": "order.edit"
              },
              {
                "const": "order.delete"
              },
              {
                "const": "order.print"
              },
              {
                "const": "apiKey.view"
              },
              {
                "const": "apiKey.create"
              },
              {
                "const": "apiKey.edit"
              },
              {
                "const": "apiKey.delete"
              },
              {
                "const": "file.download"
              },
              {
                "const": "maintenance.view"
              },
              {
                "const": "maintenance.create"
              },
              {
                "const": "maintenance.edit"
              },
              {
                "const": "maintenance.delete"
              },
              {
                "const": "maintenance.complete"
              },
              {
                "const": "routing.manage"
              },
              {
                "const": "customizer.manage"
              },
              {
                "const": "macro.view"
              },
              {
                "const": "macro.create"
              },
              {
                "const": "macro.edit"
              },
              {
                "const": "macro.delete"
              },
              {
                "const": "macro.run"
              },
              {
                "const": "card.view"
              },
              {
                "const": "card.create"
              },
              {
                "const": "card.edit"
              },
              {
                "const": "card.delete"
              },
              {
                "const": "layout.view"
              },
              {
                "const": "layout.create"
              },
              {
                "const": "layout.edit"
              },
              {
                "const": "layout.delete"
              },
              {
                "const": "classwork.viewer"
              },
              {
                "const": "classwork.editor"
              },
              {
                "const": "sequence.view"
              },
              {
                "const": "sequence.edit"
              },
              {
                "const": "qr.scan"
              },
              {
                "const": "qr.manage"
              },
              {
                "const": "internal.shopify"
              },
              {
                "const": "queue.admin"
              },
              {
                "const": "part.viewer"
              },
              {
                "const": "part.editor"
              },
              {
                "const": "sku.viewer"
              },
              {
                "const": "sku.editor"
              },
              {
                "const": "orders.admin"
              },
              {
                "const": "material.viewer"
              },
              {
                "const": "material.editor"
              },
              {
                "const": "printer.viewer"
              },
              {
                "const": "printer.editor"
              },
              {
                "const": "profile.viewer"
              },
              {
                "const": "profile.editor"
              },
              {
                "const": "settings.admin"
              },
              {
                "const": "subscription.admin"
              }
            ]
          },
          "storeId": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "id": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time"
          }
        },
        "required": [
          "userId",
          "permission",
          "storeId",
          "id",
          "createdAt",
          "updatedAt"
        ],
        "description": "Represents a user permission in the system"
      },
      "userIdstringundefinedpermissionstringundefinedstoreIdstringundefinedidstringundefinedcreatedAtstringundefinedupdatedAtstringundefinedQuerySettings...": {
        "type": "object",
        "properties": {
          "userId": {
            "type": "string"
          },
          "permission": {
            "type": "string"
          },
          "storeId": {
            "type": "string"
          },
          "id": {
            "type": "string"
          },
          "createdAt": {
            "type": "string"
          },
          "updatedAt": {
            "type": "string"
          },
          "sort": {
            "type": "string",
            "title": "Sort",
            "description": "Sort specification in format \"field:asc,field2:desc\""
          },
          "limit": {
            "type": "number",
            "minimum": 1,
            "maximum": 1000,
            "title": "Limit",
            "description": "Maximum number of results to return (default: 1000, max: 1000)"
          },
          "offset": {
            "type": "number",
            "minimum": 0,
            "title": "Offset",
            "description": "Number of results to skip for pagination"
          },
          "fields": {
            "type": "string",
            "title": "Fields",
            "description": "Comma-separated list of fields to return"
          },
          "include": {
            "type": "string",
            "title": "Include",
            "description": "Comma-separated list of relations to include (max 4, max 2 levels deep).\nExample: \"linkedParts,linkedParts.part,folder\""
          },
          "meta": {
            "type": "boolean",
            "title": "Meta",
            "description": "If true, returns response with metadata (total, count, hasMore, etc.)"
          },
          "hints": {
            "type": "boolean",
            "title": "Hints",
            "description": "If true, returns AI-friendly hints about available actions. Implies meta=true."
          }
        }
      },
      "SearchQueryDtoPermission": {
        "type": "object",
        "properties": {
          "filter": {
            "$ref": "#/components/schemas/FilterConditionPermission",
            "title": "Filter",
            "description": "Complex filter conditions using logical and field operators.\nAvailable field operators: eq, ne, gt, gte, lt, lte, contains, startsWith, endsWith, in, notIn, isNull, between.\nUsage example: {\"filter\": {\"and\": [{\"name\": {\"contains\": \"benchy\"}}, {\"or\": [{\"type\": {\"eq\": \"3mf\"}}, {\"type\": {\"eq\": \"gcode3mf\"}}]}}}"
          },
          "sort": {
            "type": "string",
            "title": "Sort",
            "description": "Sort specification in format \"field:asc,field2:desc\""
          },
          "limit": {
            "type": "number",
            "minimum": 1,
            "maximum": 1000,
            "title": "Limit",
            "description": "Maximum number of results to return (default: 1000, max: 1000)"
          },
          "offset": {
            "type": "number",
            "minimum": 0,
            "title": "Offset",
            "description": "Number of results to skip for pagination"
          },
          "fields": {
            "type": "string",
            "title": "Fields",
            "description": "Comma-separated list of fields to return"
          },
          "include": {
            "type": "string",
            "title": "Include",
            "description": "Comma-separated list of relations to include (max 4, max 2 levels deep).\nExample: \"linkedParts,linkedParts.part,folder\""
          },
          "meta": {
            "type": "boolean",
            "title": "Meta",
            "description": "If true, returns response with metadata (total, count, hasMore, etc.)"
          },
          "hints": {
            "type": "boolean",
            "title": "Hints",
            "description": "If true, returns AI-friendly hints about available actions. Implies meta=true."
          }
        },
        "title": "Search Query",
        "description": "Complete search request with filter conditions and query settings"
      },
      "FilterConditionPermission": {
        "type": "object",
        "properties": {
          "and": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FilterConditionPermission"
            },
            "title": "AND Conditions",
            "description": "All conditions must be true"
          },
          "or": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FilterConditionPermission"
            },
            "title": "OR Conditions",
            "description": "At least one condition must be true"
          },
          "userId": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "permission": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "storeId": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "id": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "createdAt": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "updatedAt": {
            "$ref": "#/components/schemas/FieldOperators"
          }
        },
        "title": "Filter Condition",
        "description": "Root filter condition that can be either a logical condition (AND/OR) or field-based condition"
      },
      "GetAllPermissionsForUserResponse": {
        "type": "object",
        "properties": {
          "owner": {
            "type": "boolean"
          },
          "permissions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/GetUserPermissionResponse"
            }
          },
          "roles": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Role IDs granted to the user in this store"
          },
          "roleNames": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Role names (system role keys like \"operator\") for readability"
          },
          "effectivePermissions": {
            "type": "array",
            "items": {
              "oneOf": [
                {
                  "const": "organization.owner"
                },
                {
                  "const": "organization.edit"
                },
                {
                  "const": "organization.delete"
                },
                {
                  "const": "user.view"
                },
                {
                  "const": "user.invite"
                },
                {
                  "const": "user.edit"
                },
                {
                  "const": "user.delete"
                },
                {
                  "const": "permission.view"
                },
                {
                  "const": "permission.grant"
                },
                {
                  "const": "permission.revoke"
                },
                {
                  "const": "part.view"
                },
                {
                  "const": "part.create"
                },
                {
                  "const": "part.edit"
                },
                {
                  "const": "part.delete"
                },
                {
                  "const": "part.export"
                },
                {
                  "const": "sku.view"
                },
                {
                  "const": "sku.create"
                },
                {
                  "const": "sku.edit"
                },
                {
                  "const": "sku.delete"
                },
                {
                  "const": "material.view"
                },
                {
                  "const": "material.create"
                },
                {
                  "const": "material.edit"
                },
                {
                  "const": "material.delete"
                },
                {
                  "const": "material.instance.view"
                },
                {
                  "const": "material.instance.create"
                },
                {
                  "const": "material.instance.edit"
                },
                {
                  "const": "material.instance.delete"
                },
                {
                  "const": "printer.view"
                },
                {
                  "const": "printer.create"
                },
                {
                  "const": "printer.edit"
                },
                {
                  "const": "printer.delete"
                },
                {
                  "const": "printer.control"
                },
                {
                  "const": "printer.ready"
                },
                {
                  "const": "printer.config"
                },
                {
                  "const": "printer.stats"
                },
                {
                  "const": "printer.camera"
                },
                {
                  "const": "profile.view"
                },
                {
                  "const": "profile.create"
                },
                {
                  "const": "profile.edit"
                },
                {
                  "const": "profile.delete"
                },
                {
                  "const": "queue.view"
                },
                {
                  "const": "queue.manage"
                },
                {
                  "const": "queue.override"
                },
                {
                  "const": "job.create"
                },
                {
                  "const": "job.edit.own"
                },
                {
                  "const": "job.edit.all"
                },
                {
                  "const": "job.delete.own"
                },
                {
                  "const": "job.delete.all"
                },
                {
                  "const": "build.view"
                },
                {
                  "const": "build.create"
                },
                {
                  "const": "build.edit"
                },
                {
                  "const": "build.delete"
                },
                {
                  "const": "settings.view"
                },
                {
                  "const": "settings.edit"
                },
                {
                  "const": "integration.view"
                },
                {
                  "const": "integration.manage"
                },
                {
                  "const": "subscription.view"
                },
                {
                  "const": "subscription.manage"
                },
                {
                  "const": "analytics.view"
                },
                {
                  "const": "reports.generate"
                },
                {
                  "const": "audit.log.view"
                },
                {
                  "const": "audit.logs.configure"
                },
                {
                  "const": "order.view"
                },
                {
                  "const": "order.create"
                },
                {
                  "const": "order.edit"
                },
                {
                  "const": "order.delete"
                },
                {
                  "const": "order.print"
                },
                {
                  "const": "apiKey.view"
                },
                {
                  "const": "apiKey.create"
                },
                {
                  "const": "apiKey.edit"
                },
                {
                  "const": "apiKey.delete"
                },
                {
                  "const": "file.download"
                },
                {
                  "const": "maintenance.view"
                },
                {
                  "const": "maintenance.create"
                },
                {
                  "const": "maintenance.edit"
                },
                {
                  "const": "maintenance.delete"
                },
                {
                  "const": "maintenance.complete"
                },
                {
                  "const": "routing.manage"
                },
                {
                  "const": "customizer.manage"
                },
                {
                  "const": "macro.view"
                },
                {
                  "const": "macro.create"
                },
                {
                  "const": "macro.edit"
                },
                {
                  "const": "macro.delete"
                },
                {
                  "const": "macro.run"
                },
                {
                  "const": "card.view"
                },
                {
                  "const": "card.create"
                },
                {
                  "const": "card.edit"
                },
                {
                  "const": "card.delete"
                },
                {
                  "const": "layout.view"
                },
                {
                  "const": "layout.create"
                },
                {
                  "const": "layout.edit"
                },
                {
                  "const": "layout.delete"
                },
                {
                  "const": "classwork.viewer"
                },
                {
                  "const": "classwork.editor"
                },
                {
                  "const": "sequence.view"
                },
                {
                  "const": "sequence.edit"
                },
                {
                  "const": "qr.scan"
                },
                {
                  "const": "qr.manage"
                },
                {
                  "const": "internal.shopify"
                },
                {
                  "const": "queue.admin"
                },
                {
                  "const": "part.viewer"
                },
                {
                  "const": "part.editor"
                },
                {
                  "const": "sku.viewer"
                },
                {
                  "const": "sku.editor"
                },
                {
                  "const": "orders.admin"
                },
                {
                  "const": "material.viewer"
                },
                {
                  "const": "material.editor"
                },
                {
                  "const": "printer.viewer"
                },
                {
                  "const": "printer.editor"
                },
                {
                  "const": "profile.viewer"
                },
                {
                  "const": "profile.editor"
                },
                {
                  "const": "settings.admin"
                },
                {
                  "const": "subscription.admin"
                }
              ]
            },
            "description": "Effective permission set (direct + role-based + owner)"
          }
        },
        "required": [
          "owner",
          "permissions"
        ]
      },
      "GetUserPermissionResponse": {
        "type": "object",
        "properties": {
          "userId": {
            "type": "string"
          },
          "permission": {
            "oneOf": [
              {
                "const": "organization.owner"
              },
              {
                "const": "organization.edit"
              },
              {
                "const": "organization.delete"
              },
              {
                "const": "user.view"
              },
              {
                "const": "user.invite"
              },
              {
                "const": "user.edit"
              },
              {
                "const": "user.delete"
              },
              {
                "const": "permission.view"
              },
              {
                "const": "permission.grant"
              },
              {
                "const": "permission.revoke"
              },
              {
                "const": "part.view"
              },
              {
                "const": "part.create"
              },
              {
                "const": "part.edit"
              },
              {
                "const": "part.delete"
              },
              {
                "const": "part.export"
              },
              {
                "const": "sku.view"
              },
              {
                "const": "sku.create"
              },
              {
                "const": "sku.edit"
              },
              {
                "const": "sku.delete"
              },
              {
                "const": "material.view"
              },
              {
                "const": "material.create"
              },
              {
                "const": "material.edit"
              },
              {
                "const": "material.delete"
              },
              {
                "const": "material.instance.view"
              },
              {
                "const": "material.instance.create"
              },
              {
                "const": "material.instance.edit"
              },
              {
                "const": "material.instance.delete"
              },
              {
                "const": "printer.view"
              },
              {
                "const": "printer.create"
              },
              {
                "const": "printer.edit"
              },
              {
                "const": "printer.delete"
              },
              {
                "const": "printer.control"
              },
              {
                "const": "printer.ready"
              },
              {
                "const": "printer.config"
              },
              {
                "const": "printer.stats"
              },
              {
                "const": "printer.camera"
              },
              {
                "const": "profile.view"
              },
              {
                "const": "profile.create"
              },
              {
                "const": "profile.edit"
              },
              {
                "const": "profile.delete"
              },
              {
                "const": "queue.view"
              },
              {
                "const": "queue.manage"
              },
              {
                "const": "queue.override"
              },
              {
                "const": "job.create"
              },
              {
                "const": "job.edit.own"
              },
              {
                "const": "job.edit.all"
              },
              {
                "const": "job.delete.own"
              },
              {
                "const": "job.delete.all"
              },
              {
                "const": "build.view"
              },
              {
                "const": "build.create"
              },
              {
                "const": "build.edit"
              },
              {
                "const": "build.delete"
              },
              {
                "const": "settings.view"
              },
              {
                "const": "settings.edit"
              },
              {
                "const": "integration.view"
              },
              {
                "const": "integration.manage"
              },
              {
                "const": "subscription.view"
              },
              {
                "const": "subscription.manage"
              },
              {
                "const": "analytics.view"
              },
              {
                "const": "reports.generate"
              },
              {
                "const": "audit.log.view"
              },
              {
                "const": "audit.logs.configure"
              },
              {
                "const": "order.view"
              },
              {
                "const": "order.create"
              },
              {
                "const": "order.edit"
              },
              {
                "const": "order.delete"
              },
              {
                "const": "order.print"
              },
              {
                "const": "apiKey.view"
              },
              {
                "const": "apiKey.create"
              },
              {
                "const": "apiKey.edit"
              },
              {
                "const": "apiKey.delete"
              },
              {
                "const": "file.download"
              },
              {
                "const": "maintenance.view"
              },
              {
                "const": "maintenance.create"
              },
              {
                "const": "maintenance.edit"
              },
              {
                "const": "maintenance.delete"
              },
              {
                "const": "maintenance.complete"
              },
              {
                "const": "routing.manage"
              },
              {
                "const": "customizer.manage"
              },
              {
                "const": "macro.view"
              },
              {
                "const": "macro.create"
              },
              {
                "const": "macro.edit"
              },
              {
                "const": "macro.delete"
              },
              {
                "const": "macro.run"
              },
              {
                "const": "card.view"
              },
              {
                "const": "card.create"
              },
              {
                "const": "card.edit"
              },
              {
                "const": "card.delete"
              },
              {
                "const": "layout.view"
              },
              {
                "const": "layout.create"
              },
              {
                "const": "layout.edit"
              },
              {
                "const": "layout.delete"
              },
              {
                "const": "classwork.viewer"
              },
              {
                "const": "classwork.editor"
              },
              {
                "const": "sequence.view"
              },
              {
                "const": "sequence.edit"
              },
              {
                "const": "qr.scan"
              },
              {
                "const": "qr.manage"
              },
              {
                "const": "internal.shopify"
              },
              {
                "const": "queue.admin"
              },
              {
                "const": "part.viewer"
              },
              {
                "const": "part.editor"
              },
              {
                "const": "sku.viewer"
              },
              {
                "const": "sku.editor"
              },
              {
                "const": "orders.admin"
              },
              {
                "const": "material.viewer"
              },
              {
                "const": "material.editor"
              },
              {
                "const": "printer.viewer"
              },
              {
                "const": "printer.editor"
              },
              {
                "const": "profile.viewer"
              },
              {
                "const": "profile.editor"
              },
              {
                "const": "settings.admin"
              },
              {
                "const": "subscription.admin"
              }
            ]
          },
          "id": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          }
        },
        "required": [
          "userId",
          "permission",
          "id"
        ]
      },
      "RoleSummary": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "description": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "isSystem": {
            "type": "boolean"
          }
        },
        "required": [
          "id",
          "name",
          "description",
          "isSystem"
        ]
      },
      "RoleWithPermissions": {
        "type": "object",
        "properties": {
          "permissions": {
            "type": "array",
            "items": {
              "oneOf": [
                {
                  "const": "organization.owner"
                },
                {
                  "const": "organization.edit"
                },
                {
                  "const": "organization.delete"
                },
                {
                  "const": "user.view"
                },
                {
                  "const": "user.invite"
                },
                {
                  "const": "user.edit"
                },
                {
                  "const": "user.delete"
                },
                {
                  "const": "permission.view"
                },
                {
                  "const": "permission.grant"
                },
                {
                  "const": "permission.revoke"
                },
                {
                  "const": "part.view"
                },
                {
                  "const": "part.create"
                },
                {
                  "const": "part.edit"
                },
                {
                  "const": "part.delete"
                },
                {
                  "const": "part.export"
                },
                {
                  "const": "sku.view"
                },
                {
                  "const": "sku.create"
                },
                {
                  "const": "sku.edit"
                },
                {
                  "const": "sku.delete"
                },
                {
                  "const": "material.view"
                },
                {
                  "const": "material.create"
                },
                {
                  "const": "material.edit"
                },
                {
                  "const": "material.delete"
                },
                {
                  "const": "material.instance.view"
                },
                {
                  "const": "material.instance.create"
                },
                {
                  "const": "material.instance.edit"
                },
                {
                  "const": "material.instance.delete"
                },
                {
                  "const": "printer.view"
                },
                {
                  "const": "printer.create"
                },
                {
                  "const": "printer.edit"
                },
                {
                  "const": "printer.delete"
                },
                {
                  "const": "printer.control"
                },
                {
                  "const": "printer.ready"
                },
                {
                  "const": "printer.config"
                },
                {
                  "const": "printer.stats"
                },
                {
                  "const": "printer.camera"
                },
                {
                  "const": "profile.view"
                },
                {
                  "const": "profile.create"
                },
                {
                  "const": "profile.edit"
                },
                {
                  "const": "profile.delete"
                },
                {
                  "const": "queue.view"
                },
                {
                  "const": "queue.manage"
                },
                {
                  "const": "queue.override"
                },
                {
                  "const": "job.create"
                },
                {
                  "const": "job.edit.own"
                },
                {
                  "const": "job.edit.all"
                },
                {
                  "const": "job.delete.own"
                },
                {
                  "const": "job.delete.all"
                },
                {
                  "const": "build.view"
                },
                {
                  "const": "build.create"
                },
                {
                  "const": "build.edit"
                },
                {
                  "const": "build.delete"
                },
                {
                  "const": "settings.view"
                },
                {
                  "const": "settings.edit"
                },
                {
                  "const": "integration.view"
                },
                {
                  "const": "integration.manage"
                },
                {
                  "const": "subscription.view"
                },
                {
                  "const": "subscription.manage"
                },
                {
                  "const": "analytics.view"
                },
                {
                  "const": "reports.generate"
                },
                {
                  "const": "audit.log.view"
                },
                {
                  "const": "audit.logs.configure"
                },
                {
                  "const": "order.view"
                },
                {
                  "const": "order.create"
                },
                {
                  "const": "order.edit"
                },
                {
                  "const": "order.delete"
                },
                {
                  "const": "order.print"
                },
                {
                  "const": "apiKey.view"
                },
                {
                  "const": "apiKey.create"
                },
                {
                  "const": "apiKey.edit"
                },
                {
                  "const": "apiKey.delete"
                },
                {
                  "const": "file.download"
                },
                {
                  "const": "maintenance.view"
                },
                {
                  "const": "maintenance.create"
                },
                {
                  "const": "maintenance.edit"
                },
                {
                  "const": "maintenance.delete"
                },
                {
                  "const": "maintenance.complete"
                },
                {
                  "const": "routing.manage"
                },
                {
                  "const": "customizer.manage"
                },
                {
                  "const": "macro.view"
                },
                {
                  "const": "macro.create"
                },
                {
                  "const": "macro.edit"
                },
                {
                  "const": "macro.delete"
                },
                {
                  "const": "macro.run"
                },
                {
                  "const": "card.view"
                },
                {
                  "const": "card.create"
                },
                {
                  "const": "card.edit"
                },
                {
                  "const": "card.delete"
                },
                {
                  "const": "layout.view"
                },
                {
                  "const": "layout.create"
                },
                {
                  "const": "layout.edit"
                },
                {
                  "const": "layout.delete"
                },
                {
                  "const": "classwork.viewer"
                },
                {
                  "const": "classwork.editor"
                },
                {
                  "const": "sequence.view"
                },
                {
                  "const": "sequence.edit"
                },
                {
                  "const": "qr.scan"
                },
                {
                  "const": "qr.manage"
                },
                {
                  "const": "internal.shopify"
                },
                {
                  "const": "queue.admin"
                },
                {
                  "const": "part.viewer"
                },
                {
                  "const": "part.editor"
                },
                {
                  "const": "sku.viewer"
                },
                {
                  "const": "sku.editor"
                },
                {
                  "const": "orders.admin"
                },
                {
                  "const": "material.viewer"
                },
                {
                  "const": "material.editor"
                },
                {
                  "const": "printer.viewer"
                },
                {
                  "const": "printer.editor"
                },
                {
                  "const": "profile.viewer"
                },
                {
                  "const": "profile.editor"
                },
                {
                  "const": "settings.admin"
                },
                {
                  "const": "subscription.admin"
                }
              ]
            }
          },
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "description": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "isSystem": {
            "type": "boolean"
          }
        },
        "required": [
          "permissions",
          "id",
          "name",
          "description",
          "isSystem"
        ]
      },
      "SendCommandRequest": {
        "type": "object",
        "properties": {
          "command": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/SetSlotInfoCommand"
              },
              {
                "type": "object",
                "properties": {
                  "command": {
                    "const": "stop"
                  }
                },
                "required": [
                  "command"
                ]
              },
              {
                "type": "object",
                "properties": {
                  "command": {
                    "const": "pause"
                  }
                },
                "required": [
                  "command"
                ]
              },
              {
                "type": "object",
                "properties": {
                  "command": {
                    "const": "resume"
                  }
                },
                "required": [
                  "command"
                ]
              },
              {
                "type": "object",
                "properties": {
                  "command": {
                    "const": "resync-data"
                  }
                },
                "required": [
                  "command"
                ]
              },
              {
                "type": "object",
                "properties": {
                  "command": {
                    "const": "unload-filament"
                  }
                },
                "required": [
                  "command"
                ]
              },
              {
                "type": "object",
                "properties": {
                  "command": {
                    "const": "load-filament"
                  },
                  "targetTemp": {
                    "type": "number",
                    "minimum": 0,
                    "maximum": 300
                  },
                  "currentTemp": {
                    "type": "number",
                    "minimum": 0,
                    "maximum": 300
                  },
                  "targetSlot": {
                    "$ref": "#/components/schemas/CommandMaterialSlot"
                  }
                },
                "required": [
                  "command",
                  "targetTemp",
                  "currentTemp",
                  "targetSlot"
                ]
              },
              {
                "type": "object",
                "properties": {
                  "command": {
                    "const": "led-control"
                  },
                  "ref": {
                    "type": "string",
                    "description": "Light component ref: \"light_chamber\", \"light_work\""
                  },
                  "state": {
                    "oneOf": [
                      {
                        "const": "off"
                      },
                      {
                        "const": "on"
                      }
                    ]
                  }
                },
                "required": [
                  "command",
                  "ref",
                  "state"
                ]
              },
              {
                "type": "object",
                "properties": {
                  "command": {
                    "const": "set-temperature"
                  },
                  "ref": {
                    "type": "string",
                    "description": "Component ref: \"nozzle_0\", \"bed_0\", \"chamber_0\""
                  },
                  "temperature": {
                    "type": "number",
                    "minimum": 0,
                    "maximum": 300
                  }
                },
                "required": [
                  "command",
                  "ref",
                  "temperature"
                ]
              },
              {
                "type": "object",
                "properties": {
                  "command": {
                    "const": "select-tool"
                  },
                  "ref": {
                    "type": "string",
                    "description": "Tool or nozzle ref: \"tool_0\", \"nozzle_0\""
                  }
                },
                "required": [
                  "command",
                  "ref"
                ]
              },
              {
                "type": "object",
                "properties": {
                  "command": {
                    "const": "home-axis"
                  },
                  "axes": {
                    "type": "object",
                    "properties": {
                      "x": {
                        "type": "boolean"
                      },
                      "y": {
                        "type": "boolean"
                      },
                      "z": {
                        "type": "boolean"
                      }
                    }
                  }
                },
                "required": [
                  "command",
                  "axes"
                ]
              },
              {
                "type": "object",
                "properties": {
                  "command": {
                    "const": "move-axis"
                  },
                  "axes": {
                    "type": "object",
                    "properties": {
                      "x": {
                        "type": "number",
                        "minimum": -100,
                        "maximum": 100
                      },
                      "y": {
                        "type": "number",
                        "minimum": -100,
                        "maximum": 100
                      },
                      "z": {
                        "type": "number",
                        "minimum": -100,
                        "maximum": 100
                      },
                      "e": {
                        "type": "number",
                        "minimum": -100,
                        "maximum": 100
                      }
                    }
                  }
                },
                "required": [
                  "command",
                  "axes"
                ]
              },
              {
                "type": "object",
                "properties": {
                  "command": {
                    "const": "set-fan"
                  },
                  "ref": {
                    "type": "string",
                    "description": "Fan component ref: \"fan_part\", \"fan_aux\", \"fan_chamber\""
                  },
                  "speed": {
                    "type": "number",
                    "minimum": 0,
                    "maximum": 100
                  }
                },
                "required": [
                  "command",
                  "ref",
                  "speed"
                ]
              },
              {
                "type": "object",
                "properties": {
                  "command": {
                    "const": "extrude-filament"
                  },
                  "ref": {
                    "type": "string",
                    "description": "Nozzle ref, defaults to active nozzle if omitted"
                  },
                  "amount": {
                    "type": "number"
                  }
                },
                "required": [
                  "command",
                  "amount"
                ]
              },
              {
                "type": "object",
                "properties": {
                  "command": {
                    "const": "calibration"
                  },
                  "option_value": {
                    "type": "number"
                  }
                },
                "required": [
                  "command",
                  "option_value"
                ]
              },
              {
                "type": "object",
                "properties": {
                  "command": {
                    "const": "refresh-slot"
                  },
                  "amsId": {
                    "type": "number"
                  },
                  "slotId": {
                    "type": "number"
                  }
                },
                "required": [
                  "command",
                  "amsId",
                  "slotId"
                ]
              },
              {
                "type": "object",
                "properties": {
                  "command": {
                    "const": "skip-objects"
                  },
                  "objectIds": {
                    "type": "array",
                    "items": {
                      "type": "number"
                    }
                  }
                },
                "required": [
                  "command",
                  "objectIds"
                ]
              }
            ]
          },
          "ids": {
            "type": "array",
            "items": {
              "type": "string",
              "pattern": "^[a-z0-9]{24}$"
            }
          }
        },
        "required": [
          "command",
          "ids"
        ]
      },
      "SetSlotInfoCommand": {
        "type": "object",
        "properties": {
          "command": {
            "const": "set-slot-info"
          },
          "info": {
            "type": "object",
            "properties": {
              "amsId": {
                "type": "number"
              },
              "slotId": {
                "type": "number"
              },
              "identifier": {
                "type": "string"
              },
              "color": {
                "type": "string"
              },
              "nozzleTempMin": {
                "type": "number"
              },
              "nozzleTempMax": {
                "type": "number"
              },
              "trayType": {
                "type": "string"
              }
            },
            "required": [
              "slotId",
              "nozzleTempMin",
              "nozzleTempMax",
              "trayType"
            ]
          }
        },
        "required": [
          "command",
          "info"
        ]
      },
      "CommandMaterialSlot": {
        "type": "object",
        "properties": {
          "amsIndex": {
            "type": "number"
          },
          "slotIndex": {
            "type": "number"
          }
        },
        "required": [
          "amsIndex",
          "slotIndex"
        ],
        "description": "Visual slot position for material mapping in print commands"
      },
      "GetStoreSettingsResponse": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "storeId": {
            "type": "string"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time"
          },
          "slicer": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "processLowPriorityJobs": {
            "type": "boolean"
          },
          "automaticQueueMatching": {
            "type": "boolean",
            "description": "When false, every background QueueRun event short-circuits inside\n`matchPrintersAndJobs` and the auto-matcher does not assign jobs. The\nqueue page surfaces a \"Match queue now\" button that bypasses this gate\nby passing `manual: true` to the matcher. Defaults to true so existing\nstores keep their current behaviour."
          },
          "repairSlicerProfileValues": {
            "type": "boolean",
            "description": "When true (the default), the cloud slicer clamps out-of-range / sentinel\nnumeric values in the target slicer's printer/process/filament profiles (and\nthe 3MF's embedded config) into the range that exact slicer build accepts,\nreproducing the desktop GUI's silent value tolerance so headless slices don't\nabort with CLI_INVALID_VALUES_IN_3MF (-18). Turn off to hand the profiles to\nthe CLI verbatim. See packages/builders/slicers config-param-repair."
          },
          "currency": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "currencySymbol": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "defaultPrinterUserProfileId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "defaultPrinterSystemProfileId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "number"
              }
            ]
          },
          "defaultProcessUserProfileId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "defaultProcessSystemProfileId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "number"
              }
            ]
          },
          "defaultFallbackFilamentUserProfileId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "defaultFallbackFilamentSystemProfileId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "number"
              }
            ]
          },
          "experimentalFeatures": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/ExperimentalFeatures"
              }
            ]
          },
          "generalSettings": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/GeneralSettings"
              }
            ]
          },
          "qrWorkflowSettings": {
            "$ref": "#/components/schemas/QrWorkflowSettings"
          }
        },
        "required": [
          "id",
          "storeId",
          "createdAt",
          "updatedAt",
          "slicer",
          "processLowPriorityJobs",
          "automaticQueueMatching",
          "repairSlicerProfileValues",
          "currency",
          "currencySymbol",
          "defaultPrinterUserProfileId",
          "defaultPrinterSystemProfileId",
          "defaultProcessUserProfileId",
          "defaultProcessSystemProfileId",
          "defaultFallbackFilamentUserProfileId",
          "defaultFallbackFilamentSystemProfileId",
          "experimentalFeatures",
          "generalSettings",
          "qrWorkflowSettings"
        ]
      },
      "ExperimentalFeatures": {
        "type": "object",
        "properties": {
          "financial-tracking": {
            "type": "boolean"
          }
        }
      },
      "GeneralSettings": {
        "type": "object",
        "properties": {
          "autoMatchMaterialsNewPart": {
            "type": "boolean"
          },
          "enableTimelapse": {
            "type": "boolean",
            "description": "When true, the cloud renders a timelapse video for each completed print\nby stitching together the snapshot history captured by Fuse during the\nprint. New stores default to true via createDefaultSettings so the\nfeature is on out of the box; stores that don't want the encode cost\ncan toggle it off in store settings."
          },
          "enableCompletionSnapshot": {
            "type": "boolean",
            "description": "When true, Fuse captures a single fresh JPEG near the end of each print\n(last layer / 95% progress / FINISH transition, in that order) and\nuploads it as the print-job's `cameraThumbnailUri`. Independent from\n`enableTimelapse` — a store can have completion snapshots without\npaying the timelapse encode cost, or vice versa. New stores default to\ntrue via createDefaultSettings."
          },
          "enableTelemetryCapture": {
            "type": "boolean",
            "description": "Per-attempt print telemetry capture: the gateway archives a downsampled\nseries (temperatures/progress/layer timings) at print end, and Fuse\nuploads its full-fidelity flight recording. Absent is treated as ON —\nunlike the camera toggles, telemetry defaults on and stores opt out.\nArtifacts land under the permanent `telemetry/` storage prefix and are\nlinked from print history."
          },
          "amsSlotSelectionStrategy": {
            "oneOf": [
              {
                "const": "lowest-index"
              },
              {
                "const": "highest-index"
              },
              {
                "const": "most-empty"
              },
              {
                "const": "most-full"
              }
            ],
            "description": "Controls which slot the queue matcher assigns when a job's material is\nloaded in multiple slots on the same printer. Absent is treated as\n`lowest-index` (left-to-right), so existing stores get deterministic\nleft-to-right assignment without any configuration."
          },
          "addReadSpools": {
            "oneOf": [
              {
                "const": "off"
              },
              {
                "const": "bulk_first"
              },
              {
                "const": "new_stock"
              }
            ],
            "title": "What to do with a roll a printer reads that inventory has no spool for. Absent is `off`",
            "description": "What to do with a roll a printer reads that inventory has no spool for. Absent is `off`."
          },
          "fabmaticIgnoredErrorCodes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FabmaticIgnoredErrorCode"
            },
            "description": "Error codes the store wants ignored when deciding whether a printer\nerror should turn off FabMatic (continuous printing). Codes are matched\nformat-insensitively (case, dashes, underscores and leading zeros are\nignored) against the printer's health `errors` and the print `printError`\ncode. (Health `warnings` never turn FabMatic off, so they are not part of\nthis decision.) If every error present on a finished/errored print matches\nan entry here, FabMatic stays enabled and the queue keeps advancing.\nAbsent/empty means no codes are ignored (current behaviour).\n\nCodes vary in length and format across printer brands: print errors are\noften 8 hex chars (\"0500-400E\"/\"0500400E\"/decimal \"83902478\") while health\ncodes can be 16 hex chars (\"0582040000010045\"). Separators are optional and\nignored when matching."
          },
          "plateMerging": {
            "$ref": "#/components/schemas/PlateMergingSettings",
            "title": "Plate merging (combining compatible pending jobs onto one build plate)",
            "description": "Plate merging (combining compatible pending jobs onto one build plate).\nAbsent means DEFAULT_PLATE_MERGING_SETTINGS (automatic merging off;\nmanual merging is always available, gated only by queue.manage)."
          },
          "showGettingStartedChecklist": {
            "type": "boolean",
            "description": "Getting Started checklist visibility. Absent means \"default by store\nage\": stores created on or after GETTING_STARTED_RELEASE_DATE default\non, older stores off (see isGettingStartedEnabled)."
          },
          "autoConfirmMacroRun": {
            "type": "boolean",
            "description": "When true, the Run Macro dialog's \"printer is clear\" safety checkbox\nstarts checked and re-confirms itself as the macro/printer selection\nchanges, so operators who run macros constantly don't have to tick it\nevery time. The server-side digest check (stale-preview 409) still\napplies. Absent/false = the checkbox must be ticked manually."
          },
          "thumbnailStyle": {
            "oneOf": [
              {
                "const": "orthographic"
              },
              {
                "const": "perspective"
              }
            ],
            "description": "Projection and shading the thumbnail renderer uses. Absent means\nDEFAULT_THUMBNAIL_STYLE (\"orthographic\"). Applies to renders from the\nmoment it is saved — thumbnails already rendered keep their look until\nsomething re-renders them."
          },
          "aiDataProgram": {
            "$ref": "#/components/schemas/AiDataProgramState",
            "description": "Where this store stands with the AI training-data program. Absent means\nnever asked. Flipped to `invited` once the store has labelled enough AI\nfailure alerts; the invite itself, consent copy and retention terms are\nseparate from this flag."
          }
        }
      },
      "FabmaticIgnoredErrorCode": {
        "type": "object",
        "properties": {
          "code": {
            "type": "string"
          },
          "note": {
            "type": "string"
          }
        },
        "required": [
          "code"
        ],
        "description": "A single entry in the FabMatic ignored-error-codes list: the printer error\ncode to ignore, plus an optional human note explaining why it's safe to\nignore (e.g. \"humidity sensor reading, harmless on this unit\")."
      },
      "PlateMergingSettings": {
        "type": "object",
        "properties": {
          "automaticMerging": {
            "type": "boolean",
            "description": "When true, the matcher merges compatible queued jobs onto the assigned\nprinter's plate at match time (scope-limited by mergeScope)."
          },
          "mergeScope": {
            "oneOf": [
              {
                "const": "same-order"
              },
              {
                "const": "any"
              }
            ],
            "description": "Which jobs automatic merging may combine: 'same-order' only merges jobs\nfrom the same order (null orderId matches null — non-commerce jobs merge\nwith each other); 'any' merges anything compatible. Manual merging is\nnever restricted by this."
          },
          "partSpacingMm": {
            "type": "number",
            "title": "Minimum clearance between placed parts, mm",
            "description": "Minimum clearance between placed parts, mm."
          },
          "plateMarginMm": {
            "type": "number",
            "title": "Keep-out margin from the plate edge, mm",
            "description": "Keep-out margin from the plate edge, mm."
          },
          "maxPartsPerPlate": {
            "type": "number",
            "title": "Upper bound on parts per merged plate (slicer/UI sanity bound)",
            "description": "Upper bound on parts per merged plate (slicer/UI sanity bound)."
          },
          "mergeHoldMinutes": {
            "type": "number",
            "description": "When > 0 (and automaticMerging is on), a merge-eligible pending job is\nheld back from being assigned to a printer for up to this many minutes\nafter it was queued, so jobs arriving shortly after it can batch onto one\nplate instead of fanning out across idle printers. 0 = off (jobs assign\nimmediately). The window is anchored to each job's own creation time, so\na steady trickle of arrivals can never extend a job's hold. Manual\n\"Match queue now\" runs and direct printer assignments bypass holds.\nOptional: absent on settings saved before the field existed."
          },
          "holdReleaseSaturationPercent": {
            "type": "number",
            "description": "Early release for the hold: once the batch that would merge fills at\nleast this percent of the usable plate, waiting adds latency but little\nvalue, so the job assigns immediately. Fullness is the merge preview's\ncoverage number — parts, the spacing around them, and gaps too small\nfor anything else, over the plate inside the margin minus keep-out\nzones — so 100 means \"nothing else fits\". 1-100. Optional: absent means\nthe default (80: about one mid-size part's worth of room left)."
          },
          "processPolicies": {
            "$ref": "#/components/schemas/Recordstringstring",
            "description": "Per-setting merge policies for plate-wide process settings (advanced\nplate optimization). Key = slicer config key from\nPLATE_PROCESS_SETTINGS; value = a ProcessMergePolicy allowed for that\nkey (\"block\" | \"max\" | \"min\" | \"ignore\"). Absent keys use the registry\ndefault; unknown keys/policies are ignored (see\neffectiveProcessPolicies)."
          },
          "slicerCompatibility": {
            "oneOf": [
              {
                "const": "allow-upgrades"
              },
              {
                "const": "account-default"
              },
              {
                "const": "exact"
              }
            ],
            "description": "How slicer engine/version differences gate merging and drive which slicer\nthe merged plate is sliced with. Absent means DEFAULT_SLICER_COMPATIBILITY\n(\"allow-upgrades\"). See {@link SlicerCompatibilityMode }."
          }
        },
        "required": [
          "automaticMerging",
          "mergeScope",
          "partSpacingMm",
          "plateMarginMm",
          "maxPartsPerPlate"
        ]
      },
      "AiDataProgramState": {
        "type": "object",
        "properties": {
          "status": {
            "oneOf": [
              {
                "const": "unasked"
              },
              {
                "const": "invited"
              },
              {
                "const": "joined"
              },
              {
                "const": "declined"
              }
            ]
          },
          "decidedAt": {
            "type": "string"
          },
          "decidedByUserId": {
            "type": "string"
          }
        },
        "required": [
          "status"
        ]
      },
      "QrWorkflowSettings": {
        "type": "object",
        "properties": {
          "disabledActions": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Action ids the app never offers and execute refuses"
          },
          "pairDefaults": {
            "$ref": "#/components/schemas/Recordstringstring",
            "description": "The main button for a pair of tags, by pair key such as \"blank+material_variant\""
          },
          "actionOrder": {
            "$ref": "#/components/schemas/RecordstringArraystring",
            "description": "The order the app lists a scan's actions in, by entity type or pair key"
          },
          "slotStrategy": {
            "oneOf": [
              {
                "const": "prompt"
              },
              {
                "const": "external"
              },
              {
                "const": "first_empty"
              }
            ]
          },
          "moveSpoolBetweenSlots": {
            "type": "boolean",
            "description": "When false, loading a spool that sits in another slot is refused instead of moving it"
          },
          "defaultSpoolGrams": {
            "type": "number",
            "description": "The weight Register spool opens with"
          }
        },
        "description": "Which scan actions the store offers, and the defaults the app opens with."
      },
      "UpdateStoreSettingsRequest": {
        "type": "object",
        "properties": {
          "slicer": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "processLowPriorityJobs": {
            "type": "boolean"
          },
          "automaticQueueMatching": {
            "type": "boolean"
          },
          "repairSlicerProfileValues": {
            "type": "boolean"
          },
          "currency": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "currencySymbol": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "defaultPrinterUserProfileId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "defaultPrinterSystemProfileId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "number"
              }
            ]
          },
          "defaultProcessUserProfileId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "defaultProcessSystemProfileId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "number"
              }
            ]
          },
          "defaultFallbackFilamentUserProfileId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "defaultFallbackFilamentSystemProfileId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "number"
              }
            ]
          },
          "experimentalFeatures": {
            "$ref": "#/components/schemas/ExperimentalFeatures"
          },
          "generalSettings": {
            "$ref": "#/components/schemas/GeneralSettings"
          },
          "qrWorkflowSettings": {
            "$ref": "#/components/schemas/QrWorkflowSettingsRequest",
            "description": "Replaces the store's QR Workflows settings as a whole; a field left out\ntakes its default. Needs the QR Workflows add-on."
          }
        }
      },
      "QrWorkflowSettingsRequest": {
        "type": "object",
        "properties": {
          "disabledActions": {
            "type": "array",
            "items": {
              "type": "string",
              "maxLength": 64
            },
            "maxItems": 200,
            "title": "Actions the app never offers and execute refuses with 403",
            "description": "Actions the app never offers and execute refuses with 403."
          },
          "pairDefaults": {
            "$ref": "#/components/schemas/RecordstringstringMaxLength64",
            "description": "The main button for a pair of tags, by pair key (an action's `subject`),\nsuch as `{\"blank+material_variant\": \"pair.bindBlankToVariant\"}`. It wins\nwhenever it is available; destructive actions can't be one."
          },
          "actionOrder": {
            "$ref": "#/components/schemas/Recordstring(stringMaxLength64)MaxItems50",
            "description": "The order the app lists a scan's actions in, by `subject`. Actions left\nout follow in catalog order. The order never picks the main button."
          },
          "slotStrategy": {
            "oneOf": [
              {
                "const": "prompt"
              },
              {
                "const": "external"
              },
              {
                "const": "first_empty"
              }
            ],
            "description": "The slot the app pre-selects for a spool or filament scanned with a\nprinter: `prompt` picks none, `external` the external spool holder,\n`first_empty` the first slot with nothing assigned and no spool (for a\nspool, first a slot the printer sees a spool in with nothing assigned).\nWith no such slot the app asks."
          },
          "moveSpoolBetweenSlots": {
            "type": "boolean",
            "description": "When false, loading a spool that sits in another slot is refused with\n409 instead of moving it."
          },
          "defaultSpoolGrams": {
            "type": "integer",
            "minimum": 1,
            "maximum": 50000,
            "title": "The weight Register spool opens with, in grams",
            "description": "The weight Register spool opens with, in grams."
          }
        },
        "description": "Action ids come from GET /v1/qr-tags/actions."
      },
      "RecordstringstringMaxLength64": {
        "type": "object",
        "properties": {},
        "description": "Construct a type with a set of properties K of type T",
        "additionalProperties": {
          "type": "string",
          "maxLength": 64
        }
      },
      "Recordstring(stringMaxLength64)MaxItems50": {
        "type": "object",
        "properties": {},
        "description": "Construct a type with a set of properties K of type T",
        "additionalProperties": {
          "type": "array",
          "items": {
            "type": "string",
            "maxLength": 64
          },
          "maxItems": 50
        }
      },
      "GetAllSlicerVersionsResponse": {
        "type": "object",
        "properties": {
          "slicerVersions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SlicerVersion"
            }
          }
        },
        "required": [
          "slicerVersions"
        ]
      },
      "SlicerVersion": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "engine": {
            "oneOf": [
              {
                "const": "orcaslicer"
              },
              {
                "const": "bambu-studio"
              },
              {
                "const": "prusaslicer"
              },
              {
                "const": "superslicer"
              }
            ]
          },
          "version": {
            "type": "string"
          },
          "order": {
            "type": "number"
          },
          "latest": {
            "type": "boolean"
          },
          "default": {
            "type": "boolean"
          }
        },
        "required": [
          "id",
          "engine",
          "version",
          "order",
          "latest",
          "default"
        ]
      },
      "SearchQueryDtoNotificationSetting": {
        "type": "object",
        "properties": {
          "filter": {
            "$ref": "#/components/schemas/FilterConditionNotificationSetting",
            "title": "Filter",
            "description": "Complex filter conditions using logical and field operators.\nAvailable field operators: eq, ne, gt, gte, lt, lte, contains, startsWith, endsWith, in, notIn, isNull, between.\nUsage example: {\"filter\": {\"and\": [{\"name\": {\"contains\": \"benchy\"}}, {\"or\": [{\"type\": {\"eq\": \"3mf\"}}, {\"type\": {\"eq\": \"gcode3mf\"}}]}}}"
          },
          "sort": {
            "type": "string",
            "title": "Sort",
            "description": "Sort specification in format \"field:asc,field2:desc\""
          },
          "limit": {
            "type": "number",
            "minimum": 1,
            "maximum": 1000,
            "title": "Limit",
            "description": "Maximum number of results to return (default: 1000, max: 1000)"
          },
          "offset": {
            "type": "number",
            "minimum": 0,
            "title": "Offset",
            "description": "Number of results to skip for pagination"
          },
          "fields": {
            "type": "string",
            "title": "Fields",
            "description": "Comma-separated list of fields to return"
          },
          "include": {
            "type": "string",
            "title": "Include",
            "description": "Comma-separated list of relations to include (max 4, max 2 levels deep).\nExample: \"linkedParts,linkedParts.part,folder\""
          },
          "meta": {
            "type": "boolean",
            "title": "Meta",
            "description": "If true, returns response with metadata (total, count, hasMore, etc.)"
          },
          "hints": {
            "type": "boolean",
            "title": "Hints",
            "description": "If true, returns AI-friendly hints about available actions. Implies meta=true."
          }
        },
        "title": "Search Query",
        "description": "Complete search request with filter conditions and query settings"
      },
      "FilterConditionNotificationSetting": {
        "type": "object",
        "properties": {
          "and": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FilterConditionNotificationSetting"
            },
            "title": "AND Conditions",
            "description": "All conditions must be true"
          },
          "or": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FilterConditionNotificationSetting"
            },
            "title": "OR Conditions",
            "description": "At least one condition must be true"
          },
          "enabled": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "channel": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "onJobSucceeded": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "onJobFailed": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "onJobStarted": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "onJobCancelled": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "onPrinterHmsError": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "onPrinterHmsWarning": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "onPrinterOffline": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "onPrinterOnline": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "onPrinterContinuousPrintDisabled": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "onOrderCreatedManual": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "onOrderCreatedRetail": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "onOrderCancelled": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "onOrderClosed": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "onOrdersAutoPrinted": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "onMaintenanceModeOn": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "onMaintenanceModeOff": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "onMaintenanceDueSoon": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "onMaintenanceOverdue": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "onMaterialUsageRecorded": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "onAiFailureDetected": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "id": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "storeId": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "createdAt": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "updatedAt": {
            "$ref": "#/components/schemas/FieldOperators"
          }
        },
        "title": "Filter Condition",
        "description": "Root filter condition that can be either a logical condition (AND/OR) or field-based condition"
      },
      "SearchQueryDtoStoreSettings": {
        "type": "object",
        "properties": {
          "filter": {
            "$ref": "#/components/schemas/FilterConditionStoreSettings",
            "title": "Filter",
            "description": "Complex filter conditions using logical and field operators.\nAvailable field operators: eq, ne, gt, gte, lt, lte, contains, startsWith, endsWith, in, notIn, isNull, between.\nUsage example: {\"filter\": {\"and\": [{\"name\": {\"contains\": \"benchy\"}}, {\"or\": [{\"type\": {\"eq\": \"3mf\"}}, {\"type\": {\"eq\": \"gcode3mf\"}}]}}}"
          },
          "sort": {
            "type": "string",
            "title": "Sort",
            "description": "Sort specification in format \"field:asc,field2:desc\""
          },
          "limit": {
            "type": "number",
            "minimum": 1,
            "maximum": 1000,
            "title": "Limit",
            "description": "Maximum number of results to return (default: 1000, max: 1000)"
          },
          "offset": {
            "type": "number",
            "minimum": 0,
            "title": "Offset",
            "description": "Number of results to skip for pagination"
          },
          "fields": {
            "type": "string",
            "title": "Fields",
            "description": "Comma-separated list of fields to return"
          },
          "include": {
            "type": "string",
            "title": "Include",
            "description": "Comma-separated list of relations to include (max 4, max 2 levels deep).\nExample: \"linkedParts,linkedParts.part,folder\""
          },
          "meta": {
            "type": "boolean",
            "title": "Meta",
            "description": "If true, returns response with metadata (total, count, hasMore, etc.)"
          },
          "hints": {
            "type": "boolean",
            "title": "Hints",
            "description": "If true, returns AI-friendly hints about available actions. Implies meta=true."
          }
        },
        "title": "Search Query",
        "description": "Complete search request with filter conditions and query settings"
      },
      "FilterConditionStoreSettings": {
        "type": "object",
        "properties": {
          "and": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FilterConditionStoreSettings"
            },
            "title": "AND Conditions",
            "description": "All conditions must be true"
          },
          "or": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FilterConditionStoreSettings"
            },
            "title": "OR Conditions",
            "description": "At least one condition must be true"
          },
          "id": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "storeId": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "createdAt": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "updatedAt": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "slicer": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "processLowPriorityJobs": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "automaticQueueMatching": {
            "$ref": "#/components/schemas/FieldOperators",
            "description": "When false, every background QueueRun event short-circuits inside\n`matchPrintersAndJobs` and the auto-matcher does not assign jobs. The\nqueue page surfaces a \"Match queue now\" button that bypasses this gate\nby passing `manual: true` to the matcher. Defaults to true so existing\nstores keep their current behaviour."
          },
          "repairSlicerProfileValues": {
            "$ref": "#/components/schemas/FieldOperators",
            "description": "When true (the default), the cloud slicer clamps out-of-range / sentinel\nnumeric values in the target slicer's printer/process/filament profiles (and\nthe 3MF's embedded config) into the range that exact slicer build accepts,\nreproducing the desktop GUI's silent value tolerance so headless slices don't\nabort with CLI_INVALID_VALUES_IN_3MF (-18). Turn off to hand the profiles to\nthe CLI verbatim. See packages/builders/slicers config-param-repair."
          },
          "currency": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "currencySymbol": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "defaultPrinterUserProfileId": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "defaultPrinterSystemProfileId": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "defaultProcessUserProfileId": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "defaultProcessSystemProfileId": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "defaultFallbackFilamentUserProfileId": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "defaultFallbackFilamentSystemProfileId": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "experimentalFeatures": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "generalSettings": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "qrWorkflowSettings": {
            "$ref": "#/components/schemas/FieldOperators"
          }
        },
        "title": "Filter Condition",
        "description": "Root filter condition that can be either a logical condition (AND/OR) or field-based condition"
      },
      "Material": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "minLength": 1
          },
          "brand": {
            "type": "string",
            "minLength": 1
          },
          "type": {
            "type": "string"
          },
          "identifier": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "minLength": 1,
                "maxLength": 8
              }
            ]
          },
          "tags": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "filamentUserProfileId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "pattern": "^[a-z0-9]{24}$"
              }
            ]
          },
          "filamentSystemProfileId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "number"
              }
            ]
          },
          "starred": {
            "type": "boolean"
          },
          "pricePer1000g": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "number"
              }
            ]
          },
          "source": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "externalId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "customMetadata": {
            "$ref": "#/components/schemas/Recordstringunknown"
          },
          "id": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "storeId": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time"
          }
        },
        "required": [
          "name",
          "brand",
          "type",
          "tags",
          "filamentUserProfileId",
          "filamentSystemProfileId",
          "id",
          "storeId",
          "createdAt",
          "updatedAt"
        ],
        "description": "Material entity representing a general filament material"
      },
      "namestringundefinedbrandstringundefinedtypestringundefinedidentifierstringundefinedtagsstringundefinedfilamentUserProfileIdstringundefined...9more...updatedAtstringundefinedQuerySettings...": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "brand": {
            "type": "string"
          },
          "type": {
            "type": "string"
          },
          "identifier": {
            "type": "string"
          },
          "tags": {
            "type": "string"
          },
          "filamentUserProfileId": {
            "type": "string"
          },
          "filamentSystemProfileId": {
            "type": "string"
          },
          "starred": {
            "type": "string"
          },
          "pricePer1000g": {
            "type": "string"
          },
          "source": {
            "type": "string"
          },
          "externalId": {
            "type": "string"
          },
          "customMetadata": {
            "type": "string"
          },
          "id": {
            "type": "string"
          },
          "storeId": {
            "type": "string"
          },
          "createdAt": {
            "type": "string"
          },
          "updatedAt": {
            "type": "string"
          },
          "sort": {
            "type": "string",
            "title": "Sort",
            "description": "Sort specification in format \"field:asc,field2:desc\""
          },
          "limit": {
            "type": "number",
            "minimum": 1,
            "maximum": 1000,
            "title": "Limit",
            "description": "Maximum number of results to return (default: 1000, max: 1000)"
          },
          "offset": {
            "type": "number",
            "minimum": 0,
            "title": "Offset",
            "description": "Number of results to skip for pagination"
          },
          "fields": {
            "type": "string",
            "title": "Fields",
            "description": "Comma-separated list of fields to return"
          },
          "include": {
            "type": "string",
            "title": "Include",
            "description": "Comma-separated list of relations to include (max 4, max 2 levels deep).\nExample: \"linkedParts,linkedParts.part,folder\""
          },
          "meta": {
            "type": "boolean",
            "title": "Meta",
            "description": "If true, returns response with metadata (total, count, hasMore, etc.)"
          },
          "hints": {
            "type": "boolean",
            "title": "Hints",
            "description": "If true, returns AI-friendly hints about available actions. Implies meta=true."
          }
        }
      },
      "SearchQueryDtoMaterial": {
        "type": "object",
        "properties": {
          "filter": {
            "$ref": "#/components/schemas/FilterConditionMaterial",
            "title": "Filter",
            "description": "Complex filter conditions using logical and field operators.\nAvailable field operators: eq, ne, gt, gte, lt, lte, contains, startsWith, endsWith, in, notIn, isNull, between.\nUsage example: {\"filter\": {\"and\": [{\"name\": {\"contains\": \"benchy\"}}, {\"or\": [{\"type\": {\"eq\": \"3mf\"}}, {\"type\": {\"eq\": \"gcode3mf\"}}]}}}"
          },
          "sort": {
            "type": "string",
            "title": "Sort",
            "description": "Sort specification in format \"field:asc,field2:desc\""
          },
          "limit": {
            "type": "number",
            "minimum": 1,
            "maximum": 1000,
            "title": "Limit",
            "description": "Maximum number of results to return (default: 1000, max: 1000)"
          },
          "offset": {
            "type": "number",
            "minimum": 0,
            "title": "Offset",
            "description": "Number of results to skip for pagination"
          },
          "fields": {
            "type": "string",
            "title": "Fields",
            "description": "Comma-separated list of fields to return"
          },
          "include": {
            "type": "string",
            "title": "Include",
            "description": "Comma-separated list of relations to include (max 4, max 2 levels deep).\nExample: \"linkedParts,linkedParts.part,folder\""
          },
          "meta": {
            "type": "boolean",
            "title": "Meta",
            "description": "If true, returns response with metadata (total, count, hasMore, etc.)"
          },
          "hints": {
            "type": "boolean",
            "title": "Hints",
            "description": "If true, returns AI-friendly hints about available actions. Implies meta=true."
          }
        },
        "title": "Search Query",
        "description": "Complete search request with filter conditions and query settings"
      },
      "FilterConditionMaterial": {
        "type": "object",
        "properties": {
          "and": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FilterConditionMaterial"
            },
            "title": "AND Conditions",
            "description": "All conditions must be true"
          },
          "or": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FilterConditionMaterial"
            },
            "title": "OR Conditions",
            "description": "At least one condition must be true"
          },
          "name": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "brand": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "type": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "identifier": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "tags": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "filamentUserProfileId": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "filamentSystemProfileId": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "starred": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "pricePer1000g": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "source": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "externalId": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "customMetadata": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "id": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "storeId": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "createdAt": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "updatedAt": {
            "$ref": "#/components/schemas/FieldOperators"
          }
        },
        "title": "Filter Condition",
        "description": "Root filter condition that can be either a logical condition (AND/OR) or field-based condition"
      },
      "MaterialsData": {
        "type": "object",
        "properties": {
          "materials": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Material"
            }
          },
          "variants": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/MaterialVariant"
            }
          },
          "groups": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/MaterialGroup"
            }
          },
          "groupMembers": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/MaterialGroupMember"
            }
          }
        },
        "required": [
          "materials",
          "variants",
          "groups",
          "groupMembers"
        ]
      },
      "MaterialVariant": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "minLength": 1
          },
          "materialId": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "color": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "pattern": "^#([A-Fa-f0-9]{8})(;#([A-Fa-f0-9]{8}))*$"
              }
            ]
          },
          "tags": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "filamentUserProfileId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "pattern": "^[a-z0-9]{24}$"
              }
            ]
          },
          "filamentSystemProfileId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "number"
              }
            ]
          },
          "pricePer1000g": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "number"
              }
            ]
          },
          "pressureAdvance": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "number",
                "minimum": 0,
                "maximum": 2
              }
            ]
          },
          "source": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "externalId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "customMetadata": {
            "$ref": "#/components/schemas/Recordstringunknown"
          },
          "id": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "storeId": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time"
          }
        },
        "required": [
          "name",
          "materialId",
          "color",
          "tags",
          "filamentUserProfileId",
          "filamentSystemProfileId",
          "id",
          "storeId",
          "createdAt",
          "updatedAt"
        ],
        "description": "Material variant representing a specific filament material"
      },
      "MaterialGroup": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "minLength": 1
          },
          "priority": {
            "type": "number",
            "minimum": 0
          },
          "parentId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "pattern": "^[a-z0-9]{24}$"
              }
            ]
          },
          "id": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "storeId": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time"
          }
        },
        "required": [
          "name",
          "priority",
          "parentId",
          "id",
          "storeId",
          "createdAt",
          "updatedAt"
        ],
        "description": "Material group entity for organizing materials"
      },
      "MaterialGroupMember": {
        "type": "object",
        "properties": {
          "variantId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "pattern": "^[a-z0-9]{24}$"
              }
            ]
          },
          "materialId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "pattern": "^[a-z0-9]{24}$"
              }
            ]
          },
          "materialGroupId": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "materialType": {
            "type": "string"
          },
          "priority": {
            "type": "number",
            "minimum": 0
          },
          "id": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "storeId": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time"
          }
        },
        "required": [
          "variantId",
          "materialId",
          "materialGroupId",
          "materialType",
          "priority",
          "id",
          "storeId",
          "createdAt",
          "updatedAt"
        ],
        "description": "Material group membership linking materials to groups"
      },
      "MaterialInsert": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "minLength": 1
          },
          "type": {
            "type": "string"
          },
          "brand": {
            "type": "string",
            "minLength": 1
          },
          "externalId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "source": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "customMetadata": {
            "$ref": "#/components/schemas/Recordstringunknown"
          },
          "tags": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "filamentUserProfileId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "pattern": "^[a-z0-9]{24}$"
              }
            ]
          },
          "filamentSystemProfileId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "number"
              }
            ]
          },
          "identifier": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "minLength": 1,
                "maxLength": 8
              }
            ]
          },
          "starred": {
            "type": "boolean"
          },
          "pricePer1000g": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "number"
              }
            ]
          }
        },
        "required": [
          "name",
          "type",
          "brand",
          "tags",
          "filamentUserProfileId",
          "filamentSystemProfileId"
        ]
      },
      "MaterialVariantInsert": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "minLength": 1
          },
          "externalId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "source": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "customMetadata": {
            "$ref": "#/components/schemas/Recordstringunknown"
          },
          "tags": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "filamentUserProfileId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "pattern": "^[a-z0-9]{24}$"
              }
            ]
          },
          "filamentSystemProfileId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "number"
              }
            ]
          },
          "pricePer1000g": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "number"
              }
            ]
          },
          "materialId": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "color": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "pattern": "^#([A-Fa-f0-9]{8})(;#([A-Fa-f0-9]{8}))*$"
              }
            ]
          },
          "pressureAdvance": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "number",
                "minimum": 0,
                "maximum": 2
              }
            ]
          }
        },
        "required": [
          "name",
          "tags",
          "filamentUserProfileId",
          "filamentSystemProfileId",
          "materialId",
          "color"
        ]
      },
      "PartialMaterialVariant": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "minLength": 1
          },
          "materialId": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "color": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "pattern": "^#([A-Fa-f0-9]{8})(;#([A-Fa-f0-9]{8}))*$"
              }
            ]
          },
          "tags": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "filamentUserProfileId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "pattern": "^[a-z0-9]{24}$"
              }
            ]
          },
          "filamentSystemProfileId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "number"
              }
            ]
          },
          "pricePer1000g": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "number"
              }
            ]
          },
          "pressureAdvance": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "number",
                "minimum": 0,
                "maximum": 2
              }
            ]
          },
          "source": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "externalId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "customMetadata": {
            "$ref": "#/components/schemas/Recordstringunknown"
          },
          "id": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "storeId": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time"
          }
        },
        "description": "Make all properties in T optional"
      },
      "MaterialGroupInsert": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "minLength": 1
          },
          "parentId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "pattern": "^[a-z0-9]{24}$"
              }
            ]
          },
          "priority": {
            "type": "number",
            "minimum": 0
          }
        },
        "required": [
          "name",
          "parentId",
          "priority"
        ]
      },
      "PartialMaterialGroup": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "minLength": 1
          },
          "priority": {
            "type": "number",
            "minimum": 0
          },
          "parentId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "pattern": "^[a-z0-9]{24}$"
              }
            ]
          },
          "id": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "storeId": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time"
          }
        },
        "description": "Make all properties in T optional"
      },
      "MaterialGroupMemberInsert": {
        "type": "object",
        "properties": {
          "priority": {
            "type": "number",
            "minimum": 0
          },
          "materialId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "pattern": "^[a-z0-9]{24}$"
              }
            ]
          },
          "variantId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "pattern": "^[a-z0-9]{24}$"
              }
            ]
          },
          "materialGroupId": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          }
        },
        "required": [
          "priority",
          "materialId",
          "variantId",
          "materialGroupId"
        ]
      },
      "PartMaterialAssignmentInsert": {
        "type": "object",
        "properties": {
          "partId": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "priority": {
            "type": "number",
            "minimum": 0
          },
          "groupId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "pattern": "^[a-z0-9]{24}$"
              }
            ]
          },
          "materialId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "pattern": "^[a-z0-9]{24}$"
              }
            ]
          },
          "variantId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "pattern": "^[a-z0-9]{24}$"
              }
            ]
          },
          "materialType": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "index": {
            "type": "number",
            "minimum": 0
          }
        },
        "required": [
          "partId",
          "priority",
          "groupId",
          "materialId",
          "variantId",
          "materialType",
          "index"
        ]
      },
      "MaterialInstance": {
        "type": "object",
        "properties": {
          "variantId": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "materialId": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "materialType": {
            "type": "string"
          },
          "remainingMaterial": {
            "type": "number",
            "minimum": 0
          },
          "source": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "externalId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "customMetadata": {
            "$ref": "#/components/schemas/Recordstringunknown"
          },
          "serial": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ],
            "title": "The roll's own identifier (RFID tag id, or one entered by hand)",
            "description": "The roll's own identifier (RFID tag id, or one entered by hand)."
          },
          "serialSource": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "const": "tag"
              },
              {
                "const": "manual"
              },
              {
                "const": "integration"
              }
            ]
          },
          "form": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "const": "spool"
              },
              {
                "const": "refill"
              }
            ]
          },
          "nominalGrams": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "number"
              }
            ],
            "title": "What the roll weighed when full",
            "description": "What the roll weighed when full."
          },
          "pricePer1000g": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "number"
              }
            ],
            "title": "What was paid for this roll, per kg, in cents",
            "description": "What was paid for this roll, per kg, in cents."
          },
          "labelCode": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ],
            "title": "Reserved QR label code",
            "description": "Reserved QR label code."
          },
          "intakeLineId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "pattern": "^[a-z0-9]{24}$"
              }
            ]
          },
          "finishedAt": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "format": "date-time"
              }
            ],
            "title": "When the spool was finished; null while it is active",
            "description": "When the spool was finished; null while it is active."
          },
          "finishReason": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "const": "used_up"
              },
              {
                "const": "archived"
              }
            ],
            "title": "`used_up` or `archived`; null while the spool is active",
            "description": "`used_up` or `archived`; null while the spool is active."
          },
          "id": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "storeId": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time"
          }
        },
        "required": [
          "variantId",
          "materialId",
          "materialType",
          "remainingMaterial",
          "id",
          "storeId",
          "createdAt",
          "updatedAt"
        ],
        "description": "Material instance representing physical spools or cartridges of material"
      },
      "FinishSpoolsResponse": {
        "type": "object",
        "properties": {
          "finished": {
            "type": "array",
            "items": {
              "type": "string",
              "pattern": "^[a-z0-9]{24}$"
            },
            "title": "Spools finished by this request",
            "description": "Spools finished by this request."
          },
          "alreadyFinished": {
            "type": "array",
            "items": {
              "type": "string",
              "pattern": "^[a-z0-9]{24}$"
            },
            "title": "Spools that were already finished and were left as they were",
            "description": "Spools that were already finished and were left as they were."
          }
        },
        "required": [
          "finished",
          "alreadyFinished"
        ]
      },
      "FinishSpoolsRequest": {
        "type": "object",
        "properties": {
          "instanceIds": {
            "type": "array",
            "items": {
              "type": "string",
              "pattern": "^[a-z0-9]{24}$"
            },
            "minItems": 1,
            "maxItems": 500
          },
          "reason": {
            "oneOf": [
              {
                "const": "used_up"
              },
              {
                "const": "archived"
              }
            ],
            "description": "`used_up` writes off what is left as waste. `archived` takes the spool\nout of on-hand stock but keeps its weight on record."
          }
        },
        "required": [
          "instanceIds",
          "reason"
        ]
      },
      "RestoreSpoolsResponse": {
        "type": "object",
        "properties": {
          "restored": {
            "type": "array",
            "items": {
              "type": "string",
              "pattern": "^[a-z0-9]{24}$"
            },
            "title": "Spools brought back to active. Spools that were not finished are left out",
            "description": "Spools brought back to active. Spools that were not finished are left out."
          }
        },
        "required": [
          "restored"
        ]
      },
      "RestoreSpoolsRequest": {
        "type": "object",
        "properties": {
          "instanceIds": {
            "type": "array",
            "items": {
              "type": "string",
              "pattern": "^[a-z0-9]{24}$"
            },
            "minItems": 1,
            "maxItems": 500
          }
        },
        "required": [
          "instanceIds"
        ]
      },
      "MaterialInstanceDetail": {
        "type": "object",
        "properties": {
          "receivedAt": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "format": "date-time"
              }
            ]
          },
          "supplier": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "orderNumber": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "variantId": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "materialId": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "materialType": {
            "type": "string"
          },
          "remainingMaterial": {
            "type": "number",
            "minimum": 0
          },
          "source": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "externalId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "customMetadata": {
            "$ref": "#/components/schemas/Recordstringunknown"
          },
          "serial": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ],
            "title": "The roll's own identifier (RFID tag id, or one entered by hand)",
            "description": "The roll's own identifier (RFID tag id, or one entered by hand)."
          },
          "serialSource": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "const": "tag"
              },
              {
                "const": "manual"
              },
              {
                "const": "integration"
              }
            ]
          },
          "form": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "const": "spool"
              },
              {
                "const": "refill"
              }
            ]
          },
          "nominalGrams": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "number"
              }
            ],
            "title": "What the roll weighed when full",
            "description": "What the roll weighed when full."
          },
          "pricePer1000g": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "number"
              }
            ],
            "title": "What was paid for this roll, per kg, in cents",
            "description": "What was paid for this roll, per kg, in cents."
          },
          "labelCode": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ],
            "title": "Reserved QR label code",
            "description": "Reserved QR label code."
          },
          "intakeLineId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "pattern": "^[a-z0-9]{24}$"
              }
            ]
          },
          "finishedAt": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "format": "date-time"
              }
            ],
            "title": "When the spool was finished; null while it is active",
            "description": "When the spool was finished; null while it is active."
          },
          "finishReason": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "const": "used_up"
              },
              {
                "const": "archived"
              }
            ],
            "title": "`used_up` or `archived`; null while the spool is active",
            "description": "`used_up` or `archived`; null while the spool is active."
          },
          "id": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "storeId": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time"
          }
        },
        "required": [
          "receivedAt",
          "supplier",
          "orderNumber",
          "variantId",
          "materialId",
          "materialType",
          "remainingMaterial",
          "id",
          "storeId",
          "createdAt",
          "updatedAt"
        ],
        "description": "A spool with the delivery that brought it in. The delivery fields are null\nwithout the filament-inventory add-on, and on a spool that did not come in\non a delivery."
      },
      "SpoolActivityResponse": {
        "type": "object",
        "properties": {
          "usedGrams": {
            "type": "number",
            "title": "Grams the spool's prints drew, over every page",
            "description": "Grams the spool's prints drew, over every page."
          },
          "printCount": {
            "type": "number",
            "title": "Prints that drew from the spool",
            "description": "Prints that drew from the spool."
          },
          "rows": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SpoolActivityRow"
            }
          },
          "total": {
            "type": "number",
            "title": "Rows over every page",
            "description": "Rows over every page."
          }
        },
        "required": [
          "usedGrams",
          "printCount",
          "rows",
          "total"
        ]
      },
      "SpoolActivityRow": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "at": {
            "type": "string",
            "format": "date-time"
          },
          "kind": {
            "oneOf": [
              {
                "const": "manual"
              },
              {
                "const": "intake"
              },
              {
                "const": "convert"
              },
              {
                "const": "print"
              },
              {
                "const": "opening"
              },
              {
                "const": "closing"
              },
              {
                "const": "retire"
              },
              {
                "const": "restore"
              }
            ]
          },
          "reason": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "printJobId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "pattern": "^[a-z0-9]{24}$"
              }
            ],
            "title": "The print job a print row drew for. Null on rows that are not prints",
            "description": "The print job a print row drew for. Null on rows that are not prints."
          },
          "partName": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "attempt": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "number"
              }
            ],
            "title": "The job's attempt that drew it, from 1",
            "description": "The job's attempt that drew it, from 1."
          },
          "by": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/StockActivityActor"
              }
            ],
            "title": "Who queued the print on a print row, who made the change on any other",
            "description": "Who queued the print on a print row, who made the change on any other."
          },
          "printerName": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "deltaGrams": {
            "type": "number"
          },
          "remainingAfterGrams": {
            "type": "number"
          },
          "costCents": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "number"
              }
            ],
            "description": "What the grams moved are worth at the spool's price per kg. Null when it\nhas none, and on an archive or restore row, which spends nothing."
          }
        },
        "required": [
          "id",
          "at",
          "kind",
          "reason",
          "printJobId",
          "partName",
          "attempt",
          "by",
          "printerName",
          "deltaGrams",
          "remainingAfterGrams",
          "costCents"
        ],
        "description": "One move of a spool's weight, as its page lists it."
      },
      "StockActivityActor": {
        "type": "object",
        "properties": {
          "actorId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "label": {
            "type": "string"
          },
          "type": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ],
            "title": "`user`, `api_key`, `system`, `scheduler`, `webhook` or `fuse`",
            "description": "`user`, `api_key`, `system`, `scheduler`, `webhook` or `fuse`."
          }
        },
        "required": [
          "actorId",
          "label",
          "type"
        ]
      },
      "SpoolActivityQuery": {
        "type": "object",
        "properties": {
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 1000,
            "title": "Rows per page, default 50",
            "description": "Rows per page, default 50."
          },
          "offset": {
            "type": "integer",
            "minimum": 0,
            "title": "Rows to skip, for the next page",
            "description": "Rows to skip, for the next page."
          }
        }
      },
      "ReadSpool": {
        "type": "object",
        "properties": {
          "serial": {
            "type": "string"
          },
          "spoolId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ],
            "title": "The inventory spool carrying the serial: an active one, else the newest finished one",
            "description": "The inventory spool carrying the serial: an active one, else the newest finished one."
          },
          "spoolFinished": {
            "type": "boolean",
            "title": "Whether that spool is used up or archived",
            "description": "Whether that spool is used up or archived."
          },
          "slots": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ReadSpoolSlot"
            },
            "title": "Slots whose last tag read is this serial",
            "description": "Slots whose last tag read is this serial."
          }
        },
        "required": [
          "serial",
          "spoolId",
          "spoolFinished",
          "slots"
        ],
        "description": "A spool serial as inventory and the printers know it (#1625)."
      },
      "ReadSpoolSlot": {
        "type": "object",
        "properties": {
          "printerId": {
            "type": "string"
          },
          "printerName": {
            "type": "string"
          },
          "amsIndex": {
            "type": "number"
          },
          "slotIndex": {
            "type": "number"
          },
          "materialId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "variantId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "instanceId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ],
            "title": "The inventory spool loaded in the slot, if any",
            "description": "The inventory spool loaded in the slot, if any."
          },
          "remainingPercent": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "number"
              }
            ],
            "title": "The printer's remaining percent, 1-100, or null when it does not measure the roll",
            "description": "The printer's remaining percent, 1-100, or null when it does not measure the roll."
          },
          "rollGrams": {
            "type": "number",
            "title": "The full roll weight the estimate reads against (see readSpoolRollGrams)",
            "description": "The full roll weight the estimate reads against (see readSpoolRollGrams)."
          },
          "estimatedGrams": {
            "type": "number",
            "title": "What the roll holds by the printer's percent (see readSpoolGrams)",
            "description": "What the roll holds by the printer's percent (see readSpoolGrams)."
          }
        },
        "required": [
          "printerId",
          "printerName",
          "amsIndex",
          "slotIndex",
          "materialId",
          "variantId",
          "instanceId",
          "remainingPercent",
          "rollGrams",
          "estimatedGrams"
        ],
        "description": "A slot whose printer holds a roll by its tag, as the printer reports it now."
      },
      "AddReadSpoolResponse": {
        "type": "object",
        "properties": {
          "spoolId": {
            "type": "string"
          },
          "fromBulk": {
            "type": "boolean",
            "title": "Whether the spool came out of bulk",
            "description": "Whether the spool came out of bulk."
          }
        },
        "required": [
          "spoolId",
          "fromBulk"
        ]
      },
      "AddReadSpoolRequest": {
        "type": "object",
        "properties": {
          "variantId": {
            "type": "string"
          },
          "grams": {
            "type": "number",
            "title": "What the roll holds now, in grams",
            "description": "What the roll holds now, in grams."
          },
          "rollGrams": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "number"
              }
            ],
            "title": "The roll's full weight, when known",
            "description": "The roll's full weight, when known."
          },
          "from": {
            "oneOf": [
              {
                "const": "bulk_first"
              },
              {
                "const": "new_stock"
              }
            ],
            "title": "Out of that color's bulk when bulk holds it, or always as new stock",
            "description": "Out of that color's bulk when bulk holds it, or always as new stock."
          }
        },
        "required": [
          "variantId",
          "grams",
          "from"
        ],
        "description": "Add a roll known by its serial to inventory."
      },
      "MaterialInstanceInsert": {
        "type": "object",
        "properties": {
          "externalId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "source": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "customMetadata": {
            "$ref": "#/components/schemas/Recordstringunknown"
          },
          "pricePer1000g": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "number"
              }
            ],
            "title": "What was paid for this roll, per kg, in cents",
            "description": "What was paid for this roll, per kg, in cents."
          },
          "materialId": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "variantId": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "materialType": {
            "type": "string"
          },
          "remainingMaterial": {
            "type": "number",
            "minimum": 0
          },
          "serial": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ],
            "title": "The roll's own identifier (RFID tag id, or one entered by hand)",
            "description": "The roll's own identifier (RFID tag id, or one entered by hand)."
          },
          "serialSource": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "const": "tag"
              },
              {
                "const": "manual"
              },
              {
                "const": "integration"
              }
            ]
          },
          "form": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "const": "spool"
              },
              {
                "const": "refill"
              }
            ]
          },
          "nominalGrams": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "number"
              }
            ],
            "title": "What the roll weighed when full",
            "description": "What the roll weighed when full."
          },
          "labelCode": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ],
            "title": "Reserved QR label code",
            "description": "Reserved QR label code."
          },
          "intakeLineId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "pattern": "^[a-z0-9]{24}$"
              }
            ]
          }
        },
        "required": [
          "materialId",
          "variantId",
          "materialType",
          "remainingMaterial"
        ]
      },
      "PartialMaterialInstance": {
        "type": "object",
        "properties": {
          "variantId": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "materialId": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "materialType": {
            "type": "string"
          },
          "remainingMaterial": {
            "type": "number",
            "minimum": 0
          },
          "source": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "externalId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "customMetadata": {
            "$ref": "#/components/schemas/Recordstringunknown"
          },
          "serial": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ],
            "title": "The roll's own identifier (RFID tag id, or one entered by hand)",
            "description": "The roll's own identifier (RFID tag id, or one entered by hand)."
          },
          "serialSource": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "const": "tag"
              },
              {
                "const": "manual"
              },
              {
                "const": "integration"
              }
            ]
          },
          "form": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "const": "spool"
              },
              {
                "const": "refill"
              }
            ]
          },
          "nominalGrams": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "number"
              }
            ],
            "title": "What the roll weighed when full",
            "description": "What the roll weighed when full."
          },
          "pricePer1000g": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "number"
              }
            ],
            "title": "What was paid for this roll, per kg, in cents",
            "description": "What was paid for this roll, per kg, in cents."
          },
          "labelCode": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ],
            "title": "Reserved QR label code",
            "description": "Reserved QR label code."
          },
          "intakeLineId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "pattern": "^[a-z0-9]{24}$"
              }
            ]
          },
          "finishedAt": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "format": "date-time"
              }
            ],
            "title": "When the spool was finished; null while it is active",
            "description": "When the spool was finished; null while it is active."
          },
          "finishReason": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "const": "used_up"
              },
              {
                "const": "archived"
              }
            ],
            "title": "`used_up` or `archived`; null while the spool is active",
            "description": "`used_up` or `archived`; null while the spool is active."
          },
          "id": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "storeId": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time"
          }
        },
        "description": "Make all properties in T optional"
      },
      "printerIdsCuid2visualSlotsVisualSlotsetOnPrinterbooleanundefinedmaterialTypestringfilamentUserProfileIdCuid2nullundefinedfilamentSystemProfileIdnumber...1more...undefinedvariantIdnullundefinedmaterialIdnullundefinedinstanceIdnullundefined...": {
        "type": "object",
        "properties": {
          "printerIds": {
            "type": "array",
            "items": {
              "type": "string",
              "pattern": "^[a-z0-9]{24}$"
            }
          },
          "visualSlots": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/VisualSlot"
            }
          },
          "setOnPrinter": {
            "type": "boolean"
          },
          "materialType": {
            "type": "string"
          },
          "filamentUserProfileId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "pattern": "^[a-z0-9]{24}$"
              }
            ]
          },
          "filamentSystemProfileId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "number"
              }
            ]
          },
          "variantId": {
            "type": "null"
          },
          "materialId": {
            "type": "null"
          },
          "instanceId": {
            "type": "null"
          }
        },
        "required": [
          "printerIds",
          "visualSlots",
          "materialType"
        ]
      },
      "VisualSlot": {
        "type": "object",
        "properties": {
          "amsIndex": {
            "type": "number"
          },
          "slotIndex": {
            "type": "number"
          }
        },
        "required": [
          "amsIndex",
          "slotIndex"
        ],
        "description": "Visual slot position - represents what the user selected in the UI.\namsIndex: -1 for spool, 0+ for AMS array index\nslotIndex: slot within AMS, or spool index for multiple spools"
      },
      "printerIdsCuid2visualSlotsVisualSlotsetOnPrinterbooleanundefinedinstanceIdCuid2filamentUserProfileIdCuid2nullundefinedfilamentSystemProfileIdnumber...1more...undefinedvariantIdnullundefinedmaterialIdnullundefinedmaterialTypenullundefined": {
        "type": "object",
        "properties": {
          "printerIds": {
            "type": "array",
            "items": {
              "type": "string",
              "pattern": "^[a-z0-9]{24}$"
            }
          },
          "visualSlots": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/VisualSlot"
            }
          },
          "setOnPrinter": {
            "type": "boolean"
          },
          "instanceId": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "filamentUserProfileId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "pattern": "^[a-z0-9]{24}$"
              }
            ]
          },
          "filamentSystemProfileId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "number"
              }
            ]
          },
          "variantId": {
            "type": "null"
          },
          "materialId": {
            "type": "null"
          },
          "materialType": {
            "type": "null"
          }
        },
        "required": [
          "printerIds",
          "visualSlots",
          "instanceId"
        ]
      },
      "printerIdsCuid2visualSlotsVisualSlotsetOnPrinterbooleanundefinedvariantIdCuid2filamentUserProfileIdCuid2nullundefinedfilamentSystemProfileIdnumber...1more...undefinedinstanceIdnullundefinedmaterialIdnullundefinedmaterialTypenullundefined": {
        "type": "object",
        "properties": {
          "printerIds": {
            "type": "array",
            "items": {
              "type": "string",
              "pattern": "^[a-z0-9]{24}$"
            }
          },
          "visualSlots": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/VisualSlot"
            }
          },
          "setOnPrinter": {
            "type": "boolean"
          },
          "variantId": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "filamentUserProfileId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "pattern": "^[a-z0-9]{24}$"
              }
            ]
          },
          "filamentSystemProfileId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "number"
              }
            ]
          },
          "instanceId": {
            "type": "null"
          },
          "materialId": {
            "type": "null"
          },
          "materialType": {
            "type": "null"
          }
        },
        "required": [
          "printerIds",
          "visualSlots",
          "variantId"
        ]
      },
      "printerIdsCuid2visualSlotsVisualSlotsetOnPrinterbooleanundefinedmaterialIdCuid2filamentUserProfileIdCuid2nullundefinedfilamentSystemProfileIdnumber...1more...undefinedinstanceIdnullundefinedvariantIdnullundefinedmaterialTypenullundefined": {
        "type": "object",
        "properties": {
          "printerIds": {
            "type": "array",
            "items": {
              "type": "string",
              "pattern": "^[a-z0-9]{24}$"
            }
          },
          "visualSlots": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/VisualSlot"
            }
          },
          "setOnPrinter": {
            "type": "boolean"
          },
          "materialId": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "filamentUserProfileId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "pattern": "^[a-z0-9]{24}$"
              }
            ]
          },
          "filamentSystemProfileId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "number"
              }
            ]
          },
          "instanceId": {
            "type": "null"
          },
          "variantId": {
            "type": "null"
          },
          "materialType": {
            "type": "null"
          }
        },
        "required": [
          "printerIds",
          "visualSlots",
          "materialId"
        ]
      },
      "SetSlotProfileRequest": {
        "type": "object",
        "properties": {
          "printerIds": {
            "type": "array",
            "items": {
              "type": "string",
              "pattern": "^[a-z0-9]{24}$"
            }
          },
          "visualSlot": {
            "$ref": "#/components/schemas/VisualSlot"
          },
          "filamentUserProfileId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "pattern": "^[a-z0-9]{24}$"
              }
            ]
          },
          "filamentSystemProfileId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "number"
              }
            ]
          }
        },
        "required": [
          "printerIds",
          "visualSlot"
        ]
      },
      "ClearPrinterSlotRequest": {
        "type": "object",
        "properties": {
          "printerIds": {
            "type": "array",
            "items": {
              "type": "string",
              "pattern": "^[a-z0-9]{24}$"
            }
          },
          "visualSlots": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/VisualSlot"
            }
          },
          "setOnPrinter": {
            "type": "boolean"
          }
        },
        "required": [
          "printerIds",
          "visualSlots"
        ]
      },
      "MaterialBillingRate": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "materialId": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "ratePer1000g": {
            "type": "number",
            "title": "Cents per kg, so $0.05 per gram is 5000",
            "description": "Cents per kg, so $0.05 per gram is 5000."
          },
          "effectiveFrom": {
            "type": "string",
            "format": "date-time"
          },
          "effectiveTo": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "format": "date-time"
              }
            ],
            "title": "When the rate stopped applying, exclusive; null while it is the material's current rate",
            "description": "When the rate stopped applying, exclusive; null while it is the material's current rate."
          },
          "actorName": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ],
            "title": "Who set the rate",
            "description": "Who set the rate."
          }
        },
        "required": [
          "id",
          "materialId",
          "ratePer1000g",
          "effectiveFrom",
          "effectiveTo",
          "actorName"
        ],
        "description": "One billable rate in a material's history."
      },
      "SetBillingRatesRequest": {
        "type": "object",
        "properties": {
          "materialIds": {
            "type": "array",
            "items": {
              "type": "string",
              "pattern": "^[a-z0-9]{24}$"
            },
            "minItems": 1,
            "maxItems": 500
          },
          "ratePer1000g": {
            "type": "integer",
            "minimum": 0,
            "title": "Cents per kg, so $0.05 per gram is 5000",
            "description": "Cents per kg, so $0.05 per gram is 5000."
          },
          "effectiveFrom": {
            "oneOf": [
              {
                "type": "string",
                "format": "date"
              },
              {
                "type": "string",
                "format": "date-time"
              }
            ],
            "description": "When the rate starts. A date (`2026-10-02`) starts at midnight in the\nstore's timezone. It can be in the past, but not before the start of a\nmaterial's latest rate."
          }
        },
        "required": [
          "materialIds",
          "ratePer1000g",
          "effectiveFrom"
        ]
      },
      "EndBillingRatesResponse": {
        "type": "object",
        "properties": {
          "ended": {
            "type": "array",
            "items": {
              "type": "string",
              "pattern": "^[a-z0-9]{24}$"
            },
            "title": "Materials whose current rate was ended. Materials with none are left out",
            "description": "Materials whose current rate was ended. Materials with none are left out."
          }
        },
        "required": [
          "ended"
        ]
      },
      "EndBillingRatesRequest": {
        "type": "object",
        "properties": {
          "materialIds": {
            "type": "array",
            "items": {
              "type": "string",
              "pattern": "^[a-z0-9]{24}$"
            },
            "minItems": 1,
            "maxItems": 500
          }
        },
        "required": [
          "materialIds"
        ]
      },
      "UpdateBillingRateRequest": {
        "type": "object",
        "properties": {
          "ratePer1000g": {
            "type": "integer",
            "minimum": 0,
            "title": "Cents per kg, so $0.05 per gram is 5000",
            "description": "Cents per kg, so $0.05 per gram is 5000."
          },
          "effectiveFrom": {
            "oneOf": [
              {
                "type": "string",
                "format": "date"
              },
              {
                "type": "string",
                "format": "date-time"
              }
            ],
            "title": "When the rate starts. A date (`2026-10-02`) starts at midnight in the store's timezone",
            "description": "When the rate starts. A date (`2026-10-02`) starts at midnight in the store's timezone."
          },
          "effectiveTo": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "format": "date"
              },
              {
                "type": "string",
                "format": "date-time"
              }
            ],
            "description": "When the rate stops applying, exclusive: a date (`2026-10-02`) ends at\nmidnight starting that day in the store's timezone. Null keeps it going."
          }
        },
        "description": "Changes to one billable rate; fields left out stay as they are."
      },
      "MaterialActivityResponse": {
        "type": "object",
        "properties": {
          "rows": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/StockActivityEntry"
            }
          },
          "total": {
            "type": "number",
            "title": "Rows matching the filters, ignoring `limit` and `offset`",
            "description": "Rows matching the filters, ignoring `limit` and `offset`."
          },
          "actors": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string"
                },
                "label": {
                  "type": "string"
                }
              },
              "required": [
                "id",
                "label"
              ]
            },
            "title": "Everyone who caused one of the material's rows, by label: the actor filter's choices",
            "description": "Everyone who caused one of the material's rows, by label: the actor filter's choices."
          }
        },
        "required": [
          "rows",
          "total",
          "actors"
        ]
      },
      "StockActivityEntry": {
        "type": "object",
        "properties": {
          "instance": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "object",
                "properties": {
                  "serial": {
                    "oneOf": [
                      {
                        "type": "null"
                      },
                      {
                        "type": "string"
                      }
                    ]
                  },
                  "labelCode": {
                    "oneOf": [
                      {
                        "type": "null"
                      },
                      {
                        "type": "string"
                      }
                    ]
                  },
                  "deleted": {
                    "type": "boolean",
                    "title": "The roll has since been deleted; its rows stay",
                    "description": "The roll has since been deleted; its rows stay."
                  }
                },
                "required": [
                  "serial",
                  "labelCode",
                  "deleted"
                ]
              }
            ],
            "description": "The roll a roll row moved, null on bucket rows. A deleted roll carries the\nserial and label code it had when the row was written."
          },
          "cause": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "object",
                "properties": {
                  "printJobId": {
                    "oneOf": [
                      {
                        "type": "null"
                      },
                      {
                        "type": "string",
                        "pattern": "^[a-z0-9]{24}$"
                      }
                    ]
                  },
                  "partName": {
                    "oneOf": [
                      {
                        "type": "null"
                      },
                      {
                        "type": "string"
                      }
                    ]
                  },
                  "attemptNumber": {
                    "oneOf": [
                      {
                        "type": "null"
                      },
                      {
                        "type": "number"
                      }
                    ]
                  },
                  "printerName": {
                    "oneOf": [
                      {
                        "type": "null"
                      },
                      {
                        "type": "string"
                      }
                    ]
                  },
                  "intakeId": {
                    "oneOf": [
                      {
                        "type": "null"
                      },
                      {
                        "type": "string",
                        "pattern": "^[a-z0-9]{24}$"
                      }
                    ]
                  },
                  "supplier": {
                    "oneOf": [
                      {
                        "type": "null"
                      },
                      {
                        "type": "string"
                      }
                    ]
                  },
                  "receivedAt": {
                    "oneOf": [
                      {
                        "type": "null"
                      },
                      {
                        "type": "string",
                        "format": "date-time"
                      }
                    ],
                    "description": "The day the delivery arrived, on a row a delivery wrote; it can be\nearlier than `createdAt`, when the delivery was entered."
                  }
                },
                "required": [
                  "printJobId",
                  "partName",
                  "attemptNumber",
                  "printerName",
                  "intakeId",
                  "supplier",
                  "receivedAt"
                ]
              }
            ]
          },
          "by": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/StockActivityActor"
              }
            ],
            "description": "Who caused the row: on a print row, whoever queued the print job; on any\nother row, whoever made the change. Null when nobody is recorded."
          },
          "variantId": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "instanceId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "pattern": "^[a-z0-9]{24}$"
              }
            ],
            "title": "The tracked roll this row moved; null for the variant's bulk bucket",
            "description": "The tracked roll this row moved; null for the variant's bulk bucket."
          },
          "deltaGrams": {
            "type": "number",
            "title": "What was applied to the bucket or roll",
            "description": "What was applied to the bucket or roll."
          },
          "consumedGrams": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "number"
              }
            ],
            "description": "On print rows, what the print used. Larger than `-deltaGrams` when the\nbucket or roll ran short, since stock never goes below zero. Null on\nother kinds."
          },
          "remainingAfterGrams": {
            "type": "number"
          },
          "kind": {
            "oneOf": [
              {
                "const": "manual"
              },
              {
                "const": "intake"
              },
              {
                "const": "convert"
              },
              {
                "const": "print"
              },
              {
                "const": "opening"
              },
              {
                "const": "closing"
              },
              {
                "const": "retire"
              },
              {
                "const": "restore"
              }
            ]
          },
          "reason": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "actorId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "actorName": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "materialUsageId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "pattern": "^[a-z0-9]{24}$"
              }
            ]
          },
          "printHistoryId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "pattern": "^[a-z0-9]{24}$"
              }
            ]
          },
          "intakeLineId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "pattern": "^[a-z0-9]{24}$"
              }
            ]
          },
          "id": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "storeId": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time"
          }
        },
        "required": [
          "instance",
          "cause",
          "by",
          "variantId",
          "instanceId",
          "deltaGrams",
          "consumedGrams",
          "remainingAfterGrams",
          "kind",
          "reason",
          "actorId",
          "actorName",
          "materialUsageId",
          "printHistoryId",
          "intakeLineId",
          "id",
          "storeId",
          "createdAt",
          "updatedAt"
        ],
        "description": "A ledger row plus the human-readable cause the drill-down renders."
      },
      "MaterialActivityQuery": {
        "type": "object",
        "properties": {
          "variantId": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$",
            "title": "Only this variant's rows",
            "description": "Only this variant's rows."
          },
          "actorId": {
            "type": "string",
            "title": "Only rows caused by this actor, matched against `by.actorId`",
            "description": "Only rows caused by this actor, matched against `by.actorId`."
          },
          "kind": {
            "oneOf": [
              {
                "const": "print"
              },
              {
                "const": "stock"
              }
            ],
            "title": "`print` for draw-downs by prints, `stock` for every other row",
            "description": "`print` for draw-downs by prints, `stock` for every other row."
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 1000,
            "title": "Rows per page, default 50",
            "description": "Rows per page, default 50."
          },
          "offset": {
            "type": "integer",
            "minimum": 0,
            "title": "Rows to skip, for the next page",
            "description": "Rows to skip, for the next page."
          }
        }
      },
      "MaterialPricingResponse": {
        "type": "object",
        "properties": {
          "pricePer1000g": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "number"
              }
            ],
            "title": "The material's default price per kg in cents, null when it has none",
            "description": "The material's default price per kg in cents, null when it has none."
          },
          "averagePaidPer1000g": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "number"
              }
            ],
            "title": "What priced deliveries in the window cost per kg, weighted by weight; null with none",
            "description": "What priced deliveries in the window cost per kg, weighted by weight; null with none."
          },
          "averageSpoolCount": {
            "type": "number",
            "title": "Spools on the priced deliveries the average is taken over",
            "description": "Spools on the priced deliveries the average is taken over."
          },
          "days": {
            "type": "number",
            "title": "How many days back the average reaches",
            "description": "How many days back the average reaches."
          },
          "history": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/MaterialPriceHistoryEntry"
            },
            "title": "Deliveries (one row per delivery and price per kg) and default changes, newest first",
            "description": "Deliveries (one row per delivery and price per kg) and default changes, newest first."
          }
        },
        "required": [
          "pricePer1000g",
          "averagePaidPer1000g",
          "averageSpoolCount",
          "days",
          "history"
        ]
      },
      "MaterialPriceHistoryEntry": {
        "type": "object",
        "properties": {
          "at": {
            "type": "string",
            "format": "date-time"
          },
          "pricePer1000g": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "number"
              }
            ],
            "title": "Per kg in cents. Null on a default that was cleared, or a delivery with no price",
            "description": "Per kg in cents. Null on a default that was cleared, or a delivery with no price."
          },
          "source": {
            "oneOf": [
              {
                "const": "default"
              },
              {
                "const": "receive"
              }
            ],
            "title": "`receive` is a delivery; `default` is a change to a base price",
            "description": "`receive` is a delivery; `default` is a change to a base price."
          },
          "supplier": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "orderNumber": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "spools": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "number"
              }
            ],
            "title": "Spools on a delivery row, across its colors; null on a default row",
            "description": "Spools on a delivery row, across its colors; null on a default row."
          },
          "variantId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "pattern": "^[a-z0-9]{24}$"
              }
            ],
            "description": "The color a row is for: the color whose default changed, or the one color\na delivery row bought. Null for the material's own default, and for a\ndelivery of several colors."
          },
          "variantName": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "actorName": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ],
            "title": "Who changed a default; null on a delivery row",
            "description": "Who changed a default; null on a delivery row."
          }
        },
        "required": [
          "at",
          "pricePer1000g",
          "source",
          "supplier",
          "orderNumber",
          "spools",
          "variantId",
          "variantName",
          "actorName"
        ]
      },
      "MaterialPricingQuery": {
        "type": "object",
        "properties": {
          "days": {
            "type": "integer",
            "minimum": 1,
            "maximum": 3650,
            "title": "How many days back the average reaches, default 90",
            "description": "How many days back the average reaches, default 90."
          }
        }
      },
      "SpoolReceivedDatesResponse": {
        "type": "object",
        "properties": {
          "spools": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SpoolReceivedDate"
            },
            "title": "Every spool of the material that came in on a delivery; a spool converted or registered is not listed",
            "description": "Every spool of the material that came in on a delivery; a spool converted or registered is not listed."
          }
        },
        "required": [
          "spools"
        ]
      },
      "SpoolReceivedDate": {
        "type": "object",
        "properties": {
          "instanceId": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "receivedAt": {
            "type": "string",
            "title": "The delivery's received date, which can be earlier than the day it was entered",
            "description": "The delivery's received date, which can be earlier than the day it was entered.",
            "format": "date-time"
          }
        },
        "required": [
          "instanceId",
          "receivedAt"
        ],
        "description": "When one spool came in, from the delivery it was received on."
      },
      "MaterialProfileAssignment": {
        "type": "object",
        "properties": {
          "modelId": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "nozzleDiameter": {
            "type": "string"
          },
          "materialId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "pattern": "^[a-z0-9]{24}$"
              }
            ]
          },
          "variantId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "pattern": "^[a-z0-9]{24}$"
              }
            ]
          },
          "userProfileId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "pattern": "^[a-z0-9]{24}$"
              }
            ]
          },
          "systemProfileId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "number"
              }
            ]
          },
          "id": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "storeId": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time"
          }
        },
        "required": [
          "modelId",
          "nozzleDiameter",
          "materialId",
          "variantId",
          "userProfileId",
          "systemProfileId",
          "id",
          "storeId",
          "createdAt",
          "updatedAt"
        ]
      },
      "modelIdstringnozzleDiameterstringuserProfileIdnullundefinedsystemProfileIdnumber": {
        "type": "object",
        "properties": {
          "modelId": {
            "type": "string"
          },
          "nozzleDiameter": {
            "type": "string"
          },
          "userProfileId": {
            "type": "null"
          },
          "systemProfileId": {
            "type": "number"
          }
        },
        "required": [
          "modelId",
          "nozzleDiameter",
          "systemProfileId"
        ]
      },
      "modelIdstringnozzleDiameterstringuserProfileIdCuid2systemProfileIdnullundefined": {
        "type": "object",
        "properties": {
          "modelId": {
            "type": "string"
          },
          "nozzleDiameter": {
            "type": "string"
          },
          "userProfileId": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "systemProfileId": {
            "type": "null"
          }
        },
        "required": [
          "modelId",
          "nozzleDiameter",
          "userProfileId"
        ]
      },
      "ClearMaterialProfileRequest": {
        "type": "object",
        "properties": {
          "modelId": {
            "type": "string"
          },
          "nozzleDiameter": {
            "type": "string"
          }
        },
        "required": [
          "modelId",
          "nozzleDiameter"
        ]
      },
      "UpdateMaterialRequest": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "brand": {
            "type": "string"
          },
          "tags": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "identifier": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "filamentUserProfileId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "pattern": "^[a-z0-9]{24}$"
              }
            ]
          },
          "filamentSystemProfileId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "number"
              }
            ]
          },
          "starred": {
            "type": "boolean"
          },
          "pricePer1000g": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "integer",
                "minimum": 0
              }
            ],
            "description": "The material's default price per kg, in cents; null clears it. A change\nis added to the material's price history, naming who made it."
          },
          "customMetadata": {
            "$ref": "#/components/schemas/Recordstringunknown",
            "description": "Custom fields. Hand-written DTO, so this has to be listed explicitly —\nthe body is pruned to this shape before the service ever sees it."
          }
        }
      },
      "FilamentStockResponse": {
        "type": "object",
        "properties": {
          "rows": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FilamentStockRow"
            }
          },
          "summary": {
            "$ref": "#/components/schemas/FilamentStockSummary"
          }
        },
        "required": [
          "rows",
          "summary"
        ]
      },
      "FilamentStockRow": {
        "type": "object",
        "properties": {
          "variantId": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "variantName": {
            "type": "string"
          },
          "materialId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "pattern": "^[a-z0-9]{24}$"
              }
            ]
          },
          "materialName": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "brand": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "materialType": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "color": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "onHandGrams": {
            "type": "number",
            "title": "Bulk + every tracked spool of this variant",
            "description": "Bulk + every tracked spool of this variant."
          },
          "bulkGrams": {
            "type": "number"
          },
          "trackedGrams": {
            "type": "number"
          },
          "trackedCount": {
            "type": "number"
          },
          "pricePer1000g": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "number"
              }
            ],
            "title": "Effective price per kg (variant's, else the material's), in cents",
            "description": "Effective price per kg (variant's, else the material's), in cents."
          },
          "valueCents": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "number"
              }
            ],
            "description": "What the stock is worth, in cents: each tracked spool at the price it\nwas bought at, and bulk and spools with no price of their own at the\neffective price. Null when some of it has no price."
          },
          "lastIntakeAt": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "format": "date-time"
              }
            ]
          },
          "lastGramsEach": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "number"
              }
            ],
            "title": "The roll size of the newest line received for this color's material, in grams",
            "description": "The roll size of the newest line received for this color's material, in grams."
          }
        },
        "required": [
          "variantId",
          "variantName",
          "materialId",
          "materialName",
          "brand",
          "materialType",
          "color",
          "onHandGrams",
          "bulkGrams",
          "trackedGrams",
          "trackedCount",
          "pricePer1000g",
          "valueCents",
          "lastIntakeAt",
          "lastGramsEach"
        ],
        "description": "One variant's row on the Filament Stock list."
      },
      "FilamentStockSummary": {
        "type": "object",
        "properties": {
          "onHandGrams": {
            "type": "number"
          },
          "bulkGrams": {
            "type": "number"
          },
          "trackedGrams": {
            "type": "number"
          },
          "trackedCount": {
            "type": "number"
          },
          "valueCents": {
            "type": "number",
            "title": "What the priced stock is worth. Filament with no price is not in here",
            "description": "What the priced stock is worth. Filament with no price is not in here."
          },
          "unpricedVariantCount": {
            "type": "number",
            "title": "Variants holding stock at no known price, so the value above is a floor",
            "description": "Variants holding stock at no known price, so the value above is a floor."
          },
          "variantCount": {
            "type": "number"
          },
          "usedThisMonthGrams": {
            "type": "number",
            "description": "What the store's prints drew since the start of the calendar month, in\nthe store's timezone (UTC when it has none), and how many prints that was."
          },
          "printsThisMonth": {
            "type": "number"
          }
        },
        "required": [
          "onHandGrams",
          "bulkGrams",
          "trackedGrams",
          "trackedCount",
          "valueCents",
          "unpricedVariantCount",
          "variantCount",
          "usedThisMonthGrams",
          "printsThisMonth"
        ]
      },
      "StockQuery": {
        "type": "object",
        "properties": {
          "includeEmpty": {
            "type": "boolean",
            "title": "Include variants that have never held stock",
            "description": "Include variants that have never held stock."
          }
        }
      },
      "ActivityQuery": {
        "type": "object",
        "properties": {
          "limit": {
            "type": "number",
            "title": "Rows per page, default 50, at most 200",
            "description": "Rows per page, default 50, at most 200."
          },
          "offset": {
            "type": "number",
            "title": "Rows to skip, for the next page",
            "description": "Rows to skip, for the next page."
          },
          "instanceId": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$",
            "title": "Only this tracked roll's rows",
            "description": "Only this tracked roll's rows."
          }
        }
      },
      "SupplierListResponse": {
        "type": "object",
        "properties": {
          "suppliers": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "title": "The 10 suppliers most recently received from, newest first",
            "description": "The 10 suppliers most recently received from, newest first."
          }
        },
        "required": [
          "suppliers"
        ]
      },
      "AdjustBulkStockRequest": {
        "type": "object",
        "properties": {
          "variantId": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "deltaGrams": {
            "type": "number",
            "title": "Move the bucket by this much. Mutually exclusive with `setGrams`",
            "description": "Move the bucket by this much. Mutually exclusive with `setGrams`."
          },
          "setGrams": {
            "type": "number",
            "minimum": 0,
            "title": "Set the bucket to this weight, ledgering the difference",
            "description": "Set the bucket to this weight, ledgering the difference."
          },
          "reason": {
            "type": "string",
            "title": "Why the weight changed. Required: an unexplained correction is refused",
            "description": "Why the weight changed. Required: an unexplained correction is refused."
          }
        },
        "required": [
          "variantId",
          "reason"
        ]
      },
      "ConvertBulkToSpoolsResponse": {
        "type": "object",
        "properties": {
          "instanceIds": {
            "type": "array",
            "items": {
              "type": "string",
              "pattern": "^[a-z0-9]{24}$"
            }
          },
          "remainingGrams": {
            "type": "number"
          }
        },
        "required": [
          "instanceIds",
          "remainingGrams"
        ]
      },
      "ConvertBulkToSpoolsRequest": {
        "type": "object",
        "properties": {
          "variantId": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "count": {
            "type": "integer",
            "minimum": 1,
            "maximum": 500
          },
          "gramsEach": {
            "type": "number",
            "minimum": 1
          },
          "form": {
            "oneOf": [
              {
                "const": "spool"
              },
              {
                "const": "refill"
              }
            ]
          },
          "generateLabelCodes": {
            "type": "boolean",
            "deprecated": true,
            "description": "Accepted and ignored. A new spool gets its label code when its QR tag is\nmade."
          }
        },
        "required": [
          "variantId",
          "count",
          "gramsEach",
          "form"
        ]
      },
      "ReceiveFilamentResponse": {
        "type": "object",
        "properties": {
          "intakeId": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "totalGrams": {
            "type": "number"
          },
          "bulkGrams": {
            "type": "number"
          },
          "createdInstanceIds": {
            "type": "array",
            "items": {
              "type": "string",
              "pattern": "^[a-z0-9]{24}$"
            }
          }
        },
        "required": [
          "intakeId",
          "totalGrams",
          "bulkGrams",
          "createdInstanceIds"
        ]
      },
      "ReceiveFilamentRequest": {
        "type": "object",
        "properties": {
          "receivedAt": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ],
            "description": "When the delivery arrived: an ISO 8601 timestamp, or a calendar day as\n`YYYY-MM-DD`, which is taken as that day in the store's timezone (noon UTC\nwhen the store has none set). Now when left out."
          },
          "supplier": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "orderNumber": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "maxLength": 100
              }
            ],
            "title": "The supplier's order number for the delivery",
            "description": "The supplier's order number for the delivery."
          },
          "totalCents": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "integer",
                "minimum": 0
              }
            ],
            "title": "Price for the whole delivery, when lines carry no per-unit price",
            "description": "Price for the whole delivery, when lines carry no per-unit price."
          },
          "updateBasePrice": {
            "type": "boolean",
            "title": "Write what was paid back onto each line's variant base price",
            "description": "Write what was paid back onto each line's variant base price."
          },
          "lines": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ReceiveFilamentLine"
            }
          }
        },
        "required": [
          "lines"
        ]
      },
      "ReceiveFilamentLine": {
        "type": "object",
        "properties": {
          "variantId": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "qty": {
            "type": "integer",
            "minimum": 1,
            "maximum": 500
          },
          "gramsEach": {
            "type": "number",
            "minimum": 1
          },
          "form": {
            "oneOf": [
              {
                "const": "spool"
              },
              {
                "const": "refill"
              }
            ]
          },
          "priceCentsEach": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "integer",
                "minimum": 0
              }
            ],
            "title": "What one unit cost, in cents. Omitted when the lot is priced as a whole",
            "description": "What one unit cost, in cents. Omitted when the lot is priced as a whole."
          },
          "tracked": {
            "type": "boolean",
            "title": "Create a spool record per unit instead of adding weight to the bucket",
            "description": "Create a spool record per unit instead of adding weight to the bucket."
          },
          "generateLabelCodes": {
            "type": "boolean",
            "deprecated": true,
            "description": "Accepted and ignored. A new spool gets its label code when its QR tag is\nmade."
          }
        },
        "required": [
          "variantId",
          "qty",
          "gramsEach",
          "form"
        ]
      },
      "namestringundefinedprioritystringundefinedparentIdstringundefinedidstringundefinedstoreIdstringundefinedcreatedAtstringundefinedupdatedAtstringundefinedQuerySettings...": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "priority": {
            "type": "string"
          },
          "parentId": {
            "type": "string"
          },
          "id": {
            "type": "string"
          },
          "storeId": {
            "type": "string"
          },
          "createdAt": {
            "type": "string"
          },
          "updatedAt": {
            "type": "string"
          },
          "sort": {
            "type": "string",
            "title": "Sort",
            "description": "Sort specification in format \"field:asc,field2:desc\""
          },
          "limit": {
            "type": "number",
            "minimum": 1,
            "maximum": 1000,
            "title": "Limit",
            "description": "Maximum number of results to return (default: 1000, max: 1000)"
          },
          "offset": {
            "type": "number",
            "minimum": 0,
            "title": "Offset",
            "description": "Number of results to skip for pagination"
          },
          "fields": {
            "type": "string",
            "title": "Fields",
            "description": "Comma-separated list of fields to return"
          },
          "include": {
            "type": "string",
            "title": "Include",
            "description": "Comma-separated list of relations to include (max 4, max 2 levels deep).\nExample: \"linkedParts,linkedParts.part,folder\""
          },
          "meta": {
            "type": "boolean",
            "title": "Meta",
            "description": "If true, returns response with metadata (total, count, hasMore, etc.)"
          },
          "hints": {
            "type": "boolean",
            "title": "Hints",
            "description": "If true, returns AI-friendly hints about available actions. Implies meta=true."
          }
        }
      },
      "SearchQueryDtoMaterialGroup": {
        "type": "object",
        "properties": {
          "filter": {
            "$ref": "#/components/schemas/FilterConditionMaterialGroup",
            "title": "Filter",
            "description": "Complex filter conditions using logical and field operators.\nAvailable field operators: eq, ne, gt, gte, lt, lte, contains, startsWith, endsWith, in, notIn, isNull, between.\nUsage example: {\"filter\": {\"and\": [{\"name\": {\"contains\": \"benchy\"}}, {\"or\": [{\"type\": {\"eq\": \"3mf\"}}, {\"type\": {\"eq\": \"gcode3mf\"}}]}}}"
          },
          "sort": {
            "type": "string",
            "title": "Sort",
            "description": "Sort specification in format \"field:asc,field2:desc\""
          },
          "limit": {
            "type": "number",
            "minimum": 1,
            "maximum": 1000,
            "title": "Limit",
            "description": "Maximum number of results to return (default: 1000, max: 1000)"
          },
          "offset": {
            "type": "number",
            "minimum": 0,
            "title": "Offset",
            "description": "Number of results to skip for pagination"
          },
          "fields": {
            "type": "string",
            "title": "Fields",
            "description": "Comma-separated list of fields to return"
          },
          "include": {
            "type": "string",
            "title": "Include",
            "description": "Comma-separated list of relations to include (max 4, max 2 levels deep).\nExample: \"linkedParts,linkedParts.part,folder\""
          },
          "meta": {
            "type": "boolean",
            "title": "Meta",
            "description": "If true, returns response with metadata (total, count, hasMore, etc.)"
          },
          "hints": {
            "type": "boolean",
            "title": "Hints",
            "description": "If true, returns AI-friendly hints about available actions. Implies meta=true."
          }
        },
        "title": "Search Query",
        "description": "Complete search request with filter conditions and query settings"
      },
      "FilterConditionMaterialGroup": {
        "type": "object",
        "properties": {
          "and": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FilterConditionMaterialGroup"
            },
            "title": "AND Conditions",
            "description": "All conditions must be true"
          },
          "or": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FilterConditionMaterialGroup"
            },
            "title": "OR Conditions",
            "description": "At least one condition must be true"
          },
          "name": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "priority": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "parentId": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "id": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "storeId": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "createdAt": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "updatedAt": {
            "$ref": "#/components/schemas/FieldOperators"
          }
        },
        "title": "Filter Condition",
        "description": "Root filter condition that can be either a logical condition (AND/OR) or field-based condition"
      },
      "variantIdstringundefinedmaterialIdstringundefinedmaterialGroupIdstringundefinedmaterialTypestringundefinedprioritystringundefinedidstringundefinedstoreIdstringundefinedcreatedAtstringundefinedupdatedAtstringundefinedQuerySettings...": {
        "type": "object",
        "properties": {
          "variantId": {
            "type": "string"
          },
          "materialId": {
            "type": "string"
          },
          "materialGroupId": {
            "type": "string"
          },
          "materialType": {
            "type": "string"
          },
          "priority": {
            "type": "string"
          },
          "id": {
            "type": "string"
          },
          "storeId": {
            "type": "string"
          },
          "createdAt": {
            "type": "string"
          },
          "updatedAt": {
            "type": "string"
          },
          "sort": {
            "type": "string",
            "title": "Sort",
            "description": "Sort specification in format \"field:asc,field2:desc\""
          },
          "limit": {
            "type": "number",
            "minimum": 1,
            "maximum": 1000,
            "title": "Limit",
            "description": "Maximum number of results to return (default: 1000, max: 1000)"
          },
          "offset": {
            "type": "number",
            "minimum": 0,
            "title": "Offset",
            "description": "Number of results to skip for pagination"
          },
          "fields": {
            "type": "string",
            "title": "Fields",
            "description": "Comma-separated list of fields to return"
          },
          "include": {
            "type": "string",
            "title": "Include",
            "description": "Comma-separated list of relations to include (max 4, max 2 levels deep).\nExample: \"linkedParts,linkedParts.part,folder\""
          },
          "meta": {
            "type": "boolean",
            "title": "Meta",
            "description": "If true, returns response with metadata (total, count, hasMore, etc.)"
          },
          "hints": {
            "type": "boolean",
            "title": "Hints",
            "description": "If true, returns AI-friendly hints about available actions. Implies meta=true."
          }
        }
      },
      "SearchQueryDtoMaterialGroupMember": {
        "type": "object",
        "properties": {
          "filter": {
            "$ref": "#/components/schemas/FilterConditionMaterialGroupMember",
            "title": "Filter",
            "description": "Complex filter conditions using logical and field operators.\nAvailable field operators: eq, ne, gt, gte, lt, lte, contains, startsWith, endsWith, in, notIn, isNull, between.\nUsage example: {\"filter\": {\"and\": [{\"name\": {\"contains\": \"benchy\"}}, {\"or\": [{\"type\": {\"eq\": \"3mf\"}}, {\"type\": {\"eq\": \"gcode3mf\"}}]}}}"
          },
          "sort": {
            "type": "string",
            "title": "Sort",
            "description": "Sort specification in format \"field:asc,field2:desc\""
          },
          "limit": {
            "type": "number",
            "minimum": 1,
            "maximum": 1000,
            "title": "Limit",
            "description": "Maximum number of results to return (default: 1000, max: 1000)"
          },
          "offset": {
            "type": "number",
            "minimum": 0,
            "title": "Offset",
            "description": "Number of results to skip for pagination"
          },
          "fields": {
            "type": "string",
            "title": "Fields",
            "description": "Comma-separated list of fields to return"
          },
          "include": {
            "type": "string",
            "title": "Include",
            "description": "Comma-separated list of relations to include (max 4, max 2 levels deep).\nExample: \"linkedParts,linkedParts.part,folder\""
          },
          "meta": {
            "type": "boolean",
            "title": "Meta",
            "description": "If true, returns response with metadata (total, count, hasMore, etc.)"
          },
          "hints": {
            "type": "boolean",
            "title": "Hints",
            "description": "If true, returns AI-friendly hints about available actions. Implies meta=true."
          }
        },
        "title": "Search Query",
        "description": "Complete search request with filter conditions and query settings"
      },
      "FilterConditionMaterialGroupMember": {
        "type": "object",
        "properties": {
          "and": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FilterConditionMaterialGroupMember"
            },
            "title": "AND Conditions",
            "description": "All conditions must be true"
          },
          "or": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FilterConditionMaterialGroupMember"
            },
            "title": "OR Conditions",
            "description": "At least one condition must be true"
          },
          "variantId": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "materialId": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "materialGroupId": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "materialType": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "priority": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "id": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "storeId": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "createdAt": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "updatedAt": {
            "$ref": "#/components/schemas/FieldOperators"
          }
        },
        "title": "Filter Condition",
        "description": "Root filter condition that can be either a logical condition (AND/OR) or field-based condition"
      },
      "namestringundefinedmaterialIdstringundefinedcolorstringundefinedtagsstringundefinedfilamentUserProfileIdstringundefinedfilamentSystemProfileIdstringundefined...8more...updatedAtstringundefinedQuerySettings...": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "materialId": {
            "type": "string"
          },
          "color": {
            "type": "string"
          },
          "tags": {
            "type": "string"
          },
          "filamentUserProfileId": {
            "type": "string"
          },
          "filamentSystemProfileId": {
            "type": "string"
          },
          "pricePer1000g": {
            "type": "string"
          },
          "pressureAdvance": {
            "type": "string"
          },
          "source": {
            "type": "string"
          },
          "externalId": {
            "type": "string"
          },
          "customMetadata": {
            "type": "string"
          },
          "id": {
            "type": "string"
          },
          "storeId": {
            "type": "string"
          },
          "createdAt": {
            "type": "string"
          },
          "updatedAt": {
            "type": "string"
          },
          "sort": {
            "type": "string",
            "title": "Sort",
            "description": "Sort specification in format \"field:asc,field2:desc\""
          },
          "limit": {
            "type": "number",
            "minimum": 1,
            "maximum": 1000,
            "title": "Limit",
            "description": "Maximum number of results to return (default: 1000, max: 1000)"
          },
          "offset": {
            "type": "number",
            "minimum": 0,
            "title": "Offset",
            "description": "Number of results to skip for pagination"
          },
          "fields": {
            "type": "string",
            "title": "Fields",
            "description": "Comma-separated list of fields to return"
          },
          "include": {
            "type": "string",
            "title": "Include",
            "description": "Comma-separated list of relations to include (max 4, max 2 levels deep).\nExample: \"linkedParts,linkedParts.part,folder\""
          },
          "meta": {
            "type": "boolean",
            "title": "Meta",
            "description": "If true, returns response with metadata (total, count, hasMore, etc.)"
          },
          "hints": {
            "type": "boolean",
            "title": "Hints",
            "description": "If true, returns AI-friendly hints about available actions. Implies meta=true."
          }
        }
      },
      "SearchQueryDtoMaterialVariant": {
        "type": "object",
        "properties": {
          "filter": {
            "$ref": "#/components/schemas/FilterConditionMaterialVariant",
            "title": "Filter",
            "description": "Complex filter conditions using logical and field operators.\nAvailable field operators: eq, ne, gt, gte, lt, lte, contains, startsWith, endsWith, in, notIn, isNull, between.\nUsage example: {\"filter\": {\"and\": [{\"name\": {\"contains\": \"benchy\"}}, {\"or\": [{\"type\": {\"eq\": \"3mf\"}}, {\"type\": {\"eq\": \"gcode3mf\"}}]}}}"
          },
          "sort": {
            "type": "string",
            "title": "Sort",
            "description": "Sort specification in format \"field:asc,field2:desc\""
          },
          "limit": {
            "type": "number",
            "minimum": 1,
            "maximum": 1000,
            "title": "Limit",
            "description": "Maximum number of results to return (default: 1000, max: 1000)"
          },
          "offset": {
            "type": "number",
            "minimum": 0,
            "title": "Offset",
            "description": "Number of results to skip for pagination"
          },
          "fields": {
            "type": "string",
            "title": "Fields",
            "description": "Comma-separated list of fields to return"
          },
          "include": {
            "type": "string",
            "title": "Include",
            "description": "Comma-separated list of relations to include (max 4, max 2 levels deep).\nExample: \"linkedParts,linkedParts.part,folder\""
          },
          "meta": {
            "type": "boolean",
            "title": "Meta",
            "description": "If true, returns response with metadata (total, count, hasMore, etc.)"
          },
          "hints": {
            "type": "boolean",
            "title": "Hints",
            "description": "If true, returns AI-friendly hints about available actions. Implies meta=true."
          }
        },
        "title": "Search Query",
        "description": "Complete search request with filter conditions and query settings"
      },
      "FilterConditionMaterialVariant": {
        "type": "object",
        "properties": {
          "and": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FilterConditionMaterialVariant"
            },
            "title": "AND Conditions",
            "description": "All conditions must be true"
          },
          "or": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FilterConditionMaterialVariant"
            },
            "title": "OR Conditions",
            "description": "At least one condition must be true"
          },
          "name": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "materialId": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "color": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "tags": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "filamentUserProfileId": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "filamentSystemProfileId": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "pricePer1000g": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "pressureAdvance": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "source": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "externalId": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "customMetadata": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "id": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "storeId": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "createdAt": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "updatedAt": {
            "$ref": "#/components/schemas/FieldOperators"
          }
        },
        "title": "Filter Condition",
        "description": "Root filter condition that can be either a logical condition (AND/OR) or field-based condition"
      },
      "modelIdstringundefinednozzleDiameterstringundefinedmaterialIdstringundefinedvariantIdstringundefineduserProfileIdstringundefinedsystemProfileIdstringundefinedidstringundefinedstoreIdstringundefinedcreatedAtstringundefinedupdatedAtstringu...": {
        "type": "object",
        "properties": {
          "modelId": {
            "type": "string"
          },
          "nozzleDiameter": {
            "type": "string"
          },
          "materialId": {
            "type": "string"
          },
          "variantId": {
            "type": "string"
          },
          "userProfileId": {
            "type": "string"
          },
          "systemProfileId": {
            "type": "string"
          },
          "id": {
            "type": "string"
          },
          "storeId": {
            "type": "string"
          },
          "createdAt": {
            "type": "string"
          },
          "updatedAt": {
            "type": "string"
          },
          "sort": {
            "type": "string",
            "title": "Sort",
            "description": "Sort specification in format \"field:asc,field2:desc\""
          },
          "limit": {
            "type": "number",
            "minimum": 1,
            "maximum": 1000,
            "title": "Limit",
            "description": "Maximum number of results to return (default: 1000, max: 1000)"
          },
          "offset": {
            "type": "number",
            "minimum": 0,
            "title": "Offset",
            "description": "Number of results to skip for pagination"
          },
          "fields": {
            "type": "string",
            "title": "Fields",
            "description": "Comma-separated list of fields to return"
          },
          "include": {
            "type": "string",
            "title": "Include",
            "description": "Comma-separated list of relations to include (max 4, max 2 levels deep).\nExample: \"linkedParts,linkedParts.part,folder\""
          },
          "meta": {
            "type": "boolean",
            "title": "Meta",
            "description": "If true, returns response with metadata (total, count, hasMore, etc.)"
          },
          "hints": {
            "type": "boolean",
            "title": "Hints",
            "description": "If true, returns AI-friendly hints about available actions. Implies meta=true."
          }
        }
      },
      "SearchQueryDtoMaterialProfileAssignment": {
        "type": "object",
        "properties": {
          "filter": {
            "$ref": "#/components/schemas/FilterConditionMaterialProfileAssignment",
            "title": "Filter",
            "description": "Complex filter conditions using logical and field operators.\nAvailable field operators: eq, ne, gt, gte, lt, lte, contains, startsWith, endsWith, in, notIn, isNull, between.\nUsage example: {\"filter\": {\"and\": [{\"name\": {\"contains\": \"benchy\"}}, {\"or\": [{\"type\": {\"eq\": \"3mf\"}}, {\"type\": {\"eq\": \"gcode3mf\"}}]}}}"
          },
          "sort": {
            "type": "string",
            "title": "Sort",
            "description": "Sort specification in format \"field:asc,field2:desc\""
          },
          "limit": {
            "type": "number",
            "minimum": 1,
            "maximum": 1000,
            "title": "Limit",
            "description": "Maximum number of results to return (default: 1000, max: 1000)"
          },
          "offset": {
            "type": "number",
            "minimum": 0,
            "title": "Offset",
            "description": "Number of results to skip for pagination"
          },
          "fields": {
            "type": "string",
            "title": "Fields",
            "description": "Comma-separated list of fields to return"
          },
          "include": {
            "type": "string",
            "title": "Include",
            "description": "Comma-separated list of relations to include (max 4, max 2 levels deep).\nExample: \"linkedParts,linkedParts.part,folder\""
          },
          "meta": {
            "type": "boolean",
            "title": "Meta",
            "description": "If true, returns response with metadata (total, count, hasMore, etc.)"
          },
          "hints": {
            "type": "boolean",
            "title": "Hints",
            "description": "If true, returns AI-friendly hints about available actions. Implies meta=true."
          }
        },
        "title": "Search Query",
        "description": "Complete search request with filter conditions and query settings"
      },
      "FilterConditionMaterialProfileAssignment": {
        "type": "object",
        "properties": {
          "and": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FilterConditionMaterialProfileAssignment"
            },
            "title": "AND Conditions",
            "description": "All conditions must be true"
          },
          "or": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FilterConditionMaterialProfileAssignment"
            },
            "title": "OR Conditions",
            "description": "At least one condition must be true"
          },
          "modelId": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "nozzleDiameter": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "materialId": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "variantId": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "userProfileId": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "systemProfileId": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "id": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "storeId": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "createdAt": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "updatedAt": {
            "$ref": "#/components/schemas/FieldOperators"
          }
        },
        "title": "Filter Condition",
        "description": "Root filter condition that can be either a logical condition (AND/OR) or field-based condition"
      },
      "printerIdstringundefinedmaterialIdstringundefinedvariantIdstringundefinedinstanceIdstringundefinedmaterialTypestringundefinedexpectedDatastringundefined...11more...updatedAtstringundefinedQuerySettings...": {
        "type": "object",
        "properties": {
          "printerId": {
            "type": "string"
          },
          "materialId": {
            "type": "string"
          },
          "variantId": {
            "type": "string"
          },
          "instanceId": {
            "type": "string"
          },
          "materialType": {
            "type": "string"
          },
          "expectedData": {
            "type": "string"
          },
          "expectedDataSetAt": {
            "type": "string"
          },
          "serial": {
            "type": "string",
            "title": "Serial of the roll physically in this slot, null when unknown",
            "description": "Serial of the roll physically in this slot, null when unknown."
          },
          "serialSource": {
            "type": "string"
          },
          "amsIndex": {
            "type": "string",
            "description": "Visual slot position: -1 for spool, 0+ for AMS array index"
          },
          "slotIndex": {
            "type": "string",
            "description": "Slot within AMS, or spool index for multiple spools"
          },
          "slot": {
            "type": "string",
            "deprecated": true
          },
          "filamentUserProfileId": {
            "type": "string"
          },
          "filamentSystemProfileId": {
            "type": "string"
          },
          "id": {
            "type": "string"
          },
          "storeId": {
            "type": "string"
          },
          "createdAt": {
            "type": "string"
          },
          "updatedAt": {
            "type": "string"
          },
          "sort": {
            "type": "string",
            "title": "Sort",
            "description": "Sort specification in format \"field:asc,field2:desc\""
          },
          "limit": {
            "type": "number",
            "minimum": 1,
            "maximum": 1000,
            "title": "Limit",
            "description": "Maximum number of results to return (default: 1000, max: 1000)"
          },
          "offset": {
            "type": "number",
            "minimum": 0,
            "title": "Offset",
            "description": "Number of results to skip for pagination"
          },
          "fields": {
            "type": "string",
            "title": "Fields",
            "description": "Comma-separated list of fields to return"
          },
          "include": {
            "type": "string",
            "title": "Include",
            "description": "Comma-separated list of relations to include (max 4, max 2 levels deep).\nExample: \"linkedParts,linkedParts.part,folder\""
          },
          "meta": {
            "type": "boolean",
            "title": "Meta",
            "description": "If true, returns response with metadata (total, count, hasMore, etc.)"
          },
          "hints": {
            "type": "boolean",
            "title": "Hints",
            "description": "If true, returns AI-friendly hints about available actions. Implies meta=true."
          }
        }
      },
      "SearchQueryDtoPrinterSlot": {
        "type": "object",
        "properties": {
          "filter": {
            "$ref": "#/components/schemas/FilterConditionPrinterSlot",
            "title": "Filter",
            "description": "Complex filter conditions using logical and field operators.\nAvailable field operators: eq, ne, gt, gte, lt, lte, contains, startsWith, endsWith, in, notIn, isNull, between.\nUsage example: {\"filter\": {\"and\": [{\"name\": {\"contains\": \"benchy\"}}, {\"or\": [{\"type\": {\"eq\": \"3mf\"}}, {\"type\": {\"eq\": \"gcode3mf\"}}]}}}"
          },
          "sort": {
            "type": "string",
            "title": "Sort",
            "description": "Sort specification in format \"field:asc,field2:desc\""
          },
          "limit": {
            "type": "number",
            "minimum": 1,
            "maximum": 1000,
            "title": "Limit",
            "description": "Maximum number of results to return (default: 1000, max: 1000)"
          },
          "offset": {
            "type": "number",
            "minimum": 0,
            "title": "Offset",
            "description": "Number of results to skip for pagination"
          },
          "fields": {
            "type": "string",
            "title": "Fields",
            "description": "Comma-separated list of fields to return"
          },
          "include": {
            "type": "string",
            "title": "Include",
            "description": "Comma-separated list of relations to include (max 4, max 2 levels deep).\nExample: \"linkedParts,linkedParts.part,folder\""
          },
          "meta": {
            "type": "boolean",
            "title": "Meta",
            "description": "If true, returns response with metadata (total, count, hasMore, etc.)"
          },
          "hints": {
            "type": "boolean",
            "title": "Hints",
            "description": "If true, returns AI-friendly hints about available actions. Implies meta=true."
          }
        },
        "title": "Search Query",
        "description": "Complete search request with filter conditions and query settings"
      },
      "FilterConditionPrinterSlot": {
        "type": "object",
        "properties": {
          "and": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FilterConditionPrinterSlot"
            },
            "title": "AND Conditions",
            "description": "All conditions must be true"
          },
          "or": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FilterConditionPrinterSlot"
            },
            "title": "OR Conditions",
            "description": "At least one condition must be true"
          },
          "printerId": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "materialId": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "variantId": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "instanceId": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "materialType": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "expectedData": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "expectedDataSetAt": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "serial": {
            "$ref": "#/components/schemas/FieldOperators",
            "title": "Serial of the roll physically in this slot, null when unknown",
            "description": "Serial of the roll physically in this slot, null when unknown."
          },
          "serialSource": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "amsIndex": {
            "$ref": "#/components/schemas/FieldOperators",
            "description": "Visual slot position: -1 for spool, 0+ for AMS array index"
          },
          "slotIndex": {
            "$ref": "#/components/schemas/FieldOperators",
            "description": "Slot within AMS, or spool index for multiple spools"
          },
          "slot": {
            "$ref": "#/components/schemas/FieldOperators",
            "deprecated": true
          },
          "filamentUserProfileId": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "filamentSystemProfileId": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "id": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "storeId": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "createdAt": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "updatedAt": {
            "$ref": "#/components/schemas/FieldOperators"
          }
        },
        "title": "Filter Condition",
        "description": "Root filter condition that can be either a logical condition (AND/OR) or field-based condition"
      },
      "idstringundefinedstoreIdstringundefinedcreatedAtstringundefinedupdatedAtstringundefinedgroupIdstringundefinedvariantIdstringundefined...4more...prioritystringundefinedQuerySettings...": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "storeId": {
            "type": "string"
          },
          "createdAt": {
            "type": "string"
          },
          "updatedAt": {
            "type": "string"
          },
          "groupId": {
            "type": "string"
          },
          "variantId": {
            "type": "string"
          },
          "materialId": {
            "type": "string"
          },
          "materialType": {
            "type": "string"
          },
          "partId": {
            "type": "string"
          },
          "index": {
            "type": "string"
          },
          "priority": {
            "type": "string"
          },
          "sort": {
            "type": "string",
            "title": "Sort",
            "description": "Sort specification in format \"field:asc,field2:desc\""
          },
          "limit": {
            "type": "number",
            "minimum": 1,
            "maximum": 1000,
            "title": "Limit",
            "description": "Maximum number of results to return (default: 1000, max: 1000)"
          },
          "offset": {
            "type": "number",
            "minimum": 0,
            "title": "Offset",
            "description": "Number of results to skip for pagination"
          },
          "fields": {
            "type": "string",
            "title": "Fields",
            "description": "Comma-separated list of fields to return"
          },
          "include": {
            "type": "string",
            "title": "Include",
            "description": "Comma-separated list of relations to include (max 4, max 2 levels deep).\nExample: \"linkedParts,linkedParts.part,folder\""
          },
          "meta": {
            "type": "boolean",
            "title": "Meta",
            "description": "If true, returns response with metadata (total, count, hasMore, etc.)"
          },
          "hints": {
            "type": "boolean",
            "title": "Hints",
            "description": "If true, returns AI-friendly hints about available actions. Implies meta=true."
          }
        }
      },
      "SearchQueryDtoPartMaterialAssignment": {
        "type": "object",
        "properties": {
          "filter": {
            "$ref": "#/components/schemas/FilterConditionPartMaterialAssignment",
            "title": "Filter",
            "description": "Complex filter conditions using logical and field operators.\nAvailable field operators: eq, ne, gt, gte, lt, lte, contains, startsWith, endsWith, in, notIn, isNull, between.\nUsage example: {\"filter\": {\"and\": [{\"name\": {\"contains\": \"benchy\"}}, {\"or\": [{\"type\": {\"eq\": \"3mf\"}}, {\"type\": {\"eq\": \"gcode3mf\"}}]}}}"
          },
          "sort": {
            "type": "string",
            "title": "Sort",
            "description": "Sort specification in format \"field:asc,field2:desc\""
          },
          "limit": {
            "type": "number",
            "minimum": 1,
            "maximum": 1000,
            "title": "Limit",
            "description": "Maximum number of results to return (default: 1000, max: 1000)"
          },
          "offset": {
            "type": "number",
            "minimum": 0,
            "title": "Offset",
            "description": "Number of results to skip for pagination"
          },
          "fields": {
            "type": "string",
            "title": "Fields",
            "description": "Comma-separated list of fields to return"
          },
          "include": {
            "type": "string",
            "title": "Include",
            "description": "Comma-separated list of relations to include (max 4, max 2 levels deep).\nExample: \"linkedParts,linkedParts.part,folder\""
          },
          "meta": {
            "type": "boolean",
            "title": "Meta",
            "description": "If true, returns response with metadata (total, count, hasMore, etc.)"
          },
          "hints": {
            "type": "boolean",
            "title": "Hints",
            "description": "If true, returns AI-friendly hints about available actions. Implies meta=true."
          }
        },
        "title": "Search Query",
        "description": "Complete search request with filter conditions and query settings"
      },
      "FilterConditionPartMaterialAssignment": {
        "type": "object",
        "properties": {
          "and": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FilterConditionPartMaterialAssignment"
            },
            "title": "AND Conditions",
            "description": "All conditions must be true"
          },
          "or": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FilterConditionPartMaterialAssignment"
            },
            "title": "OR Conditions",
            "description": "At least one condition must be true"
          },
          "id": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "storeId": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "createdAt": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "updatedAt": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "groupId": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "variantId": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "materialId": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "materialType": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "partId": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "index": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "priority": {
            "$ref": "#/components/schemas/FieldOperators"
          }
        },
        "title": "Filter Condition",
        "description": "Root filter condition that can be either a logical condition (AND/OR) or field-based condition"
      },
      "PartMetadata": {
        "type": "object",
        "properties": {
          "partId": {
            "type": "string"
          },
          "metadata3mf": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/Metadata3MF"
              }
            ]
          },
          "slicingEstimate": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/SlicingEstimate"
              }
            ]
          },
          "inputHash": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "dimensions": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/PartDimensions"
              }
            ]
          },
          "footprints": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/PartFootprints"
              }
            ],
            "title": "Convex XY footprint hulls (see {@link PartFootprints })",
            "description": "Convex XY footprint hulls (see {@link PartFootprints })."
          },
          "preslice": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/PartPreslice"
              }
            ]
          },
          "storeId": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          }
        },
        "required": [
          "partId",
          "metadata3mf",
          "slicingEstimate",
          "inputHash",
          "dimensions",
          "footprints",
          "preslice",
          "storeId",
          "updatedAt",
          "createdAt"
        ]
      },
      "PartDimensions": {
        "type": "object",
        "properties": {
          "source": {
            "oneOf": [
              {
                "const": "file"
              },
              {
                "const": "parametric-build"
              }
            ]
          },
          "version": {
            "type": "number",
            "title": "See {@link PART_DIMENSIONS_VERSION }. Absent on pre-versioning entries",
            "description": "See {@link PART_DIMENSIONS_VERSION }. Absent on pre-versioning entries."
          },
          "plates": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PlateDimensions"
            }
          },
          "objects": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ObjectDimensions"
            }
          },
          "world": {
            "$ref": "#/components/schemas/BoundingBox",
            "description": "Combined world-space AABB across every object in the file"
          },
          "printableWorld": {
            "$ref": "#/components/schemas/BoundingBox",
            "title": "`world` restricted to printable geometry — see `ObjectDimensions.printableWorld`",
            "description": "`world` restricted to printable geometry — see `ObjectDimensions.printableWorld`."
          }
        },
        "required": [
          "source",
          "plates",
          "objects",
          "world"
        ],
        "description": "Geometry dimensions for a part file. For 3MFs this is the (trimmed)\ncompute3MFDimensions result; STL and parametric outputs populate a single\nobject/world box. `source` records how the value was derived —\n'parametric-build' entries are best-effort fallbacks (output varies with\nbuild parameters)."
      },
      "PlateDimensions": {
        "type": "object",
        "properties": {
          "plateId": {
            "type": "number"
          },
          "name": {
            "type": "string"
          },
          "origin": {
            "$ref": "#/components/schemas/Vec3",
            "description": "World-space origin of this plate's bed front-left corner, if known or inferred"
          },
          "objects": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ObjectDimensions"
            }
          },
          "world": {
            "$ref": "#/components/schemas/BoundingBox",
            "description": "Combined world-space AABB of all objects on this plate"
          },
          "printableWorld": {
            "$ref": "#/components/schemas/BoundingBox",
            "title": "`world` restricted to printable geometry — see `ObjectDimensions.printableWorld`",
            "description": "`world` restricted to printable geometry — see `ObjectDimensions.printableWorld`."
          },
          "plateLocal": {
            "$ref": "#/components/schemas/BoundingBox",
            "description": "Combined AABB with each plate's own origin as (0,0,0) — only set if origin is known"
          }
        },
        "required": [
          "plateId",
          "objects",
          "world"
        ]
      },
      "Vec3": {
        "type": "object",
        "properties": {
          "x": {
            "type": "number"
          },
          "y": {
            "type": "number"
          },
          "z": {
            "type": "number"
          }
        },
        "required": [
          "x",
          "y",
          "z"
        ]
      },
      "ObjectDimensions": {
        "type": "object",
        "properties": {
          "objectId": {
            "type": "string",
            "description": "objectid of the top-level build item in /3D/3dmodel.model"
          },
          "name": {
            "type": "string",
            "description": "Display name from model_settings.config, if any"
          },
          "componentPath": {
            "type": "string",
            "description": "Path to the component .model file holding the mesh, e.g. \"/3D/Objects/Cube_1.model\""
          },
          "local": {
            "$ref": "#/components/schemas/BoundingBox",
            "description": "Bounding box in the object's own mesh coordinates (before any transform)"
          },
          "world": {
            "$ref": "#/components/schemas/BoundingBox",
            "description": "Bounding box in world (build-plate-layout) coordinates after build-item + component transforms"
          },
          "printableWorld": {
            "$ref": "#/components/schemas/BoundingBox",
            "description": "World box of this object's *printable* geometry only — its `normal_part`\nvolumes, excluding modifiers, support enforcers/blockers and negative\nvolumes. Equal to `world` when the file declares no part subtypes at all,\nand undefined for an object with no printable part (one made entirely of\nmodifiers). Callers deciding where geometry sits on the bed want this;\ncallers asking how much room a file occupies want `world`."
          },
          "plateId": {
            "type": "number",
            "description": "Plate this object is assigned to, if determinable from model_settings.config"
          },
          "plateLocal": {
            "$ref": "#/components/schemas/BoundingBox",
            "description": "Bounding box relative to this object's plate origin (only set if plate origin is known)"
          }
        },
        "required": [
          "objectId",
          "componentPath",
          "local",
          "world"
        ]
      },
      "BoundingBox": {
        "type": "object",
        "properties": {
          "min": {
            "$ref": "#/components/schemas/Vec3"
          },
          "max": {
            "$ref": "#/components/schemas/Vec3"
          },
          "size": {
            "$ref": "#/components/schemas/Vec3"
          },
          "center": {
            "$ref": "#/components/schemas/Vec3"
          }
        },
        "required": [
          "min",
          "max",
          "size",
          "center"
        ]
      },
      "PartFootprints": {
        "type": "object",
        "properties": {
          "sourceHash": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ],
            "description": "`fileHashes[0]` of the source file the hulls were computed from. A job\npacks with these hulls only when its own source snapshot carries the\nsame hash — queued jobs keep printing the file they were created with,\nso after a part-file replacement the (recomputed) hulls describe\ngeometry those jobs will never print."
          },
          "world": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "array",
                "items": {
                  "type": "array",
                  "prefixItems": [
                    {
                      "type": "number"
                    },
                    {
                      "type": "number"
                    }
                  ],
                  "additionalItems": false
                }
              }
            ],
            "title": "Whole-file hull (STL, or a 3MF's combined build)",
            "description": "Whole-file hull (STL, or a 3MF's combined build)."
          },
          "plates": {
            "$ref": "#/components/schemas/RecordstringArrayHullPoint",
            "title": "Per-plate hulls for multi-plate 3MFs, keyed by plateId",
            "description": "Per-plate hulls for multi-plate 3MFs, keyed by plateId."
          }
        },
        "required": [
          "sourceHash",
          "world"
        ],
        "description": "Stored footprint hulls for a part (`part_metadata.footprints`): the convex\nXY outline the plate-merge packer collides instead of the bounding box.\n\nEvery hull is CCW, capped at {@link HULL_MAX_VERTICES } vertices, expressed\nRELATIVE TO ITS OWN AABB CENTER (so it drops onto a layout placement, whose\nx/y is the footprint center, with a plain translation), stays inside that\nAABB, and contains the true outline to within the ~15µm quantization bound\ndescribed at {@link finalizeFootprintHull } — conservative for collision at\nevery physically relevant scale."
      },
      "PartPreslice": {
        "type": "object",
        "properties": {
          "runId": {
            "type": "string"
          },
          "inputHash": {
            "type": "string",
            "title": "File hashes + resolved profile ids + material selection. Re-runs skip when it matches",
            "description": "File hashes + resolved profile ids + material selection. Re-runs skip when it matches."
          },
          "status": {
            "oneOf": [
              {
                "const": "running"
              },
              {
                "const": "pending"
              },
              {
                "const": "failed"
              },
              {
                "const": "complete"
              }
            ]
          },
          "source": {
            "oneOf": [
              {
                "const": "file"
              },
              {
                "const": "parametric-defaults"
              }
            ],
            "title": "'parametric-defaults' when the geometry came from a build at default parameters",
            "description": "'parametric-defaults' when the geometry came from a build at default parameters."
          },
          "startedAt": {
            "type": "string"
          },
          "completedAt": {
            "type": "string"
          },
          "groups": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PresliceGroupResult"
            }
          },
          "sourceUris": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "The files that were actually sliced, when they are not the part's own —\nthe mesh a parametric part was rendered to at its default parameters."
          },
          "parametricSource": {
            "type": "object",
            "properties": {
              "hash": {
                "type": "string",
                "title": "File hashes + parameter values the render describes",
                "description": "File hashes + parameter values the render describes."
              },
              "uris": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              }
            },
            "required": [
              "hash",
              "uris"
            ],
            "title": "The default-parameter render a parametric part is pre-sliced from",
            "description": "The default-parameter render a parametric part is pre-sliced from."
          }
        },
        "required": [
          "runId",
          "inputHash",
          "status",
          "source",
          "startedAt",
          "groups"
        ],
        "description": "A pre-slice run: the part sliced once per distinct printer configuration in\nthe farm. Stored on `part_metadata.preslice`; `slicing_estimate` keeps the\nrolled-up average so existing consumers are unaffected."
      },
      "PresliceGroupResult": {
        "type": "object",
        "properties": {
          "key": {
            "type": "string",
            "title": "Stable identity of the printer group: model + machine/process/filament profiles",
            "description": "Stable identity of the printer group: model + machine/process/filament profiles."
          },
          "printerModelName": {
            "type": "string"
          },
          "vendorName": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "nozzleDiameter": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "printerCount": {
            "type": "number",
            "title": "How many printers in the farm this row stands for — the weight of the average",
            "description": "How many printers in the farm this row stands for — the weight of the average."
          },
          "status": {
            "oneOf": [
              {
                "const": "running"
              },
              {
                "const": "pending"
              },
              {
                "const": "failed"
              },
              {
                "const": "no-compatible-material"
              },
              {
                "const": "complete"
              }
            ]
          },
          "reasonCode": {
            "oneOf": [
              {
                "const": "material-mismatch"
              },
              {
                "const": "profile-missing"
              },
              {
                "const": "no-compatible-material"
              },
              {
                "const": "slicer-error"
              },
              {
                "const": "profile-error"
              }
            ]
          },
          "reason": {
            "type": "string"
          },
          "filaments": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PresliceSlotFilament"
            }
          },
          "estimatedPrintTimeSeconds": {
            "type": "number"
          },
          "totalWeightGrams": {
            "type": "number"
          },
          "materials": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SlicingMaterialUsage"
            }
          },
          "plates": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PlateSlicingEstimate"
            }
          },
          "pendingPlateIds": {
            "type": "array",
            "items": {
              "type": "number"
            },
            "title": "Plate ids still waiting on a slicer callback. Empty once the group is done",
            "description": "Plate ids still waiting on a slicer callback. Empty once the group is done."
          },
          "slicerVersion": {
            "type": "string"
          }
        },
        "required": [
          "key",
          "printerModelName",
          "vendorName",
          "nozzleDiameter",
          "printerCount",
          "status"
        ]
      },
      "PresliceSlotFilament": {
        "type": "object",
        "properties": {
          "index": {
            "type": "number"
          },
          "materialName": {
            "type": "string"
          },
          "filamentProfileId": {
            "type": "string"
          },
          "filamentProfileName": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "quality": {
            "oneOf": [
              {
                "const": "type"
              },
              {
                "const": "exact"
              },
              {
                "const": "vendor-type"
              }
            ]
          },
          "substituted": {
            "type": "boolean",
            "title": "The matcher fell back to something other than the material the part names",
            "description": "The matcher fell back to something other than the material the part names."
          }
        },
        "required": [
          "index",
          "materialName",
          "filamentProfileId",
          "filamentProfileName",
          "quality",
          "substituted"
        ],
        "description": "The filament profile the matcher picked for one of the part's slots."
      },
      "GetPartFootprintsResult": {
        "type": "object",
        "properties": {
          "footprints": {
            "$ref": "#/components/schemas/RecordstringPartFootprints",
            "description": "partId -> stored convex footprint hulls. Parts with no stored hulls\n(legacy, pre-sliced, parametric) are absent — callers pack those by\nbounding box."
          }
        },
        "required": [
          "footprints"
        ]
      },
      "RecordstringPartFootprints": {
        "type": "object",
        "properties": {},
        "description": "Construct a type with a set of properties K of type T",
        "additionalProperties": {
          "$ref": "#/components/schemas/PartFootprints"
        }
      },
      "GetPartFootprintsRequest": {
        "type": "object",
        "properties": {
          "partIds": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "minItems": 1,
            "maxItems": 200,
            "title": "IDs of the parts whose footprint hulls are needed",
            "description": "IDs of the parts whose footprint hulls are needed."
          }
        },
        "required": [
          "partIds"
        ]
      },
      "GetPartPresliceResult": {
        "type": "object",
        "properties": {
          "preslice": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/PartPreslice"
              }
            ]
          },
          "stale": {
            "type": "boolean",
            "title": "True when the results no longer describe the current part/printer set",
            "description": "True when the results no longer describe the current part/printer set."
          }
        },
        "required": [
          "preslice",
          "stale"
        ]
      },
      "RetryPartProcessingResult": {
        "type": "object",
        "properties": {
          "results": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/RetryPartProcessingResultEntry"
            }
          }
        },
        "required": [
          "results"
        ]
      },
      "RetryPartProcessingResultEntry": {
        "type": "object",
        "properties": {
          "partId": {
            "type": "string"
          },
          "outcome": {
            "oneOf": [
              {
                "const": "not-found"
              },
              {
                "const": "submitted"
              },
              {
                "const": "throttled"
              },
              {
                "const": "not-failed"
              }
            ]
          },
          "retryAfterSeconds": {
            "type": "number",
            "title": "Present when `throttled`: seconds until this part may be retried",
            "description": "Present when `throttled`: seconds until this part may be retried."
          }
        },
        "required": [
          "partId",
          "outcome"
        ]
      },
      "RetryPartProcessingRequest": {
        "type": "object",
        "properties": {
          "partIds": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "minItems": 1,
            "maxItems": 200,
            "title": "IDs of parts whose processing permanently failed",
            "description": "IDs of parts whose processing permanently failed."
          }
        },
        "required": [
          "partIds"
        ]
      },
      "SkuOptionValue": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "optionId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "pattern": "^[a-z0-9]{24}$"
              }
            ]
          },
          "skuSuffixes": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "array",
                "items": {
                  "type": "string"
                }
              }
            ]
          },
          "aliases": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "array",
                "items": {
                  "type": "string"
                }
              }
            ],
            "title": "Alternate names (as the merchant typed them) that resolve to this value",
            "description": "Alternate names (as the merchant typed them) that resolve to this value."
          },
          "order": {
            "type": "number"
          },
          "id": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "storeId": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time"
          }
        },
        "required": [
          "name",
          "optionId",
          "order",
          "id",
          "storeId",
          "createdAt",
          "updatedAt"
        ]
      },
      "CreateSkuOptionValueRequest": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "optionId": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "skuSuffixes": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "aliases": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "title": "Alternate names that resolve to this value in name-based lookups",
            "description": "Alternate names that resolve to this value in name-based lookups."
          }
        },
        "required": [
          "name",
          "optionId"
        ]
      },
      "UpdateSkuOptionValueRequest": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "skuSuffixes": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "aliases": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "title": "Alternate names that resolve to this value in name-based lookups",
            "description": "Alternate names that resolve to this value in name-based lookups."
          }
        }
      },
      "ReorderSkuOptionValueRequest": {
        "type": "object",
        "properties": {
          "optionValueId": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "newOrder": {
            "type": "number"
          }
        },
        "required": [
          "optionValueId",
          "newOrder"
        ]
      },
      "SkuOptionProperty": {
        "type": "object",
        "properties": {
          "optionId": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "bindingId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "pattern": "^[a-z0-9]{24}$"
              }
            ]
          },
          "bindingId2": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "pattern": "^[a-z0-9]{24}$"
              }
            ]
          },
          "bindingId3": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "pattern": "^[a-z0-9]{24}$"
              }
            ]
          },
          "name": {
            "type": "string"
          },
          "type": {
            "oneOf": [
              {
                "const": "text"
              },
              {
                "const": "material"
              },
              {
                "const": "plate_quantities"
              }
            ]
          },
          "order": {
            "type": "number"
          },
          "id": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "storeId": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time"
          }
        },
        "required": [
          "optionId",
          "name",
          "type",
          "order",
          "id",
          "storeId",
          "createdAt",
          "updatedAt"
        ]
      },
      "CreateSkuOptionPropertyRequest": {
        "type": "object",
        "properties": {
          "optionId": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "bindingId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "pattern": "^[a-z0-9]{24}$"
              }
            ],
            "description": "For local properties: primary source binding (null = global property)"
          },
          "bindingId2": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "pattern": "^[a-z0-9]{24}$"
              }
            ],
            "description": "For compound local properties: 2nd source binding"
          },
          "bindingId3": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "pattern": "^[a-z0-9]{24}$"
              }
            ],
            "description": "For compound local properties: 3rd source binding"
          },
          "name": {
            "type": "string"
          },
          "type": {
            "oneOf": [
              {
                "const": "text"
              },
              {
                "const": "material"
              },
              {
                "const": "plate_quantities"
              }
            ]
          }
        },
        "required": [
          "optionId",
          "name",
          "type"
        ]
      },
      "UpdateSkuOptionPropertyRequest": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          }
        }
      },
      "ReorderSkuOptionPropertyRequest": {
        "type": "object",
        "properties": {
          "propertyId": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "newOrder": {
            "type": "number"
          }
        },
        "required": [
          "propertyId",
          "newOrder"
        ]
      },
      "SkuOptionPropertyValue": {
        "type": "object",
        "properties": {
          "propertyId": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "optionValueId": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "optionValueId2": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "pattern": "^[a-z0-9]{24}$"
              }
            ]
          },
          "optionValueId3": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "pattern": "^[a-z0-9]{24}$"
              }
            ]
          },
          "textValue": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "materialValue": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "array",
                "items": {
                  "oneOf": [
                    {
                      "type": "object",
                      "properties": {
                        "groupId": {
                          "type": "string",
                          "pattern": "^[a-z0-9]{24}$"
                        }
                      },
                      "required": [
                        "groupId"
                      ]
                    },
                    {
                      "type": "object",
                      "properties": {
                        "variantId": {
                          "type": "string",
                          "pattern": "^[a-z0-9]{24}$"
                        }
                      },
                      "required": [
                        "variantId"
                      ]
                    },
                    {
                      "type": "object",
                      "properties": {
                        "materialId": {
                          "type": "string",
                          "pattern": "^[a-z0-9]{24}$"
                        }
                      },
                      "required": [
                        "materialId"
                      ]
                    },
                    {
                      "type": "object",
                      "properties": {
                        "materialType": {
                          "type": "string"
                        }
                      },
                      "required": [
                        "materialType"
                      ]
                    }
                  ]
                }
              }
            ]
          },
          "plateQuantitiesValue": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/Recordstringnumber"
              }
            ]
          },
          "id": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "storeId": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time"
          }
        },
        "required": [
          "propertyId",
          "optionValueId",
          "id",
          "storeId",
          "createdAt",
          "updatedAt"
        ]
      },
      "BulkCreatePropertyValuesRequest": {
        "type": "object",
        "properties": {
          "values": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CreateSkuOptionPropertyValueRequest"
            }
          }
        },
        "required": [
          "values"
        ]
      },
      "CreateSkuOptionPropertyValueRequest": {
        "type": "object",
        "properties": {
          "optionValueId": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$",
            "description": "Value from bindingId's option (always required)"
          },
          "optionValueId2": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "pattern": "^[a-z0-9]{24}$"
              }
            ],
            "description": "Value from bindingId2's option (required if property has bindingId2)"
          },
          "optionValueId3": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "pattern": "^[a-z0-9]{24}$"
              }
            ],
            "description": "Value from bindingId3's option (required if property has bindingId3)"
          },
          "propertyId": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "textValue": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "materialValue": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "array",
                "items": {
                  "oneOf": [
                    {
                      "type": "object",
                      "properties": {
                        "groupId": {
                          "type": "string",
                          "pattern": "^[a-z0-9]{24}$"
                        }
                      },
                      "required": [
                        "groupId"
                      ]
                    },
                    {
                      "type": "object",
                      "properties": {
                        "variantId": {
                          "type": "string",
                          "pattern": "^[a-z0-9]{24}$"
                        }
                      },
                      "required": [
                        "variantId"
                      ]
                    },
                    {
                      "type": "object",
                      "properties": {
                        "materialId": {
                          "type": "string",
                          "pattern": "^[a-z0-9]{24}$"
                        }
                      },
                      "required": [
                        "materialId"
                      ]
                    },
                    {
                      "type": "object",
                      "properties": {
                        "materialType": {
                          "type": "string"
                        }
                      },
                      "required": [
                        "materialType"
                      ]
                    }
                  ]
                }
              }
            ]
          },
          "plateQuantitiesValue": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/Recordstringnumber"
              }
            ]
          }
        },
        "required": [
          "optionValueId",
          "propertyId"
        ]
      },
      "BulkUpdatePropertyValuesRequest": {
        "type": "object",
        "properties": {
          "updates": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/UpdateSkuOptionPropertyValueRequest"
            }
          }
        },
        "required": [
          "updates"
        ]
      },
      "UpdateSkuOptionPropertyValueRequest": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "textValue": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "materialValue": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "array",
                "items": {
                  "oneOf": [
                    {
                      "type": "object",
                      "properties": {
                        "groupId": {
                          "type": "string",
                          "pattern": "^[a-z0-9]{24}$"
                        }
                      },
                      "required": [
                        "groupId"
                      ]
                    },
                    {
                      "type": "object",
                      "properties": {
                        "variantId": {
                          "type": "string",
                          "pattern": "^[a-z0-9]{24}$"
                        }
                      },
                      "required": [
                        "variantId"
                      ]
                    },
                    {
                      "type": "object",
                      "properties": {
                        "materialId": {
                          "type": "string",
                          "pattern": "^[a-z0-9]{24}$"
                        }
                      },
                      "required": [
                        "materialId"
                      ]
                    },
                    {
                      "type": "object",
                      "properties": {
                        "materialType": {
                          "type": "string"
                        }
                      },
                      "required": [
                        "materialType"
                      ]
                    }
                  ]
                }
              }
            ]
          },
          "plateQuantitiesValue": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/Recordstringnumber"
              }
            ]
          }
        },
        "required": [
          "id"
        ]
      },
      "BulkDeleteRequest": {
        "type": "object",
        "properties": {
          "ids": {
            "type": "array",
            "items": {
              "type": "string",
              "pattern": "^[a-z0-9]{24}$"
            }
          }
        },
        "required": [
          "ids"
        ]
      },
      "SkuOption": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "isPersonalization": {
            "type": "boolean"
          },
          "aliases": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "array",
                "items": {
                  "type": "string"
                }
              }
            ],
            "title": "Alternate names (as the merchant typed them) that resolve to this option",
            "description": "Alternate names (as the merchant typed them) that resolve to this option."
          },
          "id": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "storeId": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time"
          }
        },
        "required": [
          "name",
          "isPersonalization",
          "id",
          "storeId",
          "createdAt",
          "updatedAt"
        ]
      },
      "namestringundefinedisPersonalizationstringundefinedaliasesstringundefinedidstringundefinedstoreIdstringundefinedcreatedAtstringundefinedupdatedAtstringundefinedQuerySettings...": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "isPersonalization": {
            "type": "string"
          },
          "aliases": {
            "type": "string",
            "title": "Alternate names (as the merchant typed them) that resolve to this option",
            "description": "Alternate names (as the merchant typed them) that resolve to this option."
          },
          "id": {
            "type": "string"
          },
          "storeId": {
            "type": "string"
          },
          "createdAt": {
            "type": "string"
          },
          "updatedAt": {
            "type": "string"
          },
          "sort": {
            "type": "string",
            "title": "Sort",
            "description": "Sort specification in format \"field:asc,field2:desc\""
          },
          "limit": {
            "type": "number",
            "minimum": 1,
            "maximum": 1000,
            "title": "Limit",
            "description": "Maximum number of results to return (default: 1000, max: 1000)"
          },
          "offset": {
            "type": "number",
            "minimum": 0,
            "title": "Offset",
            "description": "Number of results to skip for pagination"
          },
          "fields": {
            "type": "string",
            "title": "Fields",
            "description": "Comma-separated list of fields to return"
          },
          "include": {
            "type": "string",
            "title": "Include",
            "description": "Comma-separated list of relations to include (max 4, max 2 levels deep).\nExample: \"linkedParts,linkedParts.part,folder\""
          },
          "meta": {
            "type": "boolean",
            "title": "Meta",
            "description": "If true, returns response with metadata (total, count, hasMore, etc.)"
          },
          "hints": {
            "type": "boolean",
            "title": "Hints",
            "description": "If true, returns AI-friendly hints about available actions. Implies meta=true."
          }
        }
      },
      "SearchQueryDtoSkuOption": {
        "type": "object",
        "properties": {
          "filter": {
            "$ref": "#/components/schemas/FilterConditionSkuOption",
            "title": "Filter",
            "description": "Complex filter conditions using logical and field operators.\nAvailable field operators: eq, ne, gt, gte, lt, lte, contains, startsWith, endsWith, in, notIn, isNull, between.\nUsage example: {\"filter\": {\"and\": [{\"name\": {\"contains\": \"benchy\"}}, {\"or\": [{\"type\": {\"eq\": \"3mf\"}}, {\"type\": {\"eq\": \"gcode3mf\"}}]}}}"
          },
          "sort": {
            "type": "string",
            "title": "Sort",
            "description": "Sort specification in format \"field:asc,field2:desc\""
          },
          "limit": {
            "type": "number",
            "minimum": 1,
            "maximum": 1000,
            "title": "Limit",
            "description": "Maximum number of results to return (default: 1000, max: 1000)"
          },
          "offset": {
            "type": "number",
            "minimum": 0,
            "title": "Offset",
            "description": "Number of results to skip for pagination"
          },
          "fields": {
            "type": "string",
            "title": "Fields",
            "description": "Comma-separated list of fields to return"
          },
          "include": {
            "type": "string",
            "title": "Include",
            "description": "Comma-separated list of relations to include (max 4, max 2 levels deep).\nExample: \"linkedParts,linkedParts.part,folder\""
          },
          "meta": {
            "type": "boolean",
            "title": "Meta",
            "description": "If true, returns response with metadata (total, count, hasMore, etc.)"
          },
          "hints": {
            "type": "boolean",
            "title": "Hints",
            "description": "If true, returns AI-friendly hints about available actions. Implies meta=true."
          }
        },
        "title": "Search Query",
        "description": "Complete search request with filter conditions and query settings"
      },
      "FilterConditionSkuOption": {
        "type": "object",
        "properties": {
          "and": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FilterConditionSkuOption"
            },
            "title": "AND Conditions",
            "description": "All conditions must be true"
          },
          "or": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FilterConditionSkuOption"
            },
            "title": "OR Conditions",
            "description": "At least one condition must be true"
          },
          "name": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "isPersonalization": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "aliases": {
            "$ref": "#/components/schemas/FieldOperators",
            "title": "Alternate names (as the merchant typed them) that resolve to this option",
            "description": "Alternate names (as the merchant typed them) that resolve to this option."
          },
          "id": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "storeId": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "createdAt": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "updatedAt": {
            "$ref": "#/components/schemas/FieldOperators"
          }
        },
        "title": "Filter Condition",
        "description": "Root filter condition that can be either a logical condition (AND/OR) or field-based condition"
      },
      "SkuOptionBinding": {
        "type": "object",
        "properties": {
          "optionId": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "skuId": {
            "type": "string"
          },
          "order": {
            "type": "number"
          },
          "filterMode": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "const": "inclusion"
              },
              {
                "const": "exclusion"
              }
            ]
          },
          "optional": {
            "type": "boolean",
            "title": "Not required at order time (see reconciliation and SKU-suffix matching)",
            "description": "Not required at order time (see reconciliation and SKU-suffix matching)."
          },
          "id": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "storeId": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time"
          }
        },
        "required": [
          "optionId",
          "skuId",
          "order",
          "filterMode",
          "optional",
          "id",
          "storeId",
          "createdAt",
          "updatedAt"
        ]
      },
      "CreateSkuOptionBindingRequest": {
        "type": "object",
        "properties": {
          "optionId": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "skuId": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "optional": {
            "type": "boolean",
            "title": "Default false: the option is required on every order for this SKU",
            "description": "Default false: the option is required on every order for this SKU."
          }
        },
        "required": [
          "optionId",
          "skuId"
        ]
      },
      "UpdateSkuOptionBindingRequest": {
        "type": "object",
        "properties": {
          "optionId": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "skuId": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "order": {
            "type": "number"
          },
          "filterMode": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "const": "inclusion"
              },
              {
                "const": "exclusion"
              }
            ]
          },
          "optional": {
            "type": "boolean"
          }
        }
      },
      "ReorderSkuOptionBindingRequest": {
        "type": "object",
        "properties": {
          "bindingId": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "newOrder": {
            "type": "number"
          }
        },
        "required": [
          "bindingId",
          "newOrder"
        ]
      },
      "CreateSkuOptionRequest": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "isPersonalization": {
            "type": "boolean"
          },
          "aliases": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "title": "Alternate names that resolve to this option in name-based lookups",
            "description": "Alternate names that resolve to this option in name-based lookups."
          }
        },
        "required": [
          "name",
          "isPersonalization"
        ]
      },
      "UpdateSkuOptionRequest": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "aliases": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "title": "Alternate names that resolve to this option in name-based lookups",
            "description": "Alternate names that resolve to this option in name-based lookups."
          }
        }
      },
      "ConvertSkuOptionToAliasRequest": {
        "type": "object",
        "properties": {
          "targetOptionId": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$",
            "description": "The variant that keeps existing. The converted variant's name and aliases\nbecome aliases of this one, its SKU bindings move here, and it is deleted."
          }
        },
        "required": [
          "targetOptionId"
        ]
      },
      "SkuOptionValueFilter": {
        "type": "object",
        "properties": {
          "bindingId": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "skuId": {
            "type": "string"
          },
          "optionId": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "optionValueId": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "id": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "storeId": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time"
          }
        },
        "required": [
          "bindingId",
          "skuId",
          "optionId",
          "optionValueId",
          "id",
          "storeId",
          "createdAt",
          "updatedAt"
        ]
      },
      "SetFilteredValuesRequest": {
        "type": "object",
        "properties": {
          "skuId": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "optionId": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "valueIds": {
            "type": "array",
            "items": {
              "type": "string",
              "pattern": "^[a-z0-9]{24}$"
            }
          },
          "filterMode": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "const": "inclusion"
              },
              {
                "const": "exclusion"
              }
            ]
          }
        },
        "required": [
          "skuId",
          "optionId",
          "valueIds",
          "filterMode"
        ]
      },
      "SkuMatchResult": {
        "type": "object",
        "properties": {
          "skuId": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "sku": {
            "type": "string"
          },
          "options": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SkuMatchOptionResult"
            }
          }
        },
        "required": [
          "skuId",
          "sku",
          "options"
        ]
      },
      "SkuMatchOptionResult": {
        "type": "object",
        "properties": {
          "optionId": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "optionName": {
            "type": "string"
          },
          "value": {
            "type": "string"
          },
          "valueId": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "suffix": {
            "type": "string"
          }
        },
        "required": [
          "optionId",
          "optionName",
          "value",
          "valueId",
          "suffix"
        ]
      },
      "CostComponent": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "unit": {
            "type": "string"
          },
          "rate": {
            "type": "number"
          },
          "type": {
            "oneOf": [
              {
                "const": "material"
              },
              {
                "const": "labor"
              },
              {
                "const": "overhead"
              }
            ]
          },
          "description": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "storeId": {
            "type": "string"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time"
          }
        },
        "required": [
          "id",
          "name",
          "unit",
          "rate",
          "type",
          "storeId",
          "createdAt",
          "updatedAt"
        ]
      },
      "idstringundefinednamestringundefinedunitstringundefinedratestringundefinedtypestringundefineddescriptionstringundefinedstoreIdstringundefinedcreatedAtstringundefinedupdatedAtstringundefinedQuerySettings...": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "unit": {
            "type": "string"
          },
          "rate": {
            "type": "string"
          },
          "type": {
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "storeId": {
            "type": "string"
          },
          "createdAt": {
            "type": "string"
          },
          "updatedAt": {
            "type": "string"
          },
          "sort": {
            "type": "string",
            "title": "Sort",
            "description": "Sort specification in format \"field:asc,field2:desc\""
          },
          "limit": {
            "type": "number",
            "minimum": 1,
            "maximum": 1000,
            "title": "Limit",
            "description": "Maximum number of results to return (default: 1000, max: 1000)"
          },
          "offset": {
            "type": "number",
            "minimum": 0,
            "title": "Offset",
            "description": "Number of results to skip for pagination"
          },
          "fields": {
            "type": "string",
            "title": "Fields",
            "description": "Comma-separated list of fields to return"
          },
          "include": {
            "type": "string",
            "title": "Include",
            "description": "Comma-separated list of relations to include (max 4, max 2 levels deep).\nExample: \"linkedParts,linkedParts.part,folder\""
          },
          "meta": {
            "type": "boolean",
            "title": "Meta",
            "description": "If true, returns response with metadata (total, count, hasMore, etc.)"
          },
          "hints": {
            "type": "boolean",
            "title": "Hints",
            "description": "If true, returns AI-friendly hints about available actions. Implies meta=true."
          }
        }
      },
      "SearchQueryDtoCostComponent": {
        "type": "object",
        "properties": {
          "filter": {
            "$ref": "#/components/schemas/FilterConditionCostComponent",
            "title": "Filter",
            "description": "Complex filter conditions using logical and field operators.\nAvailable field operators: eq, ne, gt, gte, lt, lte, contains, startsWith, endsWith, in, notIn, isNull, between.\nUsage example: {\"filter\": {\"and\": [{\"name\": {\"contains\": \"benchy\"}}, {\"or\": [{\"type\": {\"eq\": \"3mf\"}}, {\"type\": {\"eq\": \"gcode3mf\"}}]}}}"
          },
          "sort": {
            "type": "string",
            "title": "Sort",
            "description": "Sort specification in format \"field:asc,field2:desc\""
          },
          "limit": {
            "type": "number",
            "minimum": 1,
            "maximum": 1000,
            "title": "Limit",
            "description": "Maximum number of results to return (default: 1000, max: 1000)"
          },
          "offset": {
            "type": "number",
            "minimum": 0,
            "title": "Offset",
            "description": "Number of results to skip for pagination"
          },
          "fields": {
            "type": "string",
            "title": "Fields",
            "description": "Comma-separated list of fields to return"
          },
          "include": {
            "type": "string",
            "title": "Include",
            "description": "Comma-separated list of relations to include (max 4, max 2 levels deep).\nExample: \"linkedParts,linkedParts.part,folder\""
          },
          "meta": {
            "type": "boolean",
            "title": "Meta",
            "description": "If true, returns response with metadata (total, count, hasMore, etc.)"
          },
          "hints": {
            "type": "boolean",
            "title": "Hints",
            "description": "If true, returns AI-friendly hints about available actions. Implies meta=true."
          }
        },
        "title": "Search Query",
        "description": "Complete search request with filter conditions and query settings"
      },
      "FilterConditionCostComponent": {
        "type": "object",
        "properties": {
          "and": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FilterConditionCostComponent"
            },
            "title": "AND Conditions",
            "description": "All conditions must be true"
          },
          "or": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FilterConditionCostComponent"
            },
            "title": "OR Conditions",
            "description": "At least one condition must be true"
          },
          "id": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "name": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "unit": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "rate": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "type": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "description": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "storeId": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "createdAt": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "updatedAt": {
            "$ref": "#/components/schemas/FieldOperators"
          }
        },
        "title": "Filter Condition",
        "description": "Root filter condition that can be either a logical condition (AND/OR) or field-based condition"
      },
      "Partial__type.o16": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "type": {
            "oneOf": [
              {
                "const": "material"
              },
              {
                "const": "labor"
              },
              {
                "const": "overhead"
              }
            ]
          },
          "unit": {
            "type": "string"
          },
          "rate": {
            "type": "number"
          },
          "description": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "id": {
            "type": "string"
          },
          "storeId": {
            "type": "string"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          }
        },
        "description": "Make all properties in T optional"
      },
      "SkuCost": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "skuId": {
            "type": "string"
          },
          "costComponentId": {
            "type": "string"
          },
          "quantity": {
            "type": "number"
          },
          "storeId": {
            "type": "string"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time"
          }
        },
        "required": [
          "id",
          "skuId",
          "costComponentId",
          "quantity",
          "storeId",
          "createdAt",
          "updatedAt"
        ]
      },
      "idstringundefinedskuIdstringundefinedcostComponentIdstringundefinedquantitystringundefinedstoreIdstringundefinedcreatedAtstringundefinedupdatedAtstringundefinedQuerySettings...": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "skuId": {
            "type": "string"
          },
          "costComponentId": {
            "type": "string"
          },
          "quantity": {
            "type": "string"
          },
          "storeId": {
            "type": "string"
          },
          "createdAt": {
            "type": "string"
          },
          "updatedAt": {
            "type": "string"
          },
          "sort": {
            "type": "string",
            "title": "Sort",
            "description": "Sort specification in format \"field:asc,field2:desc\""
          },
          "limit": {
            "type": "number",
            "minimum": 1,
            "maximum": 1000,
            "title": "Limit",
            "description": "Maximum number of results to return (default: 1000, max: 1000)"
          },
          "offset": {
            "type": "number",
            "minimum": 0,
            "title": "Offset",
            "description": "Number of results to skip for pagination"
          },
          "fields": {
            "type": "string",
            "title": "Fields",
            "description": "Comma-separated list of fields to return"
          },
          "include": {
            "type": "string",
            "title": "Include",
            "description": "Comma-separated list of relations to include (max 4, max 2 levels deep).\nExample: \"linkedParts,linkedParts.part,folder\""
          },
          "meta": {
            "type": "boolean",
            "title": "Meta",
            "description": "If true, returns response with metadata (total, count, hasMore, etc.)"
          },
          "hints": {
            "type": "boolean",
            "title": "Hints",
            "description": "If true, returns AI-friendly hints about available actions. Implies meta=true."
          }
        }
      },
      "SearchQueryDtoSkuCost": {
        "type": "object",
        "properties": {
          "filter": {
            "$ref": "#/components/schemas/FilterConditionSkuCost",
            "title": "Filter",
            "description": "Complex filter conditions using logical and field operators.\nAvailable field operators: eq, ne, gt, gte, lt, lte, contains, startsWith, endsWith, in, notIn, isNull, between.\nUsage example: {\"filter\": {\"and\": [{\"name\": {\"contains\": \"benchy\"}}, {\"or\": [{\"type\": {\"eq\": \"3mf\"}}, {\"type\": {\"eq\": \"gcode3mf\"}}]}}}"
          },
          "sort": {
            "type": "string",
            "title": "Sort",
            "description": "Sort specification in format \"field:asc,field2:desc\""
          },
          "limit": {
            "type": "number",
            "minimum": 1,
            "maximum": 1000,
            "title": "Limit",
            "description": "Maximum number of results to return (default: 1000, max: 1000)"
          },
          "offset": {
            "type": "number",
            "minimum": 0,
            "title": "Offset",
            "description": "Number of results to skip for pagination"
          },
          "fields": {
            "type": "string",
            "title": "Fields",
            "description": "Comma-separated list of fields to return"
          },
          "include": {
            "type": "string",
            "title": "Include",
            "description": "Comma-separated list of relations to include (max 4, max 2 levels deep).\nExample: \"linkedParts,linkedParts.part,folder\""
          },
          "meta": {
            "type": "boolean",
            "title": "Meta",
            "description": "If true, returns response with metadata (total, count, hasMore, etc.)"
          },
          "hints": {
            "type": "boolean",
            "title": "Hints",
            "description": "If true, returns AI-friendly hints about available actions. Implies meta=true."
          }
        },
        "title": "Search Query",
        "description": "Complete search request with filter conditions and query settings"
      },
      "FilterConditionSkuCost": {
        "type": "object",
        "properties": {
          "and": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FilterConditionSkuCost"
            },
            "title": "AND Conditions",
            "description": "All conditions must be true"
          },
          "or": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FilterConditionSkuCost"
            },
            "title": "OR Conditions",
            "description": "At least one condition must be true"
          },
          "id": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "skuId": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "costComponentId": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "quantity": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "storeId": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "createdAt": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "updatedAt": {
            "$ref": "#/components/schemas/FieldOperators"
          }
        },
        "title": "Filter Condition",
        "description": "Root filter condition that can be either a logical condition (AND/OR) or field-based condition"
      },
      "SkuCostWithComponent": {
        "type": "object",
        "properties": {
          "component": {
            "$ref": "#/components/schemas/CostComponent"
          },
          "id": {
            "type": "string"
          },
          "skuId": {
            "type": "string"
          },
          "costComponentId": {
            "type": "string"
          },
          "quantity": {
            "type": "number"
          },
          "storeId": {
            "type": "string"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time"
          }
        },
        "required": [
          "component",
          "id",
          "skuId",
          "costComponentId",
          "quantity",
          "storeId",
          "createdAt",
          "updatedAt"
        ]
      },
      "CostBreakdown": {
        "type": "object",
        "properties": {
          "materials": {
            "type": "number"
          },
          "labor": {
            "type": "number"
          },
          "overhead": {
            "type": "number"
          },
          "total": {
            "type": "number"
          }
        },
        "required": [
          "materials",
          "labor",
          "overhead",
          "total"
        ]
      },
      "Partial__type.o17": {
        "type": "object",
        "properties": {
          "skuId": {
            "type": "string"
          },
          "costComponentId": {
            "type": "string"
          },
          "id": {
            "type": "string"
          },
          "storeId": {
            "type": "string"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "quantity": {
            "type": "number"
          }
        },
        "description": "Make all properties in T optional"
      },
      "CustomMetadataDefinition": {
        "type": "object",
        "properties": {
          "entityType": {
            "oneOf": [
              {
                "const": "order"
              },
              {
                "const": "sku"
              },
              {
                "const": "printer"
              },
              {
                "const": "part"
              },
              {
                "const": "material"
              },
              {
                "const": "materialVariant"
              },
              {
                "const": "printJob"
              },
              {
                "const": "partBuild"
              },
              {
                "const": "profile"
              },
              {
                "const": "materialInstance"
              },
              {
                "const": "maintenanceItem"
              },
              {
                "const": "customer"
              },
              {
                "const": "orderItem"
              },
              {
                "const": "folder"
              }
            ]
          },
          "key": {
            "type": "string"
          },
          "label": {
            "type": "string"
          },
          "valueType": {
            "oneOf": [
              {
                "const": "string"
              },
              {
                "const": "number"
              },
              {
                "const": "boolean"
              },
              {
                "const": "enum"
              },
              {
                "const": "datetime"
              }
            ]
          },
          "enumValues": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "array",
                "items": {
                  "type": "string"
                }
              }
            ]
          },
          "unit": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "defaultValue": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              },
              {
                "type": "number"
              },
              {
                "type": "boolean"
              }
            ],
            "description": "Written into a record's `customMetadata` when that record is created, so\nthe field is on every new record of its type. This is the only way a\ndefinition puts itself on a record: a field with no value is not listed,\nbecause a row the record does not carry is a row that lies about it.\nNever applied to records that already exist."
          },
          "defaultToNow": {
            "type": "boolean",
            "description": "Date/time fields only, and the only default they can carry: the value is\nthe moment the record was created. A fixed date is almost never the right\ndefault, and there is no way to express \"now\" as a literal."
          },
          "id": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "storeId": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time"
          }
        },
        "required": [
          "entityType",
          "key",
          "label",
          "valueType",
          "enumValues",
          "unit",
          "defaultValue",
          "defaultToNow",
          "id",
          "storeId",
          "createdAt",
          "updatedAt"
        ]
      },
      "entityTypestringundefinedkeystringundefinedlabelstringundefinedvalueTypestringundefinedenumValuesstringundefinedunitstringundefined...5more...updatedAtstringundefinedQuerySettings...": {
        "type": "object",
        "properties": {
          "entityType": {
            "type": "string"
          },
          "key": {
            "type": "string"
          },
          "label": {
            "type": "string"
          },
          "valueType": {
            "type": "string"
          },
          "enumValues": {
            "type": "string"
          },
          "unit": {
            "type": "string"
          },
          "defaultValue": {
            "type": "string",
            "description": "Written into a record's `customMetadata` when that record is created, so\nthe field is on every new record of its type. This is the only way a\ndefinition puts itself on a record: a field with no value is not listed,\nbecause a row the record does not carry is a row that lies about it.\nNever applied to records that already exist."
          },
          "defaultToNow": {
            "type": "string",
            "description": "Date/time fields only, and the only default they can carry: the value is\nthe moment the record was created. A fixed date is almost never the right\ndefault, and there is no way to express \"now\" as a literal."
          },
          "id": {
            "type": "string"
          },
          "storeId": {
            "type": "string"
          },
          "createdAt": {
            "type": "string"
          },
          "updatedAt": {
            "type": "string"
          },
          "sort": {
            "type": "string",
            "title": "Sort",
            "description": "Sort specification in format \"field:asc,field2:desc\""
          },
          "limit": {
            "type": "number",
            "minimum": 1,
            "maximum": 1000,
            "title": "Limit",
            "description": "Maximum number of results to return (default: 1000, max: 1000)"
          },
          "offset": {
            "type": "number",
            "minimum": 0,
            "title": "Offset",
            "description": "Number of results to skip for pagination"
          },
          "fields": {
            "type": "string",
            "title": "Fields",
            "description": "Comma-separated list of fields to return"
          },
          "include": {
            "type": "string",
            "title": "Include",
            "description": "Comma-separated list of relations to include (max 4, max 2 levels deep).\nExample: \"linkedParts,linkedParts.part,folder\""
          },
          "meta": {
            "type": "boolean",
            "title": "Meta",
            "description": "If true, returns response with metadata (total, count, hasMore, etc.)"
          },
          "hints": {
            "type": "boolean",
            "title": "Hints",
            "description": "If true, returns AI-friendly hints about available actions. Implies meta=true."
          }
        }
      },
      "SearchQueryDtoCustomMetadataDefinition": {
        "type": "object",
        "properties": {
          "filter": {
            "$ref": "#/components/schemas/FilterConditionCustomMetadataDefinition",
            "title": "Filter",
            "description": "Complex filter conditions using logical and field operators.\nAvailable field operators: eq, ne, gt, gte, lt, lte, contains, startsWith, endsWith, in, notIn, isNull, between.\nUsage example: {\"filter\": {\"and\": [{\"name\": {\"contains\": \"benchy\"}}, {\"or\": [{\"type\": {\"eq\": \"3mf\"}}, {\"type\": {\"eq\": \"gcode3mf\"}}]}}}"
          },
          "sort": {
            "type": "string",
            "title": "Sort",
            "description": "Sort specification in format \"field:asc,field2:desc\""
          },
          "limit": {
            "type": "number",
            "minimum": 1,
            "maximum": 1000,
            "title": "Limit",
            "description": "Maximum number of results to return (default: 1000, max: 1000)"
          },
          "offset": {
            "type": "number",
            "minimum": 0,
            "title": "Offset",
            "description": "Number of results to skip for pagination"
          },
          "fields": {
            "type": "string",
            "title": "Fields",
            "description": "Comma-separated list of fields to return"
          },
          "include": {
            "type": "string",
            "title": "Include",
            "description": "Comma-separated list of relations to include (max 4, max 2 levels deep).\nExample: \"linkedParts,linkedParts.part,folder\""
          },
          "meta": {
            "type": "boolean",
            "title": "Meta",
            "description": "If true, returns response with metadata (total, count, hasMore, etc.)"
          },
          "hints": {
            "type": "boolean",
            "title": "Hints",
            "description": "If true, returns AI-friendly hints about available actions. Implies meta=true."
          }
        },
        "title": "Search Query",
        "description": "Complete search request with filter conditions and query settings"
      },
      "FilterConditionCustomMetadataDefinition": {
        "type": "object",
        "properties": {
          "and": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FilterConditionCustomMetadataDefinition"
            },
            "title": "AND Conditions",
            "description": "All conditions must be true"
          },
          "or": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FilterConditionCustomMetadataDefinition"
            },
            "title": "OR Conditions",
            "description": "At least one condition must be true"
          },
          "entityType": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "key": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "label": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "valueType": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "enumValues": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "unit": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "defaultValue": {
            "$ref": "#/components/schemas/FieldOperators",
            "description": "Written into a record's `customMetadata` when that record is created, so\nthe field is on every new record of its type. This is the only way a\ndefinition puts itself on a record: a field with no value is not listed,\nbecause a row the record does not carry is a row that lies about it.\nNever applied to records that already exist."
          },
          "defaultToNow": {
            "$ref": "#/components/schemas/FieldOperators",
            "description": "Date/time fields only, and the only default they can carry: the value is\nthe moment the record was created. A fixed date is almost never the right\ndefault, and there is no way to express \"now\" as a literal."
          },
          "id": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "storeId": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "createdAt": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "updatedAt": {
            "$ref": "#/components/schemas/FieldOperators"
          }
        },
        "title": "Filter Condition",
        "description": "Root filter condition that can be either a logical condition (AND/OR) or field-based condition"
      },
      "CustomMetadataUsageResponse": {
        "type": "object",
        "properties": {
          "definitionUsage": {
            "$ref": "#/components/schemas/Recordstring__type.o1",
            "title": "How many rows hold a value for each defined key, by definition id",
            "description": "How many rows hold a value for each defined key, by definition id."
          }
        },
        "required": [
          "definitionUsage"
        ]
      },
      "Recordstring__type.o1": {
        "type": "object",
        "properties": {},
        "description": "Construct a type with a set of properties K of type T",
        "additionalProperties": {
          "type": "object",
          "properties": {
            "set": {
              "type": "number"
            },
            "total": {
              "type": "number"
            }
          },
          "required": [
            "set",
            "total"
          ]
        }
      },
      "CustomMetadataUsageQuery": {
        "type": "object",
        "properties": {
          "entityType": {
            "type": "string"
          }
        }
      },
      "CustomMetadataCoercionReport": {
        "type": "object",
        "properties": {
          "total": {
            "type": "number",
            "title": "Rows of this entity type currently holding a value for the key",
            "description": "Rows of this entity type currently holding a value for the key."
          },
          "incompatibleTotal": {
            "type": "number",
            "description": "How many of those cannot be represented as the target type — counted over\nevery matching row, not over the sample below."
          },
          "incompatible": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string"
                },
                "value": {}
              },
              "required": [
                "id",
                "value"
              ]
            },
            "title": "A capped sample of the offending rows, for naming them in the dialog",
            "description": "A capped sample of the offending rows, for naming them in the dialog."
          }
        },
        "required": [
          "total",
          "incompatibleTotal",
          "incompatible"
        ]
      },
      "CustomMetadataPreviewQuery": {
        "type": "object",
        "properties": {
          "entityType": {
            "type": "string"
          },
          "key": {
            "type": "string"
          },
          "valueType": {
            "type": "string"
          },
          "enumValues": {
            "type": "string"
          }
        },
        "required": [
          "entityType",
          "key",
          "valueType"
        ]
      },
      "CreateCustomMetadataDefinitionRequest": {
        "type": "object",
        "properties": {
          "enumValues": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "array",
                "items": {
                  "type": "string"
                }
              }
            ]
          },
          "label": {
            "type": "string"
          },
          "entityType": {
            "oneOf": [
              {
                "const": "order"
              },
              {
                "const": "sku"
              },
              {
                "const": "printer"
              },
              {
                "const": "part"
              },
              {
                "const": "material"
              },
              {
                "const": "materialVariant"
              },
              {
                "const": "printJob"
              },
              {
                "const": "partBuild"
              },
              {
                "const": "profile"
              },
              {
                "const": "materialInstance"
              },
              {
                "const": "maintenanceItem"
              },
              {
                "const": "customer"
              },
              {
                "const": "orderItem"
              },
              {
                "const": "folder"
              }
            ]
          },
          "unit": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "key": {
            "type": "string"
          },
          "valueType": {
            "oneOf": [
              {
                "const": "string"
              },
              {
                "const": "number"
              },
              {
                "const": "boolean"
              },
              {
                "const": "enum"
              },
              {
                "const": "datetime"
              }
            ]
          },
          "defaultValue": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              },
              {
                "type": "number"
              },
              {
                "type": "boolean"
              }
            ]
          },
          "defaultToNow": {
            "type": "boolean"
          },
          "clearIncompatibleValues": {
            "type": "boolean",
            "description": "Drop values that cannot be represented as `valueType` instead of\nrefusing to define the field. The client shows the offending rows first."
          }
        },
        "required": [
          "enumValues",
          "label",
          "entityType",
          "unit",
          "key",
          "valueType"
        ]
      },
      "UpdateCustomMetadataDefinitionRequest": {
        "type": "object",
        "properties": {
          "enumValues": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "array",
                "items": {
                  "type": "string"
                }
              }
            ]
          },
          "label": {
            "type": "string"
          },
          "unit": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "valueType": {
            "oneOf": [
              {
                "const": "string"
              },
              {
                "const": "number"
              },
              {
                "const": "boolean"
              },
              {
                "const": "enum"
              },
              {
                "const": "datetime"
              }
            ]
          },
          "defaultValue": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              },
              {
                "type": "number"
              },
              {
                "type": "boolean"
              }
            ]
          },
          "defaultToNow": {
            "type": "boolean"
          },
          "clearIncompatibleValues": {
            "type": "boolean"
          }
        }
      },
      "CustomMetadataValueResponse": {
        "type": "object",
        "properties": {
          "entityType": {
            "oneOf": [
              {
                "const": "order"
              },
              {
                "const": "sku"
              },
              {
                "const": "printer"
              },
              {
                "const": "part"
              },
              {
                "const": "material"
              },
              {
                "const": "materialVariant"
              },
              {
                "const": "printJob"
              },
              {
                "const": "partBuild"
              },
              {
                "const": "profile"
              },
              {
                "const": "materialInstance"
              },
              {
                "const": "maintenanceItem"
              },
              {
                "const": "customer"
              },
              {
                "const": "orderItem"
              },
              {
                "const": "folder"
              }
            ]
          },
          "entityId": {
            "type": "string"
          },
          "mode": {
            "oneOf": [
              {
                "const": "replace"
              },
              {
                "const": "merge"
              }
            ],
            "title": "Which rule the write followed",
            "description": "Which rule the write followed."
          },
          "customMetadata": {
            "$ref": "#/components/schemas/CustomMetadataValues",
            "title": "The record's custom fields as they stand after the write",
            "description": "The record's custom fields as they stand after the write."
          }
        },
        "required": [
          "entityType",
          "entityId",
          "mode",
          "customMetadata"
        ]
      },
      "CustomMetadataValuesRequest": {
        "type": "object",
        "properties": {
          "customMetadata": {
            "$ref": "#/components/schemas/CustomMetadataValues",
            "description": "The custom fields to write. Values are strings, numbers or booleans; a\n`null` clears the field."
          }
        },
        "required": [
          "customMetadata"
        ]
      },
      "BatchCustomMetadataValuesResponse": {
        "type": "object",
        "properties": {
          "entityType": {
            "oneOf": [
              {
                "const": "order"
              },
              {
                "const": "sku"
              },
              {
                "const": "printer"
              },
              {
                "const": "part"
              },
              {
                "const": "material"
              },
              {
                "const": "materialVariant"
              },
              {
                "const": "printJob"
              },
              {
                "const": "partBuild"
              },
              {
                "const": "profile"
              },
              {
                "const": "materialInstance"
              },
              {
                "const": "maintenanceItem"
              },
              {
                "const": "customer"
              },
              {
                "const": "orderItem"
              },
              {
                "const": "folder"
              }
            ]
          },
          "mode": {
            "oneOf": [
              {
                "const": "replace"
              },
              {
                "const": "merge"
              }
            ],
            "title": "Which rule the write followed",
            "description": "Which rule the write followed."
          },
          "updated": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CustomMetadataValuesEntry"
            },
            "description": "Every record written, in the order submitted, each with its custom fields\nas they stand after the write."
          }
        },
        "required": [
          "entityType",
          "mode",
          "updated"
        ]
      },
      "CustomMetadataValuesEntry": {
        "type": "object",
        "properties": {
          "entityId": {
            "type": "string"
          },
          "customMetadata": {
            "$ref": "#/components/schemas/CustomMetadataValues"
          }
        },
        "required": [
          "entityId",
          "customMetadata"
        ],
        "description": "One record's write: the id and the document to merge into it or replace it with."
      },
      "BatchCustomMetadataValuesRequest": {
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CustomMetadataValuesItem"
            },
            "description": "The records to write, each with its own custom fields. Up to 200 per call;\nan id may appear once. Every record must exist, or the whole call is\nrejected and nothing is written."
          }
        },
        "required": [
          "items"
        ]
      },
      "CustomMetadataValuesItem": {
        "type": "object",
        "properties": {
          "entityId": {
            "type": "string",
            "title": "The id of the record, of the type named in the path",
            "description": "The id of the record, of the type named in the path."
          },
          "customMetadata": {
            "$ref": "#/components/schemas/CustomMetadataValues",
            "description": "The custom fields to write. Values are strings, numbers or booleans; a\n`null` clears the field."
          }
        },
        "required": [
          "entityId",
          "customMetadata"
        ],
        "description": "One record in a batch write. Each carries its own document, so one call can\ngive every row a different value as well as stamp the same one across all."
      },
      "RecordstringRecordstringApiHint": {
        "type": "object",
        "properties": {},
        "description": "Construct a type with a set of properties K of type T",
        "additionalProperties": {
          "$ref": "#/components/schemas/RecordstringApiHint"
        }
      },
      "RecordstringApiHint": {
        "type": "object",
        "properties": {},
        "description": "Construct a type with a set of properties K of type T",
        "additionalProperties": {
          "$ref": "#/components/schemas/ApiHint"
        }
      },
      "ApiHint": {
        "type": "object",
        "properties": {
          "action": {
            "type": "string",
            "title": "Action",
            "description": "Short name of the action"
          },
          "description": {
            "type": "string",
            "title": "Description",
            "description": "Human-readable description of what this action does"
          },
          "method": {
            "oneOf": [
              {
                "const": "DELETE"
              },
              {
                "const": "PUT"
              },
              {
                "const": "POST"
              },
              {
                "const": "GET"
              },
              {
                "const": "PATCH"
              }
            ],
            "title": "Method",
            "description": "HTTP method for this action"
          },
          "path": {
            "type": "string",
            "title": "Path",
            "description": "API path template. Use {id} for entity ID placeholders."
          },
          "bodySchema": {
            "$ref": "#/components/schemas/Recordstringany",
            "title": "Body Schema",
            "description": "Example or schema of the request body (for POST/PATCH)"
          },
          "condition": {
            "type": "string",
            "title": "Condition",
            "description": "When this hint applies (e.g., \"when part has type gcode3mf\")"
          }
        },
        "required": [
          "action",
          "description",
          "method",
          "path"
        ],
        "title": "API Hint",
        "description": "A hint for AI agents about available actions"
      },
      "object": {
        "type": "object",
        "properties": {}
      },
      "FieldChange": {
        "type": "object",
        "properties": {
          "field": {
            "type": "string"
          },
          "oldValue": {},
          "newValue": {}
        },
        "required": [
          "field",
          "oldValue",
          "newValue"
        ],
        "description": "Represents a change to a single field in an entity."
      },
      "sourcestringundefinedmetadatastringundefinedidstringundefinedstoreIdstringundefinedcreatedAtstringundefinedentityTypestringundefined...13more...reasonstringundefinedQuerySettings...": {
        "type": "object",
        "properties": {
          "source": {
            "type": "string"
          },
          "metadata": {
            "type": "string"
          },
          "id": {
            "type": "string"
          },
          "storeId": {
            "type": "string"
          },
          "createdAt": {
            "type": "string"
          },
          "entityType": {
            "type": "string"
          },
          "entityId": {
            "type": "string"
          },
          "entityIds": {
            "type": "string"
          },
          "action": {
            "type": "string"
          },
          "detailedAction": {
            "type": "string"
          },
          "changes": {
            "type": "string"
          },
          "actorId": {
            "type": "string"
          },
          "actorType": {
            "type": "string"
          },
          "actorEmail": {
            "type": "string"
          },
          "apiKeyId": {
            "type": "string"
          },
          "impersonatedBy": {
            "type": "string"
          },
          "correlationId": {
            "type": "string"
          },
          "ipAddress": {
            "type": "string"
          },
          "userAgent": {
            "type": "string"
          },
          "reason": {
            "type": "string"
          },
          "sort": {
            "type": "string",
            "title": "Sort",
            "description": "Sort specification in format \"field:asc,field2:desc\""
          },
          "limit": {
            "type": "number",
            "minimum": 1,
            "maximum": 1000,
            "title": "Limit",
            "description": "Maximum number of results to return (default: 1000, max: 1000)"
          },
          "offset": {
            "type": "number",
            "minimum": 0,
            "title": "Offset",
            "description": "Number of results to skip for pagination"
          },
          "fields": {
            "type": "string",
            "title": "Fields",
            "description": "Comma-separated list of fields to return"
          },
          "include": {
            "type": "string",
            "title": "Include",
            "description": "Comma-separated list of relations to include (max 4, max 2 levels deep).\nExample: \"linkedParts,linkedParts.part,folder\""
          },
          "meta": {
            "type": "boolean",
            "title": "Meta",
            "description": "If true, returns response with metadata (total, count, hasMore, etc.)"
          },
          "hints": {
            "type": "boolean",
            "title": "Hints",
            "description": "If true, returns AI-friendly hints about available actions. Implies meta=true."
          },
          "entityIdSearch": {
            "type": "string"
          }
        }
      },
      "SearchQueryDto__type": {
        "type": "object",
        "properties": {
          "filter": {
            "$ref": "#/components/schemas/FilterCondition__type",
            "title": "Filter",
            "description": "Complex filter conditions using logical and field operators.\nAvailable field operators: eq, ne, gt, gte, lt, lte, contains, startsWith, endsWith, in, notIn, isNull, between.\nUsage example: {\"filter\": {\"and\": [{\"name\": {\"contains\": \"benchy\"}}, {\"or\": [{\"type\": {\"eq\": \"3mf\"}}, {\"type\": {\"eq\": \"gcode3mf\"}}]}}}"
          },
          "sort": {
            "type": "string",
            "title": "Sort",
            "description": "Sort specification in format \"field:asc,field2:desc\""
          },
          "limit": {
            "type": "number",
            "minimum": 1,
            "maximum": 1000,
            "title": "Limit",
            "description": "Maximum number of results to return (default: 1000, max: 1000)"
          },
          "offset": {
            "type": "number",
            "minimum": 0,
            "title": "Offset",
            "description": "Number of results to skip for pagination"
          },
          "fields": {
            "type": "string",
            "title": "Fields",
            "description": "Comma-separated list of fields to return"
          },
          "include": {
            "type": "string",
            "title": "Include",
            "description": "Comma-separated list of relations to include (max 4, max 2 levels deep).\nExample: \"linkedParts,linkedParts.part,folder\""
          },
          "meta": {
            "type": "boolean",
            "title": "Meta",
            "description": "If true, returns response with metadata (total, count, hasMore, etc.)"
          },
          "hints": {
            "type": "boolean",
            "title": "Hints",
            "description": "If true, returns AI-friendly hints about available actions. Implies meta=true."
          }
        },
        "title": "Search Query",
        "description": "Complete search request with filter conditions and query settings"
      },
      "FilterCondition__type": {
        "type": "object",
        "properties": {
          "and": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FilterCondition__type"
            },
            "title": "AND Conditions",
            "description": "All conditions must be true"
          },
          "or": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FilterCondition__type"
            },
            "title": "OR Conditions",
            "description": "At least one condition must be true"
          },
          "source": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "metadata": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "id": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "storeId": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "createdAt": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "entityType": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "entityId": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "entityIds": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "action": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "detailedAction": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "changes": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "actorId": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "actorType": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "actorEmail": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "apiKeyId": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "impersonatedBy": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "correlationId": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "ipAddress": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "userAgent": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "reason": {
            "$ref": "#/components/schemas/FieldOperators"
          }
        },
        "title": "Filter Condition",
        "description": "Root filter condition that can be either a logical condition (AND/OR) or field-based condition"
      },
      "GetUserSettingsResponse": {
        "type": "object",
        "properties": {
          "defaultStoreId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          }
        },
        "required": [
          "defaultStoreId"
        ]
      },
      "UpdateUserSettingsRequest": {
        "type": "object",
        "properties": {
          "defaultStoreId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          }
        }
      },
      "MaintenanceItem": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "triggerType": {
            "oneOf": [
              {
                "const": "print_hours"
              },
              {
                "const": "calendar_days"
              },
              {
                "const": "job_count"
              }
            ]
          },
          "interval": {
            "type": "number"
          },
          "warningThresholdPct": {
            "type": "number"
          },
          "notes": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "isSystemDefault": {
            "type": "boolean"
          },
          "customMetadata": {
            "$ref": "#/components/schemas/Recordstringunknown"
          },
          "id": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "storeId": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time"
          }
        },
        "required": [
          "name",
          "triggerType",
          "interval",
          "warningThresholdPct",
          "notes",
          "isSystemDefault",
          "id",
          "storeId",
          "createdAt",
          "updatedAt"
        ]
      },
      "MaintenanceItemInsert": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "customMetadata": {
            "$ref": "#/components/schemas/Recordstringunknown"
          },
          "triggerType": {
            "oneOf": [
              {
                "const": "print_hours"
              },
              {
                "const": "calendar_days"
              },
              {
                "const": "job_count"
              }
            ]
          },
          "interval": {
            "type": "number"
          },
          "warningThresholdPct": {
            "type": "number"
          },
          "notes": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "isSystemDefault": {
            "type": "boolean"
          }
        },
        "required": [
          "name",
          "triggerType",
          "interval",
          "warningThresholdPct",
          "notes",
          "isSystemDefault"
        ]
      },
      "PartialPickMaintenanceItemnamecustomMetadatatriggerTypeintervalwarningThresholdPctnotes": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "customMetadata": {
            "$ref": "#/components/schemas/Recordstringunknown"
          },
          "triggerType": {
            "oneOf": [
              {
                "const": "print_hours"
              },
              {
                "const": "calendar_days"
              },
              {
                "const": "job_count"
              }
            ]
          },
          "interval": {
            "type": "number"
          },
          "warningThresholdPct": {
            "type": "number"
          },
          "notes": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          }
        },
        "description": "Make all properties in T optional"
      },
      "MaintenanceStatusInfo": {
        "type": "object",
        "properties": {
          "enrollmentId": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "printerId": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "maintenanceItemId": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "printerName": {
            "type": "string"
          },
          "itemName": {
            "type": "string"
          },
          "triggerType": {
            "oneOf": [
              {
                "const": "print_hours"
              },
              {
                "const": "calendar_days"
              },
              {
                "const": "job_count"
              }
            ]
          },
          "interval": {
            "type": "number"
          },
          "elapsed": {
            "type": "number"
          },
          "progress": {
            "type": "number"
          },
          "status": {
            "oneOf": [
              {
                "const": "OK"
              },
              {
                "const": "DUE_SOON"
              },
              {
                "const": "OVERDUE"
              }
            ]
          },
          "warningThresholdPct": {
            "type": "number"
          },
          "lastCompletedAt": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "format": "date-time"
              }
            ]
          },
          "lastCompletedBy": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          }
        },
        "required": [
          "enrollmentId",
          "printerId",
          "maintenanceItemId",
          "printerName",
          "itemName",
          "triggerType",
          "interval",
          "elapsed",
          "progress",
          "status",
          "warningThresholdPct",
          "lastCompletedAt",
          "lastCompletedBy"
        ],
        "description": "Runtime-computed status — never stored in the database"
      },
      "PrinterMaintenanceEnrollment": {
        "type": "object",
        "properties": {
          "printerId": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "maintenanceItemId": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "currentOffset": {
            "type": "number"
          },
          "hoursAtLastCompletion": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "number"
              }
            ]
          },
          "jobsAtLastCompletion": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "number"
              }
            ]
          },
          "lastCompletedAt": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "format": "date-time"
              }
            ]
          },
          "lastCompletedBy": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "lastNotifiedStatus": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "id": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "storeId": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time"
          }
        },
        "required": [
          "printerId",
          "maintenanceItemId",
          "currentOffset",
          "hoursAtLastCompletion",
          "jobsAtLastCompletion",
          "lastCompletedAt",
          "lastCompletedBy",
          "lastNotifiedStatus",
          "id",
          "storeId",
          "createdAt",
          "updatedAt"
        ]
      },
      "MaintenanceCompletionLog": {
        "type": "object",
        "properties": {
          "enrollmentId": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "printerId": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "maintenanceItemId": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "completedAt": {
            "type": "string",
            "format": "date-time"
          },
          "completedBy": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "hoursAtCompletion": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "number"
              }
            ]
          },
          "jobsAtCompletion": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "number"
              }
            ]
          },
          "notes": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "id": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "storeId": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time"
          }
        },
        "required": [
          "enrollmentId",
          "printerId",
          "maintenanceItemId",
          "completedAt",
          "completedBy",
          "hoursAtCompletion",
          "jobsAtCompletion",
          "notes",
          "id",
          "storeId",
          "createdAt",
          "updatedAt"
        ]
      },
      "RecordstringRecordstringnumber": {
        "type": "object",
        "properties": {},
        "description": "Construct a type with a set of properties K of type T",
        "additionalProperties": {
          "$ref": "#/components/schemas/Recordstringnumber"
        }
      },
      "PrinterThrottleGroup": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "enabled": {
            "type": "boolean"
          },
          "maxConcurrentStarts": {
            "type": "number"
          },
          "releaseConditions": {
            "$ref": "#/components/schemas/PrinterThrottleReleaseConditions"
          },
          "fallbackTimeoutSeconds": {
            "type": "number"
          },
          "temperatureToleranceC": {
            "type": "number"
          },
          "id": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "storeId": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time"
          }
        },
        "required": [
          "name",
          "enabled",
          "maxConcurrentStarts",
          "releaseConditions",
          "fallbackTimeoutSeconds",
          "temperatureToleranceC",
          "id",
          "storeId",
          "createdAt",
          "updatedAt"
        ]
      },
      "PrinterThrottleReleaseConditions": {
        "type": "object",
        "properties": {
          "bed": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/PrinterThrottleTemperatureCondition"
              }
            ]
          },
          "nozzle": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/PrinterThrottleTemperatureCondition"
              }
            ]
          },
          "duration": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/PrinterThrottleDurationCondition"
              }
            ]
          }
        }
      },
      "PrinterThrottleTemperatureCondition": {
        "type": "object",
        "properties": {
          "mode": {
            "oneOf": [
              {
                "const": "percent-of-target"
              },
              {
                "const": "fixed-temp"
              },
              {
                "const": "first-layer-temp"
              }
            ]
          },
          "percent": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "number"
              }
            ]
          },
          "temperatureC": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "number"
              }
            ]
          }
        },
        "required": [
          "mode"
        ]
      },
      "PrinterThrottleDurationCondition": {
        "type": "object",
        "properties": {
          "seconds": {
            "type": "number"
          }
        },
        "required": [
          "seconds"
        ]
      },
      "namestringundefinedenabledstringundefinedmaxConcurrentStartsstringundefinedreleaseConditionsstringundefinedfallbackTimeoutSecondsstringundefined...4more...updatedAtstringundefinedQuerySettings...": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "enabled": {
            "type": "string"
          },
          "maxConcurrentStarts": {
            "type": "string"
          },
          "releaseConditions": {
            "type": "string"
          },
          "fallbackTimeoutSeconds": {
            "type": "string"
          },
          "temperatureToleranceC": {
            "type": "string"
          },
          "id": {
            "type": "string"
          },
          "storeId": {
            "type": "string"
          },
          "createdAt": {
            "type": "string"
          },
          "updatedAt": {
            "type": "string"
          },
          "sort": {
            "type": "string",
            "title": "Sort",
            "description": "Sort specification in format \"field:asc,field2:desc\""
          },
          "limit": {
            "type": "number",
            "minimum": 1,
            "maximum": 1000,
            "title": "Limit",
            "description": "Maximum number of results to return (default: 1000, max: 1000)"
          },
          "offset": {
            "type": "number",
            "minimum": 0,
            "title": "Offset",
            "description": "Number of results to skip for pagination"
          },
          "fields": {
            "type": "string",
            "title": "Fields",
            "description": "Comma-separated list of fields to return"
          },
          "include": {
            "type": "string",
            "title": "Include",
            "description": "Comma-separated list of relations to include (max 4, max 2 levels deep).\nExample: \"linkedParts,linkedParts.part,folder\""
          },
          "meta": {
            "type": "boolean",
            "title": "Meta",
            "description": "If true, returns response with metadata (total, count, hasMore, etc.)"
          },
          "hints": {
            "type": "boolean",
            "title": "Hints",
            "description": "If true, returns AI-friendly hints about available actions. Implies meta=true."
          }
        }
      },
      "PrinterThrottleLease": {
        "type": "object",
        "properties": {
          "groupId": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "printerId": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "printJobId": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "taskIdSnapshot": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "number"
              }
            ]
          },
          "releaseConditionsSnapshot": {
            "$ref": "#/components/schemas/PrinterThrottleReleaseConditions"
          },
          "fallbackTimeoutSecondsSnapshot": {
            "type": "number"
          },
          "temperatureToleranceCSnapshot": {
            "type": "number"
          },
          "bedSatisfiedAt": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "format": "date-time"
              }
            ]
          },
          "nozzleSatisfiedAt": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "format": "date-time"
              }
            ]
          },
          "durationSatisfiedAt": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "format": "date-time"
              }
            ]
          },
          "acquiredAt": {
            "type": "string",
            "format": "date-time"
          },
          "warmupStartedAt": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "format": "date-time"
              }
            ],
            "description": "Stamped at send (`PrinterSendJobStep`). Null while the reservation is held\nbut the job has not yet been streamed to the printer. Release conditions\n(temp/duration/fallback) are evaluated relative to this timestamp, so\nslicing dead-time never burns the warmup window. Capacity is unaffected."
          },
          "releasedAt": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "format": "date-time"
              }
            ]
          },
          "releaseReason": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "const": "all-conditions-satisfied"
              },
              {
                "const": "job-cancelled"
              },
              {
                "const": "job-completed"
              },
              {
                "const": "job-failed"
              },
              {
                "const": "job-unassigned"
              },
              {
                "const": "printer-offline"
              },
              {
                "const": "send-failed"
              },
              {
                "const": "fallback-timeout"
              },
              {
                "const": "claim-stale"
              },
              {
                "const": "manual-release"
              },
              {
                "const": "stale-idle"
              }
            ]
          },
          "id": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "storeId": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time"
          }
        },
        "required": [
          "groupId",
          "printerId",
          "printJobId",
          "taskIdSnapshot",
          "releaseConditionsSnapshot",
          "fallbackTimeoutSecondsSnapshot",
          "temperatureToleranceCSnapshot",
          "bedSatisfiedAt",
          "nozzleSatisfiedAt",
          "durationSatisfiedAt",
          "acquiredAt",
          "warmupStartedAt",
          "releasedAt",
          "releaseReason",
          "id",
          "storeId",
          "createdAt",
          "updatedAt"
        ],
        "description": "A Staggered Start reservation (\"hold\"). Capacity is consumed **at match, not\nat send**: an active hold counts toward its group's `maxConcurrentStarts`\nwhenever `releasedAt IS NULL`, regardless of whether `warmupStartedAt` is set.\n\n`warmupStartedAt` is stamped when the job is actually sent to the printer and\n**only controls when release conditions begin evaluating** — it does NOT gate\ncapacity. This is why slicing on one job can block the next: *an active\nunstamped hold still consumes capacity.*"
      },
      "ListPrinterThrottleLeasesQuery": {
        "type": "object",
        "properties": {
          "includeReleased": {
            "type": "boolean",
            "title": "Include released (historical) holds, not just the active ones",
            "description": "Include released (historical) holds, not just the active ones."
          }
        }
      },
      "PrinterThrottleGroupInsert": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "enabled": {
            "type": "boolean"
          },
          "maxConcurrentStarts": {
            "type": "number"
          },
          "releaseConditions": {
            "$ref": "#/components/schemas/PrinterThrottleReleaseConditions"
          },
          "fallbackTimeoutSeconds": {
            "type": "number"
          },
          "temperatureToleranceC": {
            "type": "number"
          }
        },
        "required": [
          "name",
          "enabled",
          "maxConcurrentStarts",
          "releaseConditions",
          "fallbackTimeoutSeconds",
          "temperatureToleranceC"
        ]
      },
      "PartialPickPrinterThrottleGroupnameenabledmaxConcurrentStartsreleaseConditionsfallbackTimeoutSecondstemperatureToleranceC": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "enabled": {
            "type": "boolean"
          },
          "maxConcurrentStarts": {
            "type": "number"
          },
          "releaseConditions": {
            "$ref": "#/components/schemas/PrinterThrottleReleaseConditions"
          },
          "fallbackTimeoutSeconds": {
            "type": "number"
          },
          "temperatureToleranceC": {
            "type": "number"
          }
        },
        "description": "Make all properties in T optional"
      },
      "PrinterThrottleGroupMember": {
        "type": "object",
        "properties": {
          "groupId": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "printerId": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "id": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "storeId": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time"
          }
        },
        "required": [
          "groupId",
          "printerId",
          "id",
          "storeId",
          "createdAt",
          "updatedAt"
        ]
      },
      "ReplacePrinterThrottleGroupMembersBody": {
        "type": "object",
        "properties": {
          "printerIds": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        },
        "required": [
          "printerIds"
        ]
      },
      "PrintHistory": {
        "type": "object",
        "properties": {
          "printJobId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "pattern": "^[a-z0-9]{24}$"
              }
            ]
          },
          "attemptNumber": {
            "type": "number"
          },
          "taskId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "number"
              }
            ]
          },
          "finalStatus": {
            "oneOf": [
              {
                "const": "pending"
              },
              {
                "const": "assigned"
              },
              {
                "const": "slicing"
              },
              {
                "const": "sliced"
              },
              {
                "const": "finalizing"
              },
              {
                "const": "waiting-for-approval"
              },
              {
                "const": "ready-for-printer"
              },
              {
                "const": "sending-to-printer"
              },
              {
                "const": "printing"
              },
              {
                "const": "paused"
              },
              {
                "const": "completed"
              },
              {
                "const": "failed"
              },
              {
                "const": "cancelled"
              }
            ]
          },
          "outcome": {
            "oneOf": [
              {
                "const": "failed"
              },
              {
                "const": "completed"
              },
              {
                "const": "cancelled"
              }
            ]
          },
          "partBuildId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "pattern": "^[a-z0-9]{24}$"
              }
            ]
          },
          "partId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "pattern": "^[a-z0-9]{24}$"
              }
            ]
          },
          "partName": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "skuId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "pattern": "^[a-z0-9]{24}$"
              }
            ]
          },
          "skuName": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "label": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "groupId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "orderId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "pattern": "^[a-z0-9]{24}$"
              }
            ]
          },
          "orderItemId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "pattern": "^[a-z0-9]{24}$"
              }
            ]
          },
          "quantityIndex": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "number"
              }
            ]
          },
          "quantityTotal": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "number"
              }
            ]
          },
          "printerId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "pattern": "^[a-z0-9]{24}$"
              }
            ]
          },
          "printerDeviceId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "printerProvider": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "printerName": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "printerModelName": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "printerVendorName": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "queuedAt": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "format": "date-time"
              }
            ]
          },
          "assignmentStartedAt": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "format": "date-time"
              }
            ]
          },
          "assignmentCompletedAt": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "format": "date-time"
              }
            ]
          },
          "printingStartedAt": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "format": "date-time"
              }
            ]
          },
          "printingCompletedAt": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "format": "date-time"
              }
            ]
          },
          "cancelledAt": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "format": "date-time"
              }
            ]
          },
          "endedAt": {
            "type": "string",
            "format": "date-time"
          },
          "printDurationSeconds": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "number"
              }
            ]
          },
          "errorMessage": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "materialUsageId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "pattern": "^[a-z0-9]{24}$"
              }
            ]
          },
          "totalUsed": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "number"
              }
            ]
          },
          "totalUsedGrams": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "number"
              }
            ]
          },
          "usedBySlot": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/Recordstringnumber"
              }
            ],
            "title": "Flat slot id (amsIndex*4+slotIndex, negative for spools) -> mm extruded",
            "description": "Flat slot id (amsIndex*4+slotIndex, negative for spools) -> mm extruded."
          },
          "usedGramsBySlot": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/Recordstringnumber"
              }
            ],
            "title": "Flat slot id -> grams extruded, when a grams conversion was available",
            "description": "Flat slot id -> grams extruded, when a grams conversion was available."
          },
          "slotMaterials": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/Recordstringany"
              }
            ],
            "description": "Flat slot id -> what was loaded there at capture time. Deliberately open:\nit is a verbatim snapshot of `material_usage.slot_materials`, whose shape\nhas gained fields over time and must survive round-tripping unchanged."
          },
          "materialMapping": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/PrintJobMaterialMapping"
                }
              }
            ]
          },
          "totalLayers": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "number"
              }
            ]
          },
          "completedLayers": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "number"
              }
            ]
          },
          "skippedObjects": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/SkipObjectsData"
              }
            ]
          },
          "estimatedPrintTimeSeconds": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "number"
              }
            ]
          },
          "estimatedTotalWeightGrams": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "number"
              }
            ]
          },
          "estimatedMaterials": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/SlicingMaterialUsage"
                }
              }
            ]
          },
          "slicerVersion": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "overriddenProcessProfileId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "pattern": "^[a-z0-9]{24}$"
              }
            ]
          },
          "gcodeAnalysisSha256": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "slicedGcodeUri": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "thumbnailUri": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "coloredThumbnailUri": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "cameraThumbnailUri": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "timelapseUri": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "logsUri": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "gatewayTelemetryUri": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "fuseTelemetryUri": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "priority": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "number"
              }
            ]
          },
          "id": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "storeId": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time"
          }
        },
        "required": [
          "printJobId",
          "attemptNumber",
          "taskId",
          "finalStatus",
          "outcome",
          "partBuildId",
          "partId",
          "partName",
          "skuId",
          "skuName",
          "label",
          "groupId",
          "orderId",
          "orderItemId",
          "quantityIndex",
          "quantityTotal",
          "printerId",
          "printerDeviceId",
          "printerProvider",
          "printerName",
          "printerModelName",
          "printerVendorName",
          "queuedAt",
          "assignmentStartedAt",
          "assignmentCompletedAt",
          "printingStartedAt",
          "printingCompletedAt",
          "cancelledAt",
          "endedAt",
          "printDurationSeconds",
          "errorMessage",
          "materialUsageId",
          "totalUsed",
          "totalUsedGrams",
          "usedBySlot",
          "usedGramsBySlot",
          "slotMaterials",
          "materialMapping",
          "totalLayers",
          "completedLayers",
          "skippedObjects",
          "estimatedPrintTimeSeconds",
          "estimatedTotalWeightGrams",
          "estimatedMaterials",
          "slicerVersion",
          "overriddenProcessProfileId",
          "gcodeAnalysisSha256",
          "slicedGcodeUri",
          "thumbnailUri",
          "coloredThumbnailUri",
          "cameraThumbnailUri",
          "timelapseUri",
          "logsUri",
          "gatewayTelemetryUri",
          "fuseTelemetryUri",
          "priority",
          "id",
          "storeId",
          "createdAt",
          "updatedAt"
        ],
        "description": "Immutable, append-only ledger of finished print attempts\n(see `sql/print-history.sql.ts` for the table and why each column exists).\n\nHand-written rather than inferred from the Drizzle table because typia cannot\nreflect the keys of an inferred type: a `SearchQueryDto<T>` built on one\ncompiles to a validator that prunes every filter key, so search filters are\nsilently dropped and every row is returned."
      },
      "printJobIdstringundefinedattemptNumberstringundefinedtaskIdstringundefinedfinalStatusstringundefinedoutcomestringundefinedpartBuildIdstringundefined...53more...updatedAtstringundefinedQuerySettings...": {
        "type": "object",
        "properties": {
          "printJobId": {
            "type": "string"
          },
          "attemptNumber": {
            "type": "string"
          },
          "taskId": {
            "type": "string"
          },
          "finalStatus": {
            "type": "string"
          },
          "outcome": {
            "type": "string"
          },
          "partBuildId": {
            "type": "string"
          },
          "partId": {
            "type": "string"
          },
          "partName": {
            "type": "string"
          },
          "skuId": {
            "type": "string"
          },
          "skuName": {
            "type": "string"
          },
          "label": {
            "type": "string"
          },
          "groupId": {
            "type": "string"
          },
          "orderId": {
            "type": "string"
          },
          "orderItemId": {
            "type": "string"
          },
          "quantityIndex": {
            "type": "string"
          },
          "quantityTotal": {
            "type": "string"
          },
          "printerId": {
            "type": "string"
          },
          "printerDeviceId": {
            "type": "string"
          },
          "printerProvider": {
            "type": "string"
          },
          "printerName": {
            "type": "string"
          },
          "printerModelName": {
            "type": "string"
          },
          "printerVendorName": {
            "type": "string"
          },
          "queuedAt": {
            "type": "string"
          },
          "assignmentStartedAt": {
            "type": "string"
          },
          "assignmentCompletedAt": {
            "type": "string"
          },
          "printingStartedAt": {
            "type": "string"
          },
          "printingCompletedAt": {
            "type": "string"
          },
          "cancelledAt": {
            "type": "string"
          },
          "endedAt": {
            "type": "string"
          },
          "printDurationSeconds": {
            "type": "string"
          },
          "errorMessage": {
            "type": "string"
          },
          "materialUsageId": {
            "type": "string"
          },
          "totalUsed": {
            "type": "string"
          },
          "totalUsedGrams": {
            "type": "string"
          },
          "usedBySlot": {
            "type": "string",
            "title": "Flat slot id (amsIndex*4+slotIndex, negative for spools) -> mm extruded",
            "description": "Flat slot id (amsIndex*4+slotIndex, negative for spools) -> mm extruded."
          },
          "usedGramsBySlot": {
            "type": "string",
            "title": "Flat slot id -> grams extruded, when a grams conversion was available",
            "description": "Flat slot id -> grams extruded, when a grams conversion was available."
          },
          "slotMaterials": {
            "type": "string",
            "description": "Flat slot id -> what was loaded there at capture time. Deliberately open:\nit is a verbatim snapshot of `material_usage.slot_materials`, whose shape\nhas gained fields over time and must survive round-tripping unchanged."
          },
          "materialMapping": {
            "type": "string"
          },
          "totalLayers": {
            "type": "string"
          },
          "completedLayers": {
            "type": "string"
          },
          "skippedObjects": {
            "type": "string"
          },
          "estimatedPrintTimeSeconds": {
            "type": "string"
          },
          "estimatedTotalWeightGrams": {
            "type": "string"
          },
          "estimatedMaterials": {
            "type": "string"
          },
          "slicerVersion": {
            "type": "string"
          },
          "overriddenProcessProfileId": {
            "type": "string"
          },
          "gcodeAnalysisSha256": {
            "type": "string"
          },
          "slicedGcodeUri": {
            "type": "string"
          },
          "thumbnailUri": {
            "type": "string"
          },
          "coloredThumbnailUri": {
            "type": "string"
          },
          "cameraThumbnailUri": {
            "type": "string"
          },
          "timelapseUri": {
            "type": "string"
          },
          "logsUri": {
            "type": "string"
          },
          "gatewayTelemetryUri": {
            "type": "string"
          },
          "fuseTelemetryUri": {
            "type": "string"
          },
          "priority": {
            "type": "string"
          },
          "id": {
            "type": "string"
          },
          "storeId": {
            "type": "string"
          },
          "createdAt": {
            "type": "string"
          },
          "updatedAt": {
            "type": "string"
          },
          "sort": {
            "type": "string",
            "title": "Sort",
            "description": "Sort specification in format \"field:asc,field2:desc\""
          },
          "limit": {
            "type": "number",
            "minimum": 1,
            "maximum": 1000,
            "title": "Limit",
            "description": "Maximum number of results to return (default: 1000, max: 1000)"
          },
          "offset": {
            "type": "number",
            "minimum": 0,
            "title": "Offset",
            "description": "Number of results to skip for pagination"
          },
          "fields": {
            "type": "string",
            "title": "Fields",
            "description": "Comma-separated list of fields to return"
          },
          "include": {
            "type": "string",
            "title": "Include",
            "description": "Comma-separated list of relations to include (max 4, max 2 levels deep).\nExample: \"linkedParts,linkedParts.part,folder\""
          },
          "meta": {
            "type": "boolean",
            "title": "Meta",
            "description": "If true, returns response with metadata (total, count, hasMore, etc.)"
          },
          "hints": {
            "type": "boolean",
            "title": "Hints",
            "description": "If true, returns AI-friendly hints about available actions. Implies meta=true."
          }
        }
      },
      "SpoolSerialTrace": {
        "type": "object",
        "properties": {
          "serial": {
            "type": "string"
          },
          "attempts": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SpoolSerialAttempt"
            },
            "title": "The newest matching attempts, capped by the request's `limit`",
            "description": "The newest matching attempts, capped by the request's `limit`."
          },
          "totalAttempts": {
            "type": "number",
            "title": "Every attempt that used the roll, whether or not it fit in `attempts`",
            "description": "Every attempt that used the roll, whether or not it fit in `attempts`."
          },
          "truncated": {
            "type": "boolean",
            "title": "True when `attempts` holds only the newest page of `totalAttempts`",
            "description": "True when `attempts` holds only the newest page of `totalAttempts`."
          },
          "totalUsedGrams": {
            "type": "number",
            "title": "Grams drawn off the roll across every match — not just the returned page",
            "description": "Grams drawn off the roll across every match — not just the returned page.\nAttempts whose millimetres were never converted contribute nothing, so\nthis is a floor whenever `attemptsWithUnknownGrams` is non-zero."
          },
          "attemptsWithUnknownGrams": {
            "type": "number",
            "description": "Matching attempts with no grams conversion. Non-zero means\n`totalUsedGrams` under-counts; equal to `totalAttempts` means consumption\nis entirely unknown rather than zero."
          },
          "firstUsedAt": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "format": "date-time"
              }
            ],
            "title": "When the oldest matching attempt ended, page or not; null with none",
            "description": "When the oldest matching attempt ended, page or not; null with none."
          }
        },
        "required": [
          "serial",
          "attempts",
          "totalAttempts",
          "truncated",
          "totalUsedGrams",
          "attemptsWithUnknownGrams",
          "firstUsedAt"
        ]
      },
      "SpoolSerialAttempt": {
        "type": "object",
        "properties": {
          "printHistoryId": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "printJobId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "pattern": "^[a-z0-9]{24}$"
              }
            ]
          },
          "attemptNumber": {
            "type": "number"
          },
          "endedAt": {
            "type": "string",
            "format": "date-time"
          },
          "outcome": {
            "type": "string"
          },
          "partName": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "skuName": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "printerId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "pattern": "^[a-z0-9]{24}$"
              }
            ]
          },
          "printerName": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "slots": {
            "type": "array",
            "items": {
              "type": "number"
            },
            "title": "Flat slot ids on this attempt that held the serial",
            "description": "Flat slot ids on this attempt that held the serial."
          },
          "usedGrams": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "number"
              }
            ],
            "title": "Grams drawn from this roll on this attempt, null when never converted",
            "description": "Grams drawn from this roll on this attempt, null when never converted."
          }
        },
        "required": [
          "printHistoryId",
          "printJobId",
          "attemptNumber",
          "endedAt",
          "outcome",
          "partName",
          "skuName",
          "printerId",
          "printerName",
          "slots",
          "usedGrams"
        ],
        "description": "One attempt that consumed a given spool serial — the recall/traceability\nanswer to \"which prints used this roll?\"."
      },
      "SearchQueryDtoPrintHistory": {
        "type": "object",
        "properties": {
          "filter": {
            "$ref": "#/components/schemas/FilterConditionPrintHistory",
            "title": "Filter",
            "description": "Complex filter conditions using logical and field operators.\nAvailable field operators: eq, ne, gt, gte, lt, lte, contains, startsWith, endsWith, in, notIn, isNull, between.\nUsage example: {\"filter\": {\"and\": [{\"name\": {\"contains\": \"benchy\"}}, {\"or\": [{\"type\": {\"eq\": \"3mf\"}}, {\"type\": {\"eq\": \"gcode3mf\"}}]}}}"
          },
          "sort": {
            "type": "string",
            "title": "Sort",
            "description": "Sort specification in format \"field:asc,field2:desc\""
          },
          "limit": {
            "type": "number",
            "minimum": 1,
            "maximum": 1000,
            "title": "Limit",
            "description": "Maximum number of results to return (default: 1000, max: 1000)"
          },
          "offset": {
            "type": "number",
            "minimum": 0,
            "title": "Offset",
            "description": "Number of results to skip for pagination"
          },
          "fields": {
            "type": "string",
            "title": "Fields",
            "description": "Comma-separated list of fields to return"
          },
          "include": {
            "type": "string",
            "title": "Include",
            "description": "Comma-separated list of relations to include (max 4, max 2 levels deep).\nExample: \"linkedParts,linkedParts.part,folder\""
          },
          "meta": {
            "type": "boolean",
            "title": "Meta",
            "description": "If true, returns response with metadata (total, count, hasMore, etc.)"
          },
          "hints": {
            "type": "boolean",
            "title": "Hints",
            "description": "If true, returns AI-friendly hints about available actions. Implies meta=true."
          }
        },
        "title": "Search Query",
        "description": "Complete search request with filter conditions and query settings"
      },
      "FilterConditionPrintHistory": {
        "type": "object",
        "properties": {
          "and": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FilterConditionPrintHistory"
            },
            "title": "AND Conditions",
            "description": "All conditions must be true"
          },
          "or": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FilterConditionPrintHistory"
            },
            "title": "OR Conditions",
            "description": "At least one condition must be true"
          },
          "printJobId": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "attemptNumber": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "taskId": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "finalStatus": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "outcome": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "partBuildId": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "partId": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "partName": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "skuId": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "skuName": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "label": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "groupId": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "orderId": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "orderItemId": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "quantityIndex": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "quantityTotal": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "printerId": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "printerDeviceId": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "printerProvider": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "printerName": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "printerModelName": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "printerVendorName": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "queuedAt": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "assignmentStartedAt": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "assignmentCompletedAt": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "printingStartedAt": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "printingCompletedAt": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "cancelledAt": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "endedAt": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "printDurationSeconds": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "errorMessage": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "materialUsageId": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "totalUsed": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "totalUsedGrams": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "usedBySlot": {
            "$ref": "#/components/schemas/FieldOperators",
            "title": "Flat slot id (amsIndex*4+slotIndex, negative for spools) -> mm extruded",
            "description": "Flat slot id (amsIndex*4+slotIndex, negative for spools) -> mm extruded."
          },
          "usedGramsBySlot": {
            "$ref": "#/components/schemas/FieldOperators",
            "title": "Flat slot id -> grams extruded, when a grams conversion was available",
            "description": "Flat slot id -> grams extruded, when a grams conversion was available."
          },
          "slotMaterials": {
            "$ref": "#/components/schemas/FieldOperators",
            "description": "Flat slot id -> what was loaded there at capture time. Deliberately open:\nit is a verbatim snapshot of `material_usage.slot_materials`, whose shape\nhas gained fields over time and must survive round-tripping unchanged."
          },
          "materialMapping": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "totalLayers": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "completedLayers": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "skippedObjects": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "estimatedPrintTimeSeconds": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "estimatedTotalWeightGrams": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "estimatedMaterials": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "slicerVersion": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "overriddenProcessProfileId": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "gcodeAnalysisSha256": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "slicedGcodeUri": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "thumbnailUri": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "coloredThumbnailUri": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "cameraThumbnailUri": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "timelapseUri": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "logsUri": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "gatewayTelemetryUri": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "fuseTelemetryUri": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "priority": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "id": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "storeId": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "createdAt": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "updatedAt": {
            "$ref": "#/components/schemas/FieldOperators"
          }
        },
        "title": "Filter Condition",
        "description": "Root filter condition that can be either a logical condition (AND/OR) or field-based condition"
      },
      "CustomizerConfig": {
        "type": "object",
        "properties": {
          "skuId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "pattern": "^[a-z0-9]{24}$"
              }
            ],
            "deprecated": true
          },
          "name": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ],
            "title": "Human-readable label for this configuration (e.g. \"Motorcycle Plate Frames\")",
            "description": "Human-readable label for this configuration (e.g. \"Motorcycle Plate Frames\")."
          },
          "configJson": {
            "$ref": "#/components/schemas/CustomizerConfigJson"
          },
          "shopifyVariantId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "published": {
            "type": "boolean"
          },
          "skuIds": {
            "type": "array",
            "items": {
              "type": "string",
              "pattern": "^[a-z0-9]{24}$"
            },
            "title": "Resolved list of SKU IDs attached to this config via the join table",
            "description": "Resolved list of SKU IDs attached to this config via the join table."
          },
          "id": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "storeId": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time"
          }
        },
        "required": [
          "skuId",
          "name",
          "configJson",
          "shopifyVariantId",
          "published",
          "skuIds",
          "id",
          "storeId",
          "createdAt",
          "updatedAt"
        ],
        "description": "Per-SKU text-customizer configuration row."
      },
      "CustomizerConfigJson": {
        "type": "object",
        "properties": {
          "viewBox": {
            "type": "string",
            "deprecated": true
          },
          "maskPath": {
            "type": "string",
            "title": "SVG path describing the printable mask",
            "description": "SVG path describing the printable mask."
          },
          "colors": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CustomizerColorEntry"
            },
            "description": "Available colors the customer can pick from. Each entry stores a hex\nvalue, optional merchant-defined display alias (e.g. \"Jet\" instead of\n\"#000000\"), and optional pointer back to the material variant the color\nwas imported from."
          },
          "finishes": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "title": "Available finishes (e.g. `matte`, `gloss`)",
            "description": "Available finishes (e.g. `matte`, `gloss`)."
          },
          "constraints": {
            "$ref": "#/components/schemas/Recordstringunknown",
            "title": "Constraints (max chars, min/max font size, etc.)",
            "description": "Constraints (max chars, min/max font size, etc.)."
          },
          "defaults": {
            "$ref": "#/components/schemas/Recordstringunknown",
            "title": "Default selections shown to the customer on first load",
            "description": "Default selections shown to the customer on first load."
          },
          "enabledFonts": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CustomizerEnabledFont"
            },
            "title": "Subset of the store font pool enabled for this SKU",
            "description": "Subset of the store font pool enabled for this SKU."
          },
          "title": {
            "type": "string",
            "title": "Page title shown above the customizer canvas",
            "description": "Page title shown above the customizer canvas."
          },
          "subtitle": {
            "type": "string",
            "title": "One-line subtitle / tagline rendered under the title",
            "description": "One-line subtitle / tagline rendered under the title."
          },
          "instructionsText": {
            "type": "string",
            "title": "Instructional text shown beneath the canvas",
            "description": "Instructional text shown beneath the canvas."
          },
          "theme": {
            "type": "object",
            "properties": {
              "headingColor": {
                "type": "string",
                "title": "Title + section heading color",
                "description": "Title + section heading color."
              },
              "buttonColor": {
                "type": "string",
                "title": "Background of primary action buttons (Add Text, Add to Cart)",
                "description": "Background of primary action buttons (Add Text, Add to Cart)."
              },
              "accentColor": {
                "type": "string",
                "title": "Selection rings, links, focus, \"negative\" buttons",
                "description": "Selection rings, links, focus, \"negative\" buttons."
              }
            },
            "description": "Merchant theme colors driving the customer-facing UI. All three are\noptional; the React app falls back to its built-in defaults\n(`#121212` for heading + button, `#1262C9` for accent)."
          },
          "backgroundSvg": {
            "type": "object",
            "properties": {
              "storagePath": {
                "type": "string"
              },
              "viewBox": {
                "type": "string",
                "title": "Raw `viewBox` string copied from the uploaded SVG (e.g. `-95 -55 189 127`)",
                "description": "Raw `viewBox` string copied from the uploaded SVG (e.g. `-95 -55 189 127`)."
              },
              "widthMm": {
                "type": "number",
                "title": "Real-world width in millimetres. Optional for backward compat with pre-inference uploads",
                "description": "Real-world width in millimetres. Optional for backward compat with pre-inference uploads."
              },
              "heightMm": {
                "type": "number",
                "title": "Real-world height in millimetres. Optional for backward compat with pre-inference uploads",
                "description": "Real-world height in millimetres. Optional for backward compat with pre-inference uploads."
              },
              "sourceBbox": {
                "type": "object",
                "properties": {
                  "x": {
                    "type": "number"
                  },
                  "y": {
                    "type": "number"
                  },
                  "width": {
                    "type": "number"
                  },
                  "height": {
                    "type": "number"
                  }
                },
                "required": [
                  "x",
                  "y",
                  "width",
                  "height"
                ],
                "description": "Natural position of the source DXF model in its own Y-up coord\nsystem. Set on the DXF intake path; absent for direct SVG uploads.\nSurfaced to the customer-app so every per-config export (background\n+ layers) uses the same `${x} ${y} ${width} ${height}` viewBox and\noverlays in OpenSCAD without any merchant translate."
              },
              "sourcePath": {
                "type": "string",
                "title": "Original uploaded filename / path. Used to detect DXF vs SVG intake in the admin UI",
                "description": "Original uploaded filename / path. Used to detect DXF vs SVG intake in the admin UI."
              }
            },
            "required": [
              "storagePath",
              "viewBox"
            ],
            "title": "Uploaded background/mask SVG describing the printable surface",
            "description": "Uploaded background/mask SVG describing the printable surface.\n\n`widthMm` / `heightMm` are the real-world dimensions inferred at\nupload time — preferred over reading the raw `viewBox` as mm,\nbecause viewBox-only SVGs (no explicit width/height) carry user\nunits, not millimetres. The customizer canvas should size off\n`widthMm` / `heightMm` so it matches what OpenSCAD reads\ndownstream."
          },
          "colorsEnabled": {
            "type": "boolean",
            "title": "Toggle hiding the customer-facing color pickers entirely. Defaults to true",
            "description": "Toggle hiding the customer-facing color pickers entirely. Defaults to true."
          },
          "allowShapes": {
            "type": "boolean",
            "description": "When true (default), customers can add primitive shapes (rect, circle,\ntriangle, line) alongside text + uploaded SVGs. Set false on simpler\nproducts where only text customization is desired."
          },
          "shapesWarning": {
            "type": "string",
            "description": "Optional warning text shown under the shape-add row in the customer\napp. Shapes don't currently respect z-order — overlapping geometries\nmay not output the way the customer expects, so a heads-up nudge is\nuseful. Empty / undefined hides the warning entirely. Only renders\nwhen `allowShapes !== false`."
          },
          "outline": {
            "type": "object",
            "properties": {
              "enabledByDefault": {
                "type": "boolean",
                "title": "When true, new layers start with their outline turned on",
                "description": "When true, new layers start with their outline turned on."
              },
              "defaultColor": {
                "type": "string",
                "title": "Default stroke color used by new layers",
                "description": "Default stroke color used by new layers."
              },
              "defaultWidthMm": {
                "type": "number",
                "title": "Default stroke width in millimeters",
                "description": "Default stroke width in millimeters."
              },
              "minWidthMm": {
                "type": "number",
                "description": "Floor on the per-layer outline width a customer can set, in\nmillimeters. Customers can still DISABLE the outline entirely\nwith the per-layer toggle — this minimum only applies when the\noutline is on. Typical: 0.4mm (one FDM nozzle pass)."
              }
            },
            "description": "Per-config outline defaults. Each text / SVG / shape layer can opt\ninto an outline (rendered as a separate `<path stroke=... fill=\"none\">`\nelement in the exported SVG so downstream pipelines can color-code\nor extrude it as a distinct part)."
          },
          "textures": {
            "$ref": "#/components/schemas/CustomizerTexturesConfig",
            "description": "Build-plate textures shown to the customer. When omitted, the React app\nfalls back to the built-in ['smooth', 'carbon'] list."
          }
        },
        "description": "The configuration blob stored in `customizer_configs.config_json`.\nThe shape is intentionally permissive — exact fields are owned by the\ncustomizer React app.",
        "additionalProperties": {}
      },
      "CustomizerColorEntry": {
        "type": "object",
        "properties": {
          "value": {
            "type": "string",
            "title": "Hex code, e.g. `#FF0000`. The 8-char `#RRGGBBAA` form is also accepted",
            "description": "Hex code, e.g. `#FF0000`. The 8-char `#RRGGBBAA` form is also accepted."
          },
          "alias": {
            "type": "string",
            "title": "Optional display alias shown to customers",
            "description": "Optional display alias shown to customers."
          },
          "sourceMaterialVariantId": {
            "type": "string",
            "title": "When auto-imported from a material variant, the source variant id",
            "description": "When auto-imported from a material variant, the source variant id."
          }
        },
        "required": [
          "value"
        ],
        "description": "One color swatch the customer can pick from in the customizer.\nHex value plus optional merchant-defined display alias and a pointer\nback to the source material variant the color was imported from."
      },
      "CustomizerEnabledFont": {
        "type": "object",
        "properties": {
          "source": {
            "oneOf": [
              {
                "const": "store"
              },
              {
                "const": "google"
              }
            ]
          },
          "family": {
            "type": "string"
          },
          "alias": {
            "type": "string"
          }
        },
        "required": [
          "source",
          "family"
        ],
        "description": "One enabled font on a customizer config. Picked from the store's\navailable pool (Google catalog + uploaded custom fonts) and optionally\ngiven a display alias."
      },
      "CustomizerTexturesConfig": {
        "type": "object",
        "properties": {
          "label": {
            "type": "string",
            "title": "Section label rendered in the customer UI (e.g. \"Texture\", \"Finish\")",
            "description": "Section label rendered in the customer UI (e.g. \"Texture\", \"Finish\")."
          },
          "defaultId": {
            "type": "string",
            "title": "Id of the texture pre-selected on first load",
            "description": "Id of the texture pre-selected on first load."
          },
          "hiddenIds": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "title": "Ids the merchant has hidden in this specific config",
            "description": "Ids the merchant has hidden in this specific config."
          }
        },
        "description": "Per-config build-plate texture configuration. The actual list of available\ntextures lives at the store level (`store_custom_textures` + the two\nbuilt-ins `smooth`/`carbon`); this block only carries the merchant's\nper-config overrides — section label, default selection, and any hidden\ntexture ids for this specific config."
      },
      "CustomizerConfigInsert": {
        "type": "object",
        "properties": {
          "name": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ],
            "title": "Human-readable label for this configuration (e.g. \"Motorcycle Plate Frames\")",
            "description": "Human-readable label for this configuration (e.g. \"Motorcycle Plate Frames\")."
          },
          "skuId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "pattern": "^[a-z0-9]{24}$"
              }
            ],
            "deprecated": true
          },
          "configJson": {
            "$ref": "#/components/schemas/CustomizerConfigJson"
          },
          "shopifyVariantId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "published": {
            "type": "boolean"
          },
          "skuIds": {
            "type": "array",
            "items": {
              "type": "string",
              "pattern": "^[a-z0-9]{24}$"
            },
            "title": "SKU IDs to associate with this config via the join table",
            "description": "SKU IDs to associate with this config via the join table."
          }
        },
        "required": [
          "name",
          "skuId",
          "configJson",
          "shopifyVariantId",
          "published"
        ]
      },
      "CustomizerConfigUpdate": {
        "type": "object",
        "properties": {
          "name": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ],
            "title": "Human-readable label for this configuration (e.g. \"Motorcycle Plate Frames\")",
            "description": "Human-readable label for this configuration (e.g. \"Motorcycle Plate Frames\")."
          },
          "skuId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "pattern": "^[a-z0-9]{24}$"
              }
            ],
            "deprecated": true
          },
          "configJson": {
            "$ref": "#/components/schemas/CustomizerConfigJson"
          },
          "shopifyVariantId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "published": {
            "type": "boolean"
          },
          "skuIds": {
            "type": "array",
            "items": {
              "type": "string",
              "pattern": "^[a-z0-9]{24}$"
            },
            "title": "When provided, replaces all existing SKU associations for this config",
            "description": "When provided, replaces all existing SKU associations for this config."
          }
        }
      },
      "BackgroundSvgUploadBody": {
        "type": "object",
        "properties": {
          "filename": {
            "type": "string",
            "title": "Original filename (must end in `.svg`)",
            "description": "Original filename (must end in `.svg`)."
          },
          "fileBase64": {
            "type": "string",
            "title": "Base64-encoded SVG payload (no data URI prefix)",
            "description": "Base64-encoded SVG payload (no data URI prefix)."
          }
        },
        "required": [
          "filename",
          "fileBase64"
        ]
      },
      "CustomizerSkuColorsBody": {
        "type": "object",
        "properties": {
          "skuIds": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "title": "SKUs to walk for color discovery",
            "description": "SKUs to walk for color discovery."
          }
        },
        "required": [
          "skuIds"
        ]
      },
      "CustomizerDesign": {
        "type": "object",
        "properties": {
          "configId": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "fileSource": {
            "oneOf": [
              {
                "const": "internal"
              },
              {
                "const": "external_uri"
              }
            ]
          },
          "storagePath": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "externalUri": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "designJson": {},
          "finish": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "frameColor": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "shopifyOrderId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "etsyReceiptId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "id": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "storeId": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time"
          }
        },
        "required": [
          "configId",
          "fileSource",
          "storagePath",
          "externalUri",
          "designJson",
          "finish",
          "frameColor",
          "shopifyOrderId",
          "etsyReceiptId",
          "id",
          "storeId",
          "createdAt",
          "updatedAt"
        ],
        "description": "A submitted design (SVG + metadata) created by a customer.\n\nPre-Phase-2 rows hold a single merged SVG at `storagePath`. New rows leave\n`storagePath` null and reference per-layer files via the\n`customizer_design_files` table instead."
      },
      "DesignSvgResponse": {
        "type": "object",
        "properties": {
          "svg": {
            "type": "string"
          }
        },
        "required": [
          "svg"
        ]
      },
      "DesignWithFilesResponse": {
        "type": "object",
        "properties": {
          "design": {
            "$ref": "#/components/schemas/CustomizerDesign"
          },
          "configName": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "files": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CustomizerDesignFileWithUrl"
            }
          }
        },
        "required": [
          "design",
          "configName",
          "files"
        ],
        "description": "Response for `GET /designs/:id/with-files`. Returns the design row,\nthe linked config's display name (or null if the config was deleted\n— design survives via ON DELETE SET NULL), and one entry per per-layer\nfile with a downloadable signed URL."
      },
      "CustomizerDesignFileWithUrl": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "slot": {
            "type": "string"
          },
          "sortOrder": {
            "type": "number"
          },
          "role": {
            "oneOf": [
              {
                "const": "body"
              },
              {
                "const": "outline"
              }
            ]
          },
          "color": {
            "type": "string"
          },
          "mimeType": {
            "type": "string"
          },
          "signedUrl": {
            "type": "string"
          }
        },
        "required": [
          "id",
          "slot",
          "sortOrder",
          "role",
          "color",
          "mimeType",
          "signedUrl"
        ],
        "description": "One per-layer file enriched with a short-lived signed URL the merchant\nUI can fetch / download directly. Mirrors `CustomizerDesignFile` shape\nplus `signedUrl`."
      },
      "GoogleFontsListResponse": {
        "type": "object",
        "properties": {
          "total": {
            "type": "number"
          },
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/GoogleFontCatalogEntry"
            }
          }
        },
        "required": [
          "total",
          "items"
        ]
      },
      "GoogleFontCatalogEntry": {
        "type": "object",
        "properties": {
          "family": {
            "type": "string"
          },
          "category": {
            "type": "string"
          },
          "variants": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "subsets": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "version": {
            "type": "string"
          },
          "lastModified": {
            "type": "string"
          },
          "files": {
            "$ref": "#/components/schemas/Recordstringstring",
            "title": "Variant -> direct gstatic.com download URL",
            "description": "Variant -> direct gstatic.com download URL."
          },
          "kind": {
            "type": "string"
          },
          "menu": {
            "type": "string"
          }
        },
        "required": [
          "family",
          "category",
          "variants",
          "subsets",
          "version",
          "lastModified",
          "files"
        ],
        "description": "One entry from the Google Fonts catalog.\nhttps://developers.google.com/fonts/docs/developer_api#APIResponses"
      },
      "GoogleFontsListQuery": {
        "type": "object",
        "properties": {
          "search": {
            "type": "string"
          },
          "category": {
            "type": "string"
          },
          "limit": {
            "type": "number"
          },
          "offset": {
            "type": "number"
          }
        }
      },
      "StoreCustomFontWithUrl": {
        "type": "object",
        "properties": {
          "downloadUrl": {
            "type": "string"
          },
          "familyName": {
            "type": "string"
          },
          "storagePath": {
            "type": "string"
          },
          "licenseAttestedAt": {
            "type": "string",
            "format": "date-time"
          },
          "licenseAttestedByUserId": {
            "type": "string"
          },
          "id": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "storeId": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time"
          }
        },
        "required": [
          "downloadUrl",
          "familyName",
          "storagePath",
          "licenseAttestedAt",
          "licenseAttestedByUserId",
          "id",
          "storeId",
          "createdAt",
          "updatedAt"
        ],
        "description": "`StoreCustomFont` enriched with a short-lived signed download URL — used by\nthe admin UI's font library to render a real preview of the uploaded font\nvia `@font-face`. The URL is regenerated each fetch and expires."
      },
      "StoreCustomFont": {
        "type": "object",
        "properties": {
          "familyName": {
            "type": "string"
          },
          "storagePath": {
            "type": "string"
          },
          "licenseAttestedAt": {
            "type": "string",
            "format": "date-time"
          },
          "licenseAttestedByUserId": {
            "type": "string"
          },
          "id": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "storeId": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time"
          }
        },
        "required": [
          "familyName",
          "storagePath",
          "licenseAttestedAt",
          "licenseAttestedByUserId",
          "id",
          "storeId",
          "createdAt",
          "updatedAt"
        ],
        "description": "Merchant-uploaded font binary (per-store pool)."
      },
      "CustomFontUploadBody": {
        "type": "object",
        "properties": {
          "familyName": {
            "type": "string",
            "title": "Display family name to register the font under",
            "description": "Display family name to register the font under."
          },
          "filename": {
            "type": "string",
            "title": "Original filename (must end in `.ttf` or `.otf`)",
            "description": "Original filename (must end in `.ttf` or `.otf`)."
          },
          "fileBase64": {
            "type": "string",
            "title": "Base64-encoded font binary (no data URI prefix)",
            "description": "Base64-encoded font binary (no data URI prefix)."
          },
          "licenseAttestedByUserId": {
            "type": "string",
            "title": "Firebase UID of the user who attested they have rights to use this font",
            "description": "Firebase UID of the user who attested they have rights to use this font."
          }
        },
        "required": [
          "familyName",
          "filename",
          "fileBase64",
          "licenseAttestedByUserId"
        ]
      },
      "StoreGoogleFontWithUrls": {
        "type": "object",
        "properties": {
          "cssUrl": {
            "type": "string",
            "title": "CSS API URL for browser display (e.g. `https://fonts.googleapis.com/css2?...`)",
            "description": "CSS API URL for browser display (e.g. `https://fonts.googleapis.com/css2?...`)."
          },
          "downloadUrl": {
            "type": "string",
            "title": "Direct binary URL on `fonts.gstatic.com`",
            "description": "Direct binary URL on `fonts.gstatic.com`."
          },
          "family": {
            "type": "string",
            "title": "Google Font family name (e.g. \"Roboto\")",
            "description": "Google Font family name (e.g. \"Roboto\")."
          },
          "id": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "storeId": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time"
          }
        },
        "required": [
          "cssUrl",
          "downloadUrl",
          "family",
          "id",
          "storeId",
          "createdAt",
          "updatedAt"
        ],
        "description": "`StoreGoogleFont` enriched with resolved CDN/CSS URLs — returned by the\nlist endpoint so the admin UI can render a live preview without a second\nround-trip."
      },
      "StoreGoogleFont": {
        "type": "object",
        "properties": {
          "family": {
            "type": "string",
            "title": "Google Font family name (e.g. \"Roboto\")",
            "description": "Google Font family name (e.g. \"Roboto\")."
          },
          "id": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "storeId": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time"
          }
        },
        "required": [
          "family",
          "id",
          "storeId",
          "createdAt",
          "updatedAt"
        ],
        "description": "A Google Font that the merchant has pinned to their store's curated pool.\nThe per-config font picker filters to this pool instead of the full catalog."
      },
      "StoreGoogleFontAddBody": {
        "type": "object",
        "properties": {
          "family": {
            "type": "string",
            "title": "Google Font family name to pin to the store pool (e.g. \"Roboto\")",
            "description": "Google Font family name to pin to the store pool (e.g. \"Roboto\")."
          }
        },
        "required": [
          "family"
        ]
      },
      "StoreCustomTextureWithUrl": {
        "type": "object",
        "properties": {
          "customSvgUrl": {
            "type": "string"
          },
          "name": {
            "type": "string",
            "minLength": 1
          },
          "storagePath": {
            "type": "string"
          },
          "mimeType": {
            "type": "string",
            "title": "MIME type of the uploaded file (`image/svg+xml` or `image/png`)",
            "description": "MIME type of the uploaded file (`image/svg+xml` or `image/png`)."
          },
          "viewBox": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ],
            "title": "Raw `viewBox` string copied from the uploaded SVG. Null for PNGs",
            "description": "Raw `viewBox` string copied from the uploaded SVG. Null for PNGs."
          },
          "opacity": {
            "type": "number",
            "title": "Tile rendering opacity in the customer UI (0..1)",
            "description": "Tile rendering opacity in the customer UI (0..1)."
          },
          "id": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "storeId": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time"
          }
        },
        "required": [
          "customSvgUrl",
          "name",
          "storagePath",
          "mimeType",
          "viewBox",
          "opacity",
          "id",
          "storeId",
          "createdAt",
          "updatedAt"
        ],
        "description": "`StoreCustomTexture` enriched with a short-lived signed download URL —\nused by the admin UI library and by the public config response when\nresolving per-config visible textures."
      },
      "CustomizerStoreTextureUploadBody": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "title": "Display name shown in the customer UI for this texture",
            "description": "Display name shown in the customer UI for this texture."
          },
          "filename": {
            "type": "string",
            "title": "Original filename (must end in `.svg` or `.png`)",
            "description": "Original filename (must end in `.svg` or `.png`)."
          },
          "fileBase64": {
            "type": "string",
            "title": "Base64-encoded payload (no data URI prefix)",
            "description": "Base64-encoded payload (no data URI prefix)."
          }
        },
        "required": [
          "name",
          "filename",
          "fileBase64"
        ]
      },
      "CustomizerStoreTextureUpdateBody": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "opacity": {
            "type": "number",
            "title": "Tile rendering opacity in [0, 1]",
            "description": "Tile rendering opacity in [0, 1]."
          }
        },
        "description": "Patch body for an existing store texture. Both fields are optional —\nomit one to leave it unchanged. Empty string for `name` is rejected."
      },
      "TelemetryResponse": {
        "type": "object",
        "properties": {
          "jobId": {
            "type": "string"
          },
          "source": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "const": "fuse"
              },
              {
                "const": "gateway"
              }
            ],
            "title": "Source actually rendered; null when no telemetry artifact exists yet",
            "description": "Source actually rendered; null when no telemetry artifact exists yet."
          },
          "available": {
            "type": "object",
            "properties": {
              "gateway": {
                "type": "boolean"
              },
              "fuse": {
                "type": "boolean"
              }
            },
            "required": [
              "gateway",
              "fuse"
            ],
            "title": "Which artifacts exist for this attempt, so the UI can offer a toggle",
            "description": "Which artifacts exist for this attempt, so the UI can offer a toggle."
          },
          "attempt": {
            "$ref": "#/components/schemas/TelemetryAttemptMeta"
          },
          "samples": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TelemetrySample"
            }
          },
          "layerMarkers": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/LayerMarker"
            }
          },
          "frames": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FrameMarker"
            },
            "description": "Timelapse frames for this attempt, oldest first. Empty unless the attempt\nhas a Fuse recording (the gateway series carries no frames) and timelapse\ncapture was on."
          },
          "events": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TelemetryEvent"
            }
          },
          "materials": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/MaterialUsageEntry"
            },
            "title": "Filament used per slot/color for the attempt",
            "description": "Filament used per slot/color for the attempt."
          },
          "totalUsedGrams": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "number"
              }
            ]
          },
          "skippedObjects": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SkippedObject"
            },
            "title": "Objects skipped during this job (with the layer they were skipped at)",
            "description": "Objects skipped during this job (with the layer they were skipped at)."
          }
        },
        "required": [
          "jobId",
          "source",
          "available",
          "attempt",
          "samples",
          "layerMarkers",
          "frames",
          "events",
          "materials",
          "totalUsedGrams",
          "skippedObjects"
        ]
      },
      "TelemetryAttemptMeta": {
        "type": "object",
        "properties": {
          "attemptNumber": {
            "type": "number"
          },
          "taskId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "number"
              }
            ]
          },
          "startedAt": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "number"
              }
            ],
            "title": "Epoch milliseconds",
            "description": "Epoch milliseconds."
          },
          "endedAt": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "number"
              }
            ]
          },
          "durationSeconds": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "number"
              }
            ],
            "title": "Measured wall-clock print time (start → finish)",
            "description": "Measured wall-clock print time (start → finish)."
          },
          "estimatedDurationSeconds": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "number"
              }
            ],
            "title": "Slicer's predicted print time, for a measured-vs-estimate comparison",
            "description": "Slicer's predicted print time, for a measured-vs-estimate comparison."
          },
          "totalLayers": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "number"
              }
            ]
          },
          "completedLayers": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "number"
              }
            ]
          },
          "finalStatus": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "outcome": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "errorMessage": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          }
        },
        "required": [
          "attemptNumber",
          "taskId",
          "startedAt",
          "endedAt",
          "durationSeconds",
          "estimatedDurationSeconds",
          "totalLayers",
          "completedLayers",
          "finalStatus",
          "outcome",
          "errorMessage"
        ]
      },
      "TelemetrySample": {
        "type": "object",
        "properties": {
          "t": {
            "type": "number",
            "title": "Epoch milliseconds",
            "description": "Epoch milliseconds."
          },
          "layer": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "number"
              }
            ]
          },
          "totalLayers": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "number"
              }
            ]
          },
          "percent": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "number"
              }
            ]
          },
          "timeRemaining": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "number"
              }
            ]
          },
          "state": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "error": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "number"
              }
            ],
            "title": "Printer-reported print-error code (0/absent = none)",
            "description": "Printer-reported print-error code (0/absent = none)."
          },
          "temps": {
            "type": "object",
            "properties": {
              "nozzle": {
                "$ref": "#/components/schemas/TempReading"
              },
              "bed": {
                "$ref": "#/components/schemas/TempReading"
              },
              "chamber": {
                "$ref": "#/components/schemas/TempReading"
              }
            }
          },
          "fans": {
            "$ref": "#/components/schemas/Recordstringnumber"
          }
        },
        "required": [
          "t",
          "layer",
          "totalLayers",
          "percent",
          "timeRemaining",
          "state",
          "error",
          "temps",
          "fans"
        ]
      },
      "TempReading": {
        "type": "object",
        "properties": {
          "c": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "number"
              }
            ],
            "title": "Current temperature in °C, or null when the printer didn't report one",
            "description": "Current temperature in °C, or null when the printer didn't report one."
          },
          "tgt": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "number"
              }
            ],
            "title": "Target temperature in °C, or null when unset",
            "description": "Target temperature in °C, or null when unset."
          }
        },
        "required": [
          "c",
          "tgt"
        ]
      },
      "LayerMarker": {
        "type": "object",
        "properties": {
          "layer": {
            "type": "number"
          },
          "t": {
            "type": "number",
            "title": "Epoch milliseconds",
            "description": "Epoch milliseconds."
          }
        },
        "required": [
          "layer",
          "t"
        ]
      },
      "FrameMarker": {
        "type": "object",
        "properties": {
          "t": {
            "type": "number",
            "title": "Epoch milliseconds when the frame was captured",
            "description": "Epoch milliseconds when the frame was captured."
          },
          "idx": {
            "type": "number",
            "title": "Zero-based index of the frame within the timelapse",
            "description": "Zero-based index of the frame within the timelapse."
          },
          "videoSeconds": {
            "type": "number",
            "title": "Playback position of the frame in the encoded MP4",
            "description": "Playback position of the frame in the encoded MP4."
          },
          "layer": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "number"
              }
            ],
            "title": "Layer being printed when the frame was captured, when known",
            "description": "Layer being printed when the frame was captured, when known."
          }
        },
        "required": [
          "t",
          "idx",
          "videoSeconds",
          "layer"
        ],
        "description": "A timelapse frame, tying a moment of the print to a position in the encoded\nvideo so the UI can show what the bed looked like at a point on the chart.\n\nFuse writes one of these each time it captures a frame, so the mapping comes\nfrom the recording itself rather than being inferred. `videoSeconds` is\nresolved server-side: the browser should not have to know the encode frame\nrate to seek."
      },
      "TelemetryEvent": {
        "type": "object",
        "properties": {
          "t": {
            "type": "number",
            "title": "Epoch milliseconds",
            "description": "Epoch milliseconds."
          },
          "type": {
            "type": "string",
            "title": "Raw `printer-events.*` type string",
            "description": "Raw `printer-events.*` type string."
          },
          "code": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ],
            "title": "Extracted salient code (HMS/print-error hex, new state, …) when present",
            "description": "Extracted salient code (HMS/print-error hex, new state, …) when present."
          },
          "severity": {
            "oneOf": [
              {
                "const": "error"
              },
              {
                "const": "info"
              },
              {
                "const": "warning"
              }
            ]
          },
          "message": {
            "type": "string",
            "title": "Human-readable one-line summary for the timeline/tooltip",
            "description": "Human-readable one-line summary for the timeline/tooltip."
          },
          "aiAlert": {
            "$ref": "#/components/schemas/TelemetryAiAlertPreview",
            "title": "Present on AI failure alerts: what the timeline shows on hover",
            "description": "Present on AI failure alerts: what the timeline shows on hover."
          }
        },
        "required": [
          "t",
          "type",
          "code",
          "severity",
          "message"
        ],
        "description": "A discrete printer event flattened for chart/timeline rendering."
      },
      "TelemetryAiAlertPreview": {
        "type": "object",
        "properties": {
          "eventId": {
            "type": "string",
            "title": "`printer_events.id` of the alert, which is also the feedback key",
            "description": "`printer_events.id` of the alert, which is also the feedback key."
          },
          "imageUrl": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ],
            "title": "Signed URL of the frame that tripped the detector, when it was uploaded",
            "description": "Signed URL of the frame that tripped the detector, when it was uploaded."
          },
          "score": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "number"
              }
            ]
          },
          "action": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "const": "notify"
              },
              {
                "const": "stop"
              },
              {
                "const": "pause"
              }
            ]
          }
        },
        "required": [
          "eventId",
          "imageUrl",
          "score",
          "action"
        ]
      },
      "MaterialUsageEntry": {
        "type": "object",
        "properties": {
          "slotLabel": {
            "type": "string",
            "title": "Human slot label, e.g. \"AMS A Slot 2\" or \"Ext. Spool\"",
            "description": "Human slot label, e.g. \"AMS A Slot 2\" or \"Ext. Spool\"."
          },
          "materialName": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "materialType": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "variantId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ],
            "title": "Ids so the client can render names the same way the rest of the app does",
            "description": "Ids so the client can render names the same way the rest of the app does."
          },
          "materialId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "colorHex": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ],
            "title": "Hex (may include alpha or be a `;`-joined gradient); null → unknown",
            "description": "Hex (may include alpha or be a `;`-joined gradient); null → unknown."
          },
          "usedGrams": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "number"
              }
            ]
          },
          "usedMm": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "number"
              }
            ],
            "title": "Millimetres extruded, shown when a grams conversion wasn't available",
            "description": "Millimetres extruded, shown when a grams conversion wasn't available."
          },
          "serial": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ],
            "title": "Serial of the physical roll this slot held, null when it had none",
            "description": "Serial of the physical roll this slot held, null when it had none."
          },
          "serialSource": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "const": "tag"
              },
              {
                "const": "manual"
              },
              {
                "const": "integration"
              }
            ]
          },
          "stockDraw": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/MaterialStockDraw"
              }
            ],
            "title": "What this slot took out of filament stock, null when nothing was drawn",
            "description": "What this slot took out of filament stock, null when nothing was drawn.\nAlways null without the filament-inventory add-on."
          }
        },
        "required": [
          "slotLabel",
          "materialName",
          "materialType",
          "variantId",
          "materialId",
          "colorHex",
          "usedGrams",
          "usedMm",
          "serial",
          "serialSource",
          "stockDraw"
        ],
        "description": "Filament actually consumed on one slot/color during the attempt."
      },
      "MaterialStockDraw": {
        "type": "object",
        "properties": {
          "adjustmentId": {
            "type": "string"
          },
          "variantId": {
            "type": "string"
          },
          "source": {
            "oneOf": [
              {
                "const": "bulk"
              },
              {
                "const": "roll"
              }
            ],
            "title": "Whether the slot drew the variant's bulk or a tracked roll",
            "description": "Whether the slot drew the variant's bulk or a tracked roll."
          },
          "instanceId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ],
            "title": "The roll drawn; null on bulk, and without the spool-tracking add-on",
            "description": "The roll drawn; null on bulk, and without the spool-tracking add-on."
          },
          "serial": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ],
            "title": "The roll's serial and label code when the print drew it, for naming it",
            "description": "The roll's serial and label code when the print drew it, for naming it.\nNull wherever `instanceId` is."
          },
          "labelCode": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "deltaGrams": {
            "type": "number",
            "title": "What came off, as the ledger records it: negative, or 0 on empty stock",
            "description": "What came off, as the ledger records it: negative, or 0 on empty stock."
          },
          "consumedGrams": {
            "type": "number",
            "title": "What the slot used. Larger than `-deltaGrams` when stock ran short",
            "description": "What the slot used. Larger than `-deltaGrams` when stock ran short."
          }
        },
        "required": [
          "adjustmentId",
          "variantId",
          "source",
          "instanceId",
          "serial",
          "labelCode",
          "deltaGrams",
          "consumedGrams"
        ],
        "description": "The ledger row a slot's usage drew from: the variant's bulk or a roll."
      },
      "SkippedObject": {
        "type": "object",
        "properties": {
          "name": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "identifyId": {
            "type": "string"
          },
          "layer": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "number"
              }
            ],
            "title": "Printer layer at skip; null = excluded before printing, -1 also = up front",
            "description": "Printer layer at skip; null = excluded before printing, -1 also = up front."
          }
        },
        "required": [
          "name",
          "identifyId",
          "layer"
        ],
        "description": "An object that was skipped (excluded up front or mid-print)."
      },
      "TelemetryQuery": {
        "type": "object",
        "properties": {
          "attempt": {
            "type": "number",
            "title": "Attempt number to render; defaults to the latest attempt",
            "description": "Attempt number to render; defaults to the latest attempt."
          },
          "source": {
            "oneOf": [
              {
                "const": "fuse"
              },
              {
                "const": "auto"
              },
              {
                "const": "gateway"
              }
            ],
            "title": "Which telemetry series to render; defaults to `auto`",
            "description": "Which telemetry series to render; defaults to `auto`."
          }
        }
      },
      "TelemetryAttemptSummary": {
        "type": "object",
        "properties": {
          "attemptNumber": {
            "type": "number"
          },
          "outcome": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "finalStatus": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "endedAt": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "number"
              }
            ],
            "title": "Epoch milliseconds",
            "description": "Epoch milliseconds."
          },
          "durationSeconds": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "number"
              }
            ]
          },
          "totalLayers": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "number"
              }
            ]
          },
          "completedLayers": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "number"
              }
            ]
          },
          "hasGateway": {
            "type": "boolean"
          },
          "hasFuse": {
            "type": "boolean"
          },
          "cameraThumbnailUri": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "timelapseUri": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "logsUri": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "inProgress": {
            "type": "boolean",
            "title": "True for the live in-flight attempt that has no history row yet",
            "description": "True for the live in-flight attempt that has no history row yet."
          },
          "aiAlertCount": {
            "type": "number",
            "title": "AI failure alerts raised during this attempt",
            "description": "AI failure alerts raised during this attempt."
          }
        },
        "required": [
          "attemptNumber",
          "outcome",
          "finalStatus",
          "endedAt",
          "durationSeconds",
          "totalLayers",
          "completedLayers",
          "hasGateway",
          "hasFuse",
          "cameraThumbnailUri",
          "timelapseUri",
          "logsUri",
          "inProgress",
          "aiAlertCount"
        ],
        "description": "One row of a job's attempt history, for the attempt selector + per-attempt media."
      },
      "TelemetryDownloadUrl": {
        "type": "object",
        "properties": {
          "url": {
            "type": "string"
          },
          "expiresAt": {
            "type": "number",
            "title": "Epoch milliseconds at which the signed URL expires",
            "description": "Epoch milliseconds at which the signed URL expires."
          }
        },
        "required": [
          "url",
          "expiresAt"
        ]
      },
      "RawTelemetryDownloadQuery": {
        "type": "object",
        "properties": {
          "attempt": {
            "type": "number"
          },
          "kind": {
            "oneOf": [
              {
                "const": "fuse"
              },
              {
                "const": "gateway"
              }
            ],
            "title": "Which raw artifact to sign a download URL for",
            "description": "Which raw artifact to sign a download URL for."
          }
        },
        "required": [
          "kind"
        ]
      },
      "PrintHistoryQuery": {
        "type": "object",
        "properties": {
          "printJobId": {
            "type": "string"
          },
          "attemptNumber": {
            "type": "string"
          },
          "taskId": {
            "type": "string"
          },
          "finalStatus": {
            "type": "string"
          },
          "outcome": {
            "type": "string"
          },
          "partBuildId": {
            "type": "string"
          },
          "partId": {
            "type": "string"
          },
          "partName": {
            "type": "string"
          },
          "skuId": {
            "type": "string"
          },
          "skuName": {
            "type": "string"
          },
          "label": {
            "type": "string"
          },
          "groupId": {
            "type": "string"
          },
          "orderId": {
            "type": "string"
          },
          "orderItemId": {
            "type": "string"
          },
          "quantityIndex": {
            "type": "string"
          },
          "quantityTotal": {
            "type": "string"
          },
          "printerId": {
            "type": "string"
          },
          "printerDeviceId": {
            "type": "string"
          },
          "printerProvider": {
            "type": "string"
          },
          "printerName": {
            "type": "string"
          },
          "printerModelName": {
            "type": "string"
          },
          "printerVendorName": {
            "type": "string"
          },
          "queuedAt": {
            "type": "string"
          },
          "assignmentStartedAt": {
            "type": "string"
          },
          "assignmentCompletedAt": {
            "type": "string"
          },
          "printingStartedAt": {
            "type": "string"
          },
          "printingCompletedAt": {
            "type": "string"
          },
          "cancelledAt": {
            "type": "string"
          },
          "endedAt": {
            "type": "string"
          },
          "printDurationSeconds": {
            "type": "string"
          },
          "errorMessage": {
            "type": "string"
          },
          "materialUsageId": {
            "type": "string"
          },
          "totalUsed": {
            "type": "string"
          },
          "totalUsedGrams": {
            "type": "string"
          },
          "usedBySlot": {
            "type": "string",
            "title": "Flat slot id (amsIndex*4+slotIndex, negative for spools) -> mm extruded",
            "description": "Flat slot id (amsIndex*4+slotIndex, negative for spools) -> mm extruded."
          },
          "usedGramsBySlot": {
            "type": "string",
            "title": "Flat slot id -> grams extruded, when a grams conversion was available",
            "description": "Flat slot id -> grams extruded, when a grams conversion was available."
          },
          "slotMaterials": {
            "type": "string",
            "description": "Flat slot id -> what was loaded there at capture time. Deliberately open:\nit is a verbatim snapshot of `material_usage.slot_materials`, whose shape\nhas gained fields over time and must survive round-tripping unchanged."
          },
          "materialMapping": {
            "type": "string"
          },
          "totalLayers": {
            "type": "string"
          },
          "completedLayers": {
            "type": "string"
          },
          "skippedObjects": {
            "type": "string"
          },
          "estimatedPrintTimeSeconds": {
            "type": "string"
          },
          "estimatedTotalWeightGrams": {
            "type": "string"
          },
          "estimatedMaterials": {
            "type": "string"
          },
          "slicerVersion": {
            "type": "string"
          },
          "overriddenProcessProfileId": {
            "type": "string"
          },
          "gcodeAnalysisSha256": {
            "type": "string"
          },
          "slicedGcodeUri": {
            "type": "string"
          },
          "thumbnailUri": {
            "type": "string"
          },
          "coloredThumbnailUri": {
            "type": "string"
          },
          "cameraThumbnailUri": {
            "type": "string"
          },
          "timelapseUri": {
            "type": "string"
          },
          "logsUri": {
            "type": "string"
          },
          "gatewayTelemetryUri": {
            "type": "string"
          },
          "fuseTelemetryUri": {
            "type": "string"
          },
          "priority": {
            "type": "string"
          },
          "id": {
            "type": "string"
          },
          "storeId": {
            "type": "string"
          },
          "createdAt": {
            "type": "string"
          },
          "updatedAt": {
            "type": "string"
          },
          "sort": {
            "type": "string",
            "title": "Sort",
            "description": "Sort specification in format \"field:asc,field2:desc\""
          },
          "limit": {
            "type": "number",
            "minimum": 1,
            "maximum": 1000,
            "title": "Limit",
            "description": "Maximum number of results to return (default: 1000, max: 1000)"
          },
          "offset": {
            "type": "number",
            "minimum": 0,
            "title": "Offset",
            "description": "Number of results to skip for pagination"
          },
          "fields": {
            "type": "string",
            "title": "Fields",
            "description": "Comma-separated list of fields to return"
          },
          "include": {
            "type": "string",
            "title": "Include",
            "description": "Comma-separated list of relations to include (max 4, max 2 levels deep).\nExample: \"linkedParts,linkedParts.part,folder\""
          },
          "meta": {
            "type": "boolean",
            "title": "Meta",
            "description": "If true, returns response with metadata (total, count, hasMore, etc.)"
          },
          "hints": {
            "type": "boolean",
            "title": "Hints",
            "description": "If true, returns AI-friendly hints about available actions. Implies meta=true."
          }
        }
      },
      "GcodeMacro": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "description": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "type": {
            "oneOf": [
              {
                "const": "bed_clearing"
              },
              {
                "const": "purge"
              },
              {
                "const": "maintenance"
              },
              {
                "const": "generic"
              }
            ]
          },
          "gcode": {
            "type": "string"
          },
          "id": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "storeId": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time"
          }
        },
        "required": [
          "name",
          "description",
          "type",
          "gcode",
          "id",
          "storeId",
          "createdAt",
          "updatedAt"
        ]
      },
      "namestringundefineddescriptionstringundefinedtypestringundefinedgcodestringundefinedidstringundefinedstoreIdstringundefinedcreatedAtstringundefinedupdatedAtstringundefinedQuerySettings...": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "type": {
            "type": "string"
          },
          "gcode": {
            "type": "string"
          },
          "id": {
            "type": "string"
          },
          "storeId": {
            "type": "string"
          },
          "createdAt": {
            "type": "string"
          },
          "updatedAt": {
            "type": "string"
          },
          "sort": {
            "type": "string",
            "title": "Sort",
            "description": "Sort specification in format \"field:asc,field2:desc\""
          },
          "limit": {
            "type": "number",
            "minimum": 1,
            "maximum": 1000,
            "title": "Limit",
            "description": "Maximum number of results to return (default: 1000, max: 1000)"
          },
          "offset": {
            "type": "number",
            "minimum": 0,
            "title": "Offset",
            "description": "Number of results to skip for pagination"
          },
          "fields": {
            "type": "string",
            "title": "Fields",
            "description": "Comma-separated list of fields to return"
          },
          "include": {
            "type": "string",
            "title": "Include",
            "description": "Comma-separated list of relations to include (max 4, max 2 levels deep).\nExample: \"linkedParts,linkedParts.part,folder\""
          },
          "meta": {
            "type": "boolean",
            "title": "Meta",
            "description": "If true, returns response with metadata (total, count, hasMore, etc.)"
          },
          "hints": {
            "type": "boolean",
            "title": "Hints",
            "description": "If true, returns AI-friendly hints about available actions. Implies meta=true."
          }
        }
      },
      "SearchQueryDtoGcodeMacro": {
        "type": "object",
        "properties": {
          "filter": {
            "$ref": "#/components/schemas/FilterConditionGcodeMacro",
            "title": "Filter",
            "description": "Complex filter conditions using logical and field operators.\nAvailable field operators: eq, ne, gt, gte, lt, lte, contains, startsWith, endsWith, in, notIn, isNull, between.\nUsage example: {\"filter\": {\"and\": [{\"name\": {\"contains\": \"benchy\"}}, {\"or\": [{\"type\": {\"eq\": \"3mf\"}}, {\"type\": {\"eq\": \"gcode3mf\"}}]}}}"
          },
          "sort": {
            "type": "string",
            "title": "Sort",
            "description": "Sort specification in format \"field:asc,field2:desc\""
          },
          "limit": {
            "type": "number",
            "minimum": 1,
            "maximum": 1000,
            "title": "Limit",
            "description": "Maximum number of results to return (default: 1000, max: 1000)"
          },
          "offset": {
            "type": "number",
            "minimum": 0,
            "title": "Offset",
            "description": "Number of results to skip for pagination"
          },
          "fields": {
            "type": "string",
            "title": "Fields",
            "description": "Comma-separated list of fields to return"
          },
          "include": {
            "type": "string",
            "title": "Include",
            "description": "Comma-separated list of relations to include (max 4, max 2 levels deep).\nExample: \"linkedParts,linkedParts.part,folder\""
          },
          "meta": {
            "type": "boolean",
            "title": "Meta",
            "description": "If true, returns response with metadata (total, count, hasMore, etc.)"
          },
          "hints": {
            "type": "boolean",
            "title": "Hints",
            "description": "If true, returns AI-friendly hints about available actions. Implies meta=true."
          }
        },
        "title": "Search Query",
        "description": "Complete search request with filter conditions and query settings"
      },
      "FilterConditionGcodeMacro": {
        "type": "object",
        "properties": {
          "and": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FilterConditionGcodeMacro"
            },
            "title": "AND Conditions",
            "description": "All conditions must be true"
          },
          "or": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FilterConditionGcodeMacro"
            },
            "title": "OR Conditions",
            "description": "At least one condition must be true"
          },
          "name": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "description": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "type": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "gcode": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "id": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "storeId": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "createdAt": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "updatedAt": {
            "$ref": "#/components/schemas/FieldOperators"
          }
        },
        "title": "Filter Condition",
        "description": "Root filter condition that can be either a logical condition (AND/OR) or field-based condition"
      },
      "GcodeMacroPrinterModel": {
        "type": "object",
        "properties": {
          "adapter": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ],
            "title": "Null when the vendor has no adapter assignment in the capability data",
            "description": "Null when the vendor has no adapter assignment in the capability data."
          },
          "supportsGcode": {
            "type": "boolean",
            "title": "Whether the model's adapter supports raw GCODE delivery",
            "description": "Whether the model's adapter supports raw GCODE delivery."
          },
          "vendorName": {
            "type": "string"
          },
          "modelName": {
            "type": "string"
          }
        },
        "required": [
          "adapter",
          "supportsGcode",
          "vendorName",
          "modelName"
        ],
        "description": "A selectable printer model for the compatibility picker."
      },
      "EnhancedGcodeMacro": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "description": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "type": {
            "oneOf": [
              {
                "const": "bed_clearing"
              },
              {
                "const": "purge"
              },
              {
                "const": "maintenance"
              },
              {
                "const": "generic"
              }
            ]
          },
          "gcode": {
            "type": "string"
          },
          "id": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "storeId": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time"
          },
          "compatibilities": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/GcodeMacroModelRef"
            }
          }
        },
        "required": [
          "name",
          "description",
          "type",
          "gcode",
          "id",
          "storeId",
          "createdAt",
          "updatedAt",
          "compatibilities"
        ]
      },
      "GcodeMacroModelRef": {
        "type": "object",
        "properties": {
          "vendorName": {
            "type": "string"
          },
          "modelName": {
            "type": "string"
          }
        },
        "required": [
          "vendorName",
          "modelName"
        ],
        "description": "A printer model reference, matching the key capability resolution uses."
      },
      "GcodeMacroInsert": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "minLength": 1,
            "maxLength": 120
          },
          "type": {
            "oneOf": [
              {
                "const": "bed_clearing"
              },
              {
                "const": "purge"
              },
              {
                "const": "maintenance"
              },
              {
                "const": "generic"
              }
            ]
          },
          "gcode": {
            "type": "string",
            "minLength": 1,
            "maxLength": 100000
          },
          "description": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "maxLength": 1000
              }
            ]
          },
          "compatibilities": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/GcodeMacroModelRefInput"
            },
            "maxItems": 500
          }
        },
        "required": [
          "name",
          "type",
          "gcode"
        ]
      },
      "GcodeMacroModelRefInput": {
        "type": "object",
        "properties": {
          "vendorName": {
            "type": "string",
            "minLength": 1,
            "maxLength": 200
          },
          "modelName": {
            "type": "string",
            "minLength": 1,
            "maxLength": 200
          }
        },
        "required": [
          "vendorName",
          "modelName"
        ],
        "description": "Bounded input form of {@link GcodeMacroModelRef }."
      },
      "GcodeMacroUpdate": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "minLength": 1,
            "maxLength": 120
          },
          "description": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "maxLength": 1000
              }
            ]
          },
          "gcode": {
            "type": "string",
            "minLength": 1,
            "maxLength": 100000
          },
          "compatibilities": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/GcodeMacroModelRefInput"
            },
            "maxItems": 500
          }
        }
      },
      "GcodeMacroRunResult": {
        "type": "object",
        "properties": {
          "printerId": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "sent": {
            "type": "boolean"
          },
          "reason": {
            "oneOf": [
              {
                "const": "busy"
              },
              {
                "const": "incompatible"
              },
              {
                "const": "unsupported"
              },
              {
                "const": "offline"
              },
              {
                "const": "not-found"
              },
              {
                "const": "unavailable"
              }
            ]
          }
        },
        "required": [
          "printerId",
          "sent"
        ]
      },
      "RunGcodeMacroRequest": {
        "type": "object",
        "properties": {
          "printerIds": {
            "type": "array",
            "items": {
              "type": "string",
              "pattern": "^[a-z0-9]{24}$"
            },
            "minItems": 1,
            "maxItems": 500,
            "title": "Target printers. Duplicates are collapsed server-side",
            "description": "Target printers. Duplicates are collapsed server-side."
          },
          "expectedUpdatedAt": {
            "type": "string",
            "format": "date-time",
            "description": "`updatedAt` of the macro the caller previewed. Required: the run is\nrejected with 409 if the macro has changed since, so a stale preview is\nnever executed."
          }
        },
        "required": [
          "printerIds",
          "expectedUpdatedAt"
        ]
      },
      "Card": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "description": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "entity": {
            "oneOf": [
              {
                "const": "printer"
              },
              {
                "const": "printJob"
              }
            ]
          },
          "formatVersion": {
            "type": "number"
          },
          "definition": {
            "$ref": "#/components/schemas/CardDocument"
          },
          "id": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "storeId": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time"
          }
        },
        "required": [
          "name",
          "description",
          "entity",
          "formatVersion",
          "definition",
          "id",
          "storeId",
          "createdAt",
          "updatedAt"
        ],
        "description": "A stored card design: a declarative card document plus the metadata that\nlets it be listed, instantiated, and (in later phases) shared. `entity` and\n`formatVersion` are denormalized from the definition at write time so\npickers and future migrations can filter without parsing every document."
      },
      "CardDocument": {
        "type": "object",
        "properties": {
          "formatVersion": {
            "type": "number"
          },
          "entity": {
            "oneOf": [
              {
                "const": "printer"
              },
              {
                "const": "printJob"
              }
            ]
          },
          "size": {
            "oneOf": [
              {
                "const": "1x1"
              },
              {
                "const": "2x1"
              },
              {
                "const": "2x2"
              },
              {
                "const": "4x2"
              },
              {
                "const": "4x4"
              }
            ]
          },
          "layout": {
            "oneOf": [
              {
                "const": "stack"
              },
              {
                "const": "media-inset"
              },
              {
                "const": "media"
              }
            ],
            "title": "Omitted = `stack`, so every card authored before layouts still renders as it did",
            "description": "Omitted = `stack`, so every card authored before layouts still renders as it did."
          },
          "accent": {
            "oneOf": [
              {
                "const": "fill"
              },
              {
                "const": "border"
              }
            ],
            "title": "Omitted = `border`",
            "description": "Omitted = `border`."
          },
          "children": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CardChild"
            }
          }
        },
        "required": [
          "formatVersion",
          "entity",
          "size",
          "children"
        ],
        "description": "A card is a declarative schema, not code — a template bound to an entity type."
      },
      "CardChild": {
        "type": "object",
        "properties": {
          "c": {
            "type": "string"
          },
          "bind": {
            "type": "string"
          },
          "command": {
            "type": "string"
          },
          "variant": {
            "type": "string"
          },
          "density": {
            "oneOf": [
              {
                "const": "s"
              },
              {
                "const": "m"
              },
              {
                "const": "l"
              }
            ]
          },
          "slot": {
            "oneOf": [
              {
                "const": "header"
              },
              {
                "const": "body"
              },
              {
                "const": "footer"
              }
            ]
          }
        },
        "required": [
          "c"
        ],
        "description": "One mounted primitive. `c` names a primitive from the manifest (or a spec\nshorthand — \"dial\"/\"bar\" are progress variants); data primitives carry a\nregistry binding path in `bind`, the action primitive an allowlisted\ncommand id in `command`. `slot`/`density`/`variant` are optional styling\noverrides — omitted, the render plan picks them from the size class."
      },
      "namestringundefineddescriptionstringundefinedentitystringundefinedformatVersionstringundefineddefinitionstringundefinedidstringundefinedstoreIdstringundefinedcreatedAtstringundefinedupdatedAtstringundefinedQuerySettings...": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "entity": {
            "type": "string"
          },
          "formatVersion": {
            "type": "string"
          },
          "definition": {
            "type": "string"
          },
          "id": {
            "type": "string"
          },
          "storeId": {
            "type": "string"
          },
          "createdAt": {
            "type": "string"
          },
          "updatedAt": {
            "type": "string"
          },
          "sort": {
            "type": "string",
            "title": "Sort",
            "description": "Sort specification in format \"field:asc,field2:desc\""
          },
          "limit": {
            "type": "number",
            "minimum": 1,
            "maximum": 1000,
            "title": "Limit",
            "description": "Maximum number of results to return (default: 1000, max: 1000)"
          },
          "offset": {
            "type": "number",
            "minimum": 0,
            "title": "Offset",
            "description": "Number of results to skip for pagination"
          },
          "fields": {
            "type": "string",
            "title": "Fields",
            "description": "Comma-separated list of fields to return"
          },
          "include": {
            "type": "string",
            "title": "Include",
            "description": "Comma-separated list of relations to include (max 4, max 2 levels deep).\nExample: \"linkedParts,linkedParts.part,folder\""
          },
          "meta": {
            "type": "boolean",
            "title": "Meta",
            "description": "If true, returns response with metadata (total, count, hasMore, etc.)"
          },
          "hints": {
            "type": "boolean",
            "title": "Hints",
            "description": "If true, returns AI-friendly hints about available actions. Implies meta=true."
          }
        }
      },
      "SearchQueryDtoCard": {
        "type": "object",
        "properties": {
          "filter": {
            "$ref": "#/components/schemas/FilterConditionCard",
            "title": "Filter",
            "description": "Complex filter conditions using logical and field operators.\nAvailable field operators: eq, ne, gt, gte, lt, lte, contains, startsWith, endsWith, in, notIn, isNull, between.\nUsage example: {\"filter\": {\"and\": [{\"name\": {\"contains\": \"benchy\"}}, {\"or\": [{\"type\": {\"eq\": \"3mf\"}}, {\"type\": {\"eq\": \"gcode3mf\"}}]}}}"
          },
          "sort": {
            "type": "string",
            "title": "Sort",
            "description": "Sort specification in format \"field:asc,field2:desc\""
          },
          "limit": {
            "type": "number",
            "minimum": 1,
            "maximum": 1000,
            "title": "Limit",
            "description": "Maximum number of results to return (default: 1000, max: 1000)"
          },
          "offset": {
            "type": "number",
            "minimum": 0,
            "title": "Offset",
            "description": "Number of results to skip for pagination"
          },
          "fields": {
            "type": "string",
            "title": "Fields",
            "description": "Comma-separated list of fields to return"
          },
          "include": {
            "type": "string",
            "title": "Include",
            "description": "Comma-separated list of relations to include (max 4, max 2 levels deep).\nExample: \"linkedParts,linkedParts.part,folder\""
          },
          "meta": {
            "type": "boolean",
            "title": "Meta",
            "description": "If true, returns response with metadata (total, count, hasMore, etc.)"
          },
          "hints": {
            "type": "boolean",
            "title": "Hints",
            "description": "If true, returns AI-friendly hints about available actions. Implies meta=true."
          }
        },
        "title": "Search Query",
        "description": "Complete search request with filter conditions and query settings"
      },
      "FilterConditionCard": {
        "type": "object",
        "properties": {
          "and": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FilterConditionCard"
            },
            "title": "AND Conditions",
            "description": "All conditions must be true"
          },
          "or": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FilterConditionCard"
            },
            "title": "OR Conditions",
            "description": "At least one condition must be true"
          },
          "name": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "description": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "entity": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "formatVersion": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "definition": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "id": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "storeId": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "createdAt": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "updatedAt": {
            "$ref": "#/components/schemas/FieldOperators"
          }
        },
        "title": "Filter Condition",
        "description": "Root filter condition that can be either a logical condition (AND/OR) or field-based condition"
      },
      "CardInsert": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "minLength": 1,
            "maxLength": 120
          },
          "description": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "maxLength": 1000
              }
            ]
          },
          "definition": {
            "$ref": "#/components/schemas/CardDefinitionInput"
          }
        },
        "required": [
          "name",
          "definition"
        ]
      },
      "CardDefinitionInput": {
        "type": "object",
        "properties": {
          "formatVersion": {
            "type": "integer"
          },
          "entity": {
            "type": "string",
            "minLength": 1,
            "maxLength": 40
          },
          "size": {
            "type": "string",
            "maxLength": 8
          },
          "layout": {
            "type": "string",
            "maxLength": 20
          },
          "accent": {
            "type": "string",
            "maxLength": 20
          },
          "children": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CardChildInput"
            },
            "maxItems": 32
          }
        },
        "required": [
          "entity",
          "children"
        ]
      },
      "CardChildInput": {
        "type": "object",
        "properties": {
          "c": {
            "type": "string",
            "minLength": 1,
            "maxLength": 40
          },
          "bind": {
            "type": "string",
            "maxLength": 200
          },
          "command": {
            "type": "string",
            "maxLength": 40
          },
          "variant": {
            "type": "string",
            "maxLength": 40
          },
          "density": {
            "oneOf": [
              {
                "const": "s"
              },
              {
                "const": "m"
              },
              {
                "const": "l"
              }
            ]
          },
          "slot": {
            "oneOf": [
              {
                "const": "header"
              },
              {
                "const": "body"
              },
              {
                "const": "footer"
              }
            ]
          }
        },
        "required": [
          "c"
        ],
        "description": "Wire shape of one card child. Bounds only — deep validation (primitive ids,\nbindings, variants, the command allowlist) is normalizeCardDocument's job\nso the API and the importer reject/degrade identically."
      },
      "CardUpdate": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "minLength": 1,
            "maxLength": 120
          },
          "description": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "maxLength": 1000
              }
            ]
          },
          "definition": {
            "$ref": "#/components/schemas/CardDefinitionInput"
          }
        }
      },
      "ClassworkItem": {
        "type": "object",
        "properties": {
          "code": {
            "type": "string",
            "minLength": 1,
            "maxLength": 1024
          },
          "title": {
            "type": "string"
          },
          "summary": {
            "type": "string"
          },
          "body": {
            "type": "string"
          },
          "folderId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "pattern": "^[a-z0-9]{24}$"
              }
            ]
          },
          "status": {
            "oneOf": [
              {
                "const": "published"
              },
              {
                "const": "draft"
              }
            ]
          },
          "id": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "storeId": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time"
          }
        },
        "required": [
          "code",
          "title",
          "summary",
          "body",
          "status",
          "id",
          "storeId",
          "createdAt",
          "updatedAt"
        ]
      },
      "codestringundefinedtitlestringundefinedsummarystringundefinedbodystringundefinedfolderIdstringundefinedstatusstringundefinedidstringundefinedstoreIdstringundefinedcreatedAtstringundefinedupdatedAtstringundefinedQuerySettings.....": {
        "type": "object",
        "properties": {
          "code": {
            "type": "string"
          },
          "title": {
            "type": "string"
          },
          "summary": {
            "type": "string"
          },
          "body": {
            "type": "string"
          },
          "folderId": {
            "type": "string"
          },
          "status": {
            "type": "string"
          },
          "id": {
            "type": "string"
          },
          "storeId": {
            "type": "string"
          },
          "createdAt": {
            "type": "string"
          },
          "updatedAt": {
            "type": "string"
          },
          "sort": {
            "type": "string",
            "title": "Sort",
            "description": "Sort specification in format \"field:asc,field2:desc\""
          },
          "limit": {
            "type": "number",
            "minimum": 1,
            "maximum": 1000,
            "title": "Limit",
            "description": "Maximum number of results to return (default: 1000, max: 1000)"
          },
          "offset": {
            "type": "number",
            "minimum": 0,
            "title": "Offset",
            "description": "Number of results to skip for pagination"
          },
          "fields": {
            "type": "string",
            "title": "Fields",
            "description": "Comma-separated list of fields to return"
          },
          "include": {
            "type": "string",
            "title": "Include",
            "description": "Comma-separated list of relations to include (max 4, max 2 levels deep).\nExample: \"linkedParts,linkedParts.part,folder\""
          },
          "meta": {
            "type": "boolean",
            "title": "Meta",
            "description": "If true, returns response with metadata (total, count, hasMore, etc.)"
          },
          "hints": {
            "type": "boolean",
            "title": "Hints",
            "description": "If true, returns AI-friendly hints about available actions. Implies meta=true."
          }
        }
      },
      "SearchQueryDtoClassworkItem": {
        "type": "object",
        "properties": {
          "filter": {
            "$ref": "#/components/schemas/FilterConditionClassworkItem",
            "title": "Filter",
            "description": "Complex filter conditions using logical and field operators.\nAvailable field operators: eq, ne, gt, gte, lt, lte, contains, startsWith, endsWith, in, notIn, isNull, between.\nUsage example: {\"filter\": {\"and\": [{\"name\": {\"contains\": \"benchy\"}}, {\"or\": [{\"type\": {\"eq\": \"3mf\"}}, {\"type\": {\"eq\": \"gcode3mf\"}}]}}}"
          },
          "sort": {
            "type": "string",
            "title": "Sort",
            "description": "Sort specification in format \"field:asc,field2:desc\""
          },
          "limit": {
            "type": "number",
            "minimum": 1,
            "maximum": 1000,
            "title": "Limit",
            "description": "Maximum number of results to return (default: 1000, max: 1000)"
          },
          "offset": {
            "type": "number",
            "minimum": 0,
            "title": "Offset",
            "description": "Number of results to skip for pagination"
          },
          "fields": {
            "type": "string",
            "title": "Fields",
            "description": "Comma-separated list of fields to return"
          },
          "include": {
            "type": "string",
            "title": "Include",
            "description": "Comma-separated list of relations to include (max 4, max 2 levels deep).\nExample: \"linkedParts,linkedParts.part,folder\""
          },
          "meta": {
            "type": "boolean",
            "title": "Meta",
            "description": "If true, returns response with metadata (total, count, hasMore, etc.)"
          },
          "hints": {
            "type": "boolean",
            "title": "Hints",
            "description": "If true, returns AI-friendly hints about available actions. Implies meta=true."
          }
        },
        "title": "Search Query",
        "description": "Complete search request with filter conditions and query settings"
      },
      "FilterConditionClassworkItem": {
        "type": "object",
        "properties": {
          "and": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FilterConditionClassworkItem"
            },
            "title": "AND Conditions",
            "description": "All conditions must be true"
          },
          "or": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FilterConditionClassworkItem"
            },
            "title": "OR Conditions",
            "description": "At least one condition must be true"
          },
          "code": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "title": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "summary": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "body": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "folderId": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "status": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "id": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "storeId": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "createdAt": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "updatedAt": {
            "$ref": "#/components/schemas/FieldOperators"
          }
        },
        "title": "Filter Condition",
        "description": "Root filter condition that can be either a logical condition (AND/OR) or field-based condition"
      },
      "ClassworkItemInsert": {
        "type": "object",
        "properties": {
          "code": {
            "type": "string",
            "minLength": 1,
            "maxLength": 1024
          },
          "folderId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "pattern": "^[a-z0-9]{24}$"
              }
            ]
          },
          "title": {
            "type": "string"
          },
          "status": {
            "oneOf": [
              {
                "const": "published"
              },
              {
                "const": "draft"
              }
            ]
          },
          "summary": {
            "type": "string"
          },
          "body": {
            "type": "string"
          }
        },
        "required": [
          "code"
        ]
      },
      "PartialPickClassworkItemUserManagedFields": {
        "type": "object",
        "properties": {
          "folderId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "pattern": "^[a-z0-9]{24}$"
              }
            ]
          },
          "title": {
            "type": "string"
          },
          "status": {
            "oneOf": [
              {
                "const": "published"
              },
              {
                "const": "draft"
              }
            ]
          },
          "code": {
            "type": "string",
            "minLength": 1,
            "maxLength": 1024
          },
          "summary": {
            "type": "string"
          },
          "body": {
            "type": "string"
          }
        },
        "description": "Make all properties in T optional"
      },
      "ClassworkLink": {
        "type": "object",
        "properties": {
          "classworkId": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "url": {
            "type": "string",
            "minLength": 1,
            "maxLength": 1024
          },
          "label": {
            "type": "string"
          },
          "displayOrder": {
            "type": "number"
          },
          "id": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "storeId": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time"
          }
        },
        "required": [
          "classworkId",
          "url",
          "label",
          "displayOrder",
          "id",
          "storeId",
          "createdAt",
          "updatedAt"
        ]
      },
      "ClassworkLinkInsert": {
        "type": "object",
        "properties": {
          "url": {
            "type": "string",
            "minLength": 1,
            "maxLength": 1024
          },
          "label": {
            "type": "string",
            "maxLength": 1024
          },
          "displayOrder": {
            "type": "integer"
          }
        },
        "required": [
          "url"
        ]
      },
      "PartialClassworkLinkInsert": {
        "type": "object",
        "properties": {
          "url": {
            "type": "string",
            "minLength": 1,
            "maxLength": 1024
          },
          "label": {
            "type": "string",
            "maxLength": 1024
          },
          "displayOrder": {
            "type": "integer"
          }
        },
        "description": "Make all properties in T optional"
      },
      "ClassworkPart": {
        "type": "object",
        "properties": {
          "classworkId": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "partId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "pattern": "^[a-z0-9]{24}$"
              }
            ],
            "description": "Null once the referenced part has been deleted: the row is kept (with\n`partName` as its memory of what it pointed at) so the teacher sees that\na part went missing instead of the reference silently vanishing."
          },
          "partName": {
            "type": "string",
            "title": "The part's name when it was referenced; the fallback label once the part is gone",
            "description": "The part's name when it was referenced; the fallback label once the part is gone."
          },
          "note": {
            "type": "string"
          },
          "displayOrder": {
            "type": "number"
          },
          "id": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "storeId": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time"
          }
        },
        "required": [
          "classworkId",
          "partId",
          "partName",
          "note",
          "displayOrder",
          "id",
          "storeId",
          "createdAt",
          "updatedAt"
        ],
        "description": "A part in the teacher's library referenced by a lesson. The part is not\ncopied — students see (and print) the store's own part, so a print job made\nfrom a lesson is a normal job in the class store and needs no cross-store\nprovenance."
      },
      "ClassworkPartInsert": {
        "type": "object",
        "properties": {
          "partId": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "note": {
            "type": "string",
            "maxLength": 1024
          },
          "displayOrder": {
            "type": "integer"
          }
        },
        "required": [
          "partId"
        ]
      },
      "PartialOmitClassworkPartInsertpartId": {
        "type": "object",
        "properties": {
          "note": {
            "type": "string",
            "maxLength": 1024
          },
          "displayOrder": {
            "type": "integer"
          }
        },
        "description": "Make all properties in T optional"
      },
      "ClassworkAttachment": {
        "type": "object",
        "properties": {
          "classworkId": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "fileUri": {
            "type": "string"
          },
          "fileName": {
            "type": "string"
          },
          "contentType": {
            "type": "string"
          },
          "sizeBytes": {
            "type": "number"
          },
          "displayOrder": {
            "type": "number"
          },
          "id": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "storeId": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time"
          }
        },
        "required": [
          "classworkId",
          "fileUri",
          "fileName",
          "contentType",
          "sizeBytes",
          "displayOrder",
          "id",
          "storeId",
          "createdAt",
          "updatedAt"
        ]
      },
      "ClassworkAttachmentInsert": {
        "type": "object",
        "properties": {
          "fileUri": {
            "type": "string",
            "minLength": 1,
            "maxLength": 1024,
            "title": "The `uploads:`-prefixed path returned by the upload-url endpoint",
            "description": "The `uploads:`-prefixed path returned by the upload-url endpoint."
          },
          "fileName": {
            "type": "string",
            "minLength": 1,
            "maxLength": 1024
          },
          "contentType": {
            "type": "string",
            "minLength": 1,
            "maxLength": 1024
          },
          "sizeBytes": {
            "type": "integer"
          },
          "displayOrder": {
            "type": "integer"
          }
        },
        "required": [
          "fileUri",
          "fileName",
          "contentType",
          "sizeBytes"
        ],
        "description": "Commit metadata for a file already PUT to the signed upload URL."
      },
      "ClassworkAttachmentUpdate": {
        "type": "object",
        "properties": {
          "displayOrder": {
            "type": "integer"
          }
        }
      },
      "ClassworkStudentOption": {
        "type": "object",
        "properties": {
          "userId": {
            "type": "string"
          },
          "email": {
            "type": "string"
          },
          "displayName": {
            "type": "string"
          }
        },
        "required": [
          "userId",
          "email"
        ],
        "description": "A store member who can be assigned classwork."
      },
      "ClassworkStudent": {
        "type": "object",
        "properties": {
          "classworkId": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "userId": {
            "type": "string"
          },
          "assignedAt": {
            "type": "string",
            "format": "date-time"
          },
          "assignedBy": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "id": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "storeId": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time"
          }
        },
        "required": [
          "classworkId",
          "userId",
          "assignedAt",
          "id",
          "storeId",
          "createdAt",
          "updatedAt"
        ]
      },
      "ClassworkAssignmentsUpdate": {
        "type": "object",
        "properties": {
          "userIds": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "maxItems": 10000
          }
        },
        "required": [
          "userIds"
        ]
      },
      "Sequence": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "nextValue": {
            "type": "number"
          },
          "prefix": {
            "type": "string"
          },
          "suffix": {
            "type": "string"
          },
          "padding": {
            "type": "number"
          },
          "numberStyle": {
            "oneOf": [
              {
                "const": "decimal"
              },
              {
                "const": "base32"
              }
            ]
          },
          "id": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "storeId": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time"
          }
        },
        "required": [
          "name",
          "nextValue",
          "prefix",
          "suffix",
          "padding",
          "numberStyle",
          "id",
          "storeId",
          "createdAt",
          "updatedAt"
        ],
        "description": "A named, store-scoped serial-number sequence. Uniqueness comes from the\nmonotonic `nextValue` counter alone; `prefix`/`suffix`/`padding`/\n`numberStyle` are a pure display formatter over the raw integer, so they can\nnever introduce collisions or gaps on their own."
      },
      "namestringundefinednextValuestringundefinedprefixstringundefinedsuffixstringundefinedpaddingstringundefinednumberStylestringundefinedidstringundefinedstoreIdstringundefinedcreatedAtstringundefinedupdatedAtstringundefinedQuerySettin...": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "nextValue": {
            "type": "string"
          },
          "prefix": {
            "type": "string"
          },
          "suffix": {
            "type": "string"
          },
          "padding": {
            "type": "string"
          },
          "numberStyle": {
            "type": "string"
          },
          "id": {
            "type": "string"
          },
          "storeId": {
            "type": "string"
          },
          "createdAt": {
            "type": "string"
          },
          "updatedAt": {
            "type": "string"
          },
          "sort": {
            "type": "string",
            "title": "Sort",
            "description": "Sort specification in format \"field:asc,field2:desc\""
          },
          "limit": {
            "type": "number",
            "minimum": 1,
            "maximum": 1000,
            "title": "Limit",
            "description": "Maximum number of results to return (default: 1000, max: 1000)"
          },
          "offset": {
            "type": "number",
            "minimum": 0,
            "title": "Offset",
            "description": "Number of results to skip for pagination"
          },
          "fields": {
            "type": "string",
            "title": "Fields",
            "description": "Comma-separated list of fields to return"
          },
          "include": {
            "type": "string",
            "title": "Include",
            "description": "Comma-separated list of relations to include (max 4, max 2 levels deep).\nExample: \"linkedParts,linkedParts.part,folder\""
          },
          "meta": {
            "type": "boolean",
            "title": "Meta",
            "description": "If true, returns response with metadata (total, count, hasMore, etc.)"
          },
          "hints": {
            "type": "boolean",
            "title": "Hints",
            "description": "If true, returns AI-friendly hints about available actions. Implies meta=true."
          }
        }
      },
      "SequenceWithUsage": {
        "type": "object",
        "properties": {
          "issuedCount": {
            "type": "number"
          },
          "lastIssuedAt": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "format": "date-time"
              }
            ]
          },
          "lastSerial": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "usedBySkuIds": {
            "type": "array",
            "items": {
              "type": "string",
              "pattern": "^[a-z0-9]{24}$"
            },
            "title": "SKU ids whose linked parts bind a text parameter to this sequence",
            "description": "SKU ids whose linked parts bind a text parameter to this sequence."
          },
          "name": {
            "type": "string"
          },
          "nextValue": {
            "type": "number"
          },
          "prefix": {
            "type": "string"
          },
          "suffix": {
            "type": "string"
          },
          "padding": {
            "type": "number"
          },
          "numberStyle": {
            "oneOf": [
              {
                "const": "decimal"
              },
              {
                "const": "base32"
              }
            ]
          },
          "id": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "storeId": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time"
          }
        },
        "required": [
          "issuedCount",
          "lastIssuedAt",
          "lastSerial",
          "usedBySkuIds",
          "name",
          "nextValue",
          "prefix",
          "suffix",
          "padding",
          "numberStyle",
          "id",
          "storeId",
          "createdAt",
          "updatedAt"
        ],
        "description": "A sequence plus usage facts for list pages."
      },
      "SearchQueryDtoSequence": {
        "type": "object",
        "properties": {
          "filter": {
            "$ref": "#/components/schemas/FilterConditionSequence",
            "title": "Filter",
            "description": "Complex filter conditions using logical and field operators.\nAvailable field operators: eq, ne, gt, gte, lt, lte, contains, startsWith, endsWith, in, notIn, isNull, between.\nUsage example: {\"filter\": {\"and\": [{\"name\": {\"contains\": \"benchy\"}}, {\"or\": [{\"type\": {\"eq\": \"3mf\"}}, {\"type\": {\"eq\": \"gcode3mf\"}}]}}}"
          },
          "sort": {
            "type": "string",
            "title": "Sort",
            "description": "Sort specification in format \"field:asc,field2:desc\""
          },
          "limit": {
            "type": "number",
            "minimum": 1,
            "maximum": 1000,
            "title": "Limit",
            "description": "Maximum number of results to return (default: 1000, max: 1000)"
          },
          "offset": {
            "type": "number",
            "minimum": 0,
            "title": "Offset",
            "description": "Number of results to skip for pagination"
          },
          "fields": {
            "type": "string",
            "title": "Fields",
            "description": "Comma-separated list of fields to return"
          },
          "include": {
            "type": "string",
            "title": "Include",
            "description": "Comma-separated list of relations to include (max 4, max 2 levels deep).\nExample: \"linkedParts,linkedParts.part,folder\""
          },
          "meta": {
            "type": "boolean",
            "title": "Meta",
            "description": "If true, returns response with metadata (total, count, hasMore, etc.)"
          },
          "hints": {
            "type": "boolean",
            "title": "Hints",
            "description": "If true, returns AI-friendly hints about available actions. Implies meta=true."
          }
        },
        "title": "Search Query",
        "description": "Complete search request with filter conditions and query settings"
      },
      "FilterConditionSequence": {
        "type": "object",
        "properties": {
          "and": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FilterConditionSequence"
            },
            "title": "AND Conditions",
            "description": "All conditions must be true"
          },
          "or": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FilterConditionSequence"
            },
            "title": "OR Conditions",
            "description": "At least one condition must be true"
          },
          "name": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "nextValue": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "prefix": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "suffix": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "padding": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "numberStyle": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "id": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "storeId": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "createdAt": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "updatedAt": {
            "$ref": "#/components/schemas/FieldOperators"
          }
        },
        "title": "Filter Condition",
        "description": "Root filter condition that can be either a logical condition (AND/OR) or field-based condition"
      },
      "SequenceIssuance": {
        "type": "object",
        "properties": {
          "sequenceId": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "value": {
            "type": "number"
          },
          "serial": {
            "type": "string"
          },
          "parameterName": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "partBuildId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "pattern": "^[a-z0-9]{24}$"
              }
            ]
          },
          "printJobId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "pattern": "^[a-z0-9]{24}$"
              }
            ]
          },
          "skuId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "pattern": "^[a-z0-9]{24}$"
              }
            ]
          },
          "orderId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "pattern": "^[a-z0-9]{24}$"
              }
            ]
          },
          "orderItemId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "pattern": "^[a-z0-9]{24}$"
              }
            ]
          },
          "target": {
            "$ref": "#/components/schemas/SerialStampTarget",
            "description": "Which physical item received this serial. The ledger table stores no\ntarget — it is read back from the linked part build's serial stamps at\nlist time, so rows predating stamps (or with a deleted build) omit it."
          },
          "id": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "storeId": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time"
          }
        },
        "required": [
          "sequenceId",
          "value",
          "serial",
          "parameterName",
          "partBuildId",
          "printJobId",
          "skuId",
          "orderId",
          "orderItemId",
          "id",
          "storeId",
          "createdAt",
          "updatedAt"
        ],
        "description": "One issued serial from the ledger."
      },
      "SequenceInsert": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "minLength": 1,
            "maxLength": 120
          },
          "nextValue": {
            "type": "integer",
            "minimum": 1
          },
          "prefix": {
            "type": "string",
            "maxLength": 40
          },
          "suffix": {
            "type": "string",
            "maxLength": 40
          },
          "padding": {
            "type": "integer",
            "minimum": 1,
            "maximum": 12
          },
          "numberStyle": {
            "oneOf": [
              {
                "const": "decimal"
              },
              {
                "const": "base32"
              }
            ]
          }
        },
        "required": [
          "name"
        ]
      },
      "SequenceUpdate": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "minLength": 1,
            "maxLength": 120
          },
          "nextValue": {
            "type": "integer",
            "minimum": 1
          },
          "prefix": {
            "type": "string",
            "maxLength": 40
          },
          "suffix": {
            "type": "string",
            "maxLength": 40
          },
          "padding": {
            "type": "integer",
            "minimum": 1,
            "maximum": 12
          },
          "numberStyle": {
            "oneOf": [
              {
                "const": "decimal"
              },
              {
                "const": "base32"
              }
            ]
          },
          "confirmRewind": {
            "type": "boolean",
            "description": "Required when `nextValue` moves backwards past a value that has already\nbeen issued: rewinding is the one deliberate way to break the\nnever-reissue guarantee, so it must be explicitly acknowledged."
          }
        }
      },
      "QrTagWithPayload": {
        "type": "object",
        "properties": {
          "payload": {
            "type": "string",
            "description": "The text to encode in the QR code"
          },
          "id": {
            "type": "string",
            "pattern": "^([A-Za-z0-9_-]{1,24}|[A-Za-z][A-Za-z0-9]*-[0-9A-Ha-hJ-Kj-kM-Nm-nP-Tp-tV-Zv-z]{20})$"
          },
          "status": {
            "oneOf": [
              {
                "const": "blank"
              },
              {
                "const": "active"
              },
              {
                "const": "revoked"
              },
              {
                "const": "orphaned"
              }
            ]
          },
          "entityType": {
            "oneOf": [
              {
                "const": "blank"
              },
              {
                "const": "printer"
              },
              {
                "const": "printer_slot"
              },
              {
                "const": "material_variant"
              },
              {
                "const": "material_instance"
              }
            ]
          },
          "entityId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "pattern": "^[a-z0-9]{24}$"
              }
            ],
            "description": "The printerId for printer_slot tags; null while blank. A blank keeps its\nprinted payload (t: 'blank') after it is set up; this row says what it is."
          },
          "printerDeviceId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ],
            "description": "Printer and slot tags: the printer's device_id when it has one. A tag\nwhose printer was deleted follows the store's printer with this id."
          },
          "slotAmsIndex": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "number"
              }
            ],
            "description": "Slot identity for printer_slot tags; amsIndex -1 is the external spool"
          },
          "slotSlotIndex": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "number"
              }
            ]
          },
          "label": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "batchId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "pattern": "^[a-z0-9]{24}$"
              }
            ]
          },
          "payloadVersion": {
            "type": "number"
          },
          "displaySnapshot": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/QrTagDisplaySnapshot"
              }
            ]
          },
          "printedAt": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "format": "date-time"
              }
            ]
          },
          "boundAt": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "format": "date-time"
              }
            ]
          },
          "boundBy": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "revokedAt": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "format": "date-time"
              }
            ]
          },
          "revokedBy": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "lastScannedAt": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "format": "date-time"
              }
            ]
          },
          "scanCount": {
            "type": "number"
          },
          "storeId": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          }
        },
        "required": [
          "payload",
          "id",
          "status",
          "entityType",
          "entityId",
          "printerDeviceId",
          "slotAmsIndex",
          "slotSlotIndex",
          "label",
          "batchId",
          "payloadVersion",
          "displaySnapshot",
          "printedAt",
          "boundAt",
          "boundBy",
          "revokedAt",
          "revokedBy",
          "lastScannedAt",
          "scanCount",
          "storeId",
          "updatedAt",
          "createdAt"
        ]
      },
      "QrTagDisplaySnapshot": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "The printer's name for printer and slot tags; the variant's name for variant and spool tags"
          },
          "provider": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "slotRef": {
            "type": "string",
            "description": "Slot tags: the slot as the app names it, such as A1/3 or S1"
          },
          "materialName": {
            "type": "string",
            "description": "Variant tags"
          },
          "brand": {
            "type": "string"
          },
          "color": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ],
            "description": "#RRGGBBAA, or several joined with \";\" for multicolor filament"
          },
          "code": {
            "type": "string",
            "description": "The short code printed on a blank tag so two blanks can be told apart. It\nstays after the blank is set up, and becomes a new spool's label code."
          }
        },
        "description": "Caption data captured when a tag is created, so a tag still describes its\ntarget after the target is deleted."
      },
      "idstringundefinedstatusstringundefinedentityTypestringundefinedentityIdstringundefinedprinterDeviceIdstringundefinedslotAmsIndexstringundefined...14more...createdAtstringundefinedQuerySettings...": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "status": {
            "type": "string"
          },
          "entityType": {
            "type": "string"
          },
          "entityId": {
            "type": "string",
            "description": "The printerId for printer_slot tags; null while blank. A blank keeps its\nprinted payload (t: 'blank') after it is set up; this row says what it is."
          },
          "printerDeviceId": {
            "type": "string",
            "description": "Printer and slot tags: the printer's device_id when it has one. A tag\nwhose printer was deleted follows the store's printer with this id."
          },
          "slotAmsIndex": {
            "type": "string",
            "description": "Slot identity for printer_slot tags; amsIndex -1 is the external spool"
          },
          "slotSlotIndex": {
            "type": "string"
          },
          "label": {
            "type": "string"
          },
          "batchId": {
            "type": "string"
          },
          "payloadVersion": {
            "type": "string"
          },
          "displaySnapshot": {
            "type": "string"
          },
          "printedAt": {
            "type": "string"
          },
          "boundAt": {
            "type": "string"
          },
          "boundBy": {
            "type": "string"
          },
          "revokedAt": {
            "type": "string"
          },
          "revokedBy": {
            "type": "string"
          },
          "lastScannedAt": {
            "type": "string"
          },
          "scanCount": {
            "type": "string"
          },
          "storeId": {
            "type": "string"
          },
          "updatedAt": {
            "type": "string"
          },
          "createdAt": {
            "type": "string"
          },
          "sort": {
            "type": "string",
            "title": "Sort",
            "description": "Sort specification in format \"field:asc,field2:desc\""
          },
          "limit": {
            "type": "number",
            "minimum": 1,
            "maximum": 1000,
            "title": "Limit",
            "description": "Maximum number of results to return (default: 1000, max: 1000)"
          },
          "offset": {
            "type": "number",
            "minimum": 0,
            "title": "Offset",
            "description": "Number of results to skip for pagination"
          },
          "fields": {
            "type": "string",
            "title": "Fields",
            "description": "Comma-separated list of fields to return"
          },
          "include": {
            "type": "string",
            "title": "Include",
            "description": "Comma-separated list of relations to include (max 4, max 2 levels deep).\nExample: \"linkedParts,linkedParts.part,folder\""
          },
          "meta": {
            "type": "boolean",
            "title": "Meta",
            "description": "If true, returns response with metadata (total, count, hasMore, etc.)"
          },
          "hints": {
            "type": "boolean",
            "title": "Hints",
            "description": "If true, returns AI-friendly hints about available actions. Implies meta=true."
          }
        }
      },
      "QrCatalogAction": {
        "type": "object",
        "properties": {
          "id": {
            "oneOf": [
              {
                "const": "printer.confirmReady"
              },
              {
                "const": "printer.open"
              },
              {
                "const": "printer.unready"
              },
              {
                "const": "printer.pause"
              },
              {
                "const": "printer.resume"
              },
              {
                "const": "printer.stop"
              },
              {
                "const": "printer.home"
              },
              {
                "const": "printer.runQueue"
              },
              {
                "const": "printer.enable"
              },
              {
                "const": "printer.disable"
              },
              {
                "const": "printer.sendJob"
              },
              {
                "const": "printer.runMacro"
              },
              {
                "const": "printer.maintenanceDone"
              },
              {
                "const": "printer.unloadFilament"
              },
              {
                "const": "printer.clearAllSlots"
              },
              {
                "const": "printer.unbindTag"
              },
              {
                "const": "slot.assign"
              },
              {
                "const": "slot.load"
              },
              {
                "const": "slot.clear"
              },
              {
                "const": "slot.refreshRfid"
              },
              {
                "const": "slot.openPrinter"
              },
              {
                "const": "slot.unbindTag"
              },
              {
                "const": "variant.assign"
              },
              {
                "const": "variant.registerSpool"
              },
              {
                "const": "variant.unbindTag"
              },
              {
                "const": "spool.updateGrams"
              },
              {
                "const": "spool.remove"
              },
              {
                "const": "spool.load"
              },
              {
                "const": "spool.markEmpty"
              },
              {
                "const": "spool.openPrinter"
              },
              {
                "const": "spool.unbindTag"
              },
              {
                "const": "pair.assignVariantToPrinter"
              },
              {
                "const": "pair.assignVariantToSlot"
              },
              {
                "const": "pair.moveSlot"
              },
              {
                "const": "pair.swapSlots"
              },
              {
                "const": "pair.loadSpoolIntoPrinter"
              },
              {
                "const": "pair.loadSpoolIntoSlot"
              },
              {
                "const": "pair.bindBlankAsNewSpool"
              },
              {
                "const": "pair.bindBlankToVariant"
              },
              {
                "const": "pair.bindBlankToPrinter"
              },
              {
                "const": "pair.bindBlankToSlot"
              },
              {
                "const": "pair.bindBlankToSpool"
              }
            ]
          },
          "label": {
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "subject": {
            "oneOf": [
              {
                "const": "blank"
              },
              {
                "const": "printer"
              },
              {
                "const": "printer_slot"
              },
              {
                "const": "material_variant"
              },
              {
                "const": "material_instance"
              },
              {
                "const": "material_variant+printer"
              },
              {
                "const": "material_variant+printer_slot"
              },
              {
                "const": "printer_slot+printer_slot"
              },
              {
                "const": "material_instance+printer"
              },
              {
                "const": "material_instance+printer_slot"
              },
              {
                "const": "blank+material_instance"
              },
              {
                "const": "blank+material_variant"
              },
              {
                "const": "blank+printer"
              },
              {
                "const": "blank+printer_slot"
              }
            ],
            "description": "What is scanned to offer it: an entity type, or a pair key such as \"blank+material_variant\""
          },
          "permission": {
            "oneOf": [
              {
                "const": "organization.owner"
              },
              {
                "const": "organization.edit"
              },
              {
                "const": "organization.delete"
              },
              {
                "const": "user.view"
              },
              {
                "const": "user.invite"
              },
              {
                "const": "user.edit"
              },
              {
                "const": "user.delete"
              },
              {
                "const": "permission.view"
              },
              {
                "const": "permission.grant"
              },
              {
                "const": "permission.revoke"
              },
              {
                "const": "part.view"
              },
              {
                "const": "part.create"
              },
              {
                "const": "part.edit"
              },
              {
                "const": "part.delete"
              },
              {
                "const": "part.export"
              },
              {
                "const": "sku.view"
              },
              {
                "const": "sku.create"
              },
              {
                "const": "sku.edit"
              },
              {
                "const": "sku.delete"
              },
              {
                "const": "material.view"
              },
              {
                "const": "material.create"
              },
              {
                "const": "material.edit"
              },
              {
                "const": "material.delete"
              },
              {
                "const": "material.instance.view"
              },
              {
                "const": "material.instance.create"
              },
              {
                "const": "material.instance.edit"
              },
              {
                "const": "material.instance.delete"
              },
              {
                "const": "printer.view"
              },
              {
                "const": "printer.create"
              },
              {
                "const": "printer.edit"
              },
              {
                "const": "printer.delete"
              },
              {
                "const": "printer.control"
              },
              {
                "const": "printer.ready"
              },
              {
                "const": "printer.config"
              },
              {
                "const": "printer.stats"
              },
              {
                "const": "printer.camera"
              },
              {
                "const": "profile.view"
              },
              {
                "const": "profile.create"
              },
              {
                "const": "profile.edit"
              },
              {
                "const": "profile.delete"
              },
              {
                "const": "queue.view"
              },
              {
                "const": "queue.manage"
              },
              {
                "const": "queue.override"
              },
              {
                "const": "job.create"
              },
              {
                "const": "job.edit.own"
              },
              {
                "const": "job.edit.all"
              },
              {
                "const": "job.delete.own"
              },
              {
                "const": "job.delete.all"
              },
              {
                "const": "build.view"
              },
              {
                "const": "build.create"
              },
              {
                "const": "build.edit"
              },
              {
                "const": "build.delete"
              },
              {
                "const": "settings.view"
              },
              {
                "const": "settings.edit"
              },
              {
                "const": "integration.view"
              },
              {
                "const": "integration.manage"
              },
              {
                "const": "subscription.view"
              },
              {
                "const": "subscription.manage"
              },
              {
                "const": "analytics.view"
              },
              {
                "const": "reports.generate"
              },
              {
                "const": "audit.log.view"
              },
              {
                "const": "audit.logs.configure"
              },
              {
                "const": "order.view"
              },
              {
                "const": "order.create"
              },
              {
                "const": "order.edit"
              },
              {
                "const": "order.delete"
              },
              {
                "const": "order.print"
              },
              {
                "const": "apiKey.view"
              },
              {
                "const": "apiKey.create"
              },
              {
                "const": "apiKey.edit"
              },
              {
                "const": "apiKey.delete"
              },
              {
                "const": "file.download"
              },
              {
                "const": "maintenance.view"
              },
              {
                "const": "maintenance.create"
              },
              {
                "const": "maintenance.edit"
              },
              {
                "const": "maintenance.delete"
              },
              {
                "const": "maintenance.complete"
              },
              {
                "const": "routing.manage"
              },
              {
                "const": "customizer.manage"
              },
              {
                "const": "macro.view"
              },
              {
                "const": "macro.create"
              },
              {
                "const": "macro.edit"
              },
              {
                "const": "macro.delete"
              },
              {
                "const": "macro.run"
              },
              {
                "const": "card.view"
              },
              {
                "const": "card.create"
              },
              {
                "const": "card.edit"
              },
              {
                "const": "card.delete"
              },
              {
                "const": "layout.view"
              },
              {
                "const": "layout.create"
              },
              {
                "const": "layout.edit"
              },
              {
                "const": "layout.delete"
              },
              {
                "const": "classwork.viewer"
              },
              {
                "const": "classwork.editor"
              },
              {
                "const": "sequence.view"
              },
              {
                "const": "sequence.edit"
              },
              {
                "const": "qr.scan"
              },
              {
                "const": "qr.manage"
              },
              {
                "const": "internal.shopify"
              },
              {
                "const": "queue.admin"
              },
              {
                "const": "part.viewer"
              },
              {
                "const": "part.editor"
              },
              {
                "const": "sku.viewer"
              },
              {
                "const": "sku.editor"
              },
              {
                "const": "orders.admin"
              },
              {
                "const": "material.viewer"
              },
              {
                "const": "material.editor"
              },
              {
                "const": "printer.viewer"
              },
              {
                "const": "printer.editor"
              },
              {
                "const": "profile.viewer"
              },
              {
                "const": "profile.editor"
              },
              {
                "const": "settings.admin"
              },
              {
                "const": "subscription.admin"
              }
            ]
          },
          "kind": {
            "oneOf": [
              {
                "const": "webhook"
              },
              {
                "const": "builtin"
              }
            ]
          },
          "destructive": {
            "type": "boolean"
          },
          "default": {
            "type": "boolean",
            "description": "The main button when nothing else wins it, such as Open printer for an idle printer"
          },
          "entitlement": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ],
            "description": "Offered only with this add-on; null when every store has it"
          }
        },
        "required": [
          "id",
          "label",
          "description",
          "subject",
          "permission",
          "kind",
          "destructive",
          "default",
          "entitlement"
        ],
        "description": "One action as the settings page lists it, outside any scan."
      },
      "CreateQrTagsResponse": {
        "type": "object",
        "properties": {
          "batchId": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$",
            "description": "Shared by every tag minted in this request"
          },
          "tags": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/QrTagWithPayload"
            }
          }
        },
        "required": [
          "batchId",
          "tags"
        ]
      },
      "CreateQrTagsRequest": {
        "type": "object",
        "properties": {
          "targets": {
            "type": "array",
            "items": {
              "oneOf": [
                {
                  "$ref": "#/components/schemas/QrPrinterTagTarget"
                },
                {
                  "$ref": "#/components/schemas/QrSlotTagTarget"
                },
                {
                  "$ref": "#/components/schemas/QrVariantTagTarget"
                },
                {
                  "$ref": "#/components/schemas/QrSpoolTagTarget"
                }
              ],
              "discriminator": {
                "propertyName": "entityType",
                "mapping": {
                  "printer": "#/components/schemas/QrPrinterTagTarget",
                  "printer_slot": "#/components/schemas/QrSlotTagTarget",
                  "material_variant": "#/components/schemas/QrVariantTagTarget",
                  "material_instance": "#/components/schemas/QrSpoolTagTarget"
                }
              }
            },
            "minItems": 1,
            "maxItems": 500
          },
          "blankCount": {
            "type": "integer",
            "minimum": 1,
            "maximum": 300,
            "description": "Mint this many blank tags in one batch. A blank tag is for nothing yet\nand isn't saved: scanning it with a printer, slot, filament or spool in\nthe app sets it up, and only then is it saved."
          },
          "reuseActive": {
            "type": "boolean",
            "title": "Return a target's newest active tag instead of minting another one",
            "description": "Return a target's newest active tag instead of minting another one."
          }
        },
        "description": "Send `targets`, or `blankCount` for a batch of blank tags; not both."
      },
      "QrPrinterTagTarget": {
        "type": "object",
        "properties": {
          "entityType": {
            "const": "printer"
          },
          "entityId": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$",
            "description": "The printer's ID"
          }
        },
        "required": [
          "entityType",
          "entityId"
        ]
      },
      "QrSlotTagTarget": {
        "type": "object",
        "properties": {
          "entityType": {
            "const": "printer_slot"
          },
          "entityId": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$",
            "description": "The printer's ID"
          },
          "amsIndex": {
            "type": "integer",
            "minimum": -1,
            "maximum": 63,
            "description": "The AMS unit, from 0; -1 for an external spool holder"
          },
          "slotIndex": {
            "type": "integer",
            "minimum": 0,
            "maximum": 63,
            "description": "The slot within the unit, or the external holder, from 0"
          }
        },
        "required": [
          "entityType",
          "entityId",
          "amsIndex",
          "slotIndex"
        ]
      },
      "QrVariantTagTarget": {
        "type": "object",
        "properties": {
          "entityType": {
            "const": "material_variant"
          },
          "entityId": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$",
            "description": "The filament variant's ID"
          }
        },
        "required": [
          "entityType",
          "entityId"
        ]
      },
      "QrSpoolTagTarget": {
        "type": "object",
        "properties": {
          "entityType": {
            "const": "material_instance"
          },
          "entityId": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$",
            "description": "The spool's (material instance's) ID"
          }
        },
        "required": [
          "entityType",
          "entityId"
        ]
      },
      "QrTag": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "pattern": "^([A-Za-z0-9_-]{1,24}|[A-Za-z][A-Za-z0-9]*-[0-9A-Ha-hJ-Kj-kM-Nm-nP-Tp-tV-Zv-z]{20})$"
          },
          "status": {
            "oneOf": [
              {
                "const": "blank"
              },
              {
                "const": "active"
              },
              {
                "const": "revoked"
              },
              {
                "const": "orphaned"
              }
            ]
          },
          "entityType": {
            "oneOf": [
              {
                "const": "blank"
              },
              {
                "const": "printer"
              },
              {
                "const": "printer_slot"
              },
              {
                "const": "material_variant"
              },
              {
                "const": "material_instance"
              }
            ]
          },
          "entityId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "pattern": "^[a-z0-9]{24}$"
              }
            ],
            "description": "The printerId for printer_slot tags; null while blank. A blank keeps its\nprinted payload (t: 'blank') after it is set up; this row says what it is."
          },
          "printerDeviceId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ],
            "description": "Printer and slot tags: the printer's device_id when it has one. A tag\nwhose printer was deleted follows the store's printer with this id."
          },
          "slotAmsIndex": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "number"
              }
            ],
            "description": "Slot identity for printer_slot tags; amsIndex -1 is the external spool"
          },
          "slotSlotIndex": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "number"
              }
            ]
          },
          "label": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "batchId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "pattern": "^[a-z0-9]{24}$"
              }
            ]
          },
          "payloadVersion": {
            "type": "number"
          },
          "displaySnapshot": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/QrTagDisplaySnapshot"
              }
            ]
          },
          "printedAt": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "format": "date-time"
              }
            ]
          },
          "boundAt": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "format": "date-time"
              }
            ]
          },
          "boundBy": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "revokedAt": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "format": "date-time"
              }
            ]
          },
          "revokedBy": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "lastScannedAt": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "format": "date-time"
              }
            ]
          },
          "scanCount": {
            "type": "number"
          },
          "storeId": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          }
        },
        "required": [
          "id",
          "status",
          "entityType",
          "entityId",
          "printerDeviceId",
          "slotAmsIndex",
          "slotSlotIndex",
          "label",
          "batchId",
          "payloadVersion",
          "displaySnapshot",
          "printedAt",
          "boundAt",
          "boundBy",
          "revokedAt",
          "revokedBy",
          "lastScannedAt",
          "scanCount",
          "storeId",
          "updatedAt",
          "createdAt"
        ]
      },
      "RevokeQrTagsRequest": {
        "type": "object",
        "properties": {
          "ids": {
            "type": "array",
            "items": {
              "type": "string",
              "pattern": "^([A-Za-z0-9_-]{1,24}|[A-Za-z][A-Za-z0-9]*-[0-9A-Ha-hJ-Kj-kM-Nm-nP-Tp-tV-Zv-z]{20})$"
            },
            "minItems": 1,
            "maxItems": 1000
          }
        },
        "required": [
          "ids"
        ]
      },
      "UnbindQrTagsRequest": {
        "type": "object",
        "properties": {
          "ids": {
            "type": "array",
            "items": {
              "type": "string",
              "pattern": "^([A-Za-z0-9_-]{1,24}|[A-Za-z][A-Za-z0-9]*-[0-9A-Ha-hJ-Kj-kM-Nm-nP-Tp-tV-Zv-z]{20})$"
            },
            "minItems": 1,
            "maxItems": 1000
          }
        },
        "required": [
          "ids"
        ]
      },
      "QrResolveResult": {
        "type": "object",
        "properties": {
          "mode": {
            "oneOf": [
              {
                "const": "revoked"
              },
              {
                "const": "orphaned"
              },
              {
                "const": "single"
              },
              {
                "const": "pair"
              },
              {
                "const": "unknown_tag"
              },
              {
                "const": "invalid_pair"
              },
              {
                "const": "unknown_issuer"
              },
              {
                "const": "other_store"
              },
              {
                "const": "unsupported_version"
              }
            ]
          },
          "tags": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/QrTagDisplay"
            }
          },
          "actions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/QrEvaluatedAction"
            }
          },
          "message": {
            "type": "string"
          }
        },
        "required": [
          "mode",
          "tags",
          "actions"
        ]
      },
      "QrTagDisplay": {
        "type": "object",
        "properties": {
          "fields": {
            "$ref": "#/components/schemas/QrLinkFields"
          },
          "id": {
            "type": "string"
          },
          "status": {
            "oneOf": [
              {
                "const": "blank"
              },
              {
                "const": "active"
              },
              {
                "const": "revoked"
              },
              {
                "const": "orphaned"
              }
            ]
          },
          "entityType": {
            "oneOf": [
              {
                "const": "blank"
              },
              {
                "const": "printer"
              },
              {
                "const": "printer_slot"
              },
              {
                "const": "material_variant"
              },
              {
                "const": "material_instance"
              }
            ]
          },
          "entityId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "label": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "printer": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/QrPrinterDisplay"
              }
            ],
            "description": "The live printer of a printer or slot tag; null for other tags or when the printer is gone"
          },
          "slot": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/QrSlotDisplay"
              }
            ],
            "description": "Slot tags: the slot, what is assigned to it and what the printer sees"
          },
          "variant": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/QrVariantDisplay"
              }
            ],
            "description": "Variant tags"
          },
          "spool": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/QrSpoolDisplay"
              }
            ],
            "description": "Spool tags"
          },
          "blank": {
            "$ref": "#/components/schemas/QrBlankDisplay",
            "description": "Blank tags that aren't set up yet"
          }
        },
        "required": [
          "id",
          "status",
          "entityType",
          "entityId",
          "label",
          "printer"
        ]
      },
      "QrLinkFields": {
        "type": "object",
        "properties": {
          "M": {
            "type": "string"
          },
          "C": {
            "type": "string"
          },
          "G": {
            "type": "string"
          },
          "D": {
            "type": "string"
          },
          "B": {
            "type": "string"
          },
          "SKU": {
            "type": "string"
          }
        }
      },
      "QrPrinterDisplay": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "provider": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "state": {
            "oneOf": [
              {
                "const": "Offline"
              },
              {
                "const": "Stale"
              },
              {
                "const": "Ready"
              },
              {
                "const": "Busy"
              },
              {
                "const": "Waiting"
              },
              {
                "const": "Disabled"
              },
              {
                "const": "NeedsConfiguration"
              }
            ]
          },
          "statusLabel": {
            "type": "string",
            "title": "\"Printing 42%\", \"Paused\", \"Waiting for confirmation\", ..",
            "description": "\"Printing 42%\", \"Paused\", \"Waiting for confirmation\", ..."
          },
          "statusUnknown": {
            "type": "boolean",
            "description": "The live status couldn't be read; `statusLabel` is \"Status unavailable\" and `state` is Printago's last record"
          },
          "printing": {
            "type": "boolean"
          },
          "paused": {
            "type": "boolean"
          },
          "progress": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "number"
              }
            ],
            "description": "0 to 100 while printing"
          },
          "jobName": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          }
        },
        "required": [
          "id",
          "name",
          "provider",
          "state",
          "statusLabel",
          "printing",
          "paused",
          "progress",
          "jobName"
        ]
      },
      "QrSlotDisplay": {
        "type": "object",
        "properties": {
          "amsIndex": {
            "type": "number",
            "description": "-1 for an external spool holder"
          },
          "slotIndex": {
            "type": "number"
          },
          "ref": {
            "type": "string",
            "description": "A1/3, S1"
          },
          "exists": {
            "type": "boolean",
            "description": "False when the printer doesn't have this slot right now"
          },
          "assigned": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/QrSlotFilament"
              }
            ]
          },
          "loaded": {
            "type": "boolean",
            "description": "The printer reports a spool in the slot"
          }
        },
        "required": [
          "amsIndex",
          "slotIndex",
          "ref",
          "exists",
          "assigned",
          "loaded"
        ]
      },
      "QrSlotFilament": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "The material and variant names, such as \"PLA Basic Red\""
          },
          "brand": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "color": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ],
            "description": "#RRGGBBAA of the first color; null when only a material type is assigned"
          },
          "instanceId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ],
            "description": "The spool loaded in the slot, when one is"
          },
          "remainingGrams": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "number"
              }
            ],
            "description": "What that spool has left"
          }
        },
        "required": [
          "name",
          "brand",
          "color"
        ],
        "description": "What Printago has assigned to a slot, as the app shows it."
      },
      "QrVariantDisplay": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "materialId": {
            "type": "string"
          },
          "materialName": {
            "type": "string"
          },
          "brand": {
            "type": "string"
          },
          "type": {
            "type": "string"
          },
          "color": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ],
            "description": "#RRGGBBAA, or several joined with \";\""
          }
        },
        "required": [
          "id",
          "name",
          "materialId",
          "materialName",
          "brand",
          "type",
          "color"
        ]
      },
      "QrSpoolDisplay": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "variant": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/QrVariantDisplay"
              }
            ],
            "description": "The spool's filament; null when its variant is gone"
          },
          "remainingGrams": {
            "type": "number"
          },
          "nominalGrams": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "number"
              }
            ],
            "description": "What it held when full, when known"
          },
          "labelCode": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "empty": {
            "type": "boolean",
            "description": "No filament left"
          },
          "location": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/QrSpoolLocation"
              }
            ],
            "description": "The slot it is loaded in"
          },
          "finishedAt": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ],
            "description": "When it was finished; null while it is active"
          },
          "finishReason": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "const": "used_up"
              },
              {
                "const": "archived"
              }
            ],
            "description": "`used_up` or `archived` once finished, else null"
          }
        },
        "required": [
          "id",
          "variant",
          "remainingGrams",
          "nominalGrams",
          "labelCode",
          "empty",
          "location",
          "finishedAt",
          "finishReason"
        ]
      },
      "QrSpoolLocation": {
        "type": "object",
        "properties": {
          "printerId": {
            "type": "string"
          },
          "printerName": {
            "type": "string"
          },
          "amsIndex": {
            "type": "number"
          },
          "slotIndex": {
            "type": "number"
          },
          "ref": {
            "type": "string",
            "description": "A1/3, S1"
          }
        },
        "required": [
          "printerId",
          "printerName",
          "amsIndex",
          "slotIndex",
          "ref"
        ],
        "description": "The slot a spool is loaded in."
      },
      "QrBlankDisplay": {
        "type": "object",
        "properties": {
          "code": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ],
            "description": "The short code printed on the tag"
          }
        },
        "required": [
          "code"
        ]
      },
      "QrEvaluatedAction": {
        "type": "object",
        "properties": {
          "id": {
            "oneOf": [
              {
                "const": "printer.confirmReady"
              },
              {
                "const": "printer.open"
              },
              {
                "const": "printer.unready"
              },
              {
                "const": "printer.pause"
              },
              {
                "const": "printer.resume"
              },
              {
                "const": "printer.stop"
              },
              {
                "const": "printer.home"
              },
              {
                "const": "printer.runQueue"
              },
              {
                "const": "printer.enable"
              },
              {
                "const": "printer.disable"
              },
              {
                "const": "printer.sendJob"
              },
              {
                "const": "printer.runMacro"
              },
              {
                "const": "printer.maintenanceDone"
              },
              {
                "const": "printer.unloadFilament"
              },
              {
                "const": "printer.clearAllSlots"
              },
              {
                "const": "printer.unbindTag"
              },
              {
                "const": "slot.assign"
              },
              {
                "const": "slot.load"
              },
              {
                "const": "slot.clear"
              },
              {
                "const": "slot.refreshRfid"
              },
              {
                "const": "slot.openPrinter"
              },
              {
                "const": "slot.unbindTag"
              },
              {
                "const": "variant.assign"
              },
              {
                "const": "variant.registerSpool"
              },
              {
                "const": "variant.unbindTag"
              },
              {
                "const": "spool.updateGrams"
              },
              {
                "const": "spool.remove"
              },
              {
                "const": "spool.load"
              },
              {
                "const": "spool.markEmpty"
              },
              {
                "const": "spool.openPrinter"
              },
              {
                "const": "spool.unbindTag"
              },
              {
                "const": "pair.assignVariantToPrinter"
              },
              {
                "const": "pair.assignVariantToSlot"
              },
              {
                "const": "pair.moveSlot"
              },
              {
                "const": "pair.swapSlots"
              },
              {
                "const": "pair.loadSpoolIntoPrinter"
              },
              {
                "const": "pair.loadSpoolIntoSlot"
              },
              {
                "const": "pair.bindBlankAsNewSpool"
              },
              {
                "const": "pair.bindBlankToVariant"
              },
              {
                "const": "pair.bindBlankToPrinter"
              },
              {
                "const": "pair.bindBlankToSlot"
              },
              {
                "const": "pair.bindBlankToSpool"
              }
            ]
          },
          "label": {
            "type": "string"
          },
          "kind": {
            "oneOf": [
              {
                "const": "webhook"
              },
              {
                "const": "builtin"
              }
            ]
          },
          "runs": {
            "oneOf": [
              {
                "const": "server"
              },
              {
                "const": "app"
              }
            ]
          },
          "permission": {
            "oneOf": [
              {
                "const": "organization.owner"
              },
              {
                "const": "organization.edit"
              },
              {
                "const": "organization.delete"
              },
              {
                "const": "user.view"
              },
              {
                "const": "user.invite"
              },
              {
                "const": "user.edit"
              },
              {
                "const": "user.delete"
              },
              {
                "const": "permission.view"
              },
              {
                "const": "permission.grant"
              },
              {
                "const": "permission.revoke"
              },
              {
                "const": "part.view"
              },
              {
                "const": "part.create"
              },
              {
                "const": "part.edit"
              },
              {
                "const": "part.delete"
              },
              {
                "const": "part.export"
              },
              {
                "const": "sku.view"
              },
              {
                "const": "sku.create"
              },
              {
                "const": "sku.edit"
              },
              {
                "const": "sku.delete"
              },
              {
                "const": "material.view"
              },
              {
                "const": "material.create"
              },
              {
                "const": "material.edit"
              },
              {
                "const": "material.delete"
              },
              {
                "const": "material.instance.view"
              },
              {
                "const": "material.instance.create"
              },
              {
                "const": "material.instance.edit"
              },
              {
                "const": "material.instance.delete"
              },
              {
                "const": "printer.view"
              },
              {
                "const": "printer.create"
              },
              {
                "const": "printer.edit"
              },
              {
                "const": "printer.delete"
              },
              {
                "const": "printer.control"
              },
              {
                "const": "printer.ready"
              },
              {
                "const": "printer.config"
              },
              {
                "const": "printer.stats"
              },
              {
                "const": "printer.camera"
              },
              {
                "const": "profile.view"
              },
              {
                "const": "profile.create"
              },
              {
                "const": "profile.edit"
              },
              {
                "const": "profile.delete"
              },
              {
                "const": "queue.view"
              },
              {
                "const": "queue.manage"
              },
              {
                "const": "queue.override"
              },
              {
                "const": "job.create"
              },
              {
                "const": "job.edit.own"
              },
              {
                "const": "job.edit.all"
              },
              {
                "const": "job.delete.own"
              },
              {
                "const": "job.delete.all"
              },
              {
                "const": "build.view"
              },
              {
                "const": "build.create"
              },
              {
                "const": "build.edit"
              },
              {
                "const": "build.delete"
              },
              {
                "const": "settings.view"
              },
              {
                "const": "settings.edit"
              },
              {
                "const": "integration.view"
              },
              {
                "const": "integration.manage"
              },
              {
                "const": "subscription.view"
              },
              {
                "const": "subscription.manage"
              },
              {
                "const": "analytics.view"
              },
              {
                "const": "reports.generate"
              },
              {
                "const": "audit.log.view"
              },
              {
                "const": "audit.logs.configure"
              },
              {
                "const": "order.view"
              },
              {
                "const": "order.create"
              },
              {
                "const": "order.edit"
              },
              {
                "const": "order.delete"
              },
              {
                "const": "order.print"
              },
              {
                "const": "apiKey.view"
              },
              {
                "const": "apiKey.create"
              },
              {
                "const": "apiKey.edit"
              },
              {
                "const": "apiKey.delete"
              },
              {
                "const": "file.download"
              },
              {
                "const": "maintenance.view"
              },
              {
                "const": "maintenance.create"
              },
              {
                "const": "maintenance.edit"
              },
              {
                "const": "maintenance.delete"
              },
              {
                "const": "maintenance.complete"
              },
              {
                "const": "routing.manage"
              },
              {
                "const": "customizer.manage"
              },
              {
                "const": "macro.view"
              },
              {
                "const": "macro.create"
              },
              {
                "const": "macro.edit"
              },
              {
                "const": "macro.delete"
              },
              {
                "const": "macro.run"
              },
              {
                "const": "card.view"
              },
              {
                "const": "card.create"
              },
              {
                "const": "card.edit"
              },
              {
                "const": "card.delete"
              },
              {
                "const": "layout.view"
              },
              {
                "const": "layout.create"
              },
              {
                "const": "layout.edit"
              },
              {
                "const": "layout.delete"
              },
              {
                "const": "classwork.viewer"
              },
              {
                "const": "classwork.editor"
              },
              {
                "const": "sequence.view"
              },
              {
                "const": "sequence.edit"
              },
              {
                "const": "qr.scan"
              },
              {
                "const": "qr.manage"
              },
              {
                "const": "internal.shopify"
              },
              {
                "const": "queue.admin"
              },
              {
                "const": "part.viewer"
              },
              {
                "const": "part.editor"
              },
              {
                "const": "sku.viewer"
              },
              {
                "const": "sku.editor"
              },
              {
                "const": "orders.admin"
              },
              {
                "const": "material.viewer"
              },
              {
                "const": "material.editor"
              },
              {
                "const": "printer.viewer"
              },
              {
                "const": "printer.editor"
              },
              {
                "const": "profile.viewer"
              },
              {
                "const": "profile.editor"
              },
              {
                "const": "settings.admin"
              },
              {
                "const": "subscription.admin"
              }
            ]
          },
          "default": {
            "type": "boolean",
            "title": "The main button. At most one action has it, and only an available one",
            "description": "The main button. At most one action has it, and only an available one."
          },
          "destructive": {
            "type": "boolean"
          },
          "confirm": {
            "type": "boolean"
          },
          "confirmMessage": {
            "type": "string"
          },
          "available": {
            "type": "boolean"
          },
          "reasonCode": {
            "oneOf": [
              {
                "const": "printing"
              },
              {
                "const": "busy"
              },
              {
                "const": "offline"
              },
              {
                "const": "no_permission"
              },
              {
                "const": "missing_entitlement"
              },
              {
                "const": "status_unknown"
              },
              {
                "const": "not_printing"
              },
              {
                "const": "already_paused"
              },
              {
                "const": "not_paused"
              },
              {
                "const": "already_ready"
              },
              {
                "const": "not_ready"
              },
              {
                "const": "needs_setup"
              },
              {
                "const": "printer_disabled"
              },
              {
                "const": "already_enabled"
              },
              {
                "const": "already_disabled"
              },
              {
                "const": "not_supported"
              },
              {
                "const": "no_pending_jobs"
              },
              {
                "const": "no_macros"
              },
              {
                "const": "no_maintenance"
              },
              {
                "const": "no_assigned_slots"
              },
              {
                "const": "no_slots"
              },
              {
                "const": "no_printers"
              },
              {
                "const": "slot_missing"
              },
              {
                "const": "slot_unassigned"
              },
              {
                "const": "slot_empty"
              },
              {
                "const": "slot_reading"
              },
              {
                "const": "not_ams_slot"
              },
              {
                "const": "no_temperature"
              },
              {
                "const": "spool_empty"
              },
              {
                "const": "already_empty"
              },
              {
                "const": "spool_elsewhere"
              }
            ]
          },
          "reason": {
            "type": "string",
            "description": "Why the action is unavailable, in words the app shows as-is"
          },
          "detail": {
            "type": "string",
            "description": "A second line the app shows under the action's button"
          },
          "param": {
            "oneOf": [
              {
                "type": "object",
                "properties": {
                  "kind": {
                    "const": "slot"
                  },
                  "options": {
                    "type": "array",
                    "items": {
                      "$ref": "#/components/schemas/QrSlotState"
                    }
                  },
                  "default": {
                    "oneOf": [
                      {
                        "type": "null"
                      },
                      {
                        "$ref": "#/components/schemas/QrSlotRef"
                      }
                    ]
                  }
                },
                "required": [
                  "kind",
                  "options",
                  "default"
                ]
              },
              {
                "type": "object",
                "properties": {
                  "kind": {
                    "const": "printer_slot"
                  },
                  "options": {
                    "type": "array",
                    "items": {
                      "$ref": "#/components/schemas/QrPrinterSlotsOption"
                    }
                  },
                  "default": {
                    "oneOf": [
                      {
                        "type": "null"
                      },
                      {
                        "$ref": "#/components/schemas/QrSlotRefprinterIdstring"
                      }
                    ]
                  }
                },
                "required": [
                  "kind",
                  "options",
                  "default"
                ]
              },
              {
                "type": "object",
                "properties": {
                  "kind": {
                    "const": "choice"
                  },
                  "key": {
                    "oneOf": [
                      {
                        "const": "enrollmentId"
                      },
                      {
                        "const": "macroId"
                      },
                      {
                        "const": "jobId"
                      }
                    ]
                  },
                  "title": {
                    "type": "string",
                    "description": "The sheet's title, such as \"Send a job\""
                  },
                  "options": {
                    "type": "array",
                    "items": {
                      "$ref": "#/components/schemas/QrChoiceOption"
                    }
                  },
                  "default": {
                    "oneOf": [
                      {
                        "type": "null"
                      },
                      {
                        "type": "string"
                      }
                    ]
                  }
                },
                "required": [
                  "kind",
                  "key",
                  "title",
                  "options",
                  "default"
                ]
              },
              {
                "type": "object",
                "properties": {
                  "kind": {
                    "const": "variant"
                  },
                  "spools": {
                    "type": "array",
                    "items": {
                      "$ref": "#/components/schemas/QrSpoolOption"
                    }
                  }
                },
                "required": [
                  "kind"
                ]
              },
              {
                "type": "object",
                "properties": {
                  "kind": {
                    "const": "grams"
                  },
                  "default": {
                    "type": "number",
                    "description": "The weight the entry opens with"
                  },
                  "min": {
                    "type": "number",
                    "description": "The least weight it accepts: 1 to register a spool, 0 to update one"
                  }
                },
                "required": [
                  "kind",
                  "default",
                  "min"
                ]
              }
            ],
            "description": "The choice to make before running it; the app opens a sheet with the default picked"
          }
        },
        "required": [
          "id",
          "label",
          "kind",
          "runs",
          "permission",
          "default",
          "destructive",
          "confirm",
          "available"
        ]
      },
      "QrSlotState": {
        "type": "object",
        "properties": {
          "amsIndex": {
            "type": "number",
            "description": "-1 for an external spool holder"
          },
          "slotIndex": {
            "type": "number"
          },
          "ref": {
            "type": "string",
            "description": "The slot as the app names it: A1/3, S1"
          },
          "group": {
            "type": "string",
            "description": "Slots are listed by unit: \"AMS 1\", \"External\""
          },
          "assigned": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/QrSlotFilament"
              }
            ]
          },
          "loaded": {
            "type": "boolean",
            "description": "The printer reports a spool in the slot"
          }
        },
        "required": [
          "amsIndex",
          "slotIndex",
          "ref",
          "group",
          "assigned",
          "loaded"
        ],
        "description": "One slot of a printer, with what is assigned to it and what the printer sees."
      },
      "QrSlotRef": {
        "type": "object",
        "properties": {
          "amsIndex": {
            "type": "number"
          },
          "slotIndex": {
            "type": "number"
          }
        },
        "required": [
          "amsIndex",
          "slotIndex"
        ]
      },
      "QrPrinterSlotsOption": {
        "type": "object",
        "properties": {
          "printerId": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "slots": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/QrSlotState"
            }
          }
        },
        "required": [
          "printerId",
          "name",
          "slots"
        ]
      },
      "QrSlotRefprinterIdstring": {
        "type": "object",
        "properties": {
          "amsIndex": {
            "type": "number"
          },
          "slotIndex": {
            "type": "number"
          },
          "printerId": {
            "type": "string"
          }
        },
        "required": [
          "amsIndex",
          "slotIndex",
          "printerId"
        ]
      },
      "QrChoiceOption": {
        "type": "object",
        "properties": {
          "value": {
            "type": "string"
          },
          "label": {
            "type": "string"
          },
          "hint": {
            "type": "string",
            "description": "A short second line, such as \"Overdue\" or \"3 plates\""
          }
        },
        "required": [
          "value",
          "label"
        ]
      },
      "QrSpoolOption": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "variantId": {
            "type": "string"
          },
          "remainingGrams": {
            "type": "number"
          },
          "code": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ],
            "description": "Its label code"
          },
          "location": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/QrSpoolLocation"
              }
            ]
          }
        },
        "required": [
          "id",
          "variantId",
          "remainingGrams",
          "code",
          "location"
        ],
        "description": "A spool the slot sheet can offer once a filament is picked."
      },
      "ResolveQrTagsRequest": {
        "type": "object",
        "properties": {
          "payloads": {
            "type": "array",
            "items": {
              "type": "string",
              "maxLength": 1024
            },
            "minItems": 1,
            "maxItems": 2,
            "title": "The scanned QR text, one per tag. Two payloads are a pair scan",
            "description": "The scanned QR text, one per tag. Two payloads are a pair scan."
          },
          "refresh": {
            "type": "boolean",
            "description": "Re-read tags that were just scanned, for example after an action, without\ncounting another scan."
          },
          "target": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/QrPrinterTagTarget"
              },
              {
                "$ref": "#/components/schemas/QrSlotTagTarget"
              },
              {
                "$ref": "#/components/schemas/QrVariantTagTarget"
              },
              {
                "$ref": "#/components/schemas/QrSpoolTagTarget"
              }
            ],
            "discriminator": {
              "propertyName": "entityType",
              "mapping": {
                "printer": "#/components/schemas/QrPrinterTagTarget",
                "printer_slot": "#/components/schemas/QrSlotTagTarget",
                "material_variant": "#/components/schemas/QrVariantTagTarget",
                "material_instance": "#/components/schemas/QrSpoolTagTarget"
              }
            },
            "description": "What to set a scanned blank up for when it has no tag to scan with it,\nas on the blank's web page. Send it with one payload, a blank's; the\nblank and the target resolve as a pair. Ignored once the tag isn't a\nblank anymore, so the response says what it is now."
          }
        },
        "required": [
          "payloads"
        ]
      },
      "QrExecuteResult": {
        "type": "object",
        "properties": {
          "action": {
            "oneOf": [
              {
                "const": "printer.confirmReady"
              },
              {
                "const": "printer.open"
              },
              {
                "const": "printer.unready"
              },
              {
                "const": "printer.pause"
              },
              {
                "const": "printer.resume"
              },
              {
                "const": "printer.stop"
              },
              {
                "const": "printer.home"
              },
              {
                "const": "printer.runQueue"
              },
              {
                "const": "printer.enable"
              },
              {
                "const": "printer.disable"
              },
              {
                "const": "printer.sendJob"
              },
              {
                "const": "printer.runMacro"
              },
              {
                "const": "printer.maintenanceDone"
              },
              {
                "const": "printer.unloadFilament"
              },
              {
                "const": "printer.clearAllSlots"
              },
              {
                "const": "printer.unbindTag"
              },
              {
                "const": "slot.assign"
              },
              {
                "const": "slot.load"
              },
              {
                "const": "slot.clear"
              },
              {
                "const": "slot.refreshRfid"
              },
              {
                "const": "slot.openPrinter"
              },
              {
                "const": "slot.unbindTag"
              },
              {
                "const": "variant.assign"
              },
              {
                "const": "variant.registerSpool"
              },
              {
                "const": "variant.unbindTag"
              },
              {
                "const": "spool.updateGrams"
              },
              {
                "const": "spool.remove"
              },
              {
                "const": "spool.load"
              },
              {
                "const": "spool.markEmpty"
              },
              {
                "const": "spool.openPrinter"
              },
              {
                "const": "spool.unbindTag"
              },
              {
                "const": "pair.assignVariantToPrinter"
              },
              {
                "const": "pair.assignVariantToSlot"
              },
              {
                "const": "pair.moveSlot"
              },
              {
                "const": "pair.swapSlots"
              },
              {
                "const": "pair.loadSpoolIntoPrinter"
              },
              {
                "const": "pair.loadSpoolIntoSlot"
              },
              {
                "const": "pair.bindBlankAsNewSpool"
              },
              {
                "const": "pair.bindBlankToVariant"
              },
              {
                "const": "pair.bindBlankToPrinter"
              },
              {
                "const": "pair.bindBlankToSlot"
              },
              {
                "const": "pair.bindBlankToSpool"
              }
            ]
          },
          "result": {
            "type": "object",
            "properties": {
              "status": {
                "const": "done"
              },
              "message": {
                "type": "string"
              }
            },
            "required": [
              "status",
              "message"
            ]
          },
          "tags": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/QrTagDisplay"
            },
            "description": "The tags with their target's state after the action; empty when it couldn't be read"
          },
          "actions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/QrEvaluatedAction"
            },
            "description": "The tag's actions re-evaluated after this one ran, so the app can refresh\nwithout resolving again. Absent when the printer couldn't be read back;\nresolve with `refresh: true` for them."
          }
        },
        "required": [
          "action",
          "result",
          "tags"
        ]
      },
      "ExecuteQrActionHeaders": {
        "type": "object",
        "properties": {
          "idempotency-key": {
            "type": "string",
            "maxLength": 128,
            "description": "One key per user action, reused when that action is retried. A key that\nalready finished returns its first response without running again."
          }
        }
      },
      "ExecuteQrActionRequest": {
        "type": "object",
        "properties": {
          "tagIds": {
            "type": "array",
            "items": {
              "type": "string",
              "pattern": "^([A-Za-z0-9_-]{1,24}|[A-Za-z][A-Za-z0-9]*-[0-9A-Ha-hJ-Kj-kM-Nm-nP-Tp-tV-Zv-z]{20})$"
            },
            "minItems": 1,
            "maxItems": 2,
            "title": "The scanned tags' ids. A blank that isn't set up yet has no row: send the id from its code",
            "description": "The scanned tags' ids. A blank that isn't set up yet has no row: send the id from its code."
          },
          "action": {
            "type": "string",
            "maxLength": 64,
            "description": "An action id from the resolve response, such as printer.pause"
          },
          "params": {
            "$ref": "#/components/schemas/Recordstringstringnumberboolean",
            "description": "The choice the action's `param` asks for: `amsIndex` and `slotIndex` for\na slot, plus `printerId` for a printer's slot, `jobId`, `macroId` or\n`enrollmentId` for a choice, `variantId` for a filament variant (with\n`instanceId` to load one of its spools), and `grams` for a weight."
          },
          "target": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/QrPrinterTagTarget"
              },
              {
                "$ref": "#/components/schemas/QrSlotTagTarget"
              },
              {
                "$ref": "#/components/schemas/QrVariantTagTarget"
              },
              {
                "$ref": "#/components/schemas/QrSpoolTagTarget"
              }
            ],
            "discriminator": {
              "propertyName": "entityType",
              "mapping": {
                "printer": "#/components/schemas/QrPrinterTagTarget",
                "printer_slot": "#/components/schemas/QrSlotTagTarget",
                "material_variant": "#/components/schemas/QrVariantTagTarget",
                "material_instance": "#/components/schemas/QrSpoolTagTarget"
              }
            },
            "description": "The blank's target from a resolve with `target`, for an action that sets the blank up"
          }
        },
        "required": [
          "tagIds",
          "action"
        ]
      },
      "Recordstringstringnumberboolean": {
        "type": "object",
        "properties": {},
        "description": "Construct a type with a set of properties K of type T",
        "additionalProperties": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "number"
            },
            {
              "type": "boolean"
            }
          ]
        }
      },
      "Layout": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "userId": {
            "type": "string"
          },
          "mode": {
            "const": "grid"
          },
          "formatVersion": {
            "type": "number"
          },
          "isDefault": {
            "type": "boolean"
          },
          "definition": {
            "$ref": "#/components/schemas/LayoutDocument"
          },
          "id": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "storeId": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time"
          }
        },
        "required": [
          "name",
          "userId",
          "mode",
          "formatVersion",
          "isDefault",
          "definition",
          "id",
          "storeId",
          "createdAt",
          "updatedAt"
        ],
        "description": "A saved dashboard layout: a declarative arrangement of card instances plus\nthe metadata that lets it be listed, switched between, and (in later\nphases) shared. Layouts are personal — each user keeps their own named set\nwithin a store. `mode` and `formatVersion` are denormalized from the\ndefinition at write time so switchers and future migrations can filter\nwithout parsing every document."
      },
      "LayoutDocument": {
        "type": "object",
        "properties": {
          "formatVersion": {
            "type": "number"
          },
          "mode": {
            "const": "grid"
          },
          "cards": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/LayoutCardPlacement"
            }
          }
        },
        "required": [
          "formatVersion",
          "mode",
          "cards"
        ],
        "description": "A layout is a declarative arrangement of card instances, not code."
      },
      "LayoutCardPlacement": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "card": {
            "type": "string"
          },
          "entityId": {
            "type": "string"
          },
          "x": {
            "type": "number"
          },
          "y": {
            "type": "number"
          },
          "w": {
            "type": "number"
          },
          "h": {
            "type": "number"
          }
        },
        "required": [
          "id",
          "card",
          "x",
          "y",
          "w",
          "h"
        ],
        "description": "One card placed on the grid. `card` names a builtin template\n(`builtin:...`) or a stored card id; `entityId` is the concrete entity the\ntemplate is instantiated for (export swaps these for slots in Phase 5).\n`x/y/w/h` are grid units — `w`x`h` is constrained to the card size classes\nso primitives reflow per class instead of stretching freeform."
      },
      "namestringundefineduserIdstringundefinedmodestringundefinedformatVersionstringundefinedisDefaultstringundefineddefinitionstringundefinedidstringundefinedstoreIdstringundefinedcreatedAtstringundefinedupdatedAtstringundefinedQuerySet...": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "userId": {
            "type": "string"
          },
          "mode": {
            "type": "string"
          },
          "formatVersion": {
            "type": "string"
          },
          "isDefault": {
            "type": "string"
          },
          "definition": {
            "type": "string"
          },
          "id": {
            "type": "string"
          },
          "storeId": {
            "type": "string"
          },
          "createdAt": {
            "type": "string"
          },
          "updatedAt": {
            "type": "string"
          },
          "sort": {
            "type": "string",
            "title": "Sort",
            "description": "Sort specification in format \"field:asc,field2:desc\""
          },
          "limit": {
            "type": "number",
            "minimum": 1,
            "maximum": 1000,
            "title": "Limit",
            "description": "Maximum number of results to return (default: 1000, max: 1000)"
          },
          "offset": {
            "type": "number",
            "minimum": 0,
            "title": "Offset",
            "description": "Number of results to skip for pagination"
          },
          "fields": {
            "type": "string",
            "title": "Fields",
            "description": "Comma-separated list of fields to return"
          },
          "include": {
            "type": "string",
            "title": "Include",
            "description": "Comma-separated list of relations to include (max 4, max 2 levels deep).\nExample: \"linkedParts,linkedParts.part,folder\""
          },
          "meta": {
            "type": "boolean",
            "title": "Meta",
            "description": "If true, returns response with metadata (total, count, hasMore, etc.)"
          },
          "hints": {
            "type": "boolean",
            "title": "Hints",
            "description": "If true, returns AI-friendly hints about available actions. Implies meta=true."
          }
        }
      },
      "SearchQueryDtoLayout": {
        "type": "object",
        "properties": {
          "filter": {
            "$ref": "#/components/schemas/FilterConditionLayout",
            "title": "Filter",
            "description": "Complex filter conditions using logical and field operators.\nAvailable field operators: eq, ne, gt, gte, lt, lte, contains, startsWith, endsWith, in, notIn, isNull, between.\nUsage example: {\"filter\": {\"and\": [{\"name\": {\"contains\": \"benchy\"}}, {\"or\": [{\"type\": {\"eq\": \"3mf\"}}, {\"type\": {\"eq\": \"gcode3mf\"}}]}}}"
          },
          "sort": {
            "type": "string",
            "title": "Sort",
            "description": "Sort specification in format \"field:asc,field2:desc\""
          },
          "limit": {
            "type": "number",
            "minimum": 1,
            "maximum": 1000,
            "title": "Limit",
            "description": "Maximum number of results to return (default: 1000, max: 1000)"
          },
          "offset": {
            "type": "number",
            "minimum": 0,
            "title": "Offset",
            "description": "Number of results to skip for pagination"
          },
          "fields": {
            "type": "string",
            "title": "Fields",
            "description": "Comma-separated list of fields to return"
          },
          "include": {
            "type": "string",
            "title": "Include",
            "description": "Comma-separated list of relations to include (max 4, max 2 levels deep).\nExample: \"linkedParts,linkedParts.part,folder\""
          },
          "meta": {
            "type": "boolean",
            "title": "Meta",
            "description": "If true, returns response with metadata (total, count, hasMore, etc.)"
          },
          "hints": {
            "type": "boolean",
            "title": "Hints",
            "description": "If true, returns AI-friendly hints about available actions. Implies meta=true."
          }
        },
        "title": "Search Query",
        "description": "Complete search request with filter conditions and query settings"
      },
      "FilterConditionLayout": {
        "type": "object",
        "properties": {
          "and": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FilterConditionLayout"
            },
            "title": "AND Conditions",
            "description": "All conditions must be true"
          },
          "or": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FilterConditionLayout"
            },
            "title": "OR Conditions",
            "description": "At least one condition must be true"
          },
          "name": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "userId": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "mode": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "formatVersion": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "isDefault": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "definition": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "id": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "storeId": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "createdAt": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "updatedAt": {
            "$ref": "#/components/schemas/FieldOperators"
          }
        },
        "title": "Filter Condition",
        "description": "Root filter condition that can be either a logical condition (AND/OR) or field-based condition"
      },
      "LayoutInsert": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "minLength": 1,
            "maxLength": 120
          },
          "definition": {
            "$ref": "#/components/schemas/LayoutDefinitionInput"
          },
          "isDefault": {
            "type": "boolean"
          }
        },
        "required": [
          "name",
          "definition"
        ]
      },
      "LayoutDefinitionInput": {
        "type": "object",
        "properties": {
          "formatVersion": {
            "type": "integer"
          },
          "mode": {
            "type": "string",
            "minLength": 1,
            "maxLength": 20
          },
          "cards": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/LayoutCardPlacementInput"
            },
            "maxItems": 200
          }
        },
        "required": [
          "mode",
          "cards"
        ]
      },
      "LayoutCardPlacementInput": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "minLength": 1,
            "maxLength": 40
          },
          "card": {
            "type": "string",
            "minLength": 1,
            "maxLength": 64
          },
          "entityId": {
            "type": "string",
            "maxLength": 40
          },
          "x": {
            "type": "integer"
          },
          "y": {
            "type": "integer"
          },
          "w": {
            "type": "integer"
          },
          "h": {
            "type": "integer"
          }
        },
        "required": [
          "id",
          "card",
          "x",
          "y",
          "w",
          "h"
        ],
        "description": "Wire shape of one placed card. Bounds only — deep validation (placement\nintegrity, size-class snapping, grid clamping) is normalizeLayoutDocument's\njob so the API and the importer reject/degrade identically."
      },
      "LayoutUpdate": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "minLength": 1,
            "maxLength": 120
          },
          "definition": {
            "$ref": "#/components/schemas/LayoutDefinitionInput"
          },
          "isDefault": {
            "type": "boolean"
          }
        }
      },
      "ReportsSummary": {
        "type": "object",
        "properties": {
          "range": {
            "$ref": "#/components/schemas/ReportDateRange"
          },
          "kpis": {
            "type": "object",
            "properties": {
              "jobsPerDay": {
                "oneOf": [
                  {
                    "type": "null"
                  },
                  {
                    "type": "number"
                  }
                ]
              },
              "successRate": {
                "oneOf": [
                  {
                    "type": "null"
                  },
                  {
                    "type": "number"
                  }
                ]
              },
              "wastedGrams": {
                "type": "number"
              },
              "wastedCost": {
                "oneOf": [
                  {
                    "type": "null"
                  },
                  {
                    "type": "number"
                  }
                ]
              },
              "marginPct": {
                "oneOf": [
                  {
                    "type": "null"
                  },
                  {
                    "type": "number"
                  }
                ]
              }
            },
            "required": [
              "jobsPerDay",
              "successRate",
              "wastedGrams",
              "wastedCost",
              "marginPct"
            ]
          },
          "groups": {
            "type": "object",
            "properties": {
              "reliability": {
                "type": "object",
                "properties": {
                  "successRate": {
                    "oneOf": [
                      {
                        "type": "null"
                      },
                      {
                        "type": "number"
                      }
                    ]
                  },
                  "failedAttempts": {
                    "type": "number"
                  },
                  "wastedGrams": {
                    "type": "number"
                  },
                  "topFailureCode": {
                    "oneOf": [
                      {
                        "type": "null"
                      },
                      {
                        "type": "string"
                      }
                    ]
                  }
                },
                "required": [
                  "successRate",
                  "failedAttempts",
                  "wastedGrams",
                  "topFailureCode"
                ]
              },
              "jobs": {
                "type": "object",
                "properties": {
                  "perDay": {
                    "oneOf": [
                      {
                        "type": "null"
                      },
                      {
                        "type": "number"
                      }
                    ]
                  },
                  "queueP95Minutes": {
                    "oneOf": [
                      {
                        "type": "null"
                      },
                      {
                        "type": "number"
                      }
                    ]
                  },
                  "timeMedianRatio": {
                    "oneOf": [
                      {
                        "type": "null"
                      },
                      {
                        "type": "number"
                      }
                    ]
                  },
                  "backlog": {
                    "type": "number"
                  }
                },
                "required": [
                  "perDay",
                  "queueP95Minutes",
                  "timeMedianRatio",
                  "backlog"
                ]
              },
              "printers": {
                "type": "object",
                "properties": {
                  "avgPrintingHoursPerDay": {
                    "oneOf": [
                      {
                        "type": "null"
                      },
                      {
                        "type": "number"
                      }
                    ]
                  },
                  "medianIdleGapMinutes": {
                    "oneOf": [
                      {
                        "type": "null"
                      },
                      {
                        "type": "number"
                      }
                    ]
                  },
                  "topPrinterName": {
                    "oneOf": [
                      {
                        "type": "null"
                      },
                      {
                        "type": "string"
                      }
                    ]
                  },
                  "maintenanceOverdue": {
                    "type": "number"
                  }
                },
                "required": [
                  "avgPrintingHoursPerDay",
                  "medianIdleGapMinutes",
                  "topPrinterName",
                  "maintenanceOverdue"
                ]
              },
              "materials": {
                "type": "object",
                "properties": {
                  "grams": {
                    "type": "number"
                  },
                  "cost": {
                    "oneOf": [
                      {
                        "type": "null"
                      },
                      {
                        "type": "number"
                      }
                    ]
                  },
                  "wasteRatio": {
                    "oneOf": [
                      {
                        "type": "null"
                      },
                      {
                        "type": "number"
                      }
                    ]
                  },
                  "lowestDaysOfCover": {
                    "oneOf": [
                      {
                        "type": "null"
                      },
                      {
                        "type": "number"
                      }
                    ]
                  }
                },
                "required": [
                  "grams",
                  "cost",
                  "wasteRatio",
                  "lowestDaysOfCover"
                ]
              },
              "profit": {
                "type": "object",
                "properties": {
                  "revenue": {
                    "oneOf": [
                      {
                        "type": "null"
                      },
                      {
                        "type": "number"
                      }
                    ]
                  },
                  "marginPct": {
                    "oneOf": [
                      {
                        "type": "null"
                      },
                      {
                        "type": "number"
                      }
                    ]
                  },
                  "costOfFailure": {
                    "oneOf": [
                      {
                        "type": "null"
                      },
                      {
                        "type": "number"
                      }
                    ]
                  }
                },
                "required": [
                  "revenue",
                  "marginPct",
                  "costOfFailure"
                ]
              }
            },
            "required": [
              "reliability",
              "jobs",
              "printers",
              "materials",
              "profit"
            ]
          }
        },
        "required": [
          "range",
          "kpis",
          "groups"
        ]
      },
      "ReportDateRange": {
        "type": "object",
        "properties": {
          "start": {
            "type": "string"
          },
          "end": {
            "type": "string"
          },
          "timezone": {
            "type": "string"
          },
          "days": {
            "type": "number"
          }
        },
        "required": [
          "start",
          "end",
          "timezone",
          "days"
        ]
      },
      "ReportRangeQuery": {
        "type": "object",
        "properties": {
          "start": {
            "type": "string"
          },
          "end": {
            "type": "string"
          },
          "printerIds": {
            "type": "string",
            "title": "Comma-separated printer ids; omitted = all printers",
            "description": "Comma-separated printer ids; omitted = all printers."
          }
        },
        "required": [
          "start",
          "end"
        ],
        "description": "Date-range query shared by all report endpoints.\n`start`/`end` are YYYY-MM-DD calendar dates, inclusive, interpreted in the\nstore's timezone (UTC when the store has none set)."
      },
      "ReliabilityReport": {
        "type": "object",
        "properties": {
          "range": {
            "$ref": "#/components/schemas/ReportDateRange"
          },
          "coverage": {
            "$ref": "#/components/schemas/ReportCoverage"
          },
          "attemptsByDay": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/OutcomeByDay"
            }
          },
          "wasteByDay": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/WasteByDay"
            },
            "title": "Grams + machine-hours on failed/cancelled attempts, per day",
            "description": "Grams + machine-hours on failed/cancelled attempts, per day."
          },
          "yield": {
            "type": "object",
            "properties": {
              "jobsFinished": {
                "type": "number",
                "title": "Distinct jobs in range whose final attempt completed",
                "description": "Distinct jobs in range whose final attempt completed."
              },
              "jobsFirstTry": {
                "type": "number",
                "title": "Jobs that completed on attempt 1 with no retries",
                "description": "Jobs that completed on attempt 1 with no retries."
              },
              "retriedJobs": {
                "type": "number"
              },
              "retryGrams": {
                "type": "number",
                "title": "Grams burned on non-final attempts of eventually-completed jobs",
                "description": "Grams burned on non-final attempts of eventually-completed jobs."
              }
            },
            "required": [
              "jobsFinished",
              "jobsFirstTry",
              "retriedJobs",
              "retryGrams"
            ]
          },
          "failurePareto": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "code": {
                  "type": "string"
                },
                "count": {
                  "type": "number"
                }
              },
              "required": [
                "code",
                "count"
              ]
            },
            "title": "health-error / print-error event codes, descending count",
            "description": "health-error / print-error event codes, descending count."
          },
          "layerHistogram": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "bucketStart": {
                  "type": "number"
                },
                "count": {
                  "type": "number"
                }
              },
              "required": [
                "bucketStart",
                "count"
              ]
            },
            "title": "Failed attempts bucketed by completedLayers/totalLayers",
            "description": "Failed attempts bucketed by completedLayers/totalLayers.\nbucketStart is the inclusive lower bound in percent (0, 5, … 95)."
          },
          "mtbf": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "printerDeviceId": {
                  "type": "string"
                },
                "printerName": {
                  "oneOf": [
                    {
                      "type": "null"
                    },
                    {
                      "type": "string"
                    }
                  ]
                },
                "printingHours": {
                  "type": "number"
                },
                "failures": {
                  "type": "number"
                },
                "mtbfHours": {
                  "oneOf": [
                    {
                      "type": "null"
                    },
                    {
                      "type": "number"
                    }
                  ]
                }
              },
              "required": [
                "printerDeviceId",
                "printerName",
                "printingHours",
                "failures",
                "mtbfHours"
              ]
            }
          },
          "totals": {
            "type": "object",
            "properties": {
              "attempts": {
                "type": "number"
              },
              "completed": {
                "type": "number"
              },
              "failed": {
                "type": "number"
              },
              "cancelled": {
                "type": "number"
              },
              "wastedGrams": {
                "type": "number"
              },
              "wastedHours": {
                "type": "number"
              }
            },
            "required": [
              "attempts",
              "completed",
              "failed",
              "cancelled",
              "wastedGrams",
              "wastedHours"
            ]
          }
        },
        "required": [
          "range",
          "coverage",
          "attemptsByDay",
          "wasteByDay",
          "yield",
          "failurePareto",
          "layerHistogram",
          "mtbf",
          "totals"
        ]
      },
      "ReportCoverage": {
        "type": "object",
        "properties": {
          "attempts": {
            "type": "number"
          },
          "withGrams": {
            "type": "number"
          },
          "withLayers": {
            "type": "number"
          },
          "withTimeEstimate": {
            "type": "number"
          },
          "withWeightEstimate": {
            "type": "number"
          },
          "withQueueTimes": {
            "type": "number"
          }
        },
        "required": [
          "attempts",
          "withGrams",
          "withLayers",
          "withTimeEstimate",
          "withWeightEstimate",
          "withQueueTimes"
        ],
        "description": "Denominators for the coverage indicator every report panel shows.\nprint_history material/estimate fields are snapshots that can be absent;\ncharts must state what fraction of attempts they actually cover."
      },
      "OutcomeByDay": {
        "type": "object",
        "properties": {
          "date": {
            "type": "string"
          },
          "completed": {
            "type": "number"
          },
          "failed": {
            "type": "number"
          },
          "cancelled": {
            "type": "number"
          }
        },
        "required": [
          "date",
          "completed",
          "failed",
          "cancelled"
        ]
      },
      "WasteByDay": {
        "type": "object",
        "properties": {
          "date": {
            "type": "string"
          },
          "grams": {
            "type": "number"
          },
          "hours": {
            "type": "number"
          }
        },
        "required": [
          "date",
          "grams",
          "hours"
        ]
      },
      "JobsReport": {
        "type": "object",
        "properties": {
          "range": {
            "$ref": "#/components/schemas/ReportDateRange"
          },
          "coverage": {
            "$ref": "#/components/schemas/ReportCoverage"
          },
          "queueLatencyByDay": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "date": {
                  "type": "string"
                },
                "p50Minutes": {
                  "oneOf": [
                    {
                      "type": "null"
                    },
                    {
                      "type": "number"
                    }
                  ]
                },
                "p95Minutes": {
                  "oneOf": [
                    {
                      "type": "null"
                    },
                    {
                      "type": "number"
                    }
                  ]
                },
                "started": {
                  "type": "number"
                }
              },
              "required": [
                "date",
                "p50Minutes",
                "p95Minutes",
                "started"
              ]
            },
            "title": "queuedAt -> printingStartedAt for attempts that started that day",
            "description": "queuedAt -> printingStartedAt for attempts that started that day."
          },
          "estimateAccuracyByDay": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "date": {
                  "type": "string"
                },
                "timeMedianRatio": {
                  "oneOf": [
                    {
                      "type": "null"
                    },
                    {
                      "type": "number"
                    }
                  ]
                },
                "weightMedianRatio": {
                  "oneOf": [
                    {
                      "type": "null"
                    },
                    {
                      "type": "number"
                    }
                  ]
                },
                "samples": {
                  "type": "number"
                }
              },
              "required": [
                "date",
                "timeMedianRatio",
                "weightMedianRatio",
                "samples"
              ]
            },
            "title": "actual/estimated ratios; 1.0 = estimate exact, >1 = estimate was light",
            "description": "actual/estimated ratios; 1.0 = estimate exact, >1 = estimate was light."
          },
          "backlogByDay": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "date": {
                  "type": "string"
                },
                "queued": {
                  "type": "number"
                }
              },
              "required": [
                "date",
                "queued"
              ]
            },
            "title": "Jobs queued but not yet printing as of each day's end (store tz)",
            "description": "Jobs queued but not yet printing as of each day's end (store tz)."
          },
          "orderCycle": {
            "type": "object",
            "properties": {
              "shipped": {
                "type": "number"
              },
              "deadlineMisses": {
                "type": "number"
              },
              "p50Hours": {
                "oneOf": [
                  {
                    "type": "null"
                  },
                  {
                    "type": "number"
                  }
                ]
              },
              "p95Hours": {
                "oneOf": [
                  {
                    "type": "null"
                  },
                  {
                    "type": "number"
                  }
                ]
              },
              "byDay": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "date": {
                      "type": "string"
                    },
                    "shipped": {
                      "type": "number"
                    },
                    "p50Hours": {
                      "oneOf": [
                        {
                          "type": "null"
                        },
                        {
                          "type": "number"
                        }
                      ]
                    }
                  },
                  "required": [
                    "date",
                    "shipped",
                    "p50Hours"
                  ]
                }
              }
            },
            "required": [
              "shipped",
              "deadlineMisses",
              "p50Hours",
              "p95Hours",
              "byDay"
            ]
          },
          "totals": {
            "type": "object",
            "properties": {
              "started": {
                "type": "number"
              },
              "queueP50Minutes": {
                "oneOf": [
                  {
                    "type": "null"
                  },
                  {
                    "type": "number"
                  }
                ]
              },
              "queueP95Minutes": {
                "oneOf": [
                  {
                    "type": "null"
                  },
                  {
                    "type": "number"
                  }
                ]
              },
              "timeMedianRatio": {
                "oneOf": [
                  {
                    "type": "null"
                  },
                  {
                    "type": "number"
                  }
                ]
              },
              "weightMedianRatio": {
                "oneOf": [
                  {
                    "type": "null"
                  },
                  {
                    "type": "number"
                  }
                ]
              }
            },
            "required": [
              "started",
              "queueP50Minutes",
              "queueP95Minutes",
              "timeMedianRatio",
              "weightMedianRatio"
            ]
          }
        },
        "required": [
          "range",
          "coverage",
          "queueLatencyByDay",
          "estimateAccuracyByDay",
          "backlogByDay",
          "orderCycle",
          "totals"
        ]
      },
      "PrintersReport": {
        "type": "object",
        "properties": {
          "range": {
            "$ref": "#/components/schemas/ReportDateRange"
          },
          "printers": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "printerDeviceId": {
                  "type": "string"
                },
                "printerName": {
                  "oneOf": [
                    {
                      "type": "null"
                    },
                    {
                      "type": "string"
                    }
                  ]
                }
              },
              "required": [
                "printerDeviceId",
                "printerName"
              ]
            }
          },
          "utilizationByDay": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PrinterDayUtilization"
            }
          },
          "idleGaps": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "printerDeviceId": {
                  "type": "string"
                },
                "printerName": {
                  "oneOf": [
                    {
                      "type": "null"
                    },
                    {
                      "type": "string"
                    }
                  ]
                },
                "medianGapMinutes": {
                  "oneOf": [
                    {
                      "type": "null"
                    },
                    {
                      "type": "number"
                    }
                  ]
                },
                "p95GapMinutes": {
                  "oneOf": [
                    {
                      "type": "null"
                    },
                    {
                      "type": "number"
                    }
                  ]
                },
                "gaps": {
                  "type": "number"
                }
              },
              "required": [
                "printerDeviceId",
                "printerName",
                "medianGapMinutes",
                "p95GapMinutes",
                "gaps"
              ]
            },
            "title": "job-finished -> next printing-assigned-job, per physical machine",
            "description": "job-finished -> next printing-assigned-job, per physical machine."
          },
          "leaderboard": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "printerDeviceId": {
                  "type": "string"
                },
                "printerName": {
                  "oneOf": [
                    {
                      "type": "null"
                    },
                    {
                      "type": "string"
                    }
                  ]
                },
                "prints": {
                  "type": "number"
                },
                "completed": {
                  "type": "number"
                },
                "failed": {
                  "type": "number"
                },
                "grams": {
                  "type": "number"
                },
                "hours": {
                  "type": "number"
                },
                "failureRate": {
                  "oneOf": [
                    {
                      "type": "null"
                    },
                    {
                      "type": "number"
                    }
                  ]
                }
              },
              "required": [
                "printerDeviceId",
                "printerName",
                "prints",
                "completed",
                "failed",
                "grams",
                "hours",
                "failureRate"
              ]
            }
          },
          "maintenance": {
            "type": "object",
            "properties": {
              "enrolled": {
                "type": "number"
              },
              "due": {
                "type": "number"
              },
              "overdue": {
                "type": "number"
              }
            },
            "required": [
              "enrolled",
              "due",
              "overdue"
            ]
          },
          "foreignJobEvents": {
            "type": "number",
            "title": "printing-foreign-job events in range — machines driven outside Printago",
            "description": "printing-foreign-job events in range — machines driven outside Printago."
          }
        },
        "required": [
          "range",
          "printers",
          "utilizationByDay",
          "idleGaps",
          "leaderboard",
          "maintenance",
          "foreignJobEvents"
        ]
      },
      "PrinterDayUtilization": {
        "type": "object",
        "properties": {
          "date": {
            "type": "string"
          },
          "printerDeviceId": {
            "type": "string"
          },
          "printingHours": {
            "type": "number"
          }
        },
        "required": [
          "date",
          "printerDeviceId",
          "printingHours"
        ]
      },
      "MaterialsReport": {
        "type": "object",
        "properties": {
          "range": {
            "$ref": "#/components/schemas/ReportDateRange"
          },
          "coverage": {
            "$ref": "#/components/schemas/ReportCoverage"
          },
          "usageByDay": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "date": {
                  "type": "string"
                },
                "type": {
                  "type": "string"
                },
                "grams": {
                  "type": "number"
                },
                "cost": {
                  "oneOf": [
                    {
                      "type": "null"
                    },
                    {
                      "type": "number"
                    }
                  ]
                }
              },
              "required": [
                "date",
                "type",
                "grams",
                "cost"
              ]
            },
            "title": "Stacked by material type; top types kept, tail folded into \"Other\"",
            "description": "Stacked by material type; top types kept, tail folded into \"Other\"."
          },
          "byMaterial": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "type": {
                  "type": "string"
                },
                "brand": {
                  "oneOf": [
                    {
                      "type": "null"
                    },
                    {
                      "type": "string"
                    }
                  ]
                },
                "grams": {
                  "type": "number"
                },
                "wastedGrams": {
                  "type": "number"
                },
                "wasteRatio": {
                  "oneOf": [
                    {
                      "type": "null"
                    },
                    {
                      "type": "number"
                    }
                  ]
                },
                "cost": {
                  "oneOf": [
                    {
                      "type": "null"
                    },
                    {
                      "type": "number"
                    }
                  ]
                }
              },
              "required": [
                "type",
                "brand",
                "grams",
                "wastedGrams",
                "wasteRatio",
                "cost"
              ]
            }
          },
          "spools": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "instanceId": {
                  "type": "string"
                },
                "name": {
                  "type": "string"
                },
                "type": {
                  "type": "string"
                },
                "color": {
                  "oneOf": [
                    {
                      "type": "null"
                    },
                    {
                      "type": "string"
                    }
                  ]
                },
                "serial": {
                  "oneOf": [
                    {
                      "type": "null"
                    },
                    {
                      "type": "string"
                    }
                  ],
                  "title": "The roll's own serial, so a burn-down row is traceable to a physical spool",
                  "description": "The roll's own serial, so a burn-down row is traceable to a physical spool."
                },
                "serialSource": {
                  "oneOf": [
                    {
                      "type": "null"
                    },
                    {
                      "const": "tag"
                    },
                    {
                      "const": "manual"
                    },
                    {
                      "const": "integration"
                    }
                  ]
                },
                "remainingGrams": {
                  "type": "number"
                },
                "dailyRunRateGrams": {
                  "oneOf": [
                    {
                      "type": "null"
                    },
                    {
                      "type": "number"
                    }
                  ]
                },
                "daysOfCover": {
                  "oneOf": [
                    {
                      "type": "null"
                    },
                    {
                      "type": "number"
                    }
                  ]
                }
              },
              "required": [
                "instanceId",
                "name",
                "type",
                "color",
                "serial",
                "serialSource",
                "remainingGrams",
                "dailyRunRateGrams",
                "daysOfCover"
              ]
            }
          }
        },
        "required": [
          "range",
          "coverage",
          "usageByDay",
          "byMaterial",
          "spools"
        ]
      },
      "ProfitReport": {
        "type": "object",
        "properties": {
          "month": {
            "type": "string"
          },
          "timezone": {
            "type": "string"
          },
          "currency": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "revenue": {
            "type": "object",
            "properties": {
              "total": {
                "type": "number"
              },
              "bySource": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "source": {
                      "type": "string"
                    },
                    "amount": {
                      "type": "number"
                    },
                    "orders": {
                      "type": "number"
                    }
                  },
                  "required": [
                    "source",
                    "amount",
                    "orders"
                  ]
                }
              }
            },
            "required": [
              "total",
              "bySource"
            ]
          },
          "costs": {
            "type": "object",
            "properties": {
              "filamentGrams": {
                "type": "number"
              },
              "filamentCost": {
                "oneOf": [
                  {
                    "type": "null"
                  },
                  {
                    "type": "number"
                  }
                ]
              },
              "machineHours": {
                "type": "number"
              },
              "machineRate": {
                "oneOf": [
                  {
                    "type": "null"
                  },
                  {
                    "type": "number"
                  }
                ]
              },
              "machineCost": {
                "oneOf": [
                  {
                    "type": "null"
                  },
                  {
                    "type": "number"
                  }
                ]
              },
              "laborCost": {
                "oneOf": [
                  {
                    "type": "null"
                  },
                  {
                    "type": "number"
                  }
                ]
              },
              "total": {
                "oneOf": [
                  {
                    "type": "null"
                  },
                  {
                    "type": "number"
                  }
                ]
              }
            },
            "required": [
              "filamentGrams",
              "filamentCost",
              "machineHours",
              "machineRate",
              "machineCost",
              "laborCost",
              "total"
            ]
          },
          "costOfFailure": {
            "type": "object",
            "properties": {
              "grams": {
                "type": "number"
              },
              "hours": {
                "type": "number"
              },
              "attempts": {
                "type": "number"
              },
              "cost": {
                "oneOf": [
                  {
                    "type": "null"
                  },
                  {
                    "type": "number"
                  }
                ]
              }
            },
            "required": [
              "grams",
              "hours",
              "attempts",
              "cost"
            ]
          },
          "marginBySku": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "skuId": {
                  "type": "string"
                },
                "skuName": {
                  "oneOf": [
                    {
                      "type": "null"
                    },
                    {
                      "type": "string"
                    }
                  ]
                },
                "units": {
                  "type": "number"
                },
                "revenue": {
                  "type": "number"
                },
                "cost": {
                  "oneOf": [
                    {
                      "type": "null"
                    },
                    {
                      "type": "number"
                    }
                  ]
                },
                "marginPct": {
                  "oneOf": [
                    {
                      "type": "null"
                    },
                    {
                      "type": "number"
                    }
                  ]
                }
              },
              "required": [
                "skuId",
                "skuName",
                "units",
                "revenue",
                "cost",
                "marginPct"
              ]
            }
          },
          "caveats": {
            "type": "array",
            "items": {
              "oneOf": [
                {
                  "const": "revenue-evenly-allocated"
                },
                {
                  "const": "no-electricity-model"
                },
                {
                  "const": "rates-current-value"
                },
                {
                  "const": "orders-missing-price"
                },
                {
                  "const": "no-cost-components"
                }
              ]
            }
          }
        },
        "required": [
          "month",
          "timezone",
          "currency",
          "revenue",
          "costs",
          "costOfFailure",
          "marginBySku",
          "caveats"
        ]
      },
      "ProfitReportQuery": {
        "type": "object",
        "properties": {
          "month": {
            "type": "string",
            "title": "YYYY-MM, interpreted in the store's timezone",
            "description": "YYYY-MM, interpreted in the store's timezone."
          }
        },
        "required": [
          "month"
        ]
      },
      "UsageByUserReport": {
        "type": "object",
        "properties": {
          "from": {
            "type": "string"
          },
          "to": {
            "type": "string"
          },
          "timezone": {
            "type": "string"
          },
          "rate": {
            "oneOf": [
              {
                "const": "cost"
              },
              {
                "const": "billable"
              }
            ]
          },
          "summary": {
            "type": "object",
            "properties": {
              "billCents": {
                "type": "number",
                "title": "Equals the users' bill, summed",
                "description": "Equals the users' bill, summed."
              },
              "costCents": {
                "type": "number",
                "title": "Every print in range at cost, like `grams`: the users' plus the unattributed",
                "description": "Every print in range at cost, like `grams`: the users' plus the unattributed."
              },
              "grams": {
                "type": "number",
                "title": "Every print in range: the users' plus the unattributed. With `actorIds`, the picked people's alone",
                "description": "Every print in range: the users' plus the unattributed. With `actorIds`, the picked people's alone."
              },
              "prints": {
                "type": "number"
              },
              "users": {
                "type": "number"
              },
              "unratedGrams": {
                "type": "number"
              },
              "unattributedGrams": {
                "type": "number",
                "title": "The part of `grams` and `prints` whose job has no creator recorded. Never billed to anyone. Zero with `actorIds`",
                "description": "The part of `grams` and `prints` whose job has no creator recorded. Never billed to anyone. Zero with `actorIds`."
              },
              "unattributedPrints": {
                "type": "number"
              },
              "unattributedCostCents": {
                "type": "number"
              }
            },
            "required": [
              "billCents",
              "costCents",
              "grams",
              "prints",
              "users",
              "unratedGrams",
              "unattributedGrams",
              "unattributedPrints",
              "unattributedCostCents"
            ]
          },
          "users": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/UsageByUserRow"
            },
            "title": "Highest bill first",
            "description": "Highest bill first."
          },
          "actors": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/UsageActor"
            },
            "title": "Everyone with usage in the range and printers, whatever `actorIds` picks",
            "description": "Everyone with usage in the range and printers, whatever `actorIds` picks."
          },
          "unattributedJobs": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/UsageByUserJob"
            },
            "title": "The lines of prints whose job has no creator recorded, newest first; never billed. Empty with `actorIds`",
            "description": "The lines of prints whose job has no creator recorded, newest first; never billed. Empty with `actorIds`."
          }
        },
        "required": [
          "from",
          "to",
          "timezone",
          "rate",
          "summary",
          "users",
          "actors",
          "unattributedJobs"
        ]
      },
      "UsageByUserRow": {
        "type": "object",
        "properties": {
          "prints": {
            "type": "number",
            "title": "Prints, counted once however many spools each drew from",
            "description": "Prints, counted once however many spools each drew from."
          },
          "grams": {
            "type": "number"
          },
          "costCents": {
            "type": "number",
            "title": "Sum of the lines' cost",
            "description": "Sum of the lines' cost."
          },
          "billCents": {
            "type": "number",
            "title": "Sum of the lines' bill. Lines with no rate add nothing",
            "description": "Sum of the lines' bill. Lines with no rate add nothing."
          },
          "unratedGrams": {
            "type": "number",
            "title": "Grams on lines with no rate, which are not billed",
            "description": "Grams on lines with no rate, which are not billed."
          },
          "jobs": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/UsageByUserJob"
            },
            "title": "Newest first",
            "description": "Newest first."
          },
          "actorId": {
            "type": "string"
          },
          "label": {
            "type": "string",
            "title": "A person's email or an API key's name, as recorded when the job was queued",
            "description": "A person's email or an API key's name, as recorded when the job was queued."
          },
          "name": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ],
            "title": "A person's display name, when they have one",
            "description": "A person's display name, when they have one."
          },
          "type": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ],
            "title": "`user`, `api_key`, or another recorded actor type; null when unknown",
            "description": "`user`, `api_key`, or another recorded actor type; null when unknown."
          }
        },
        "required": [
          "prints",
          "grams",
          "costCents",
          "billCents",
          "unratedGrams",
          "jobs",
          "actorId",
          "label",
          "name",
          "type"
        ]
      },
      "UsageByUserJob": {
        "type": "object",
        "properties": {
          "at": {
            "type": "string",
            "title": "When the print ended",
            "description": "When the print ended.",
            "format": "date-time"
          },
          "printHistoryId": {
            "type": "string"
          },
          "printJobId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "label": {
            "type": "string",
            "title": "The job's name",
            "description": "The job's name."
          },
          "materialId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "materialLabel": {
            "type": "string",
            "title": "Color · material, e.g. `Black · Bambu Lab PLA Basic`",
            "description": "Color · material, e.g. `Black · Bambu Lab PLA Basic`."
          },
          "color": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ],
            "title": "The color's hex, when it has one",
            "description": "The color's hex, when it has one."
          },
          "spoolId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ],
            "title": "The tracked spool it drew from, still set once that spool is deleted; null for untracked stock",
            "description": "The tracked spool it drew from, still set once that spool is deleted; null for untracked stock."
          },
          "spoolCode": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ],
            "title": "The spool's serial or label code, when it has one",
            "description": "The spool's serial or label code, when it has one."
          },
          "spoolDeleted": {
            "type": "boolean",
            "title": "The spool has since been deleted, so it has no page to open",
            "description": "The spool has since been deleted, so it has no page to open."
          },
          "grams": {
            "type": "number"
          },
          "costCents": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "number"
              }
            ],
            "title": "At the spool's price when it printed, else the color's, else the material's; null with none",
            "description": "At the spool's price when it printed, else the color's, else the material's; null with none."
          },
          "ratePer1000g": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "number"
              }
            ],
            "title": "Cents per kg the line was billed at: the cost price, or the billable rate in effect when it printed",
            "description": "Cents per kg the line was billed at: the cost price, or the billable rate in effect when it printed."
          },
          "billCents": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "number"
              }
            ],
            "title": "Rounded to the cent. Null when there is no rate (or, at cost, no price): it is not billed",
            "description": "Rounded to the cent. Null when there is no rate (or, at cost, no price): it is not billed."
          }
        },
        "required": [
          "at",
          "printHistoryId",
          "printJobId",
          "label",
          "materialId",
          "materialLabel",
          "color",
          "spoolId",
          "spoolCode",
          "spoolDeleted",
          "grams",
          "costCents",
          "ratePer1000g",
          "billCents"
        ],
        "description": "What one print drew from one spool or color, and what it bills."
      },
      "UsageActor": {
        "type": "object",
        "properties": {
          "actorId": {
            "type": "string"
          },
          "label": {
            "type": "string",
            "title": "A person's email or an API key's name, as recorded when the job was queued",
            "description": "A person's email or an API key's name, as recorded when the job was queued."
          },
          "name": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ],
            "title": "A person's display name, when they have one",
            "description": "A person's display name, when they have one."
          },
          "type": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ],
            "title": "`user`, `api_key`, or another recorded actor type; null when unknown",
            "description": "`user`, `api_key`, or another recorded actor type; null when unknown."
          }
        },
        "required": [
          "actorId",
          "label",
          "name",
          "type"
        ],
        "description": "Whoever queued a job: a person (by Firebase uid) or an API key."
      },
      "UsageByUserQuery": {
        "type": "object",
        "properties": {
          "from": {
            "type": "string",
            "title": "YYYY-MM-DD, inclusive, in the store's timezone",
            "description": "YYYY-MM-DD, inclusive, in the store's timezone."
          },
          "to": {
            "type": "string",
            "title": "YYYY-MM-DD, inclusive, in the store's timezone",
            "description": "YYYY-MM-DD, inclusive, in the store's timezone."
          },
          "printerIds": {
            "type": "string",
            "title": "Comma-separated printer ids; omitted = all printers",
            "description": "Comma-separated printer ids; omitted = all printers."
          },
          "actorIds": {
            "type": "string",
            "title": "Comma-separated actor ids (whoever queued the job); omitted = everyone",
            "description": "Comma-separated actor ids (whoever queued the job); omitted = everyone."
          },
          "rate": {
            "oneOf": [
              {
                "const": "cost"
              },
              {
                "const": "billable"
              }
            ],
            "title": "What a print is billed at. Default `cost`",
            "description": "What a print is billed at. Default `cost`."
          }
        },
        "required": [
          "from",
          "to"
        ]
      },
      "ApiKey": {
        "type": "object",
        "properties": {
          "hash": {
            "type": "string"
          },
          "salt": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "active": {
            "type": "boolean"
          },
          "managed": {
            "type": "boolean"
          },
          "managedBy": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "externalRef": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "integrationId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "pattern": "^[a-z0-9]{24}$"
              }
            ],
            "description": "Optional link to integration - when integration is deleted, this API key is also deleted"
          },
          "fullAccess": {
            "type": "boolean"
          },
          "ipAllowlist": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "array",
                "items": {
                  "type": "string"
                }
              }
            ]
          },
          "createdBy": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "lastUsedAt": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "format": "date-time"
              }
            ]
          },
          "expiresAt": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "format": "date-time"
              }
            ]
          },
          "id": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "storeId": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time"
          }
        },
        "required": [
          "hash",
          "salt",
          "name",
          "active",
          "managed",
          "fullAccess",
          "id",
          "storeId",
          "createdAt",
          "updatedAt"
        ]
      },
      "hashstringundefinedsaltstringundefinednamestringundefinedactivestringundefinedmanagedstringundefinedmanagedBystringundefinedexternalRefstringundefined...9more...updatedAtstringundefinedQuerySettings...": {
        "type": "object",
        "properties": {
          "hash": {
            "type": "string"
          },
          "salt": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "active": {
            "type": "string"
          },
          "managed": {
            "type": "string"
          },
          "managedBy": {
            "type": "string"
          },
          "externalRef": {
            "type": "string"
          },
          "integrationId": {
            "type": "string",
            "description": "Optional link to integration - when integration is deleted, this API key is also deleted"
          },
          "fullAccess": {
            "type": "string"
          },
          "ipAllowlist": {
            "type": "string"
          },
          "createdBy": {
            "type": "string"
          },
          "lastUsedAt": {
            "type": "string"
          },
          "expiresAt": {
            "type": "string"
          },
          "id": {
            "type": "string"
          },
          "storeId": {
            "type": "string"
          },
          "createdAt": {
            "type": "string"
          },
          "updatedAt": {
            "type": "string"
          },
          "sort": {
            "type": "string",
            "title": "Sort",
            "description": "Sort specification in format \"field:asc,field2:desc\""
          },
          "limit": {
            "type": "number",
            "minimum": 1,
            "maximum": 1000,
            "title": "Limit",
            "description": "Maximum number of results to return (default: 1000, max: 1000)"
          },
          "offset": {
            "type": "number",
            "minimum": 0,
            "title": "Offset",
            "description": "Number of results to skip for pagination"
          },
          "fields": {
            "type": "string",
            "title": "Fields",
            "description": "Comma-separated list of fields to return"
          },
          "include": {
            "type": "string",
            "title": "Include",
            "description": "Comma-separated list of relations to include (max 4, max 2 levels deep).\nExample: \"linkedParts,linkedParts.part,folder\""
          },
          "meta": {
            "type": "boolean",
            "title": "Meta",
            "description": "If true, returns response with metadata (total, count, hasMore, etc.)"
          },
          "hints": {
            "type": "boolean",
            "title": "Hints",
            "description": "If true, returns AI-friendly hints about available actions. Implies meta=true."
          }
        }
      },
      "SearchQueryDtoApiKey": {
        "type": "object",
        "properties": {
          "filter": {
            "$ref": "#/components/schemas/FilterConditionApiKey",
            "title": "Filter",
            "description": "Complex filter conditions using logical and field operators.\nAvailable field operators: eq, ne, gt, gte, lt, lte, contains, startsWith, endsWith, in, notIn, isNull, between.\nUsage example: {\"filter\": {\"and\": [{\"name\": {\"contains\": \"benchy\"}}, {\"or\": [{\"type\": {\"eq\": \"3mf\"}}, {\"type\": {\"eq\": \"gcode3mf\"}}]}}}"
          },
          "sort": {
            "type": "string",
            "title": "Sort",
            "description": "Sort specification in format \"field:asc,field2:desc\""
          },
          "limit": {
            "type": "number",
            "minimum": 1,
            "maximum": 1000,
            "title": "Limit",
            "description": "Maximum number of results to return (default: 1000, max: 1000)"
          },
          "offset": {
            "type": "number",
            "minimum": 0,
            "title": "Offset",
            "description": "Number of results to skip for pagination"
          },
          "fields": {
            "type": "string",
            "title": "Fields",
            "description": "Comma-separated list of fields to return"
          },
          "include": {
            "type": "string",
            "title": "Include",
            "description": "Comma-separated list of relations to include (max 4, max 2 levels deep).\nExample: \"linkedParts,linkedParts.part,folder\""
          },
          "meta": {
            "type": "boolean",
            "title": "Meta",
            "description": "If true, returns response with metadata (total, count, hasMore, etc.)"
          },
          "hints": {
            "type": "boolean",
            "title": "Hints",
            "description": "If true, returns AI-friendly hints about available actions. Implies meta=true."
          }
        },
        "title": "Search Query",
        "description": "Complete search request with filter conditions and query settings"
      },
      "FilterConditionApiKey": {
        "type": "object",
        "properties": {
          "and": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FilterConditionApiKey"
            },
            "title": "AND Conditions",
            "description": "All conditions must be true"
          },
          "or": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FilterConditionApiKey"
            },
            "title": "OR Conditions",
            "description": "At least one condition must be true"
          },
          "hash": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "salt": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "name": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "active": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "managed": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "managedBy": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "externalRef": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "integrationId": {
            "$ref": "#/components/schemas/FieldOperators",
            "description": "Optional link to integration - when integration is deleted, this API key is also deleted"
          },
          "fullAccess": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "ipAllowlist": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "createdBy": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "lastUsedAt": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "expiresAt": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "id": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "storeId": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "createdAt": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "updatedAt": {
            "$ref": "#/components/schemas/FieldOperators"
          }
        },
        "title": "Filter Condition",
        "description": "Root filter condition that can be either a logical condition (AND/OR) or field-based condition"
      },
      "OneTimeApiKeyInfo": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "storeId": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "key": {
            "type": "string"
          }
        },
        "required": [
          "id",
          "storeId",
          "name",
          "key"
        ]
      },
      "CreateApiKeyRequest": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "fullAccess": {
            "type": "boolean"
          },
          "permissions": {
            "type": "array",
            "items": {
              "oneOf": [
                {
                  "const": "organization.owner"
                },
                {
                  "const": "organization.edit"
                },
                {
                  "const": "organization.delete"
                },
                {
                  "const": "user.view"
                },
                {
                  "const": "user.invite"
                },
                {
                  "const": "user.edit"
                },
                {
                  "const": "user.delete"
                },
                {
                  "const": "permission.view"
                },
                {
                  "const": "permission.grant"
                },
                {
                  "const": "permission.revoke"
                },
                {
                  "const": "part.view"
                },
                {
                  "const": "part.create"
                },
                {
                  "const": "part.edit"
                },
                {
                  "const": "part.delete"
                },
                {
                  "const": "part.export"
                },
                {
                  "const": "sku.view"
                },
                {
                  "const": "sku.create"
                },
                {
                  "const": "sku.edit"
                },
                {
                  "const": "sku.delete"
                },
                {
                  "const": "material.view"
                },
                {
                  "const": "material.create"
                },
                {
                  "const": "material.edit"
                },
                {
                  "const": "material.delete"
                },
                {
                  "const": "material.instance.view"
                },
                {
                  "const": "material.instance.create"
                },
                {
                  "const": "material.instance.edit"
                },
                {
                  "const": "material.instance.delete"
                },
                {
                  "const": "printer.view"
                },
                {
                  "const": "printer.create"
                },
                {
                  "const": "printer.edit"
                },
                {
                  "const": "printer.delete"
                },
                {
                  "const": "printer.control"
                },
                {
                  "const": "printer.ready"
                },
                {
                  "const": "printer.config"
                },
                {
                  "const": "printer.stats"
                },
                {
                  "const": "printer.camera"
                },
                {
                  "const": "profile.view"
                },
                {
                  "const": "profile.create"
                },
                {
                  "const": "profile.edit"
                },
                {
                  "const": "profile.delete"
                },
                {
                  "const": "queue.view"
                },
                {
                  "const": "queue.manage"
                },
                {
                  "const": "queue.override"
                },
                {
                  "const": "job.create"
                },
                {
                  "const": "job.edit.own"
                },
                {
                  "const": "job.edit.all"
                },
                {
                  "const": "job.delete.own"
                },
                {
                  "const": "job.delete.all"
                },
                {
                  "const": "build.view"
                },
                {
                  "const": "build.create"
                },
                {
                  "const": "build.edit"
                },
                {
                  "const": "build.delete"
                },
                {
                  "const": "settings.view"
                },
                {
                  "const": "settings.edit"
                },
                {
                  "const": "integration.view"
                },
                {
                  "const": "integration.manage"
                },
                {
                  "const": "subscription.view"
                },
                {
                  "const": "subscription.manage"
                },
                {
                  "const": "analytics.view"
                },
                {
                  "const": "reports.generate"
                },
                {
                  "const": "audit.log.view"
                },
                {
                  "const": "audit.logs.configure"
                },
                {
                  "const": "order.view"
                },
                {
                  "const": "order.create"
                },
                {
                  "const": "order.edit"
                },
                {
                  "const": "order.delete"
                },
                {
                  "const": "order.print"
                },
                {
                  "const": "apiKey.view"
                },
                {
                  "const": "apiKey.create"
                },
                {
                  "const": "apiKey.edit"
                },
                {
                  "const": "apiKey.delete"
                },
                {
                  "const": "file.download"
                },
                {
                  "const": "maintenance.view"
                },
                {
                  "const": "maintenance.create"
                },
                {
                  "const": "maintenance.edit"
                },
                {
                  "const": "maintenance.delete"
                },
                {
                  "const": "maintenance.complete"
                },
                {
                  "const": "routing.manage"
                },
                {
                  "const": "customizer.manage"
                },
                {
                  "const": "macro.view"
                },
                {
                  "const": "macro.create"
                },
                {
                  "const": "macro.edit"
                },
                {
                  "const": "macro.delete"
                },
                {
                  "const": "macro.run"
                },
                {
                  "const": "card.view"
                },
                {
                  "const": "card.create"
                },
                {
                  "const": "card.edit"
                },
                {
                  "const": "card.delete"
                },
                {
                  "const": "layout.view"
                },
                {
                  "const": "layout.create"
                },
                {
                  "const": "layout.edit"
                },
                {
                  "const": "layout.delete"
                },
                {
                  "const": "classwork.viewer"
                },
                {
                  "const": "classwork.editor"
                },
                {
                  "const": "sequence.view"
                },
                {
                  "const": "sequence.edit"
                },
                {
                  "const": "qr.scan"
                },
                {
                  "const": "qr.manage"
                },
                {
                  "const": "internal.shopify"
                },
                {
                  "const": "queue.admin"
                },
                {
                  "const": "part.viewer"
                },
                {
                  "const": "part.editor"
                },
                {
                  "const": "sku.viewer"
                },
                {
                  "const": "sku.editor"
                },
                {
                  "const": "orders.admin"
                },
                {
                  "const": "material.viewer"
                },
                {
                  "const": "material.editor"
                },
                {
                  "const": "printer.viewer"
                },
                {
                  "const": "printer.editor"
                },
                {
                  "const": "profile.viewer"
                },
                {
                  "const": "profile.editor"
                },
                {
                  "const": "settings.admin"
                },
                {
                  "const": "subscription.admin"
                }
              ]
            }
          },
          "roleIds": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "ipAllowlist": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "expiresAt": {
            "type": "string",
            "format": "date-time"
          }
        },
        "required": [
          "name"
        ]
      },
      "UpdateApiKeyRequest": {
        "type": "object",
        "properties": {
          "active": {
            "type": "boolean"
          },
          "name": {
            "type": "string",
            "minLength": 1
          },
          "fullAccess": {
            "type": "boolean"
          },
          "ipAllowlist": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "array",
                "items": {
                  "type": "string"
                }
              }
            ]
          },
          "permissions": {
            "type": "array",
            "items": {
              "oneOf": [
                {
                  "const": "organization.owner"
                },
                {
                  "const": "organization.edit"
                },
                {
                  "const": "organization.delete"
                },
                {
                  "const": "user.view"
                },
                {
                  "const": "user.invite"
                },
                {
                  "const": "user.edit"
                },
                {
                  "const": "user.delete"
                },
                {
                  "const": "permission.view"
                },
                {
                  "const": "permission.grant"
                },
                {
                  "const": "permission.revoke"
                },
                {
                  "const": "part.view"
                },
                {
                  "const": "part.create"
                },
                {
                  "const": "part.edit"
                },
                {
                  "const": "part.delete"
                },
                {
                  "const": "part.export"
                },
                {
                  "const": "sku.view"
                },
                {
                  "const": "sku.create"
                },
                {
                  "const": "sku.edit"
                },
                {
                  "const": "sku.delete"
                },
                {
                  "const": "material.view"
                },
                {
                  "const": "material.create"
                },
                {
                  "const": "material.edit"
                },
                {
                  "const": "material.delete"
                },
                {
                  "const": "material.instance.view"
                },
                {
                  "const": "material.instance.create"
                },
                {
                  "const": "material.instance.edit"
                },
                {
                  "const": "material.instance.delete"
                },
                {
                  "const": "printer.view"
                },
                {
                  "const": "printer.create"
                },
                {
                  "const": "printer.edit"
                },
                {
                  "const": "printer.delete"
                },
                {
                  "const": "printer.control"
                },
                {
                  "const": "printer.ready"
                },
                {
                  "const": "printer.config"
                },
                {
                  "const": "printer.stats"
                },
                {
                  "const": "printer.camera"
                },
                {
                  "const": "profile.view"
                },
                {
                  "const": "profile.create"
                },
                {
                  "const": "profile.edit"
                },
                {
                  "const": "profile.delete"
                },
                {
                  "const": "queue.view"
                },
                {
                  "const": "queue.manage"
                },
                {
                  "const": "queue.override"
                },
                {
                  "const": "job.create"
                },
                {
                  "const": "job.edit.own"
                },
                {
                  "const": "job.edit.all"
                },
                {
                  "const": "job.delete.own"
                },
                {
                  "const": "job.delete.all"
                },
                {
                  "const": "build.view"
                },
                {
                  "const": "build.create"
                },
                {
                  "const": "build.edit"
                },
                {
                  "const": "build.delete"
                },
                {
                  "const": "settings.view"
                },
                {
                  "const": "settings.edit"
                },
                {
                  "const": "integration.view"
                },
                {
                  "const": "integration.manage"
                },
                {
                  "const": "subscription.view"
                },
                {
                  "const": "subscription.manage"
                },
                {
                  "const": "analytics.view"
                },
                {
                  "const": "reports.generate"
                },
                {
                  "const": "audit.log.view"
                },
                {
                  "const": "audit.logs.configure"
                },
                {
                  "const": "order.view"
                },
                {
                  "const": "order.create"
                },
                {
                  "const": "order.edit"
                },
                {
                  "const": "order.delete"
                },
                {
                  "const": "order.print"
                },
                {
                  "const": "apiKey.view"
                },
                {
                  "const": "apiKey.create"
                },
                {
                  "const": "apiKey.edit"
                },
                {
                  "const": "apiKey.delete"
                },
                {
                  "const": "file.download"
                },
                {
                  "const": "maintenance.view"
                },
                {
                  "const": "maintenance.create"
                },
                {
                  "const": "maintenance.edit"
                },
                {
                  "const": "maintenance.delete"
                },
                {
                  "const": "maintenance.complete"
                },
                {
                  "const": "routing.manage"
                },
                {
                  "const": "customizer.manage"
                },
                {
                  "const": "macro.view"
                },
                {
                  "const": "macro.create"
                },
                {
                  "const": "macro.edit"
                },
                {
                  "const": "macro.delete"
                },
                {
                  "const": "macro.run"
                },
                {
                  "const": "card.view"
                },
                {
                  "const": "card.create"
                },
                {
                  "const": "card.edit"
                },
                {
                  "const": "card.delete"
                },
                {
                  "const": "layout.view"
                },
                {
                  "const": "layout.create"
                },
                {
                  "const": "layout.edit"
                },
                {
                  "const": "layout.delete"
                },
                {
                  "const": "classwork.viewer"
                },
                {
                  "const": "classwork.editor"
                },
                {
                  "const": "sequence.view"
                },
                {
                  "const": "sequence.edit"
                },
                {
                  "const": "qr.scan"
                },
                {
                  "const": "qr.manage"
                },
                {
                  "const": "internal.shopify"
                },
                {
                  "const": "queue.admin"
                },
                {
                  "const": "part.viewer"
                },
                {
                  "const": "part.editor"
                },
                {
                  "const": "sku.viewer"
                },
                {
                  "const": "sku.editor"
                },
                {
                  "const": "orders.admin"
                },
                {
                  "const": "material.viewer"
                },
                {
                  "const": "material.editor"
                },
                {
                  "const": "printer.viewer"
                },
                {
                  "const": "printer.editor"
                },
                {
                  "const": "profile.viewer"
                },
                {
                  "const": "profile.editor"
                },
                {
                  "const": "settings.admin"
                },
                {
                  "const": "subscription.admin"
                }
              ]
            }
          },
          "roleIds": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        }
      },
      "Subscription": {
        "type": "object",
        "properties": {
          "concurrencySlots": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "number",
                "minimum": 1
              }
            ]
          },
          "plan": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "const": "core"
              },
              {
                "const": "personal"
              }
            ]
          },
          "trialEndsAt": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "format": "date-time"
              }
            ]
          },
          "term": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "const": "year"
              },
              {
                "const": "month"
              }
            ]
          },
          "isCommercial": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "boolean"
              }
            ]
          },
          "id": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "storeId": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time"
          }
        },
        "required": [
          "concurrencySlots",
          "plan",
          "trialEndsAt",
          "term",
          "isCommercial",
          "id",
          "storeId",
          "createdAt",
          "updatedAt"
        ]
      },
      "SetAuditLogsEnabledRequest": {
        "type": "object",
        "properties": {
          "enabled": {
            "type": "boolean"
          }
        },
        "required": [
          "enabled"
        ]
      },
      "SearchQueryDtoSubscription": {
        "type": "object",
        "properties": {
          "filter": {
            "$ref": "#/components/schemas/FilterConditionSubscription",
            "title": "Filter",
            "description": "Complex filter conditions using logical and field operators.\nAvailable field operators: eq, ne, gt, gte, lt, lte, contains, startsWith, endsWith, in, notIn, isNull, between.\nUsage example: {\"filter\": {\"and\": [{\"name\": {\"contains\": \"benchy\"}}, {\"or\": [{\"type\": {\"eq\": \"3mf\"}}, {\"type\": {\"eq\": \"gcode3mf\"}}]}}}"
          },
          "sort": {
            "type": "string",
            "title": "Sort",
            "description": "Sort specification in format \"field:asc,field2:desc\""
          },
          "limit": {
            "type": "number",
            "minimum": 1,
            "maximum": 1000,
            "title": "Limit",
            "description": "Maximum number of results to return (default: 1000, max: 1000)"
          },
          "offset": {
            "type": "number",
            "minimum": 0,
            "title": "Offset",
            "description": "Number of results to skip for pagination"
          },
          "fields": {
            "type": "string",
            "title": "Fields",
            "description": "Comma-separated list of fields to return"
          },
          "include": {
            "type": "string",
            "title": "Include",
            "description": "Comma-separated list of relations to include (max 4, max 2 levels deep).\nExample: \"linkedParts,linkedParts.part,folder\""
          },
          "meta": {
            "type": "boolean",
            "title": "Meta",
            "description": "If true, returns response with metadata (total, count, hasMore, etc.)"
          },
          "hints": {
            "type": "boolean",
            "title": "Hints",
            "description": "If true, returns AI-friendly hints about available actions. Implies meta=true."
          }
        },
        "title": "Search Query",
        "description": "Complete search request with filter conditions and query settings"
      },
      "FilterConditionSubscription": {
        "type": "object",
        "properties": {
          "and": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FilterConditionSubscription"
            },
            "title": "AND Conditions",
            "description": "All conditions must be true"
          },
          "or": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FilterConditionSubscription"
            },
            "title": "OR Conditions",
            "description": "At least one condition must be true"
          },
          "concurrencySlots": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "plan": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "trialEndsAt": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "term": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "isCommercial": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "id": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "storeId": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "createdAt": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "updatedAt": {
            "$ref": "#/components/schemas/FieldOperators"
          }
        },
        "title": "Filter Condition",
        "description": "Root filter condition that can be either a logical condition (AND/OR) or field-based condition"
      },
      "Addon": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "addonType": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "requiresCommercial": {
            "type": "boolean"
          },
          "isActive": {
            "type": "boolean"
          },
          "metadata": {
            "$ref": "#/components/schemas/Recordstringany"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time"
          }
        },
        "required": [
          "id",
          "addonType",
          "name",
          "requiresCommercial",
          "isActive",
          "metadata",
          "createdAt",
          "updatedAt"
        ]
      },
      "AddonWithTiers": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "addonType": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "requiresCommercial": {
            "type": "boolean"
          },
          "isActive": {
            "type": "boolean"
          },
          "metadata": {
            "$ref": "#/components/schemas/Recordstringany"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time"
          },
          "tiers": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AddonTier"
            }
          }
        },
        "required": [
          "id",
          "addonType",
          "name",
          "requiresCommercial",
          "isActive",
          "metadata",
          "createdAt",
          "updatedAt",
          "tiers"
        ]
      },
      "AddonTier": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "addonId": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "tierKey": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "name": {
            "type": "string"
          },
          "stripePriceIdMonthly": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "stripePriceIdYearly": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "amountMonthly": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "number"
              }
            ]
          },
          "amountYearly": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "number"
              }
            ]
          },
          "billingType": {
            "oneOf": [
              {
                "const": "subscription"
              },
              {
                "const": "usage"
              }
            ]
          },
          "stripePriceIdUsage": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "unitPrice": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "number"
              }
            ]
          },
          "usageAggregation": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "const": "sum"
              },
              {
                "const": "last_during_period"
              },
              {
                "const": "max"
              }
            ]
          },
          "displayOrder": {
            "type": "number"
          },
          "isActive": {
            "type": "boolean"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time"
          }
        },
        "required": [
          "id",
          "addonId",
          "tierKey",
          "name",
          "stripePriceIdMonthly",
          "stripePriceIdYearly",
          "amountMonthly",
          "amountYearly",
          "billingType",
          "stripePriceIdUsage",
          "unitPrice",
          "usageAggregation",
          "displayOrder",
          "isActive",
          "createdAt",
          "updatedAt"
        ]
      },
      "AddonSubscription": {
        "type": "object",
        "properties": {
          "addonType": {
            "type": "string"
          },
          "tierKey": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "tierId": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "term": {
            "oneOf": [
              {
                "const": "year"
              },
              {
                "const": "month"
              }
            ]
          },
          "id": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "storeId": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time"
          }
        },
        "required": [
          "addonType",
          "tierKey",
          "tierId",
          "term",
          "id",
          "storeId",
          "createdAt",
          "updatedAt"
        ]
      },
      "addonTypestringundefinedtierKeystringundefinedtierIdstringundefinedtermstringundefinedidstringundefinedstoreIdstringundefinedcreatedAtstringundefinedupdatedAtstringundefinedQuerySettings...": {
        "type": "object",
        "properties": {
          "addonType": {
            "type": "string"
          },
          "tierKey": {
            "type": "string"
          },
          "tierId": {
            "type": "string"
          },
          "term": {
            "type": "string"
          },
          "id": {
            "type": "string"
          },
          "storeId": {
            "type": "string"
          },
          "createdAt": {
            "type": "string"
          },
          "updatedAt": {
            "type": "string"
          },
          "sort": {
            "type": "string",
            "title": "Sort",
            "description": "Sort specification in format \"field:asc,field2:desc\""
          },
          "limit": {
            "type": "number",
            "minimum": 1,
            "maximum": 1000,
            "title": "Limit",
            "description": "Maximum number of results to return (default: 1000, max: 1000)"
          },
          "offset": {
            "type": "number",
            "minimum": 0,
            "title": "Offset",
            "description": "Number of results to skip for pagination"
          },
          "fields": {
            "type": "string",
            "title": "Fields",
            "description": "Comma-separated list of fields to return"
          },
          "include": {
            "type": "string",
            "title": "Include",
            "description": "Comma-separated list of relations to include (max 4, max 2 levels deep).\nExample: \"linkedParts,linkedParts.part,folder\""
          },
          "meta": {
            "type": "boolean",
            "title": "Meta",
            "description": "If true, returns response with metadata (total, count, hasMore, etc.)"
          },
          "hints": {
            "type": "boolean",
            "title": "Hints",
            "description": "If true, returns AI-friendly hints about available actions. Implies meta=true."
          }
        }
      },
      "SearchQueryDtoAddonSubscription": {
        "type": "object",
        "properties": {
          "filter": {
            "$ref": "#/components/schemas/FilterConditionAddonSubscription",
            "title": "Filter",
            "description": "Complex filter conditions using logical and field operators.\nAvailable field operators: eq, ne, gt, gte, lt, lte, contains, startsWith, endsWith, in, notIn, isNull, between.\nUsage example: {\"filter\": {\"and\": [{\"name\": {\"contains\": \"benchy\"}}, {\"or\": [{\"type\": {\"eq\": \"3mf\"}}, {\"type\": {\"eq\": \"gcode3mf\"}}]}}}"
          },
          "sort": {
            "type": "string",
            "title": "Sort",
            "description": "Sort specification in format \"field:asc,field2:desc\""
          },
          "limit": {
            "type": "number",
            "minimum": 1,
            "maximum": 1000,
            "title": "Limit",
            "description": "Maximum number of results to return (default: 1000, max: 1000)"
          },
          "offset": {
            "type": "number",
            "minimum": 0,
            "title": "Offset",
            "description": "Number of results to skip for pagination"
          },
          "fields": {
            "type": "string",
            "title": "Fields",
            "description": "Comma-separated list of fields to return"
          },
          "include": {
            "type": "string",
            "title": "Include",
            "description": "Comma-separated list of relations to include (max 4, max 2 levels deep).\nExample: \"linkedParts,linkedParts.part,folder\""
          },
          "meta": {
            "type": "boolean",
            "title": "Meta",
            "description": "If true, returns response with metadata (total, count, hasMore, etc.)"
          },
          "hints": {
            "type": "boolean",
            "title": "Hints",
            "description": "If true, returns AI-friendly hints about available actions. Implies meta=true."
          }
        },
        "title": "Search Query",
        "description": "Complete search request with filter conditions and query settings"
      },
      "FilterConditionAddonSubscription": {
        "type": "object",
        "properties": {
          "and": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FilterConditionAddonSubscription"
            },
            "title": "AND Conditions",
            "description": "All conditions must be true"
          },
          "or": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FilterConditionAddonSubscription"
            },
            "title": "OR Conditions",
            "description": "At least one condition must be true"
          },
          "addonType": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "tierKey": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "tierId": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "term": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "id": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "storeId": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "createdAt": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "updatedAt": {
            "$ref": "#/components/schemas/FieldOperators"
          }
        },
        "title": "Filter Condition",
        "description": "Root filter condition that can be either a logical condition (AND/OR) or field-based condition"
      },
      "SignedUrlsResponse": {
        "type": "object",
        "properties": {
          "signedUrls": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        },
        "required": [
          "signedUrls"
        ]
      },
      "SignedUrlsRequest": {
        "type": "object",
        "properties": {
          "paths": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "duration": {
            "type": "number"
          }
        },
        "required": [
          "paths"
        ]
      },
      "SignedUploadUrlsResponse": {
        "type": "object",
        "properties": {
          "signedUrls": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "path": {
                  "type": "string"
                },
                "uploadUrl": {
                  "type": "string"
                },
                "method": {
                  "oneOf": [
                    {
                      "const": "PUT"
                    },
                    {
                      "const": "POST"
                    }
                  ],
                  "description": "HTTP method to use for the upload. Production GCS signed write URLs are\n'PUT'; the Firebase Storage emulator's REST simple-upload endpoint is\n'POST'. Optional for backwards compatibility — older clients can fall\nback to 'PUT' (or sniff the URL)."
                }
              },
              "required": [
                "path",
                "uploadUrl"
              ]
            }
          }
        },
        "required": [
          "signedUrls"
        ]
      },
      "SignedUploadUrlsRequest": {
        "type": "object",
        "properties": {
          "filenames": {
            "type": "array",
            "items": {
              "type": "string",
              "minLength": 1,
              "maxLength": 1024
            }
          }
        },
        "required": [
          "filenames"
        ]
      },
      "NotificationSetting": {
        "type": "object",
        "properties": {
          "enabled": {
            "type": "boolean"
          },
          "channel": {
            "oneOf": [
              {
                "const": "discord"
              },
              {
                "const": "webhook"
              },
              {
                "const": "slack"
              },
              {
                "const": "pushover"
              },
              {
                "const": "telegram"
              },
              {
                "const": "pubsub"
              }
            ]
          },
          "onJobSucceeded": {
            "type": "boolean"
          },
          "onJobFailed": {
            "type": "boolean"
          },
          "onJobStarted": {
            "type": "boolean"
          },
          "onJobCancelled": {
            "type": "boolean"
          },
          "onPrinterHmsError": {
            "type": "boolean"
          },
          "onPrinterHmsWarning": {
            "type": "boolean"
          },
          "onPrinterOffline": {
            "type": "boolean"
          },
          "onPrinterOnline": {
            "type": "boolean"
          },
          "onPrinterContinuousPrintDisabled": {
            "type": "boolean"
          },
          "onOrderCreatedManual": {
            "type": "boolean"
          },
          "onOrderCreatedRetail": {
            "type": "boolean"
          },
          "onOrderCancelled": {
            "type": "boolean"
          },
          "onOrderClosed": {
            "type": "boolean"
          },
          "onOrdersAutoPrinted": {
            "type": "boolean"
          },
          "onMaintenanceModeOn": {
            "type": "boolean"
          },
          "onMaintenanceModeOff": {
            "type": "boolean"
          },
          "onMaintenanceDueSoon": {
            "type": "boolean"
          },
          "onMaintenanceOverdue": {
            "type": "boolean"
          },
          "onMaterialUsageRecorded": {
            "type": "boolean"
          },
          "onAiFailureDetected": {
            "type": "boolean"
          },
          "id": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "storeId": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time"
          }
        },
        "required": [
          "enabled",
          "channel",
          "onJobSucceeded",
          "onJobFailed",
          "onJobStarted",
          "onJobCancelled",
          "onPrinterHmsError",
          "onPrinterHmsWarning",
          "onPrinterOffline",
          "onPrinterOnline",
          "onPrinterContinuousPrintDisabled",
          "onOrderCreatedManual",
          "onOrderCreatedRetail",
          "onOrderCancelled",
          "onOrderClosed",
          "onOrdersAutoPrinted",
          "onMaintenanceModeOn",
          "onMaintenanceModeOff",
          "onMaintenanceDueSoon",
          "onMaintenanceOverdue",
          "onMaterialUsageRecorded",
          "onAiFailureDetected",
          "id",
          "storeId",
          "createdAt",
          "updatedAt"
        ]
      },
      "enabledstringundefinedchannelstringundefinedonJobSucceededstringundefinedonJobFailedstringundefinedonJobStartedstringundefinedonJobCancelledstringundefined...19more...updatedAtstringundefinedQuerySettings...": {
        "type": "object",
        "properties": {
          "enabled": {
            "type": "string"
          },
          "channel": {
            "type": "string"
          },
          "onJobSucceeded": {
            "type": "string"
          },
          "onJobFailed": {
            "type": "string"
          },
          "onJobStarted": {
            "type": "string"
          },
          "onJobCancelled": {
            "type": "string"
          },
          "onPrinterHmsError": {
            "type": "string"
          },
          "onPrinterHmsWarning": {
            "type": "string"
          },
          "onPrinterOffline": {
            "type": "string"
          },
          "onPrinterOnline": {
            "type": "string"
          },
          "onPrinterContinuousPrintDisabled": {
            "type": "string"
          },
          "onOrderCreatedManual": {
            "type": "string"
          },
          "onOrderCreatedRetail": {
            "type": "string"
          },
          "onOrderCancelled": {
            "type": "string"
          },
          "onOrderClosed": {
            "type": "string"
          },
          "onOrdersAutoPrinted": {
            "type": "string"
          },
          "onMaintenanceModeOn": {
            "type": "string"
          },
          "onMaintenanceModeOff": {
            "type": "string"
          },
          "onMaintenanceDueSoon": {
            "type": "string"
          },
          "onMaintenanceOverdue": {
            "type": "string"
          },
          "onMaterialUsageRecorded": {
            "type": "string"
          },
          "onAiFailureDetected": {
            "type": "string"
          },
          "id": {
            "type": "string"
          },
          "storeId": {
            "type": "string"
          },
          "createdAt": {
            "type": "string"
          },
          "updatedAt": {
            "type": "string"
          },
          "sort": {
            "type": "string",
            "title": "Sort",
            "description": "Sort specification in format \"field:asc,field2:desc\""
          },
          "limit": {
            "type": "number",
            "minimum": 1,
            "maximum": 1000,
            "title": "Limit",
            "description": "Maximum number of results to return (default: 1000, max: 1000)"
          },
          "offset": {
            "type": "number",
            "minimum": 0,
            "title": "Offset",
            "description": "Number of results to skip for pagination"
          },
          "fields": {
            "type": "string",
            "title": "Fields",
            "description": "Comma-separated list of fields to return"
          },
          "include": {
            "type": "string",
            "title": "Include",
            "description": "Comma-separated list of relations to include (max 4, max 2 levels deep).\nExample: \"linkedParts,linkedParts.part,folder\""
          },
          "meta": {
            "type": "boolean",
            "title": "Meta",
            "description": "If true, returns response with metadata (total, count, hasMore, etc.)"
          },
          "hints": {
            "type": "boolean",
            "title": "Hints",
            "description": "If true, returns AI-friendly hints about available actions. Implies meta=true."
          }
        }
      },
      "EnableTelegramNotificationsRequest": {
        "type": "object",
        "properties": {
          "channel": {
            "const": "telegram"
          },
          "data": {
            "type": "object",
            "properties": {
              "botToken": {
                "type": "string"
              },
              "chatId": {
                "type": "string"
              }
            },
            "required": [
              "botToken",
              "chatId"
            ]
          }
        },
        "required": [
          "channel",
          "data"
        ]
      },
      "EnablePushoverNotificationsRequest": {
        "type": "object",
        "properties": {
          "channel": {
            "const": "pushover"
          },
          "data": {
            "type": "object",
            "properties": {
              "appToken": {
                "type": "string"
              },
              "userKey": {
                "type": "string"
              },
              "device": {
                "type": "string"
              },
              "priority": {
                "oneOf": [
                  {
                    "const": -2
                  },
                  {
                    "const": -1
                  },
                  {
                    "const": 0
                  },
                  {
                    "const": 1
                  },
                  {
                    "const": 2
                  }
                ]
              },
              "sound": {
                "type": "string"
              }
            },
            "required": [
              "appToken",
              "userKey"
            ]
          }
        },
        "required": [
          "channel",
          "data"
        ]
      },
      "EnableSlackNotificationsRequest": {
        "type": "object",
        "properties": {
          "channel": {
            "const": "slack"
          },
          "data": {
            "type": "object",
            "properties": {
              "webhookUrl": {
                "type": "string",
                "format": "url"
              }
            },
            "required": [
              "webhookUrl"
            ]
          }
        },
        "required": [
          "channel",
          "data"
        ]
      },
      "EnableWebhookNotificationsRequest": {
        "type": "object",
        "properties": {
          "channel": {
            "const": "webhook"
          },
          "data": {
            "type": "object",
            "properties": {
              "webhookUrl": {
                "type": "string",
                "format": "url"
              },
              "apiKey": {
                "type": "string"
              }
            },
            "required": [
              "webhookUrl",
              "apiKey"
            ]
          }
        },
        "required": [
          "channel",
          "data"
        ]
      },
      "EnableDiscordNotificationsRequest": {
        "type": "object",
        "properties": {
          "channel": {
            "const": "discord"
          },
          "data": {
            "type": "object",
            "properties": {
              "webhookUrl": {
                "type": "string",
                "format": "url"
              }
            },
            "required": [
              "webhookUrl"
            ]
          }
        },
        "required": [
          "channel",
          "data"
        ]
      },
      "NotificationRoute": {
        "type": "object",
        "properties": {
          "notificationId": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "category": {
            "oneOf": [
              {
                "const": "jobs"
              },
              {
                "const": "printers"
              },
              {
                "const": "orders"
              },
              {
                "const": "maintenance"
              },
              {
                "const": "materials"
              }
            ]
          },
          "enabled": {
            "type": "boolean"
          },
          "id": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "storeId": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time"
          }
        },
        "required": [
          "notificationId",
          "category",
          "enabled",
          "id",
          "storeId",
          "createdAt",
          "updatedAt"
        ]
      },
      "UpsertNotificationRouteRequest": {
        "type": "object",
        "properties": {
          "webhookUrl": {
            "type": "string",
            "format": "url"
          },
          "enabled": {
            "type": "boolean"
          }
        }
      },
      "NotificationMention": {
        "type": "object",
        "properties": {
          "notificationId": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "event": {
            "oneOf": [
              {
                "const": "onJobSucceeded"
              },
              {
                "const": "onJobFailed"
              },
              {
                "const": "onJobCancelled"
              },
              {
                "const": "onJobStarted"
              },
              {
                "const": "onPrinterHmsError"
              },
              {
                "const": "onPrinterHmsWarning"
              },
              {
                "const": "onPrinterOffline"
              },
              {
                "const": "onPrinterOnline"
              },
              {
                "const": "onPrinterContinuousPrintDisabled"
              },
              {
                "const": "onOrderCreatedManual"
              },
              {
                "const": "onOrderCreatedRetail"
              },
              {
                "const": "onOrderCancelled"
              },
              {
                "const": "onOrderClosed"
              },
              {
                "const": "onOrdersAutoPrinted"
              },
              {
                "const": "onMaintenanceModeOn"
              },
              {
                "const": "onMaintenanceModeOff"
              },
              {
                "const": "onMaintenanceDueSoon"
              },
              {
                "const": "onMaintenanceOverdue"
              },
              {
                "const": "onMaterialUsageRecorded"
              },
              {
                "const": "onAiFailureDetected"
              }
            ]
          },
          "mentionType": {
            "oneOf": [
              {
                "const": "everyone"
              },
              {
                "const": "here"
              },
              {
                "const": "user"
              },
              {
                "const": "role"
              }
            ]
          },
          "mentionId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "label": {
            "type": "string"
          },
          "id": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "storeId": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time"
          }
        },
        "required": [
          "notificationId",
          "event",
          "mentionType",
          "mentionId",
          "label",
          "id",
          "storeId",
          "createdAt",
          "updatedAt"
        ]
      },
      "CreateNotificationMentionRequest": {
        "type": "object",
        "properties": {
          "event": {
            "oneOf": [
              {
                "const": "onJobSucceeded"
              },
              {
                "const": "onJobFailed"
              },
              {
                "const": "onJobCancelled"
              },
              {
                "const": "onJobStarted"
              },
              {
                "const": "onPrinterHmsError"
              },
              {
                "const": "onPrinterHmsWarning"
              },
              {
                "const": "onPrinterOffline"
              },
              {
                "const": "onPrinterOnline"
              },
              {
                "const": "onPrinterContinuousPrintDisabled"
              },
              {
                "const": "onOrderCreatedManual"
              },
              {
                "const": "onOrderCreatedRetail"
              },
              {
                "const": "onOrderCancelled"
              },
              {
                "const": "onOrderClosed"
              },
              {
                "const": "onOrdersAutoPrinted"
              },
              {
                "const": "onMaintenanceModeOn"
              },
              {
                "const": "onMaintenanceModeOff"
              },
              {
                "const": "onMaintenanceDueSoon"
              },
              {
                "const": "onMaintenanceOverdue"
              },
              {
                "const": "onMaterialUsageRecorded"
              },
              {
                "const": "onAiFailureDetected"
              }
            ]
          },
          "mentionType": {
            "oneOf": [
              {
                "const": "everyone"
              },
              {
                "const": "here"
              },
              {
                "const": "user"
              },
              {
                "const": "role"
              }
            ]
          },
          "mentionId": {
            "type": "string",
            "maxLength": 32
          },
          "label": {
            "type": "string",
            "maxLength": 100
          }
        },
        "required": [
          "event",
          "mentionType"
        ]
      },
      "PartialPickNotificationSettingOnFields": {
        "type": "object",
        "properties": {
          "onJobSucceeded": {
            "type": "boolean"
          },
          "onJobFailed": {
            "type": "boolean"
          },
          "onJobCancelled": {
            "type": "boolean"
          },
          "onJobStarted": {
            "type": "boolean"
          },
          "onPrinterHmsError": {
            "type": "boolean"
          },
          "onPrinterHmsWarning": {
            "type": "boolean"
          },
          "onPrinterOffline": {
            "type": "boolean"
          },
          "onPrinterOnline": {
            "type": "boolean"
          },
          "onPrinterContinuousPrintDisabled": {
            "type": "boolean"
          },
          "onOrderCreatedManual": {
            "type": "boolean"
          },
          "onOrderCreatedRetail": {
            "type": "boolean"
          },
          "onOrderCancelled": {
            "type": "boolean"
          },
          "onOrderClosed": {
            "type": "boolean"
          },
          "onOrdersAutoPrinted": {
            "type": "boolean"
          },
          "onMaintenanceModeOn": {
            "type": "boolean"
          },
          "onMaintenanceModeOff": {
            "type": "boolean"
          },
          "onMaintenanceDueSoon": {
            "type": "boolean"
          },
          "onMaintenanceOverdue": {
            "type": "boolean"
          },
          "onMaterialUsageRecorded": {
            "type": "boolean"
          },
          "onAiFailureDetected": {
            "type": "boolean"
          }
        },
        "description": "Make all properties in T optional"
      },
      "Order": {
        "type": "object",
        "properties": {
          "orderNumber": {
            "type": "string",
            "minLength": 1
          },
          "source": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "const": "etsy"
              },
              {
                "const": "shopify"
              },
              {
                "const": "manual"
              },
              {
                "const": "ebay"
              },
              {
                "const": "tiktok-shop"
              },
              {
                "const": "woocommerce"
              },
              {
                "const": "shipstation"
              }
            ]
          },
          "status": {
            "oneOf": [
              {
                "const": "open"
              },
              {
                "const": "closed"
              }
            ]
          },
          "cancelledAt": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "string"
              }
            ]
          },
          "shippedAt": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "string"
              }
            ]
          },
          "customerId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "pattern": "^[a-z0-9]{24}$"
              }
            ]
          },
          "integrationId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "pattern": "^[a-z0-9]{24}$"
              }
            ]
          },
          "priceBucket": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "number"
              }
            ]
          },
          "price": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "number"
              }
            ]
          },
          "currency": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "externalId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "externalUrl": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "sourceRef": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "note": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "deadline": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "string"
              }
            ]
          },
          "processedAt": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "string"
              }
            ]
          },
          "syncDisabled": {
            "type": "boolean"
          },
          "customMetadata": {
            "$ref": "#/components/schemas/Recordstringunknown"
          },
          "id": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "storeId": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time"
          }
        },
        "required": [
          "orderNumber",
          "status",
          "syncDisabled",
          "id",
          "storeId",
          "createdAt",
          "updatedAt"
        ],
        "description": "Order entity representing a retail order"
      },
      "orderNumberstringundefinedsourcestringundefinedstatusstringundefinedcancelledAtstringundefinedshippedAtstringundefinedcustomerIdstringundefined...15more...updatedAtstringundefinedQuerySettings...": {
        "type": "object",
        "properties": {
          "orderNumber": {
            "type": "string"
          },
          "source": {
            "type": "string"
          },
          "status": {
            "type": "string"
          },
          "cancelledAt": {
            "type": "string"
          },
          "shippedAt": {
            "type": "string"
          },
          "customerId": {
            "type": "string"
          },
          "integrationId": {
            "type": "string"
          },
          "priceBucket": {
            "type": "string"
          },
          "price": {
            "type": "string"
          },
          "currency": {
            "type": "string"
          },
          "externalId": {
            "type": "string"
          },
          "externalUrl": {
            "type": "string"
          },
          "sourceRef": {
            "type": "string"
          },
          "note": {
            "type": "string"
          },
          "deadline": {
            "type": "string"
          },
          "processedAt": {
            "type": "string"
          },
          "syncDisabled": {
            "type": "string"
          },
          "customMetadata": {
            "type": "string"
          },
          "id": {
            "type": "string"
          },
          "storeId": {
            "type": "string"
          },
          "createdAt": {
            "type": "string"
          },
          "updatedAt": {
            "type": "string"
          },
          "sort": {
            "type": "string",
            "title": "Sort",
            "description": "Sort specification in format \"field:asc,field2:desc\""
          },
          "limit": {
            "type": "number",
            "minimum": 1,
            "maximum": 1000,
            "title": "Limit",
            "description": "Maximum number of results to return (default: 1000, max: 1000)"
          },
          "offset": {
            "type": "number",
            "minimum": 0,
            "title": "Offset",
            "description": "Number of results to skip for pagination"
          },
          "fields": {
            "type": "string",
            "title": "Fields",
            "description": "Comma-separated list of fields to return"
          },
          "include": {
            "type": "string",
            "title": "Include",
            "description": "Comma-separated list of relations to include (max 4, max 2 levels deep).\nExample: \"linkedParts,linkedParts.part,folder\""
          },
          "meta": {
            "type": "boolean",
            "title": "Meta",
            "description": "If true, returns response with metadata (total, count, hasMore, etc.)"
          },
          "hints": {
            "type": "boolean",
            "title": "Hints",
            "description": "If true, returns AI-friendly hints about available actions. Implies meta=true."
          }
        }
      },
      "OrderItem": {
        "type": "object",
        "properties": {
          "orderId": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "skuId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "pattern": "^[a-z0-9]{24}$"
              }
            ]
          },
          "source": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "const": "etsy"
              },
              {
                "const": "shopify"
              },
              {
                "const": "manual"
              },
              {
                "const": "ebay"
              },
              {
                "const": "tiktok-shop"
              },
              {
                "const": "woocommerce"
              },
              {
                "const": "shipstation"
              }
            ]
          },
          "quantity": {
            "type": "number",
            "minimum": 1
          },
          "inputs": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/Recordstringany"
              }
            ]
          },
          "status": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "externalId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "externalOrderId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "externalProductId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "externalSku": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "originalSku": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ],
            "description": "Original SKU identifier sent when creating the order item (sku or externalSku), null if skuId was provided directly"
          },
          "processedAt": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "format": "date-time"
              }
            ]
          },
          "ignored": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "boolean"
              }
            ]
          },
          "processedStatus": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "const": "unprocessed"
              },
              {
                "const": "processed"
              }
            ]
          },
          "skuConfig": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/OrderItemSkuConfig"
              }
            ]
          },
          "resolutionNote": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/ResolutionNote"
              }
            ],
            "description": "Describes why SKU or variant resolution failed, null when resolved successfully"
          },
          "customMetadata": {
            "$ref": "#/components/schemas/Recordstringunknown"
          },
          "id": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "storeId": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time"
          }
        },
        "required": [
          "orderId",
          "skuId",
          "quantity",
          "id",
          "storeId",
          "createdAt",
          "updatedAt"
        ],
        "description": "OrderItem entity representing an item in a retail order"
      },
      "OrderItemSkuConfig": {
        "type": "object",
        "properties": {
          "linkedPartConfigs": {
            "$ref": "#/components/schemas/RecordCuid2LinkedPartConfigV2"
          },
          "selectedOptions": {
            "$ref": "#/components/schemas/Recordstringstringnull"
          },
          "freeTextOptionIds": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Options whose selected value is a buyer's free-text answer rather than\none of the option's defined values. A personalization question can reuse\na variant option (same name), and its arbitrary answers must not be\nflagged as invalid values during reconciliation."
          },
          "personalizationAnswerKeys": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "selectedOptions keys the integration wrote from buyer personalization\nanswers (as opposed to regular variation selections). Only these may be\ntreated as free text when they land on a variant option; an unmatched\nregular variation value must still fail validation."
          }
        },
        "description": "SKU configuration stored with order items\nContains only the configuration overrides, not the SKU reference"
      },
      "ResolutionNote": {
        "type": "object",
        "properties": {
          "type": {
            "oneOf": [
              {
                "const": "variant_enrichment_failed"
              },
              {
                "const": "sku_not_found"
              },
              {
                "const": "ambiguous_match"
              }
            ]
          },
          "message": {
            "type": "string"
          },
          "retriable": {
            "type": "boolean",
            "description": "Whether this failure can be retried (e.g., API errors are retriable, missing SKUs are not)"
          },
          "occurredAt": {
            "type": "number",
            "description": "Timestamp of when this failure occurred"
          }
        },
        "required": [
          "type",
          "message",
          "retriable",
          "occurredAt"
        ],
        "description": "Structured note describing why SKU or variant resolution failed.\nStored as a dedicated column on order_items for easy querying."
      },
      "Customer": {
        "type": "object",
        "properties": {
          "name": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "email": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "phone": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "countryCode": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "provinceCode": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "zipCode": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "externalId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "source": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "const": "etsy"
              },
              {
                "const": "shopify"
              },
              {
                "const": "manual"
              },
              {
                "const": "ebay"
              },
              {
                "const": "tiktok-shop"
              },
              {
                "const": "woocommerce"
              },
              {
                "const": "shipstation"
              }
            ]
          },
          "customMetadata": {
            "$ref": "#/components/schemas/Recordstringunknown"
          },
          "id": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "storeId": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time"
          }
        },
        "required": [
          "id",
          "storeId",
          "createdAt",
          "updatedAt"
        ],
        "description": "Customer entity representing a retail customer"
      },
      "OrderDetailsResponse": {
        "type": "object",
        "properties": {
          "order": {
            "$ref": "#/components/schemas/Order"
          },
          "customer": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/Customer"
              }
            ]
          },
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/OrderItem"
            }
          }
        },
        "required": [
          "order",
          "customer",
          "items"
        ]
      },
      "CreateOrderDto": {
        "type": "object",
        "properties": {
          "order": {
            "$ref": "#/components/schemas/OrderInsert"
          },
          "customer": {
            "$ref": "#/components/schemas/CustomerInsert"
          },
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CreateOrderItemInput"
            }
          }
        },
        "required": [
          "order"
        ]
      },
      "OrderInsert": {
        "type": "object",
        "properties": {
          "externalId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "source": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "const": "etsy"
              },
              {
                "const": "shopify"
              },
              {
                "const": "manual"
              },
              {
                "const": "ebay"
              },
              {
                "const": "tiktok-shop"
              },
              {
                "const": "woocommerce"
              },
              {
                "const": "shipstation"
              }
            ]
          },
          "integrationId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "pattern": "^[a-z0-9]{24}$"
              }
            ]
          },
          "customMetadata": {
            "$ref": "#/components/schemas/Recordstringunknown"
          },
          "orderNumber": {
            "type": "string",
            "minLength": 1
          },
          "customerId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "pattern": "^[a-z0-9]{24}$"
              }
            ]
          },
          "shippedAt": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "string"
              }
            ]
          },
          "priceBucket": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "number"
              }
            ]
          },
          "price": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "number"
              }
            ]
          },
          "currency": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "externalUrl": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "note": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "deadline": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "string"
              }
            ]
          },
          "processedAt": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "string"
              }
            ]
          },
          "sourceRef": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          }
        },
        "required": [
          "orderNumber"
        ]
      },
      "CustomerInsert": {
        "type": "object",
        "properties": {
          "name": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "externalId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "source": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "const": "etsy"
              },
              {
                "const": "shopify"
              },
              {
                "const": "manual"
              },
              {
                "const": "ebay"
              },
              {
                "const": "tiktok-shop"
              },
              {
                "const": "woocommerce"
              },
              {
                "const": "shipstation"
              }
            ]
          },
          "customMetadata": {
            "$ref": "#/components/schemas/Recordstringunknown"
          },
          "email": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "phone": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "countryCode": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "provinceCode": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "zipCode": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          }
        }
      },
      "CreateOrderItemInput": {
        "type": "object",
        "properties": {
          "skuId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ],
            "title": "Internal SKU ID (Cuid2). Takes precedence over `sku` if both provided",
            "description": "Internal SKU ID (Cuid2). Takes precedence over `sku` if both provided."
          },
          "sku": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ],
            "title": "SKU code (e.g., \"SSP00214\"). Will be resolved to skuId if skuId not provided",
            "description": "SKU code (e.g., \"SSP00214\"). Will be resolved to skuId if skuId not provided."
          },
          "externalId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "source": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "const": "etsy"
              },
              {
                "const": "shopify"
              },
              {
                "const": "manual"
              },
              {
                "const": "ebay"
              },
              {
                "const": "tiktok-shop"
              },
              {
                "const": "woocommerce"
              },
              {
                "const": "shipstation"
              }
            ]
          },
          "customMetadata": {
            "$ref": "#/components/schemas/Recordstringunknown"
          },
          "status": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "processedAt": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "format": "date-time"
              }
            ]
          },
          "quantity": {
            "type": "number",
            "minimum": 1
          },
          "inputs": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/Recordstringany"
              }
            ]
          },
          "externalOrderId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "externalProductId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "externalSku": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "originalSku": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ],
            "description": "Original SKU identifier sent when creating the order item (sku or externalSku), null if skuId was provided directly"
          },
          "processedStatus": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "const": "unprocessed"
              },
              {
                "const": "processed"
              }
            ]
          },
          "ignored": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "boolean"
              }
            ]
          },
          "skuConfig": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/OrderItemSkuConfig"
              }
            ]
          },
          "resolutionNote": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/ResolutionNote"
              }
            ],
            "description": "Describes why SKU or variant resolution failed, null when resolved successfully"
          }
        },
        "required": [
          "quantity"
        ],
        "description": "Order item input for creating orders via API.\nAccepts either `skuId` (internal ID) or `sku` (SKU code) to identify the SKU.\nIf `sku` is provided and `skuId` is not, the system will look up the SKU by code."
      },
      "IgnoredSku": {
        "type": "object",
        "properties": {
          "skus": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "id": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "storeId": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time"
          }
        },
        "required": [
          "skus",
          "id",
          "storeId",
          "createdAt",
          "updatedAt"
        ]
      },
      "CheckIgnoredSkusResponse": {
        "type": "object",
        "properties": {},
        "additionalProperties": {
          "type": "boolean"
        }
      },
      "CheckIgnoredSkusRequest": {
        "type": "object",
        "properties": {
          "skus": {
            "type": "array",
            "items": {
              "type": "string",
              "minLength": 1,
              "maxLength": 1024
            }
          }
        },
        "required": [
          "skus"
        ]
      },
      "EditIgnoredSkusRequest": {
        "type": "object",
        "properties": {
          "add": {
            "type": "array",
            "items": {
              "type": "string",
              "minLength": 1,
              "maxLength": 1024
            }
          },
          "remove": {
            "type": "array",
            "items": {
              "type": "string",
              "minLength": 1,
              "maxLength": 1024
            }
          }
        }
      },
      "ReconcileJobsResponse": {
        "type": "object",
        "properties": {
          "errors": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        },
        "required": [
          "errors"
        ]
      },
      "ReconcileJobsRequest": {
        "type": "object",
        "properties": {
          "skuIds": {
            "type": "array",
            "items": {
              "type": "string",
              "pattern": "^[a-z0-9]{24}$"
            }
          },
          "orderIds": {
            "type": "array",
            "items": {
              "type": "string",
              "pattern": "^[a-z0-9]{24}$"
            }
          },
          "printerTags": {
            "$ref": "#/components/schemas/PartialRecordstringstring"
          },
          "priority": {
            "oneOf": [
              {
                "const": 100
              },
              {
                "const": 1000
              }
            ]
          },
          "position": {
            "oneOf": [
              {
                "const": "front"
              },
              {
                "const": "back"
              }
            ]
          },
          "consolidation": {
            "$ref": "#/components/schemas/BuildConsolidation",
            "title": "Build-time plate consolidation applied to the generated builds",
            "description": "Build-time plate consolidation applied to the generated builds."
          }
        },
        "required": [
          "skuIds"
        ]
      },
      "PartialRecordstringstring": {
        "type": "object",
        "properties": {},
        "description": "Make all properties in T optional",
        "additionalProperties": {
          "type": "string"
        }
      },
      "CreateCustomerDto": {
        "type": "object",
        "properties": {
          "name": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "email": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "phone": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "customMetadata": {
            "$ref": "#/components/schemas/CustomMetadataValues"
          }
        }
      },
      "OmitOrderItemInsertorderId": {
        "type": "object",
        "properties": {
          "externalId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "source": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "const": "etsy"
              },
              {
                "const": "shopify"
              },
              {
                "const": "manual"
              },
              {
                "const": "ebay"
              },
              {
                "const": "tiktok-shop"
              },
              {
                "const": "woocommerce"
              },
              {
                "const": "shipstation"
              }
            ]
          },
          "customMetadata": {
            "$ref": "#/components/schemas/Recordstringunknown"
          },
          "skuId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "pattern": "^[a-z0-9]{24}$"
              }
            ]
          },
          "status": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "processedAt": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "format": "date-time"
              }
            ]
          },
          "quantity": {
            "type": "number",
            "minimum": 1
          },
          "inputs": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/Recordstringany"
              }
            ]
          },
          "externalOrderId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "externalProductId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "externalSku": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "originalSku": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ],
            "description": "Original SKU identifier sent when creating the order item (sku or externalSku), null if skuId was provided directly"
          },
          "processedStatus": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "const": "unprocessed"
              },
              {
                "const": "processed"
              }
            ]
          },
          "ignored": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "boolean"
              }
            ]
          },
          "skuConfig": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/OrderItemSkuConfig"
              }
            ]
          },
          "resolutionNote": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/ResolutionNote"
              }
            ],
            "description": "Describes why SKU or variant resolution failed, null when resolved successfully"
          }
        },
        "required": [
          "skuId",
          "quantity"
        ],
        "description": "Construct a type with the properties of T except for those in type K."
      },
      "PartialOrderItemUpdate": {
        "type": "object",
        "properties": {
          "externalId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "source": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "const": "etsy"
              },
              {
                "const": "shopify"
              },
              {
                "const": "manual"
              },
              {
                "const": "ebay"
              },
              {
                "const": "tiktok-shop"
              },
              {
                "const": "woocommerce"
              },
              {
                "const": "shipstation"
              }
            ]
          },
          "customMetadata": {
            "$ref": "#/components/schemas/Recordstringunknown"
          },
          "status": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "processedAt": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "format": "date-time"
              }
            ]
          },
          "quantity": {
            "type": "number",
            "minimum": 1
          },
          "inputs": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/Recordstringany"
              }
            ]
          },
          "externalOrderId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "externalProductId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "externalSku": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "originalSku": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ],
            "description": "Original SKU identifier sent when creating the order item (sku or externalSku), null if skuId was provided directly"
          },
          "processedStatus": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "const": "unprocessed"
              },
              {
                "const": "processed"
              }
            ]
          },
          "ignored": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "boolean"
              }
            ]
          },
          "skuConfig": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/OrderItemSkuConfig"
              }
            ]
          },
          "resolutionNote": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/ResolutionNote"
              }
            ],
            "description": "Describes why SKU or variant resolution failed, null when resolved successfully"
          }
        },
        "description": "Make all properties in T optional"
      },
      "PartialOrder": {
        "type": "object",
        "properties": {
          "orderNumber": {
            "type": "string",
            "minLength": 1
          },
          "source": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "const": "etsy"
              },
              {
                "const": "shopify"
              },
              {
                "const": "manual"
              },
              {
                "const": "ebay"
              },
              {
                "const": "tiktok-shop"
              },
              {
                "const": "woocommerce"
              },
              {
                "const": "shipstation"
              }
            ]
          },
          "status": {
            "oneOf": [
              {
                "const": "open"
              },
              {
                "const": "closed"
              }
            ]
          },
          "cancelledAt": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "string"
              }
            ]
          },
          "shippedAt": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "string"
              }
            ]
          },
          "customerId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "pattern": "^[a-z0-9]{24}$"
              }
            ]
          },
          "integrationId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "pattern": "^[a-z0-9]{24}$"
              }
            ]
          },
          "priceBucket": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "number"
              }
            ]
          },
          "price": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "number"
              }
            ]
          },
          "currency": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "externalId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "externalUrl": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "sourceRef": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "note": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "deadline": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "string"
              }
            ]
          },
          "processedAt": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "string"
              }
            ]
          },
          "syncDisabled": {
            "type": "boolean"
          },
          "customMetadata": {
            "$ref": "#/components/schemas/Recordstringunknown"
          },
          "id": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "storeId": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time"
          }
        },
        "description": "Make all properties in T optional"
      },
      "SearchQueryDtoOrder": {
        "type": "object",
        "properties": {
          "filter": {
            "$ref": "#/components/schemas/FilterConditionOrder",
            "title": "Filter",
            "description": "Complex filter conditions using logical and field operators.\nAvailable field operators: eq, ne, gt, gte, lt, lte, contains, startsWith, endsWith, in, notIn, isNull, between.\nUsage example: {\"filter\": {\"and\": [{\"name\": {\"contains\": \"benchy\"}}, {\"or\": [{\"type\": {\"eq\": \"3mf\"}}, {\"type\": {\"eq\": \"gcode3mf\"}}]}}}"
          },
          "sort": {
            "type": "string",
            "title": "Sort",
            "description": "Sort specification in format \"field:asc,field2:desc\""
          },
          "limit": {
            "type": "number",
            "minimum": 1,
            "maximum": 1000,
            "title": "Limit",
            "description": "Maximum number of results to return (default: 1000, max: 1000)"
          },
          "offset": {
            "type": "number",
            "minimum": 0,
            "title": "Offset",
            "description": "Number of results to skip for pagination"
          },
          "fields": {
            "type": "string",
            "title": "Fields",
            "description": "Comma-separated list of fields to return"
          },
          "include": {
            "type": "string",
            "title": "Include",
            "description": "Comma-separated list of relations to include (max 4, max 2 levels deep).\nExample: \"linkedParts,linkedParts.part,folder\""
          },
          "meta": {
            "type": "boolean",
            "title": "Meta",
            "description": "If true, returns response with metadata (total, count, hasMore, etc.)"
          },
          "hints": {
            "type": "boolean",
            "title": "Hints",
            "description": "If true, returns AI-friendly hints about available actions. Implies meta=true."
          }
        },
        "title": "Search Query",
        "description": "Complete search request with filter conditions and query settings"
      },
      "FilterConditionOrder": {
        "type": "object",
        "properties": {
          "and": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FilterConditionOrder"
            },
            "title": "AND Conditions",
            "description": "All conditions must be true"
          },
          "or": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FilterConditionOrder"
            },
            "title": "OR Conditions",
            "description": "At least one condition must be true"
          },
          "orderNumber": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "source": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "status": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "cancelledAt": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "shippedAt": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "customerId": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "integrationId": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "priceBucket": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "price": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "currency": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "externalId": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "externalUrl": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "sourceRef": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "note": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "deadline": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "processedAt": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "syncDisabled": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "customMetadata": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "id": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "storeId": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "createdAt": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "updatedAt": {
            "$ref": "#/components/schemas/FieldOperators"
          }
        },
        "title": "Filter Condition",
        "description": "Root filter condition that can be either a logical condition (AND/OR) or field-based condition"
      },
      "orderIdstringundefinedskuIdstringundefinedsourcestringundefinedquantitystringundefinedinputsstringundefinedstatusstringundefinedexternalIdstringundefined...13more...updatedAtstringundefinedQuerySettings...": {
        "type": "object",
        "properties": {
          "orderId": {
            "type": "string"
          },
          "skuId": {
            "type": "string"
          },
          "source": {
            "type": "string"
          },
          "quantity": {
            "type": "string"
          },
          "inputs": {
            "type": "string"
          },
          "status": {
            "type": "string"
          },
          "externalId": {
            "type": "string"
          },
          "externalOrderId": {
            "type": "string"
          },
          "externalProductId": {
            "type": "string"
          },
          "externalSku": {
            "type": "string"
          },
          "originalSku": {
            "type": "string",
            "description": "Original SKU identifier sent when creating the order item (sku or externalSku), null if skuId was provided directly"
          },
          "processedAt": {
            "type": "string"
          },
          "ignored": {
            "type": "string"
          },
          "processedStatus": {
            "type": "string"
          },
          "skuConfig": {
            "type": "string"
          },
          "resolutionNote": {
            "type": "string",
            "description": "Describes why SKU or variant resolution failed, null when resolved successfully"
          },
          "customMetadata": {
            "type": "string"
          },
          "id": {
            "type": "string"
          },
          "storeId": {
            "type": "string"
          },
          "createdAt": {
            "type": "string"
          },
          "updatedAt": {
            "type": "string"
          },
          "sort": {
            "type": "string",
            "title": "Sort",
            "description": "Sort specification in format \"field:asc,field2:desc\""
          },
          "limit": {
            "type": "number",
            "minimum": 1,
            "maximum": 1000,
            "title": "Limit",
            "description": "Maximum number of results to return (default: 1000, max: 1000)"
          },
          "offset": {
            "type": "number",
            "minimum": 0,
            "title": "Offset",
            "description": "Number of results to skip for pagination"
          },
          "fields": {
            "type": "string",
            "title": "Fields",
            "description": "Comma-separated list of fields to return"
          },
          "include": {
            "type": "string",
            "title": "Include",
            "description": "Comma-separated list of relations to include (max 4, max 2 levels deep).\nExample: \"linkedParts,linkedParts.part,folder\""
          },
          "meta": {
            "type": "boolean",
            "title": "Meta",
            "description": "If true, returns response with metadata (total, count, hasMore, etc.)"
          },
          "hints": {
            "type": "boolean",
            "title": "Hints",
            "description": "If true, returns AI-friendly hints about available actions. Implies meta=true."
          }
        }
      },
      "SearchQueryDtoOrderItem": {
        "type": "object",
        "properties": {
          "filter": {
            "$ref": "#/components/schemas/FilterConditionOrderItem",
            "title": "Filter",
            "description": "Complex filter conditions using logical and field operators.\nAvailable field operators: eq, ne, gt, gte, lt, lte, contains, startsWith, endsWith, in, notIn, isNull, between.\nUsage example: {\"filter\": {\"and\": [{\"name\": {\"contains\": \"benchy\"}}, {\"or\": [{\"type\": {\"eq\": \"3mf\"}}, {\"type\": {\"eq\": \"gcode3mf\"}}]}}}"
          },
          "sort": {
            "type": "string",
            "title": "Sort",
            "description": "Sort specification in format \"field:asc,field2:desc\""
          },
          "limit": {
            "type": "number",
            "minimum": 1,
            "maximum": 1000,
            "title": "Limit",
            "description": "Maximum number of results to return (default: 1000, max: 1000)"
          },
          "offset": {
            "type": "number",
            "minimum": 0,
            "title": "Offset",
            "description": "Number of results to skip for pagination"
          },
          "fields": {
            "type": "string",
            "title": "Fields",
            "description": "Comma-separated list of fields to return"
          },
          "include": {
            "type": "string",
            "title": "Include",
            "description": "Comma-separated list of relations to include (max 4, max 2 levels deep).\nExample: \"linkedParts,linkedParts.part,folder\""
          },
          "meta": {
            "type": "boolean",
            "title": "Meta",
            "description": "If true, returns response with metadata (total, count, hasMore, etc.)"
          },
          "hints": {
            "type": "boolean",
            "title": "Hints",
            "description": "If true, returns AI-friendly hints about available actions. Implies meta=true."
          }
        },
        "title": "Search Query",
        "description": "Complete search request with filter conditions and query settings"
      },
      "FilterConditionOrderItem": {
        "type": "object",
        "properties": {
          "and": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FilterConditionOrderItem"
            },
            "title": "AND Conditions",
            "description": "All conditions must be true"
          },
          "or": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FilterConditionOrderItem"
            },
            "title": "OR Conditions",
            "description": "At least one condition must be true"
          },
          "orderId": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "skuId": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "source": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "quantity": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "inputs": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "status": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "externalId": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "externalOrderId": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "externalProductId": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "externalSku": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "originalSku": {
            "$ref": "#/components/schemas/FieldOperators",
            "description": "Original SKU identifier sent when creating the order item (sku or externalSku), null if skuId was provided directly"
          },
          "processedAt": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "ignored": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "processedStatus": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "skuConfig": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "resolutionNote": {
            "$ref": "#/components/schemas/FieldOperators",
            "description": "Describes why SKU or variant resolution failed, null when resolved successfully"
          },
          "customMetadata": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "id": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "storeId": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "createdAt": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "updatedAt": {
            "$ref": "#/components/schemas/FieldOperators"
          }
        },
        "title": "Filter Condition",
        "description": "Root filter condition that can be either a logical condition (AND/OR) or field-based condition"
      },
      "namestringundefinedemailstringundefinedphonestringundefinedcountryCodestringundefinedprovinceCodestringundefinedzipCodestringundefined...6more...updatedAtstringundefinedQuerySettings...": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "email": {
            "type": "string"
          },
          "phone": {
            "type": "string"
          },
          "countryCode": {
            "type": "string"
          },
          "provinceCode": {
            "type": "string"
          },
          "zipCode": {
            "type": "string"
          },
          "externalId": {
            "type": "string"
          },
          "source": {
            "type": "string"
          },
          "customMetadata": {
            "type": "string"
          },
          "id": {
            "type": "string"
          },
          "storeId": {
            "type": "string"
          },
          "createdAt": {
            "type": "string"
          },
          "updatedAt": {
            "type": "string"
          },
          "sort": {
            "type": "string",
            "title": "Sort",
            "description": "Sort specification in format \"field:asc,field2:desc\""
          },
          "limit": {
            "type": "number",
            "minimum": 1,
            "maximum": 1000,
            "title": "Limit",
            "description": "Maximum number of results to return (default: 1000, max: 1000)"
          },
          "offset": {
            "type": "number",
            "minimum": 0,
            "title": "Offset",
            "description": "Number of results to skip for pagination"
          },
          "fields": {
            "type": "string",
            "title": "Fields",
            "description": "Comma-separated list of fields to return"
          },
          "include": {
            "type": "string",
            "title": "Include",
            "description": "Comma-separated list of relations to include (max 4, max 2 levels deep).\nExample: \"linkedParts,linkedParts.part,folder\""
          },
          "meta": {
            "type": "boolean",
            "title": "Meta",
            "description": "If true, returns response with metadata (total, count, hasMore, etc.)"
          },
          "hints": {
            "type": "boolean",
            "title": "Hints",
            "description": "If true, returns AI-friendly hints about available actions. Implies meta=true."
          }
        }
      },
      "SearchQueryDtoCustomer": {
        "type": "object",
        "properties": {
          "filter": {
            "$ref": "#/components/schemas/FilterConditionCustomer",
            "title": "Filter",
            "description": "Complex filter conditions using logical and field operators.\nAvailable field operators: eq, ne, gt, gte, lt, lte, contains, startsWith, endsWith, in, notIn, isNull, between.\nUsage example: {\"filter\": {\"and\": [{\"name\": {\"contains\": \"benchy\"}}, {\"or\": [{\"type\": {\"eq\": \"3mf\"}}, {\"type\": {\"eq\": \"gcode3mf\"}}]}}}"
          },
          "sort": {
            "type": "string",
            "title": "Sort",
            "description": "Sort specification in format \"field:asc,field2:desc\""
          },
          "limit": {
            "type": "number",
            "minimum": 1,
            "maximum": 1000,
            "title": "Limit",
            "description": "Maximum number of results to return (default: 1000, max: 1000)"
          },
          "offset": {
            "type": "number",
            "minimum": 0,
            "title": "Offset",
            "description": "Number of results to skip for pagination"
          },
          "fields": {
            "type": "string",
            "title": "Fields",
            "description": "Comma-separated list of fields to return"
          },
          "include": {
            "type": "string",
            "title": "Include",
            "description": "Comma-separated list of relations to include (max 4, max 2 levels deep).\nExample: \"linkedParts,linkedParts.part,folder\""
          },
          "meta": {
            "type": "boolean",
            "title": "Meta",
            "description": "If true, returns response with metadata (total, count, hasMore, etc.)"
          },
          "hints": {
            "type": "boolean",
            "title": "Hints",
            "description": "If true, returns AI-friendly hints about available actions. Implies meta=true."
          }
        },
        "title": "Search Query",
        "description": "Complete search request with filter conditions and query settings"
      },
      "FilterConditionCustomer": {
        "type": "object",
        "properties": {
          "and": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FilterConditionCustomer"
            },
            "title": "AND Conditions",
            "description": "All conditions must be true"
          },
          "or": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FilterConditionCustomer"
            },
            "title": "OR Conditions",
            "description": "At least one condition must be true"
          },
          "name": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "email": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "phone": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "countryCode": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "provinceCode": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "zipCode": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "externalId": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "source": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "customMetadata": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "id": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "storeId": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "createdAt": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "updatedAt": {
            "$ref": "#/components/schemas/FieldOperators"
          }
        },
        "title": "Filter Condition",
        "description": "Root filter condition that can be either a logical condition (AND/OR) or field-based condition"
      },
      "skusstringundefinedidstringundefinedstoreIdstringundefinedcreatedAtstringundefinedupdatedAtstringundefinedQuerySettings...": {
        "type": "object",
        "properties": {
          "skus": {
            "type": "string"
          },
          "id": {
            "type": "string"
          },
          "storeId": {
            "type": "string"
          },
          "createdAt": {
            "type": "string"
          },
          "updatedAt": {
            "type": "string"
          },
          "sort": {
            "type": "string",
            "title": "Sort",
            "description": "Sort specification in format \"field:asc,field2:desc\""
          },
          "limit": {
            "type": "number",
            "minimum": 1,
            "maximum": 1000,
            "title": "Limit",
            "description": "Maximum number of results to return (default: 1000, max: 1000)"
          },
          "offset": {
            "type": "number",
            "minimum": 0,
            "title": "Offset",
            "description": "Number of results to skip for pagination"
          },
          "fields": {
            "type": "string",
            "title": "Fields",
            "description": "Comma-separated list of fields to return"
          },
          "include": {
            "type": "string",
            "title": "Include",
            "description": "Comma-separated list of relations to include (max 4, max 2 levels deep).\nExample: \"linkedParts,linkedParts.part,folder\""
          },
          "meta": {
            "type": "boolean",
            "title": "Meta",
            "description": "If true, returns response with metadata (total, count, hasMore, etc.)"
          },
          "hints": {
            "type": "boolean",
            "title": "Hints",
            "description": "If true, returns AI-friendly hints about available actions. Implies meta=true."
          }
        }
      },
      "SearchQueryDtoIgnoredSku": {
        "type": "object",
        "properties": {
          "filter": {
            "$ref": "#/components/schemas/FilterConditionIgnoredSku",
            "title": "Filter",
            "description": "Complex filter conditions using logical and field operators.\nAvailable field operators: eq, ne, gt, gte, lt, lte, contains, startsWith, endsWith, in, notIn, isNull, between.\nUsage example: {\"filter\": {\"and\": [{\"name\": {\"contains\": \"benchy\"}}, {\"or\": [{\"type\": {\"eq\": \"3mf\"}}, {\"type\": {\"eq\": \"gcode3mf\"}}]}}}"
          },
          "sort": {
            "type": "string",
            "title": "Sort",
            "description": "Sort specification in format \"field:asc,field2:desc\""
          },
          "limit": {
            "type": "number",
            "minimum": 1,
            "maximum": 1000,
            "title": "Limit",
            "description": "Maximum number of results to return (default: 1000, max: 1000)"
          },
          "offset": {
            "type": "number",
            "minimum": 0,
            "title": "Offset",
            "description": "Number of results to skip for pagination"
          },
          "fields": {
            "type": "string",
            "title": "Fields",
            "description": "Comma-separated list of fields to return"
          },
          "include": {
            "type": "string",
            "title": "Include",
            "description": "Comma-separated list of relations to include (max 4, max 2 levels deep).\nExample: \"linkedParts,linkedParts.part,folder\""
          },
          "meta": {
            "type": "boolean",
            "title": "Meta",
            "description": "If true, returns response with metadata (total, count, hasMore, etc.)"
          },
          "hints": {
            "type": "boolean",
            "title": "Hints",
            "description": "If true, returns AI-friendly hints about available actions. Implies meta=true."
          }
        },
        "title": "Search Query",
        "description": "Complete search request with filter conditions and query settings"
      },
      "FilterConditionIgnoredSku": {
        "type": "object",
        "properties": {
          "and": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FilterConditionIgnoredSku"
            },
            "title": "AND Conditions",
            "description": "All conditions must be true"
          },
          "or": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FilterConditionIgnoredSku"
            },
            "title": "OR Conditions",
            "description": "At least one condition must be true"
          },
          "skus": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "id": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "storeId": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "createdAt": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "updatedAt": {
            "$ref": "#/components/schemas/FieldOperators"
          }
        },
        "title": "Filter Condition",
        "description": "Root filter condition that can be either a logical condition (AND/OR) or field-based condition"
      },
      "CustomizerPublicationState": {
        "type": "object",
        "properties": {
          "publication": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/CustomizerConfigPublication"
              }
            ]
          },
          "integration": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "object",
                "properties": {
                  "integrationId": {
                    "type": "string"
                  },
                  "shop": {
                    "type": "string"
                  },
                  "shopName": {
                    "type": "string"
                  }
                },
                "required": [
                  "integrationId",
                  "shop",
                  "shopName"
                ]
              }
            ]
          },
          "skuId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "pattern": "^[a-z0-9]{24}$"
              }
            ]
          },
          "skuCode": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "productCandidates": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CustomizerProductCandidate"
            }
          },
          "directUrl": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ],
            "title": "Storefront URL for the direct-to-customizer page (app proxy)",
            "description": "Storefront URL for the direct-to-customizer page (app proxy)."
          },
          "themeEditorUrl": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ],
            "title": "Theme-editor deep link that pre-adds the customizer block",
            "description": "Theme-editor deep link that pre-adds the customizer block."
          }
        },
        "required": [
          "publication",
          "integration",
          "skuId",
          "skuCode",
          "productCandidates",
          "directUrl",
          "themeEditorUrl"
        ]
      },
      "CustomizerConfigPublication": {
        "type": "object",
        "properties": {
          "configId": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "integrationId": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "mode": {
            "oneOf": [
              {
                "const": "embed_product_page"
              },
              {
                "const": "direct_page"
              }
            ]
          },
          "shopifyProductId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "shopifyProductHandle": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "status": {
            "oneOf": [
              {
                "const": "published"
              },
              {
                "const": "unpublished"
              },
              {
                "const": "error"
              }
            ]
          },
          "metafieldSetAt": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "format": "date-time"
              }
            ]
          },
          "lastError": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "id": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "storeId": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time"
          }
        },
        "required": [
          "configId",
          "integrationId",
          "mode",
          "shopifyProductId",
          "shopifyProductHandle",
          "status",
          "metafieldSetAt",
          "lastError",
          "id",
          "storeId",
          "createdAt",
          "updatedAt"
        ],
        "description": "Shopify publishing state for a customizer config on one integration.\nEmbed mode writes the `printago.sku_id` product metafield the theme app\nextension block reads; direct mode exposes the app-proxy customizer URL\nas a standalone storefront page."
      },
      "CustomizerProductCandidate": {
        "type": "object",
        "properties": {
          "productId": {
            "type": "string"
          },
          "title": {
            "type": "string"
          },
          "handle": {
            "type": "string"
          },
          "status": {
            "type": "string"
          }
        },
        "required": [
          "productId",
          "title",
          "handle",
          "status"
        ]
      },
      "CustomizerPublishBody": {
        "type": "object",
        "properties": {
          "mode": {
            "oneOf": [
              {
                "const": "embed_product_page"
              },
              {
                "const": "direct_page"
              }
            ]
          },
          "integrationId": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "shopifyProductId": {
            "type": "string"
          },
          "shopifyProductHandle": {
            "type": "string"
          }
        },
        "required": [
          "mode"
        ]
      },
      "UsageStats.o1": {
        "type": "object",
        "properties": {
          "tier": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "const": "etsy-starter"
              },
              {
                "const": "etsy-pro"
              }
            ]
          },
          "orders": {
            "type": "object",
            "properties": {
              "current": {
                "type": "number"
              },
              "limit": {
                "oneOf": [
                  {
                    "type": "null"
                  },
                  {
                    "type": "number"
                  }
                ]
              },
              "remaining": {
                "oneOf": [
                  {
                    "type": "null"
                  },
                  {
                    "type": "number"
                  }
                ]
              }
            },
            "required": [
              "current",
              "limit",
              "remaining"
            ]
          },
          "listings": {
            "type": "object",
            "properties": {
              "current": {
                "type": "number"
              },
              "limit": {
                "oneOf": [
                  {
                    "type": "null"
                  },
                  {
                    "type": "number"
                  }
                ]
              },
              "remaining": {
                "oneOf": [
                  {
                    "type": "null"
                  },
                  {
                    "type": "number"
                  }
                ]
              }
            },
            "required": [
              "current",
              "limit",
              "remaining"
            ]
          },
          "cycleStartDate": {
            "type": "string",
            "format": "date-time"
          },
          "cycleEndDate": {
            "type": "string",
            "format": "date-time"
          }
        },
        "required": [
          "tier",
          "orders",
          "listings",
          "cycleStartDate",
          "cycleEndDate"
        ],
        "description": "Usage statistics for an Etsy integration"
      },
      "EbaySettings": {
        "type": "object",
        "properties": {
          "autoPrint": {
            "type": "boolean"
          },
          "autoCloseOrders": {
            "oneOf": [
              {
                "const": "shipped"
              },
              {
                "const": "never"
              }
            ],
            "title": "When to close the Printago order",
            "description": "When to close the Printago order.\n\nOnly 'shipped' and 'never' exist here, unlike Etsy: eBay's Fulfillment API\nreports an order as FULFILLED once tracking is uploaded but never tells us\nit was delivered, so a 'delivered' option could only ever have behaved as\n'shipped' or never fired at all."
          }
        },
        "description": "Settings for eBay integrations"
      },
      "TikTokShopSyncOrdersResult": {
        "type": "object",
        "properties": {
          "orders": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Order"
            }
          },
          "totalSynced": {
            "type": "number"
          },
          "totalAvailable": {
            "type": "number"
          },
          "skipped": {
            "type": "number"
          }
        },
        "required": [
          "orders",
          "totalSynced",
          "totalAvailable",
          "skipped"
        ],
        "description": "Result of a sync-orders run (named for the same SDK reason as the request)."
      },
      "TikTokShopSyncOrdersRequest": {
        "type": "object",
        "properties": {
          "limit": {
            "type": "number",
            "title": "Cap on orders imported in this run",
            "description": "Cap on orders imported in this run."
          },
          "daysBack": {
            "type": "number",
            "title": "Only sync orders created within this many days",
            "description": "Only sync orders created within this many days."
          },
          "statusGroups": {
            "type": "array",
            "items": {
              "oneOf": [
                {
                  "const": "completed"
                },
                {
                  "const": "awaiting"
                },
                {
                  "const": "in_transit"
                }
              ]
            },
            "description": "Which fulfillment stages to include. Maps to TikTok order_status:\n - 'awaiting'   → AWAITING_SHIPMENT + AWAITING_COLLECTION (needs action)\n - 'in_transit' → IN_TRANSIT (shipped)\n - 'completed'  → DELIVERED + COMPLETED"
          }
        },
        "description": "Request body for POST /v1/integrations/tiktok-shop/:integrationId/sync-orders.\n\nThis is a NAMED interface on purpose: an inline `@TypedBody()` object type\nmakes Nestia emit an anonymous `__type` in the generated SDK, which then\ncollides with the anonymous `__type` it emits for the response — producing a\nfile that imports `__type` twice and fails to compile. Naming both ends\ngives the SDK stable, non-colliding type identifiers."
      },
      "TikTokShopSettings": {
        "type": "object",
        "properties": {
          "autoPrint": {
            "type": "boolean"
          },
          "autoCloseOrders": {
            "oneOf": [
              {
                "const": "shipped"
              },
              {
                "const": "delivered"
              },
              {
                "const": "never"
              }
            ]
          }
        },
        "description": "Settings for TikTok Shop integrations"
      },
      "WooCommerceSyncOrdersResult": {
        "type": "object",
        "properties": {
          "totalSynced": {
            "type": "number"
          },
          "totalAvailable": {
            "type": "number"
          },
          "skipped": {
            "type": "number"
          },
          "reconciled": {
            "type": "number"
          }
        },
        "required": [
          "totalSynced",
          "totalAvailable",
          "skipped",
          "reconciled"
        ]
      },
      "WooCommerceSettings": {
        "type": "object",
        "properties": {
          "autoPrint": {
            "type": "boolean"
          },
          "autoCloseOrders": {
            "oneOf": [
              {
                "const": "never"
              },
              {
                "const": "completed"
              }
            ],
            "description": "WooCommerce has no shipped/delivered distinction; 'completed' is the\nseller's own \"fulfilled\" signal, so it is the only close trigger."
          },
          "ignoredVariantNames": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Variant option names to exclude from SKU matching (e.g., [\"Size\"])"
          }
        },
        "description": "Settings for WooCommerce integrations"
      },
      "ShipStationStore": {
        "type": "object",
        "properties": {
          "storeId": {
            "type": "number"
          },
          "storeName": {
            "type": "string"
          },
          "marketplaceName": {
            "type": "string",
            "title": "The underlying channel, e.g. \"Walmart\", \"Shopify\", \"Manual Orders\"",
            "description": "The underlying channel, e.g. \"Walmart\", \"Shopify\", \"Manual Orders\"."
          },
          "active": {
            "type": "boolean",
            "title": "ShipStation's own active flag; inactive stores stop producing orders",
            "description": "ShipStation's own active flag; inactive stores stop producing orders."
          }
        },
        "required": [
          "storeId",
          "storeName",
          "marketplaceName",
          "active"
        ],
        "description": "One of the seller's ShipStation stores (GET /stores)."
      },
      "Integration": {
        "type": "object",
        "properties": {
          "type": {
            "oneOf": [
              {
                "const": "bambulab"
              },
              {
                "const": "etsy"
              },
              {
                "const": "shopify"
              },
              {
                "const": "ebay"
              },
              {
                "const": "tiktok-shop"
              },
              {
                "const": "woocommerce"
              },
              {
                "const": "shipstation"
              },
              {
                "const": "google-drive"
              },
              {
                "const": "onedrive"
              }
            ]
          },
          "externalId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ],
            "description": "External identifier for deduplication (e.g., shopId for Etsy)"
          },
          "publicData": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/EtsyPublicData"
              },
              {
                "$ref": "#/components/schemas/ShopifyPublicData"
              },
              {
                "$ref": "#/components/schemas/BambuLabPublicData"
              },
              {
                "$ref": "#/components/schemas/CloudStoragePublicData"
              },
              {
                "$ref": "#/components/schemas/EbayPublicData"
              },
              {
                "$ref": "#/components/schemas/TikTokShopPublicData"
              },
              {
                "$ref": "#/components/schemas/WooCommercePublicData"
              },
              {
                "$ref": "#/components/schemas/ShipStationPublicData"
              }
            ],
            "description": "Public metadata safe to expose to frontend"
          },
          "settings": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/EtsySettings"
              },
              {
                "$ref": "#/components/schemas/ShopifySettings"
              },
              {
                "$ref": "#/components/schemas/EbaySettings"
              },
              {
                "$ref": "#/components/schemas/TikTokShopSettings"
              },
              {
                "$ref": "#/components/schemas/WooCommerceSettings"
              },
              {
                "$ref": "#/components/schemas/ShipStationSettings"
              },
              {
                "$ref": "#/components/schemas/CloudStorageSettings"
              }
            ],
            "description": "User-configurable settings"
          },
          "id": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "storeId": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time"
          }
        },
        "required": [
          "type",
          "id",
          "storeId",
          "createdAt",
          "updatedAt"
        ]
      },
      "EtsyPublicData": {
        "type": "object",
        "properties": {
          "shopId": {
            "type": "string"
          },
          "shopName": {
            "type": "string"
          },
          "shopUrl": {
            "type": "string"
          },
          "lastSyncedAt": {
            "type": "number"
          }
        },
        "required": [
          "shopId",
          "shopName"
        ],
        "description": "Public data for Etsy integrations (safe to expose to frontend)"
      },
      "ShopifyPublicData": {
        "type": "object",
        "properties": {
          "shopName": {
            "type": "string"
          },
          "shopDomain": {
            "type": "string"
          },
          "lastSyncedAt": {
            "type": "number"
          }
        },
        "required": [
          "shopName",
          "shopDomain"
        ],
        "description": "Public data for Shopify integrations (safe to expose to frontend)"
      },
      "BambuLabPublicData": {
        "type": "object",
        "properties": {
          "username": {
            "type": "string"
          }
        },
        "description": "Public data for BambuLab integrations (safe to expose to frontend)"
      },
      "CloudStoragePublicData": {
        "type": "object",
        "properties": {
          "email": {
            "type": "string"
          },
          "displayName": {
            "type": "string"
          },
          "lastSyncedAt": {
            "type": "number"
          },
          "lastSyncStartedAt": {
            "type": "number"
          },
          "syncStatus": {
            "oneOf": [
              {
                "const": "idle"
              },
              {
                "const": "syncing"
              }
            ],
            "title": "Coarse run state used as the concurrency claim for background syncs",
            "description": "Coarse run state used as the concurrency claim for background syncs."
          },
          "lastSyncError": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "lastSyncResult": {
            "type": "object",
            "properties": {
              "created": {
                "type": "number"
              },
              "updated": {
                "type": "number"
              },
              "deleted": {
                "type": "number"
              },
              "errors": {
                "type": "number"
              }
            },
            "required": [
              "created",
              "updated",
              "deleted",
              "errors"
            ]
          },
          "authError": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ],
            "description": "Set when a token refresh fails because the grant was revoked. The stored\ntokens are dead once this is set; the UI prompts a reconnect. Cleared on a\nsuccessful reconnect."
          }
        },
        "required": [
          "email",
          "displayName"
        ],
        "description": "Public data for cloud-storage integrations (safe to expose to frontend)."
      },
      "EbayPublicData": {
        "type": "object",
        "properties": {
          "sellerId": {
            "type": "string"
          },
          "username": {
            "type": "string"
          },
          "marketplaceId": {
            "type": "string",
            "description": "eBay marketplace ID (e.g., EBAY_US, EBAY_UK, EBAY_DE, EBAY_AU)"
          },
          "lastSyncedAt": {
            "type": "number"
          }
        },
        "required": [
          "sellerId",
          "username",
          "marketplaceId"
        ],
        "description": "Public data for eBay integrations (safe to expose to frontend)"
      },
      "TikTokShopPublicData": {
        "type": "object",
        "properties": {
          "shopId": {
            "type": "string"
          },
          "shopName": {
            "type": "string"
          },
          "region": {
            "type": "string",
            "description": "TikTok Shop region (e.g., US, UK, ID)"
          },
          "lastSyncedAt": {
            "type": "number"
          },
          "disconnectedAt": {
            "type": "number",
            "description": "Set when TikTok notifies us (SELLER_DEAUTHORIZATION webhook) that the seller\nrevoked our app's access. The stored tokens are dead once this is set, so\nsyncs stop and the UI prompts a reconnect. Cleared when the seller\nre-authorizes through OAuth."
          },
          "disconnectReason": {
            "const": "seller_deauthorized",
            "title": "Why the integration was auto-disconnected (only `seller_deauthorized` today)",
            "description": "Why the integration was auto-disconnected (only `seller_deauthorized` today)."
          }
        },
        "required": [
          "shopId",
          "shopName",
          "region"
        ],
        "description": "Public data for TikTok Shop integrations (safe to expose to frontend)"
      },
      "WooCommercePublicData": {
        "type": "object",
        "properties": {
          "storeUrl": {
            "type": "string",
            "title": "Normalized store URL (origin + path, no trailing slash)",
            "description": "Normalized store URL (origin + path, no trailing slash)."
          },
          "storeName": {
            "type": "string",
            "title": "The WordPress site title, for display",
            "description": "The WordPress site title, for display."
          },
          "lastSyncedAt": {
            "type": "number"
          },
          "syncWatermark": {
            "type": "number",
            "description": "Watermark (epoch millis) for the incremental order sync: the start time of\nthe last successful sync, minus overlap. Orders modified after this are\nre-fetched and reconciled on the next run."
          },
          "lastWebhookAt": {
            "type": "number",
            "description": "When the last signed webhook delivery arrived. Webhook delivery on\nWordPress hosts is WP-cron driven and unreliable, so the UI surfaces this\nnext to the polling interval."
          },
          "webhookSetupError": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ],
            "title": "Set when webhook registration failed at connect time; polling still runs",
            "description": "Set when webhook registration failed at connect time; polling still runs."
          }
        },
        "required": [
          "storeUrl",
          "storeName"
        ],
        "description": "Public data for WooCommerce integrations (safe to expose to frontend)"
      },
      "ShipStationPublicData": {
        "type": "object",
        "properties": {
          "accountName": {
            "type": "string",
            "title": "ShipStation has no account id on the v1 API; the first store's account name identifies it",
            "description": "ShipStation has no account id on the v1 API; the first store's account name identifies it."
          },
          "stores": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ShipStationStore"
            },
            "title": "Discovered stores, refreshed on every sync so the picker can show new ones",
            "description": "Discovered stores, refreshed on every sync so the picker can show new ones."
          },
          "lastSyncedAt": {
            "type": "number"
          },
          "ordersSyncedThrough": {
            "type": "string",
            "description": "Watermark: the ShipStation `modifyDate` (ISO, account-local) the last sync\nread through. The next sync resumes from here rather than re-walking the\nseller's whole order history, which a 40 req/min key cannot afford."
          },
          "authError": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ],
            "description": "Set when ShipStation rejects the stored credentials. Syncs stop until the\nseller reconnects; cleared on a successful reconnect."
          }
        },
        "required": [
          "accountName",
          "stores"
        ],
        "description": "Public data for ShipStation integrations (safe to expose to frontend)"
      },
      "EtsySettings": {
        "type": "object",
        "properties": {
          "autoPrint": {
            "type": "boolean"
          },
          "autoCloseOrders": {
            "oneOf": [
              {
                "const": "shipped"
              },
              {
                "const": "delivered"
              },
              {
                "const": "never"
              }
            ]
          },
          "ignoredVariantNames": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Variant option names to exclude from SKU matching (e.g., [\"Size\"])"
          }
        },
        "description": "Settings for Etsy integrations"
      },
      "ShopifySettings": {
        "type": "object",
        "properties": {
          "autoPrint": {
            "type": "boolean"
          },
          "writeProgressTags": {
            "type": "boolean",
            "title": "Keep Shopify order tags in sync with Printago print job progress (e.g. \"2/5 printed\")",
            "description": "Keep Shopify order tags in sync with Printago print job progress (e.g. \"2/5 printed\")."
          },
          "autoCloseOrders": {
            "oneOf": [
              {
                "const": "partial"
              },
              {
                "const": "never"
              },
              {
                "const": "fulfilled"
              }
            ],
            "title": "When to automatically close orders in Printago based on Shopify status",
            "description": "When to automatically close orders in Printago based on Shopify status.\n- 'fulfilled': Close when Shopify order is fully fulfilled (shipped)\n- 'partial': Close when any items are fulfilled\n- 'never': Never auto-close based on fulfillment"
          },
          "tagWhenPrinted": {
            "type": "string",
            "description": "Tag to add to orders when fully printed (empty string disables)"
          },
          "propertyWhitelist": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Property names to import as SKU options (e.g., [\"Logo\", \"Back Color\"])"
          },
          "ignoredVariantNames": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Variant option names to exclude from SKU matching (e.g., [\"Size\"])"
          }
        },
        "description": "Settings for Shopify integrations"
      },
      "ShipStationSettings": {
        "type": "object",
        "properties": {
          "autoPrint": {
            "type": "boolean"
          },
          "autoCloseOrders": {
            "oneOf": [
              {
                "const": "shipped"
              },
              {
                "const": "never"
              }
            ],
            "description": "Defaults to 'shipped' here, unlike Shopify and eBay: ShipStation is where\nthe seller actually ships, so SHIP_NOTIFY is a first-hand signal rather\nthan a marketplace's echo of one."
          },
          "excludedStoreIds": {
            "type": "array",
            "items": {
              "type": "number"
            },
            "description": "ShipStation store ids NOT to import from. An exclusion list rather than an\nallowlist so a store the seller adds in ShipStation later imports without\nthem having to come back here — the seller already knows what they\nconnected, and turning one off is the rarer action."
          },
          "showMarketplace": {
            "type": "boolean",
            "description": "Show the underlying marketplace alongside the source, so an order reads\n\"ShipStation - Walmart\" rather than just \"ShipStation\"."
          }
        },
        "description": "Settings for ShipStation integrations"
      },
      "CloudStorageSettings": {
        "type": "object",
        "properties": {
          "watchedFolderId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ],
            "title": "The remote folder ID to watch",
            "description": "The remote folder ID to watch."
          },
          "watchedFolderName": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ],
            "title": "The remote folder name/path (for display)",
            "description": "The remote folder name/path (for display)."
          },
          "keepPartsOnRemoteDelete": {
            "type": "boolean",
            "title": "Whether to keep Printago parts when their source file is removed remotely",
            "description": "Whether to keep Printago parts when their source file is removed remotely.\nDefaults to true: deleting parts is a destructive side effect, opt-in only."
          },
          "autoSync": {
            "type": "boolean",
            "title": "Re-enqueue the next sync (~60 min) when a background sync completes",
            "description": "Re-enqueue the next sync (~60 min) when a background sync completes."
          },
          "syncFileTypes": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "title": "File extensions to import (defaults to all supported)",
            "description": "File extensions to import (defaults to all supported)."
          }
        },
        "description": "Settings for cloud-storage integrations (Google Drive, OneDrive)."
      },
      "ShipStationStoreimportedboolean": {
        "type": "object",
        "properties": {
          "storeId": {
            "type": "number"
          },
          "storeName": {
            "type": "string"
          },
          "marketplaceName": {
            "type": "string",
            "title": "The underlying channel, e.g. \"Walmart\", \"Shopify\", \"Manual Orders\"",
            "description": "The underlying channel, e.g. \"Walmart\", \"Shopify\", \"Manual Orders\"."
          },
          "active": {
            "type": "boolean",
            "title": "ShipStation's own active flag; inactive stores stop producing orders",
            "description": "ShipStation's own active flag; inactive stores stop producing orders."
          },
          "imported": {
            "type": "boolean"
          }
        },
        "required": [
          "storeId",
          "storeName",
          "marketplaceName",
          "active",
          "imported"
        ]
      },
      "CloudStorageSyncStatus": {
        "type": "object",
        "properties": {
          "connected": {
            "type": "boolean"
          },
          "provider": {
            "oneOf": [
              {
                "const": "google-drive"
              },
              {
                "const": "onedrive"
              }
            ]
          },
          "watchedFolder": {
            "type": "object",
            "properties": {
              "id": {
                "oneOf": [
                  {
                    "type": "null"
                  },
                  {
                    "type": "string"
                  }
                ]
              },
              "name": {
                "oneOf": [
                  {
                    "type": "null"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            },
            "required": [
              "id",
              "name"
            ]
          },
          "syncStatus": {
            "oneOf": [
              {
                "const": "idle"
              },
              {
                "const": "syncing"
              }
            ]
          },
          "lastSyncedAt": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "syncedFileCount": {
            "type": "number"
          },
          "authError": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ]
          },
          "settings": {
            "type": "object",
            "properties": {
              "keepPartsOnRemoteDelete": {
                "type": "boolean"
              },
              "autoSync": {
                "type": "boolean"
              },
              "syncFileTypes": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              }
            },
            "required": [
              "keepPartsOnRemoteDelete",
              "autoSync",
              "syncFileTypes"
            ]
          }
        },
        "required": [
          "connected",
          "provider",
          "watchedFolder",
          "syncStatus",
          "lastSyncedAt",
          "syncedFileCount",
          "authError",
          "settings"
        ],
        "description": "Response describing the current sync status of an integration."
      },
      "CloudStorageFolderItem": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "path": {
            "type": "string"
          }
        },
        "required": [
          "id",
          "name"
        ],
        "description": "A folder listing from a cloud storage provider (normalized across providers)."
      },
      "SelectFolderRequest": {
        "type": "object",
        "properties": {
          "folderId": {
            "type": "string"
          },
          "folderName": {
            "type": "string"
          }
        },
        "required": [
          "folderId",
          "folderName"
        ],
        "description": "Request body for selecting a folder to watch."
      },
      "CloudStorageSync": {
        "type": "object",
        "properties": {
          "integrationId": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "provider": {
            "oneOf": [
              {
                "const": "google-drive"
              },
              {
                "const": "onedrive"
              }
            ]
          },
          "remoteFileId": {
            "type": "string",
            "title": "The remote file ID from the cloud provider",
            "description": "The remote file ID from the cloud provider."
          },
          "remoteFileName": {
            "type": "string",
            "title": "The remote file name",
            "description": "The remote file name."
          },
          "remoteFolderId": {
            "type": "string",
            "title": "The remote folder ID that actually contains the file",
            "description": "The remote folder ID that actually contains the file."
          },
          "remoteFolderPath": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ],
            "description": "Folder names between the watched folder and the file, joined with \"/\"\n(e.g. \"Prototypes/Brackets\"). Null or empty for a file sitting directly in\nthe watched folder. Lets the UI show where a file lives, which the opaque\nremoteFolderId cannot."
          },
          "partId": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "pattern": "^[a-z0-9]{24}$"
              }
            ],
            "title": "The Printago part ID this file is synced to",
            "description": "The Printago part ID this file is synced to."
          },
          "remoteFileHash": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ],
            "title": "Provider-supplied opaque hash of the remote file for change detection",
            "description": "Provider-supplied opaque hash of the remote file for change detection."
          },
          "remoteFileSize": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "number"
              }
            ],
            "title": "Size in bytes of the remote file",
            "description": "Size in bytes of the remote file."
          },
          "remoteModifiedAt": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "format": "date-time"
              }
            ],
            "title": "Last modified timestamp from the remote provider",
            "description": "Last modified timestamp from the remote provider."
          },
          "status": {
            "oneOf": [
              {
                "const": "synced"
              },
              {
                "const": "pending"
              },
              {
                "const": "error"
              },
              {
                "const": "deleted_remotely"
              },
              {
                "const": "removed_locally",
                "title": "The part was deleted inside Printago while the file still exists remotely",
                "description": "The part was deleted inside Printago while the file still exists remotely.\nSync deliberately does not recreate it — re-importing on the next run would\nfight a user who deleted it on purpose, and deleting a mirrored folder\nremoves every part inside it at once. Re-import is an explicit action."
              }
            ],
            "title": "Current sync status",
            "description": "Current sync status."
          },
          "lastError": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string"
              }
            ],
            "title": "Error message if status is 'error'",
            "description": "Error message if status is 'error'."
          },
          "lastSyncedAt": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "format": "date-time"
              }
            ],
            "title": "Timestamp of last successful sync",
            "description": "Timestamp of last successful sync."
          },
          "id": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "storeId": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time"
          }
        },
        "required": [
          "integrationId",
          "provider",
          "remoteFileId",
          "remoteFileName",
          "remoteFolderId",
          "remoteFolderPath",
          "partId",
          "remoteFileHash",
          "remoteFileSize",
          "remoteModifiedAt",
          "status",
          "lastError",
          "lastSyncedAt",
          "id",
          "storeId",
          "createdAt",
          "updatedAt"
        ],
        "description": "A record tracking the sync state of a single file between a cloud provider and Printago."
      },
      "CloudStorageSettingsUpdate": {
        "type": "object",
        "properties": {
          "keepPartsOnRemoteDelete": {
            "type": "boolean"
          },
          "autoSync": {
            "type": "boolean"
          },
          "syncFileTypes": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        },
        "description": "Request body for updating cloud-storage sync settings."
      },
      "PrinterHistoryLastResponse": {
        "type": "object",
        "properties": {
          "printerId": {
            "type": "string",
            "pattern": "^[a-z0-9]{24}$"
          },
          "last": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PrinterHistoryLastEntry"
            }
          }
        },
        "required": [
          "printerId",
          "last"
        ]
      },
      "PrinterHistoryLastEntry": {
        "type": "object",
        "properties": {
          "job": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/PrintJob"
              }
            ]
          },
          "part": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/Part"
              }
            ]
          },
          "sku": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/Sku"
              }
            ]
          },
          "order": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/Order"
              }
            ]
          },
          "orderItem": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/OrderItem"
              }
            ]
          }
        }
      },
      "PrinterHistoryLastQuery": {
        "type": "object",
        "properties": {
          "refs": {
            "type": "string",
            "pattern": "^(part|sku|job|order|orderItem)(?:,(part|sku|job|order|orderItem))*$",
            "description": "Comma-separated subset of: part, sku, job, order, orderItem. Defaults\nto job when omitted."
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 25,
            "title": "Number of recent terminal jobs to return, 1 to 25. Defaults to 1",
            "description": "Number of recent terminal jobs to return, 1 to 25. Defaults to 1."
          }
        }
      },
      "typestringundefinedexternalIdstringundefinedpublicDatastringundefinedsettingsstringundefinedidstringundefinedstoreIdstringundefinedcreatedAtstringundefinedupdatedAtstringundefinedQuerySettings...": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string"
          },
          "externalId": {
            "type": "string",
            "description": "External identifier for deduplication (e.g., shopId for Etsy)"
          },
          "publicData": {
            "type": "string",
            "description": "Public metadata safe to expose to frontend"
          },
          "settings": {
            "type": "string",
            "description": "User-configurable settings"
          },
          "id": {
            "type": "string"
          },
          "storeId": {
            "type": "string"
          },
          "createdAt": {
            "type": "string"
          },
          "updatedAt": {
            "type": "string"
          },
          "sort": {
            "type": "string",
            "title": "Sort",
            "description": "Sort specification in format \"field:asc,field2:desc\""
          },
          "limit": {
            "type": "number",
            "minimum": 1,
            "maximum": 1000,
            "title": "Limit",
            "description": "Maximum number of results to return (default: 1000, max: 1000)"
          },
          "offset": {
            "type": "number",
            "minimum": 0,
            "title": "Offset",
            "description": "Number of results to skip for pagination"
          },
          "fields": {
            "type": "string",
            "title": "Fields",
            "description": "Comma-separated list of fields to return"
          },
          "include": {
            "type": "string",
            "title": "Include",
            "description": "Comma-separated list of relations to include (max 4, max 2 levels deep).\nExample: \"linkedParts,linkedParts.part,folder\""
          },
          "meta": {
            "type": "boolean",
            "title": "Meta",
            "description": "If true, returns response with metadata (total, count, hasMore, etc.)"
          },
          "hints": {
            "type": "boolean",
            "title": "Hints",
            "description": "If true, returns AI-friendly hints about available actions. Implies meta=true."
          }
        }
      },
      "SearchQueryDtoIntegration": {
        "type": "object",
        "properties": {
          "filter": {
            "$ref": "#/components/schemas/FilterConditionIntegration",
            "title": "Filter",
            "description": "Complex filter conditions using logical and field operators.\nAvailable field operators: eq, ne, gt, gte, lt, lte, contains, startsWith, endsWith, in, notIn, isNull, between.\nUsage example: {\"filter\": {\"and\": [{\"name\": {\"contains\": \"benchy\"}}, {\"or\": [{\"type\": {\"eq\": \"3mf\"}}, {\"type\": {\"eq\": \"gcode3mf\"}}]}}}"
          },
          "sort": {
            "type": "string",
            "title": "Sort",
            "description": "Sort specification in format \"field:asc,field2:desc\""
          },
          "limit": {
            "type": "number",
            "minimum": 1,
            "maximum": 1000,
            "title": "Limit",
            "description": "Maximum number of results to return (default: 1000, max: 1000)"
          },
          "offset": {
            "type": "number",
            "minimum": 0,
            "title": "Offset",
            "description": "Number of results to skip for pagination"
          },
          "fields": {
            "type": "string",
            "title": "Fields",
            "description": "Comma-separated list of fields to return"
          },
          "include": {
            "type": "string",
            "title": "Include",
            "description": "Comma-separated list of relations to include (max 4, max 2 levels deep).\nExample: \"linkedParts,linkedParts.part,folder\""
          },
          "meta": {
            "type": "boolean",
            "title": "Meta",
            "description": "If true, returns response with metadata (total, count, hasMore, etc.)"
          },
          "hints": {
            "type": "boolean",
            "title": "Hints",
            "description": "If true, returns AI-friendly hints about available actions. Implies meta=true."
          }
        },
        "title": "Search Query",
        "description": "Complete search request with filter conditions and query settings"
      },
      "FilterConditionIntegration": {
        "type": "object",
        "properties": {
          "and": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FilterConditionIntegration"
            },
            "title": "AND Conditions",
            "description": "All conditions must be true"
          },
          "or": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FilterConditionIntegration"
            },
            "title": "OR Conditions",
            "description": "At least one condition must be true"
          },
          "type": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "externalId": {
            "$ref": "#/components/schemas/FieldOperators",
            "description": "External identifier for deduplication (e.g., shopId for Etsy)"
          },
          "publicData": {
            "$ref": "#/components/schemas/FieldOperators",
            "description": "Public metadata safe to expose to frontend"
          },
          "settings": {
            "$ref": "#/components/schemas/FieldOperators",
            "description": "User-configurable settings"
          },
          "id": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "storeId": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "createdAt": {
            "$ref": "#/components/schemas/FieldOperators"
          },
          "updatedAt": {
            "$ref": "#/components/schemas/FieldOperators"
          }
        },
        "title": "Filter Condition",
        "description": "Root filter condition that can be either a logical condition (AND/OR) or field-based condition"
      }
    },
    "securitySchemes": {
      "ApiKey": {
        "type": "apiKey",
        "name": "Authorization",
        "in": "header",
        "description": "Your API key, prefixed with `ApiKey ` and a space: `Authorization: ApiKey <your-api-key>`. Create keys on the API Keys page of the Printago app."
      },
      "StoreId": {
        "type": "apiKey",
        "name": "x-printago-storeid",
        "in": "header",
        "description": "Optional store assertion. The API key determines the store; if this header is supplied, it must match the key’s store or the request returns 401."
      }
    }
  },
  "tags": [
    {
      "name": "Printers"
    },
    {
      "name": "Parts"
    },
    {
      "name": "SKUs"
    },
    {
      "name": "Linked_Parts"
    },
    {
      "name": "Profiles"
    },
    {
      "name": "Print_Jobs"
    },
    {
      "name": "Stores"
    },
    {
      "name": "Printing"
    },
    {
      "name": "Part_Builds"
    },
    {
      "name": "Users"
    },
    {
      "name": "SKU_Builds"
    },
    {
      "name": "Folders"
    },
    {
      "name": "Entitlements"
    },
    {
      "name": "Permissions"
    },
    {
      "name": "Settings"
    },
    {
      "name": "Materials"
    },
    {
      "name": "Material_Variants"
    },
    {
      "name": "Material_Groups"
    },
    {
      "name": "Material_Assignments"
    },
    {
      "name": "Material_Instances"
    },
    {
      "name": "Printer_Slots"
    },
    {
      "name": "Filament_Stock"
    },
    {
      "name": "SKU_Variants"
    },
    {
      "name": "Cost_Catalog"
    },
    {
      "name": "SKU_Costs"
    },
    {
      "name": "Custom_Fields"
    },
    {
      "name": "Hints"
    },
    {
      "name": "Audit_Logs"
    },
    {
      "name": "Maintenance"
    },
    {
      "name": "Staggered_Start"
    },
    {
      "name": "Print_History"
    },
    {
      "name": "Customizer"
    },
    {
      "name": "Macros"
    },
    {
      "name": "Cards"
    },
    {
      "name": "Classwork"
    },
    {
      "name": "Sequences"
    },
    {
      "name": "QR_Tags"
    },
    {
      "name": "Layouts"
    },
    {
      "name": "Reports"
    },
    {
      "name": "API_Keys"
    },
    {
      "name": "Subscriptions"
    },
    {
      "name": "Files"
    },
    {
      "name": "Notifications"
    },
    {
      "name": "Orders"
    },
    {
      "name": "Order_Items"
    },
    {
      "name": "Customers"
    },
    {
      "name": "Shopify"
    },
    {
      "name": "Etsy"
    },
    {
      "name": "eBay"
    },
    {
      "name": "TikTok",
      "description": "Shop"
    },
    {
      "name": "WooCommerce"
    },
    {
      "name": "ShipStation"
    },
    {
      "name": "Cloud",
      "description": "Storage"
    },
    {
      "name": "Integrations"
    }
  ],
  "x-samchon-emended": true,
  "security": [
    {
      "ApiKey": []
    }
  ]
}
