{
  "openapi": "3.0.1",
  "info": {
    "title": "ZPL-Render Managed Web API",
    "description": "A Linux-hostable ASP.NET Core host for the native ZPL renderer, browser demo, and OpenAPI docs.",
    "version": "v1"
  },
  "paths": {
    "/api/session": {
      "get": {
        "tags": [
          "Accounts"
        ],
        "summary": "Get current session",
        "description": "Returns the currently signed-in user if a valid session cookie is present.",
        "operationId": "GetSession",
        "parameters": [
          {
            "name": "X-Api-Key",
            "in": "header",
            "description": "Optional for the free tier. Use it to unlock premium request limits.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SessionInfoDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/auth/login": {
      "post": {
        "tags": [
          "Accounts"
        ],
        "summary": "Sign in",
        "description": "Creates a signed session cookie for a valid email and password.",
        "operationId": "Login",
        "parameters": [
          {
            "name": "X-Api-Key",
            "in": "header",
            "description": "Optional for the free tier. Use it to unlock premium request limits.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/LoginRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthResponseDto"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/api/auth/register": {
      "post": {
        "tags": [
          "Accounts"
        ],
        "summary": "Create an account",
        "description": "Creates a new local account and signs the user in immediately.",
        "operationId": "Register",
        "parameters": [
          {
            "name": "X-Api-Key",
            "in": "header",
            "description": "Optional for the free tier. Use it to unlock premium request limits.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RegisterRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthResponseDto"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/api/auth/logout": {
      "post": {
        "tags": [
          "Accounts"
        ],
        "summary": "Sign out",
        "description": "Clears the session cookie and invalidates the current session.",
        "operationId": "Logout",
        "parameters": [
          {
            "name": "X-Api-Key",
            "in": "header",
            "description": "Optional for the free tier. Use it to unlock premium request limits.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthResponseDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/account": {
      "get": {
        "tags": [
          "Accounts"
        ],
        "summary": "Get account profile",
        "description": "Returns the signed-in user's profile details.",
        "operationId": "GetAccount",
        "parameters": [
          {
            "name": "X-Api-Key",
            "in": "header",
            "description": "Optional for the free tier. Use it to unlock premium request limits.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UserProfileDto"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          }
        }
      },
      "put": {
        "tags": [
          "Accounts"
        ],
        "summary": "Update profile",
        "description": "Updates the current user's email address and display name.",
        "operationId": "UpdateAccount",
        "parameters": [
          {
            "name": "X-Api-Key",
            "in": "header",
            "description": "Optional for the free tier. Use it to unlock premium request limits.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateAccountRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthResponseDto"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          }
        }
      }
    },
    "/api/account/password": {
      "post": {
        "tags": [
          "Accounts"
        ],
        "summary": "Change password",
        "description": "Updates the current user's password after verifying the existing one.",
        "operationId": "ChangePassword",
        "parameters": [
          {
            "name": "X-Api-Key",
            "in": "header",
            "description": "Optional for the free tier. Use it to unlock premium request limits.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ChangePasswordRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthResponseDto"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          }
        }
      }
    },
    "/api/feedback": {
      "post": {
        "tags": [
          "Accounts"
        ],
        "summary": "Send feedback",
        "description": "Stores feedback locally and optionally sends it through the configured SMTP server.",
        "operationId": "SaveFeedback",
        "parameters": [
          {
            "name": "X-Api-Key",
            "in": "header",
            "description": "Optional for the free tier. Use it to unlock premium request limits.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/FeedbackRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/api/project-settings": {
      "get": {
        "tags": [
          "Accounts"
        ],
        "summary": "Get project settings",
        "description": "Returns the shared project settings, including SMTP configuration, for signed-in users.",
        "operationId": "GetProjectSettings",
        "parameters": [
          {
            "name": "X-Api-Key",
            "in": "header",
            "description": "Optional for the free tier. Use it to unlock premium request limits.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProjectSettingsDto"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          }
        }
      },
      "put": {
        "tags": [
          "Accounts"
        ],
        "summary": "Update project settings",
        "description": "Updates the shared project settings, including support email and SMTP delivery details.",
        "operationId": "UpdateProjectSettings",
        "parameters": [
          {
            "name": "X-Api-Key",
            "in": "header",
            "description": "Optional for the free tier. Use it to unlock premium request limits.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ProjectSettingsUpdateRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProjectSettingsDto"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          }
        }
      }
    },
    "/health": {
      "get": {
        "tags": [
          "Operations"
        ],
        "summary": "Health check",
        "description": "Returns a tiny payload that confirms the web host is alive.",
        "operationId": "Health",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HealthResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/instance": {
      "get": {
        "tags": [
          "Operations"
        ],
        "summary": "Get instance profile",
        "description": "Returns the current deployment profile, including subscription state, customer metadata, and HA node info.",
        "operationId": "GetInstance",
        "parameters": [
          {
            "name": "X-Api-Key",
            "in": "header",
            "description": "Optional for the free tier. Use it to unlock premium request limits.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InstanceProfileDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/instance/provisioning": {
      "get": {
        "tags": [
          "Operations"
        ],
        "summary": "Get provisioning manifest",
        "description": "Returns a ready-to-use provisioning manifest with environment variables, checklist items, and offboarding steps.",
        "operationId": "GetInstanceProvisioning",
        "parameters": [
          {
            "name": "X-Api-Key",
            "in": "header",
            "description": "Optional for the free tier. Use it to unlock premium request limits.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InstanceProvisioningManifestDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/instance/provision": {
      "post": {
        "tags": [
          "Operations"
        ],
        "summary": "Provision or update a customer instance",
        "description": "Seeds the local deployment profile for a new customer instance or updates the existing one on this server.",
        "operationId": "ProvisionInstance",
        "parameters": [
          {
            "name": "X-Api-Key",
            "in": "header",
            "description": "Optional for the free tier. Use it to unlock premium request limits.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/InstanceProvisionRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InstanceProfileDto"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          }
        }
      }
    },
    "/api/instance/cancel": {
      "post": {
        "tags": [
          "Operations"
        ],
        "summary": "Cancel the active subscription",
        "description": "Marks the current instance as cancelled and blocks normal traffic until it is reactivated by an operator.",
        "operationId": "CancelInstance",
        "parameters": [
          {
            "name": "X-Api-Key",
            "in": "header",
            "description": "Optional for the free tier. Use it to unlock premium request limits.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InstanceProfileDto"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          }
        }
      }
    },
    "/api/instance/reactivate": {
      "post": {
        "tags": [
          "Operations"
        ],
        "summary": "Reactivate the subscription",
        "description": "Restores normal access for a previously cancelled customer instance.",
        "operationId": "ReactivateInstance",
        "parameters": [
          {
            "name": "X-Api-Key",
            "in": "header",
            "description": "Optional for the free tier. Use it to unlock premium request limits.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/InstanceCancelRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InstanceProfileDto"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          }
        }
      }
    },
    "/api/render": {
      "post": {
        "tags": [
          "Rendering"
        ],
        "summary": "Render ZPL",
        "description": "Renders ZPL through the native engine and returns normalized ZPL, a tree view, element metadata, and optional BGRA bytes.",
        "operationId": "RenderZpl",
        "parameters": [
          {
            "name": "X-Api-Key",
            "in": "header",
            "description": "Optional for the free tier. Use it to unlock premium request limits.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RenderRequest"
              },
              "example": {
                "zpl": "^XA\\n^PW960\\n^LL1200\\n^CF0,60\\n^FO40,40^FDZPL Render Demo^FS\\n^FO40,110^FDSwagger example payload.^FS\\n^BY3,2,120\\n^FO80,390^BCN,120,Y,N,N^FD1234567890^FS\\n^XZ",
                "options": {
                  "sourceDpi": 203,
                  "targetDpi": 203,
                  "canvasWidth": 960,
                  "canvasHeight": 1200,
                  "preserveComments": true,
                  "includeUnknownCommands": true,
                  "prettyPrint": true,
                  "wrapInFormat": true,
                  "renderBackground": true,
                  "backgroundArgb": 4294967295,
                  "foregroundArgb": 4278190080
                },
                "includeImage": false
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RenderResponse"
                },
                "example": {
                  "error": "",
                  "tree": "[0] StartFormat ^XA",
                  "normalizedZpl": "^XA\\n^FO40,40^FDZPL Render Demo^FS\\n^XZ",
                  "imageWidth": 960,
                  "imageHeight": 1200,
                  "imageStride": 3840,
                  "pixelFormat": 1,
                  "imageBytes": [ ],
                  "elements": [
                    {
                      "type": "StartFormat",
                      "id": "XA@0",
                      "summary": "StartFormat ^XA"
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/api/render/png": {
      "post": {
        "tags": [
          "Rendering"
        ],
        "summary": "Render ZPL and download a PNG",
        "description": "Renders ZPL through the native engine and returns a ready-to-download PNG file. Use this endpoint when you want the image directly instead of JSON.",
        "operationId": "RenderPng",
        "parameters": [
          {
            "name": "X-Api-Key",
            "in": "header",
            "description": "Optional for the free tier. Use it to unlock premium request limits.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/api/render/batch": {
      "post": {
        "tags": [
          "Rendering"
        ],
        "summary": "Render a batch of labels",
        "description": "Processes many labels in one request and parallelizes the workload across the native renderer pool.",
        "operationId": "RenderBatch",
        "parameters": [
          {
            "name": "X-Api-Key",
            "in": "header",
            "description": "Optional for the free tier. Use it to unlock premium request limits.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RenderBatchRequest"
              },
              "example": {
                "items": [
                  {
                    "zpl": "^XA\\n^PW960\\n^LL1200\\n^FO40,40^FDBatch job 1^FS\\n^XZ",
                    "includeImage": false
                  },
                  {
                    "zpl": "^XA\\n^PW960\\n^LL1200\\n^FO40,40^FDBatch job 2^FS\\n^XZ",
                    "includeImage": false
                  }
                ]
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RenderBatchResponse"
                },
                "example": {
                  "items": [
                    {
                      "error": "",
                      "tree": "[0] StartFormat ^XA",
                      "normalizedZpl": "^XA\\n^FO40,40^FDBatch job 1^FS\\n^XZ",
                      "imageWidth": 0,
                      "imageHeight": 0,
                      "imageStride": 0,
                      "pixelFormat": 1,
                      "imageBytes": null,
                      "elements": [ ]
                    },
                    {
                      "error": "",
                      "tree": "[0] StartFormat ^XA",
                      "normalizedZpl": "^XA\\n^FO40,40^FDBatch job 2^FS\\n^XZ",
                      "imageWidth": 0,
                      "imageHeight": 0,
                      "imageStride": 0,
                      "pixelFormat": 1,
                      "imageBytes": null,
                      "elements": [ ]
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/subscription": {
      "get": {
        "tags": [
          "ZPL-Render-Managed-Web"
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/subscription": {
      "get": {
        "tags": [
          "ZPL-Render-Managed-Web"
        ],
        "parameters": [
          {
            "name": "X-Api-Key",
            "in": "header",
            "description": "Optional for the free tier. Use it to unlock premium request limits.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/subscription/checkout": {
      "post": {
        "tags": [
          "ZPL-Render-Managed-Web"
        ],
        "parameters": [
          {
            "name": "X-Api-Key",
            "in": "header",
            "description": "Optional for the free tier. Use it to unlock premium request limits.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/subscription/cancel": {
      "post": {
        "tags": [
          "ZPL-Render-Managed-Web"
        ],
        "parameters": [
          {
            "name": "X-Api-Key",
            "in": "header",
            "description": "Optional for the free tier. Use it to unlock premium request limits.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/paypal/webhook": {
      "post": {
        "tags": [
          "ZPL-Render-Managed-Web"
        ],
        "parameters": [
          {
            "name": "X-Api-Key",
            "in": "header",
            "description": "Optional for the free tier. Use it to unlock premium request limits.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/paypal/ipn": {
      "post": {
        "tags": [
          "ZPL-Render-Managed-Web"
        ],
        "parameters": [
          {
            "name": "X-Api-Key",
            "in": "header",
            "description": "Optional for the free tier. Use it to unlock premium request limits.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/keys": {
      "post": {
        "tags": [
          "ZPL-Render-Managed-Web"
        ],
        "summary": "Issue an API key",
        "description": "Issues a Plus or Business API key for authorized operator tooling and returns the raw value once.",
        "operationId": "CreateApiKey",
        "parameters": [
          {
            "name": "X-Api-Key",
            "in": "header",
            "description": "Optional for the free tier. Use it to unlock premium request limits.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ApiKeyCreateRequest"
              },
              "example": {
                "plan": "plus",
                "label": "ManagedWeb demo"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "ApiKeyCreateRequest": {
        "type": "object",
        "properties": {
          "plan": {
            "type": "string",
            "description": "Requested plan. Supported values are `plus` and `business`.",
            "nullable": true
          },
          "label": {
            "type": "string",
            "description": "Optional label to help identify the key later.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Input model for API key generation."
      },
      "AuthResponseDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "user": {
            "$ref": "#/components/schemas/UserProfileDto"
          }
        },
        "additionalProperties": false
      },
      "ChangePasswordRequest": {
        "type": "object",
        "properties": {
          "currentPassword": {
            "type": "string",
            "nullable": true
          },
          "newPassword": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "FeedbackRequest": {
        "type": "object",
        "properties": {
          "kind": {
            "type": "string",
            "nullable": true
          },
          "subject": {
            "type": "string",
            "nullable": true
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "email": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "HealthResponse": {
        "type": "object",
        "properties": {
          "service": {
            "type": "string",
            "description": "Service name.",
            "nullable": true
          },
          "status": {
            "type": "string",
            "description": "Current health state.",
            "nullable": true
          },
          "timestampUtc": {
            "type": "string",
            "description": "UTC timestamp at the time of the check.",
            "format": "date-time"
          }
        },
        "additionalProperties": false,
        "description": "Lightweight health payload for infrastructure checks and smoke tests."
      },
      "InstanceCancelRequest": {
        "type": "object",
        "properties": {
          "cancelReason": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "InstanceNodeDto": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "nullable": true
          },
          "role": {
            "type": "string",
            "nullable": true
          },
          "baseUrl": {
            "type": "string",
            "nullable": true
          },
          "healthUrl": {
            "type": "string",
            "nullable": true
          },
          "status": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "InstanceProfileDto": {
        "type": "object",
        "properties": {
          "instanceId": {
            "type": "string",
            "nullable": true
          },
          "customerName": {
            "type": "string",
            "nullable": true
          },
          "customerEmail": {
            "type": "string",
            "nullable": true
          },
          "planCode": {
            "type": "string",
            "nullable": true
          },
          "instanceMode": {
            "type": "string",
            "nullable": true
          },
          "status": {
            "type": "string",
            "nullable": true
          },
          "primaryUrl": {
            "type": "string",
            "nullable": true
          },
          "healthUrl": {
            "type": "string",
            "nullable": true
          },
          "supportEmail": {
            "type": "string",
            "nullable": true
          },
          "highAvailabilityEnabled": {
            "type": "boolean"
          },
          "replicaCount": {
            "type": "integer",
            "format": "int32"
          },
          "region": {
            "type": "string",
            "nullable": true
          },
          "notes": {
            "type": "string",
            "nullable": true
          },
          "createdUtc": {
            "type": "string",
            "nullable": true
          },
          "updatedUtc": {
            "type": "string",
            "nullable": true
          },
          "cancelledUtc": {
            "type": "string",
            "nullable": true
          },
          "cancelReason": {
            "type": "string",
            "nullable": true
          },
          "nodes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/InstanceNodeDto"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "InstanceProvisionRequest": {
        "type": "object",
        "properties": {
          "customerName": {
            "type": "string",
            "nullable": true
          },
          "customerEmail": {
            "type": "string",
            "nullable": true
          },
          "planCode": {
            "type": "string",
            "nullable": true
          },
          "instanceMode": {
            "type": "string",
            "nullable": true
          },
          "status": {
            "type": "string",
            "nullable": true
          },
          "primaryUrl": {
            "type": "string",
            "nullable": true
          },
          "healthUrl": {
            "type": "string",
            "nullable": true
          },
          "supportEmail": {
            "type": "string",
            "nullable": true
          },
          "highAvailabilityEnabled": {
            "type": "boolean",
            "nullable": true
          },
          "replicaCount": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "region": {
            "type": "string",
            "nullable": true
          },
          "notes": {
            "type": "string",
            "nullable": true
          },
          "nodes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/InstanceNodeDto"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "InstanceProvisioningManifestDto": {
        "type": "object",
        "properties": {
          "instance": {
            "$ref": "#/components/schemas/InstanceProfileDto"
          },
          "environment": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "nullable": true
          },
          "checklist": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          },
          "offboardingSteps": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          },
          "generatedUtc": {
            "type": "string",
            "format": "date-time"
          }
        },
        "additionalProperties": false
      },
      "LoginRequest": {
        "type": "object",
        "properties": {
          "email": {
            "type": "string",
            "nullable": true
          },
          "password": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "ProblemDetails": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "nullable": true
          },
          "title": {
            "type": "string",
            "nullable": true
          },
          "status": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "detail": {
            "type": "string",
            "nullable": true
          },
          "instance": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": { }
      },
      "ProjectSettingsDto": {
        "type": "object",
        "properties": {
          "supportEmail": {
            "type": "string",
            "nullable": true
          },
          "downloadAppUrl": {
            "type": "string",
            "nullable": true
          },
          "upgradeAccountUrl": {
            "type": "string",
            "nullable": true
          },
          "smtpHost": {
            "type": "string",
            "nullable": true
          },
          "smtpPort": {
            "type": "integer",
            "format": "int32"
          },
          "smtpUseSsl": {
            "type": "boolean"
          },
          "smtpUsername": {
            "type": "string",
            "nullable": true
          },
          "hasSmtpPassword": {
            "type": "boolean"
          },
          "smtpFromEmail": {
            "type": "string",
            "nullable": true
          },
          "smtpFromName": {
            "type": "string",
            "nullable": true
          },
          "sendRegistrationEmails": {
            "type": "boolean"
          },
          "sendFeedbackEmails": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "ProjectSettingsUpdateRequest": {
        "type": "object",
        "properties": {
          "supportEmail": {
            "type": "string",
            "nullable": true
          },
          "downloadAppUrl": {
            "type": "string",
            "nullable": true
          },
          "upgradeAccountUrl": {
            "type": "string",
            "nullable": true
          },
          "smtpHost": {
            "type": "string",
            "nullable": true
          },
          "smtpPort": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "smtpUseSsl": {
            "type": "boolean",
            "nullable": true
          },
          "smtpUsername": {
            "type": "string",
            "nullable": true
          },
          "smtpPassword": {
            "type": "string",
            "nullable": true
          },
          "smtpFromEmail": {
            "type": "string",
            "nullable": true
          },
          "smtpFromName": {
            "type": "string",
            "nullable": true
          },
          "sendRegistrationEmails": {
            "type": "boolean",
            "nullable": true
          },
          "sendFeedbackEmails": {
            "type": "boolean",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "RegisterRequest": {
        "type": "object",
        "properties": {
          "email": {
            "type": "string",
            "nullable": true
          },
          "displayName": {
            "type": "string",
            "nullable": true
          },
          "password": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "RenderBatchRequest": {
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/RenderRequest"
            },
            "description": "The render jobs to execute.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Represents a high-throughput batch render request."
      },
      "RenderBatchResponse": {
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/RenderResponse"
            },
            "description": "The render results in the same order as the input items.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Represents the response returned by the batch render endpoint."
      },
      "RenderElementResponse": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "description": "The high-level command type.",
            "nullable": true
          },
          "id": {
            "type": "string",
            "description": "A stable identifier derived from the command tag and offset.",
            "nullable": true
          },
          "summary": {
            "type": "string",
            "description": "A compact human-readable summary.",
            "nullable": true
          },
          "offset": {
            "type": "integer",
            "description": "Source command offset in the ZPL payload.",
            "format": "int32"
          },
          "x": {
            "type": "integer",
            "description": "Left coordinate of the rendered element.",
            "format": "int32"
          },
          "y": {
            "type": "integer",
            "description": "Top coordinate of the rendered element.",
            "format": "int32"
          },
          "width": {
            "type": "integer",
            "description": "Rendered element width in pixels.",
            "format": "int32"
          },
          "height": {
            "type": "integer",
            "description": "Rendered element height in pixels.",
            "format": "int32"
          },
          "hasBounds": {
            "type": "boolean",
            "description": "Indicates that the bounds were computed from renderer output."
          }
        },
        "additionalProperties": false,
        "description": "Describes one rendered element in the output tree."
      },
      "RenderOptionsRequest": {
        "type": "object",
        "properties": {
          "sourceDpi": {
            "type": "integer",
            "description": "Optional source DPI used to scale incoming ZPL coordinates.",
            "format": "int32",
            "nullable": true
          },
          "targetDpi": {
            "type": "integer",
            "description": "Optional target DPI used for the output canvas.",
            "format": "int32",
            "nullable": true
          },
          "canvasWidth": {
            "type": "integer",
            "description": "Optional output canvas width in pixels.",
            "format": "int32",
            "nullable": true
          },
          "canvasHeight": {
            "type": "integer",
            "description": "Optional output canvas height in pixels.",
            "format": "int32",
            "nullable": true
          },
          "preserveComments": {
            "type": "boolean",
            "description": "Controls whether comments are preserved while normalizing ZPL.",
            "nullable": true
          },
          "includeUnknownCommands": {
            "type": "boolean",
            "description": "Controls whether unknown commands are preserved while normalizing ZPL.",
            "nullable": true
          },
          "prettyPrint": {
            "type": "boolean",
            "description": "Controls whether normalized ZPL is formatted with line breaks.",
            "nullable": true
          },
          "wrapInFormat": {
            "type": "boolean",
            "description": "Controls whether the serializer wraps labels with `^XA` and `^XZ`.",
            "nullable": true
          },
          "renderBackground": {
            "type": "boolean",
            "description": "Controls whether the preview canvas is initialized with a solid background.",
            "nullable": true
          },
          "backgroundArgb": {
            "type": "integer",
            "description": "Optional ARGB background color in `0xAARRGGBB` form.",
            "format": "int32",
            "nullable": true
          },
          "foregroundArgb": {
            "type": "integer",
            "description": "Optional ARGB foreground color in `0xAARRGGBB` form.",
            "format": "int32",
            "nullable": true
          },
          "fontPath": {
            "type": "string",
            "description": "Optional font path passed to the native renderer during handle creation.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Captures the per-request render settings that are mapped to the native renderer."
      },
      "RenderRequest": {
        "type": "object",
        "properties": {
          "zpl": {
            "type": "string",
            "description": "The ZPL payload to render.",
            "nullable": true
          },
          "options": {
            "$ref": "#/components/schemas/RenderOptionsRequest"
          },
          "includeImage": {
            "type": "boolean",
            "description": "When `true`, the response includes the rendered BGRA image bytes."
          }
        },
        "additionalProperties": false,
        "description": "Represents the request body accepted by the render endpoint."
      },
      "RenderResponse": {
        "type": "object",
        "properties": {
          "error": {
            "type": "string",
            "description": "Any render error emitted by the native engine.",
            "nullable": true
          },
          "tree": {
            "type": "string",
            "description": "The command tree produced by the native engine.",
            "nullable": true
          },
          "normalizedZpl": {
            "type": "string",
            "description": "The normalized ZPL output generated by the native engine.",
            "nullable": true
          },
          "imageWidth": {
            "type": "integer",
            "description": "The rendered image width in pixels.",
            "format": "int32"
          },
          "imageHeight": {
            "type": "integer",
            "description": "The rendered image height in pixels.",
            "format": "int32"
          },
          "imageStride": {
            "type": "integer",
            "description": "The number of bytes per image row.",
            "format": "int32"
          },
          "pixelFormat": {
            "$ref": "#/components/schemas/ZplPixelFormat"
          },
          "imageBytes": {
            "type": "string",
            "description": "The BGRA image bytes. This property is omitted when the request disables image output.",
            "format": "byte",
            "nullable": true
          },
          "elements": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/RenderElementResponse"
            },
            "description": "Metadata for each recognized command in the input label.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Represents the JSON response returned by the render endpoint."
      },
      "SessionInfoDto": {
        "type": "object",
        "properties": {
          "authenticated": {
            "type": "boolean"
          },
          "user": {
            "$ref": "#/components/schemas/UserProfileDto"
          }
        },
        "additionalProperties": false
      },
      "UpdateAccountRequest": {
        "type": "object",
        "properties": {
          "email": {
            "type": "string",
            "nullable": true
          },
          "displayName": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "UserProfileDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "nullable": true
          },
          "email": {
            "type": "string",
            "nullable": true
          },
          "displayName": {
            "type": "string",
            "nullable": true
          },
          "createdUtc": {
            "type": "string",
            "nullable": true
          },
          "updatedUtc": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "ZplPixelFormat": {
        "enum": [
          1
        ],
        "type": "integer",
        "format": "int32"
      }
    }
  }
}