{
  "openapi": "3.0.4",
  "info": {
    "title": "Acme Webshop API",
    "description": "E-commerce API for Acme Webshop Inc. Products, customers, orders and authentication.",
    "version": "2.0.0"
  },
  "servers": [
    {
      "url": "https://api.acmewebshop.com/v2"
    }
  ],
  "paths": {
    "/admin/orders/{id}": {
      "delete": {
        "tags": [
          "Admin"
        ],
        "summary": "Delete an order (admin)",
        "description": "Permanently removes an order and its line items. Requires an admin token; completed orders are archived instead.",
        "operationId": "deleteAdminOrder",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "x-routebase-folder-path": "Admin"
      }
    },
    "/admin/users": {
      "get": {
        "tags": [
          "Admin"
        ],
        "summary": "List all users (admin)",
        "description": "Lists all user accounts including role, status, and last sign-in. Requires an admin token.",
        "operationId": "listAdminUsers",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "required": [
                    "items",
                    "total"
                  ],
                  "type": "object",
                  "properties": {
                    "items": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/Customer"
                      }
                    },
                    "total": {
                      "type": "integer",
                      "description": "Total number of user accounts."
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request \u2014 invalid query parameters.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "x-routebase-folder-path": "Admin"
      },
      "post": {
        "tags": [
          "Admin"
        ],
        "summary": "Create a user (admin)",
        "description": "Creates a user account with an explicit role. Requires an admin token.",
        "operationId": "createAdminUser",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateUserRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Customer"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request parameters",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string",
                      "description": "Error message"
                    },
                    "errors": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "field": {
                            "type": "string",
                            "description": "Field name"
                          },
                          "message": {
                            "type": "string",
                            "description": "Validation message"
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "x-routebase-folder-path": "Admin"
      }
    },
    "/auth/login": {
      "post": {
        "tags": [
          "Auth"
        ],
        "summary": "Log in and obtain a bearer token",
        "description": "Exchanges email and password for a short-lived bearer token used by all authenticated endpoints.",
        "operationId": "login",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/LoginRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthToken"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request parameters",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string",
                      "description": "Error message"
                    },
                    "errors": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "field": {
                            "type": "string",
                            "description": "Field name"
                          },
                          "message": {
                            "type": "string",
                            "description": "Validation message"
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "x-routebase-folder-path": "Auth"
      }
    },
    "/auth/register": {
      "post": {
        "tags": [
          "Auth"
        ],
        "summary": "Register a new customer",
        "description": "Creates a customer account and returns the initial bearer token.",
        "operationId": "register",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RegisterRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthToken"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request parameters",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string",
                      "description": "Error message"
                    },
                    "errors": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "field": {
                            "type": "string",
                            "description": "Field name"
                          },
                          "message": {
                            "type": "string",
                            "description": "Validation message"
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "409": {
            "description": "Conflict",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "x-routebase-folder-path": "Auth"
      }
    },
    "/categories": {
      "get": {
        "tags": [
          "Products"
        ],
        "summary": "List product categories",
        "description": "Returns the category tree used for storefront navigation and product filtering.",
        "operationId": "getCategories",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "required": [
                    "items",
                    "total"
                  ],
                  "type": "object",
                  "properties": {
                    "items": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/Category"
                      }
                    },
                    "total": {
                      "type": "integer",
                      "description": "Total number of categories."
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request \u2014 invalid query parameters.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/customers": {
      "post": {
        "tags": [
          "Customers"
        ],
        "summary": "Create a customer",
        "description": "Creates a customer profile used for checkout and order tracking.",
        "operationId": "createCustomer",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Customer"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Customer"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request parameters",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string",
                      "description": "Error message"
                    },
                    "errors": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "field": {
                            "type": "string",
                            "description": "Field name"
                          },
                          "message": {
                            "type": "string",
                            "description": "Validation message"
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "x-routebase-folder-path": "Customers"
      }
    },
    "/customers/{id}": {
      "get": {
        "tags": [
          "Customers"
        ],
        "summary": "Get a customer by id",
        "description": "Returns a single customer profile including contact details and default address.",
        "operationId": "getCustomer",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Customer"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "x-routebase-folder-path": "Customers"
      },
      "put": {
        "tags": [
          "Customers"
        ],
        "summary": "Update a customer",
        "description": "Updates a customer profile. Fields omitted from the payload remain unchanged.",
        "operationId": "updateCustomer",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Customer"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Customer"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request parameters",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string",
                      "description": "Error message"
                    },
                    "errors": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "field": {
                            "type": "string",
                            "description": "Field name"
                          },
                          "message": {
                            "type": "string",
                            "description": "Validation message"
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "x-routebase-folder-path": "Customers"
      }
    },
    "/orders": {
      "get": {
        "tags": [
          "Orders"
        ],
        "summary": "List orders",
        "description": "Lists orders sorted by creation date, newest first. Filter by status and paginate with limit and offset.",
        "operationId": "listOrders",
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "schema": {
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "required": [
                    "items",
                    "total"
                  ],
                  "type": "object",
                  "properties": {
                    "items": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/Order"
                      }
                    },
                    "total": {
                      "type": "integer",
                      "description": "Total number of matching orders."
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request \u2014 invalid query parameters.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "x-routebase-folder-path": "Orders"
      },
      "post": {
        "tags": [
          "Orders"
        ],
        "summary": "Create an order",
        "description": "Places a new order from line items and returns the created order with computed totals.",
        "operationId": "createOrder",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "items": {
                    "type": "array",
                    "items": {
                      "$ref": "#/components/schemas/OrderItem"
                    }
                  }
                }
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Order"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request parameters",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string",
                      "description": "Error message"
                    },
                    "errors": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "field": {
                            "type": "string",
                            "description": "Field name"
                          },
                          "message": {
                            "type": "string",
                            "description": "Validation message"
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "x-routebase-folder-path": "Orders"
      }
    },
    "/orders/{id}": {
      "get": {
        "tags": [
          "Orders"
        ],
        "summary": "Get an order by id",
        "description": "Returns a single order including line items, totals, and fulfillment status.",
        "operationId": "getOrder",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Order"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "x-routebase-folder-path": "Orders"
      }
    },
    "/orders/{id}/notify": {
      "post": {
        "tags": [
          "Orders"
        ],
        "summary": "Send an order notification to a callback URL",
        "description": "Sends an order status notification to the given callback URL. Used by fulfillment integrations.",
        "operationId": "notifyOrder",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/NotifyRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "202": {
            "description": "Accepted"
          },
          "400": {
            "description": "Invalid request parameters",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string",
                      "description": "Error message"
                    },
                    "errors": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "field": {
                            "type": "string",
                            "description": "Field name"
                          },
                          "message": {
                            "type": "string",
                            "description": "Validation message"
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "x-routebase-folder-path": "Orders"
      }
    },
    "/products": {
      "get": {
        "tags": [
          "Products"
        ],
        "summary": "List products",
        "description": "Returns the product catalog with prices, stock, and category assignments. Filter by category and paginate with limit and offset.",
        "operationId": "listProducts",
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "description": "Maximum number of items to return. Defaults to 20, max 100.",
            "schema": {
              "type": "integer",
              "example": 20
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Number of items to skip for pagination.",
            "schema": {
              "type": "integer",
              "example": 0
            }
          },
          {
            "name": "category",
            "in": "query",
            "description": "Filter by category slug, e.g. audio.",
            "schema": {
              "type": "string",
              "example": "audio"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "required": [
                    "items",
                    "total"
                  ],
                  "type": "object",
                  "properties": {
                    "items": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/Product"
                      }
                    },
                    "total": {
                      "type": "integer",
                      "description": "Total number of matching products."
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request \u2014 invalid query parameters.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "x-routebase-folder-path": "Products"
      },
      "post": {
        "tags": [
          "Products"
        ],
        "summary": "Create a product",
        "description": "Creates a product with pricing, stock level, and category assignment.",
        "operationId": "createProduct",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Product"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Product"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request parameters",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string",
                      "description": "Error message"
                    },
                    "errors": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "field": {
                            "type": "string",
                            "description": "Field name"
                          },
                          "message": {
                            "type": "string",
                            "description": "Validation message"
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "x-routebase-folder-path": "Products"
      }
    },
    "/products/{id}": {
      "get": {
        "tags": [
          "Products"
        ],
        "summary": "Get a product by id",
        "description": "Returns a single product with price, stock level, and category. Returns 404 if the product does not exist.",
        "operationId": "getProduct",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Numeric id of the product.",
            "required": true,
            "schema": {
              "type": "integer",
              "example": 1042
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Product"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "x-routebase-folder-path": "Products"
      }
    },
    "/products/search": {
      "get": {
        "tags": [
          "Products"
        ],
        "summary": "Search products by keyword",
        "description": "Full-text search across product names and descriptions. Returns matches ranked by relevance.",
        "operationId": "searchProducts",
        "parameters": [
          {
            "name": "q",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "anotherOne",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "required": [
                    "items",
                    "total"
                  ],
                  "type": "object",
                  "properties": {
                    "items": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/Product"
                      }
                    },
                    "total": {
                      "type": "integer",
                      "description": "Total number of matches."
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request \u2014 invalid query parameters.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "details": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "Product": {
        "required": [
          "id",
          "name",
          "price",
          "sku"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "description": "Unique product id."
          },
          "name": {
            "type": "string",
            "description": "Display name shown in the storefront."
          },
          "description": {
            "type": "string",
            "description": "Short marketing copy."
          },
          "price": {
            "type": "number",
            "description": "Unit price in EUR."
          },
          "sku": {
            "type": "string",
            "description": "Stock keeping unit."
          },
          "stock": {
            "type": "integer",
            "description": "Units currently in stock."
          },
          "category": {
            "type": "string",
            "description": "Category slug."
          }
        }
      },
      "Customer": {
        "required": [
          "id",
          "email",
          "name"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "integer"
          },
          "email": {
            "type": "string",
            "format": "email"
          },
          "name": {
            "type": "string"
          },
          "taxId": {
            "type": "string",
            "description": "VAT id for B2B invoices."
          },
          "passwordHash": {
            "type": "string",
            "description": "Never expose in responses - flagged by security scan."
          },
          "role": {
            "type": "string"
          },
          "isAdmin": {
            "type": "boolean"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "OrderItem": {
        "required": [
          "productId",
          "quantity",
          "unitPrice"
        ],
        "type": "object",
        "properties": {
          "productId": {
            "type": "integer"
          },
          "quantity": {
            "type": "integer"
          },
          "unitPrice": {
            "type": "number",
            "description": "Price per unit in EUR at purchase time."
          }
        }
      },
      "Order": {
        "required": [
          "id",
          "customerId",
          "items",
          "total",
          "status"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "integer"
          },
          "customerId": {
            "type": "integer"
          },
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/OrderItem"
            }
          },
          "total": {
            "type": "number",
            "description": "Order total in EUR including VAT."
          },
          "creditCard": {
            "type": "string",
            "description": "Masked card number - flagged by security scan."
          },
          "status": {
            "enum": [
              "pending",
              "paid",
              "shipped",
              "delivered",
              "cancelled"
            ],
            "type": "string"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "LoginRequest": {
        "type": "object",
        "properties": {
          "email": {
            "type": "string"
          },
          "password": {
            "type": "string"
          }
        }
      },
      "RegisterRequest": {
        "type": "object",
        "properties": {
          "email": {
            "type": "string"
          },
          "password": {
            "type": "string"
          },
          "name": {
            "type": "string"
          }
        }
      },
      "AuthToken": {
        "required": [
          "token",
          "expiresAt"
        ],
        "type": "object",
        "properties": {
          "token": {
            "type": "string",
            "description": "JWT bearer token."
          },
          "expiresAt": {
            "type": "string",
            "format": "date-time"
          },
          "customerId": {
            "type": "integer"
          }
        }
      },
      "NotifyRequest": {
        "type": "object",
        "properties": {
          "callbackUrl": {
            "type": "string"
          },
          "message": {
            "type": "string"
          }
        }
      },
      "CreateUserRequest": {
        "type": "object",
        "properties": {
          "email": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "role": {
            "type": "string"
          }
        }
      },
      "Error": {
        "required": [
          "code",
          "message"
        ],
        "type": "object",
        "properties": {
          "code": {
            "type": "string",
            "description": "Machine-readable error code."
          },
          "message": {
            "type": "string",
            "description": "Human-readable explanation."
          }
        }
      },
      "Category": {
        "required": [
          "id",
          "name",
          "slug"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "integer"
          },
          "name": {
            "type": "string"
          },
          "slug": {
            "type": "string",
            "description": "URL-safe identifier."
          },
          "productCount": {
            "type": "integer",
            "description": "Number of active products in this category."
          }
        }
      }
    },
    "responses": {
      "NotFoundError": {
        "description": "Standard 404 error response returned when a resource does not exist.",
        "content": {
          "application/json": {
            "schema": {
              "required": [
                "code",
                "message"
              ],
              "type": "object",
              "properties": {
                "code": {
                  "type": "string"
                },
                "message": {
                  "type": "string"
                }
              }
            },
            "example": {
              "code": "not_found",
              "message": "The requested resource was not found."
            }
          }
        }
      }
    },
    "requestBodies": {
      "CreateOrderRequest": {
        "description": "Request body for creating a new order.",
        "content": {
          "application/json": {
            "schema": {
              "required": [
                "customerId",
                "items"
              ],
              "type": "object",
              "properties": {
                "customerId": {
                  "type": "integer"
                },
                "items": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "productId": {
                        "type": "integer"
                      },
                      "quantity": {
                        "type": "integer"
                      }
                    }
                  }
                }
              }
            },
            "example": {
              "customerId": 42,
              "items": [
                {
                  "productId": 7,
                  "quantity": 2
                }
              ]
            }
          }
        },
        "required": true
      }
    },
    "securitySchemes": {
      "bearerAuth": {
        "type": "http",
        "scheme": "bearer",
        "bearerFormat": "JWT"
      }
    }
  },
  "tags": [
    {
      "name": "Admin"
    },
    {
      "name": "Auth"
    },
    {
      "name": "Customers"
    },
    {
      "name": "Orders"
    },
    {
      "name": "Products"
    }
  ],
  "x-routebase-folders": [
    {
      "name": "Admin",
      "children": []
    },
    {
      "name": "Auth",
      "children": []
    },
    {
      "name": "Customers",
      "children": []
    },
    {
      "name": "Orders",
      "children": []
    },
    {
      "name": "Products",
      "children": []
    }
  ]
}