{"openapi": "3.1.0", "info": {"title": "LAVESY Public API", "version": "1.0", "description": "Öffentliche Schnittstelle von LAVESY für Handwerkersoftware, n8n, Zapier und Make. Authentifizierung per `Authorization: Bearer lvs_…` (API-Schlüssel aus Einstellungen → Schnittstellen, Entrepreneur-Tarif). Anleitung: https://lavesy.de/entwickler"}, "servers": [{"url": "/"}], "paths": {"/api/v1/suppliers/": {"get": {"operationId": "apps_suppliers_api_list_suppliers", "summary": "List Suppliers", "parameters": [{"in": "query", "name": "q", "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Q"}, "required": false}, {"in": "query", "name": "ids", "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Ids"}, "required": false}, {"in": "query", "name": "sort", "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Sort"}, "required": false}, {"in": "query", "name": "limit", "schema": {"default": 100, "maximum": 5000, "minimum": 1, "title": "Limit", "type": "integer"}, "required": false}, {"in": "query", "name": "offset", "schema": {"default": 0, "minimum": 0, "title": "Offset", "type": "integer"}, "required": false}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/PagedSupplierOut"}}}}}, "security": [{"ApiKey": []}], "x-lavesy-scope": "suppliers:read"}, "post": {"operationId": "apps_suppliers_api_create_supplier", "summary": "Create Supplier", "parameters": [], "responses": {"201": {"description": "Created", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/SupplierOut"}}}}}, "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/SupplierIn"}}}, "required": true}, "security": [{"ApiKey": []}], "x-lavesy-scope": "suppliers:write"}}, "/api/v1/suppliers/{supplier_id}": {"get": {"operationId": "apps_suppliers_api_get_supplier", "summary": "Get Supplier", "parameters": [{"in": "path", "name": "supplier_id", "schema": {"format": "uuid", "title": "Supplier Id", "type": "string"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/SupplierOut"}}}}}, "security": [{"ApiKey": []}], "x-lavesy-scope": "suppliers:read"}, "patch": {"operationId": "apps_suppliers_api_update_supplier", "summary": "Update Supplier", "parameters": [{"in": "path", "name": "supplier_id", "schema": {"format": "uuid", "title": "Supplier Id", "type": "string"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/SupplierOut"}}}}}, "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/SupplierUpdate"}}}, "required": true}, "security": [{"ApiKey": []}], "x-lavesy-scope": "suppliers:write"}, "delete": {"operationId": "apps_suppliers_api_soft_delete_supplier", "summary": "Soft Delete Supplier", "parameters": [{"in": "path", "name": "supplier_id", "schema": {"format": "uuid", "title": "Supplier Id", "type": "string"}, "required": true}], "responses": {"204": {"description": "No Content"}}, "security": [{"ApiKey": []}], "x-lavesy-scope": "suppliers:write"}}, "/api/v1/customers/": {"get": {"operationId": "apps_customers_api_list_customers", "summary": "List Customers", "parameters": [{"in": "query", "name": "q", "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Q"}, "required": false}, {"in": "query", "name": "ids", "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Ids"}, "required": false}, {"in": "query", "name": "sort", "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Sort"}, "required": false}, {"in": "query", "name": "limit", "schema": {"default": 100, "maximum": 5000, "minimum": 1, "title": "Limit", "type": "integer"}, "required": false}, {"in": "query", "name": "offset", "schema": {"default": 0, "minimum": 0, "title": "Offset", "type": "integer"}, "required": false}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/PagedCustomerOut"}}}}}, "security": [{"ApiKey": []}], "x-lavesy-scope": "customers:read"}, "post": {"operationId": "apps_customers_api_create_customer", "summary": "Create Customer", "parameters": [], "responses": {"201": {"description": "Created", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/CustomerOut"}}}}}, "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/CustomerIn"}}}, "required": true}, "security": [{"ApiKey": []}], "x-lavesy-scope": "customers:write"}}, "/api/v1/customers/{customer_id}": {"get": {"operationId": "apps_customers_api_get_customer", "summary": "Get Customer", "parameters": [{"in": "path", "name": "customer_id", "schema": {"format": "uuid", "title": "Customer Id", "type": "string"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/CustomerOut"}}}}}, "security": [{"ApiKey": []}], "x-lavesy-scope": "customers:read"}, "patch": {"operationId": "apps_customers_api_update_customer", "summary": "Update Customer", "parameters": [{"in": "path", "name": "customer_id", "schema": {"format": "uuid", "title": "Customer Id", "type": "string"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/CustomerOut"}}}}}, "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/CustomerUpdate"}}}, "required": true}, "security": [{"ApiKey": []}], "x-lavesy-scope": "customers:write"}, "delete": {"operationId": "apps_customers_api_soft_delete_customer", "summary": "Soft Delete Customer", "parameters": [{"in": "path", "name": "customer_id", "schema": {"format": "uuid", "title": "Customer Id", "type": "string"}, "required": true}], "responses": {"204": {"description": "No Content"}}, "security": [{"ApiKey": []}], "x-lavesy-scope": "customers:write"}}, "/api/v1/projects/": {"get": {"operationId": "apps_projects_api_list_projects", "summary": "List Projects", "parameters": [{"in": "query", "name": "status", "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Status"}, "required": false}, {"in": "query", "name": "q", "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Q"}, "required": false}, {"in": "query", "name": "ids", "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Ids"}, "required": false}, {"in": "query", "name": "sort", "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Sort"}, "required": false}, {"in": "query", "name": "limit", "schema": {"default": 100, "maximum": 5000, "minimum": 1, "title": "Limit", "type": "integer"}, "required": false}, {"in": "query", "name": "offset", "schema": {"default": 0, "minimum": 0, "title": "Offset", "type": "integer"}, "required": false}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/PagedProjectOut"}}}}}, "tags": ["projects"], "security": [{"ApiKey": []}], "x-lavesy-scope": "projects:read"}, "post": {"operationId": "apps_projects_api_create_project", "summary": "Create Project", "parameters": [], "responses": {"201": {"description": "Created", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ProjectOut"}}}}}, "tags": ["projects"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/ProjectIn"}}}, "required": true}, "security": [{"ApiKey": []}], "x-lavesy-scope": "projects:write"}}, "/api/v1/projects/{project_id}": {"patch": {"operationId": "apps_projects_api_update_project", "summary": "Update Project", "parameters": [{"in": "path", "name": "project_id", "schema": {"format": "uuid", "title": "Project Id", "type": "string"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ProjectOut"}}}}}, "tags": ["projects"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/ProjectUpdate"}}}, "required": true}, "security": [{"ApiKey": []}], "x-lavesy-scope": "projects:write"}, "delete": {"operationId": "apps_projects_api_delete_project", "summary": "Delete Project", "parameters": [{"in": "path", "name": "project_id", "schema": {"format": "uuid", "title": "Project Id", "type": "string"}, "required": true}], "responses": {"204": {"description": "No Content"}}, "tags": ["projects"], "security": [{"ApiKey": []}], "x-lavesy-scope": "projects:write"}, "get": {"operationId": "apps_projects_api_get_project", "summary": "Get Project", "parameters": [{"in": "path", "name": "project_id", "schema": {"format": "uuid", "title": "Project Id", "type": "string"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ProjectOut"}}}}}, "tags": ["projects"], "security": [{"ApiKey": []}], "x-lavesy-scope": "projects:read"}}, "/api/v1/projects/{project_id}/material-costs": {"get": {"operationId": "apps_projects_api_get_material_costs", "summary": "Get Material Costs", "parameters": [{"in": "path", "name": "project_id", "schema": {"format": "uuid", "title": "Project Id", "type": "string"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/MaterialCostsOut"}}}}}, "description": "Material that went to the project, valued at the cost it was issued at.", "tags": ["projects"], "security": [{"ApiKey": []}], "x-lavesy-scope": "projects:read"}}, "/api/v1/inventory/articles": {"get": {"operationId": "apps_inventory_api_articles_list_articles", "summary": "List Articles", "parameters": [{"in": "query", "name": "q", "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Q"}, "required": false}, {"in": "query", "name": "ids", "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Ids"}, "required": false}, {"in": "query", "name": "sort", "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Sort"}, "required": false}, {"in": "query", "name": "limit", "schema": {"default": 100, "maximum": 5000, "minimum": 1, "title": "Limit", "type": "integer"}, "required": false}, {"in": "query", "name": "offset", "schema": {"default": 0, "minimum": 0, "title": "Offset", "type": "integer"}, "required": false}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/PagedArticleOut"}}}}}, "tags": ["inventory:articles"], "security": [{"ApiKey": []}], "x-lavesy-scope": "articles:read"}, "post": {"operationId": "apps_inventory_api_articles_create_article", "summary": "Create Article", "parameters": [], "responses": {"201": {"description": "Created", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ArticleOut"}}}}}, "tags": ["inventory:articles"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/ArticleIn"}}}, "required": true}, "security": [{"ApiKey": []}], "x-lavesy-scope": "articles:write"}}, "/api/v1/inventory/articles/search": {"get": {"operationId": "apps_inventory_api_articles_search_articles", "summary": "Search Articles", "parameters": [{"in": "query", "name": "q", "schema": {"default": "", "title": "Q", "type": "string"}, "required": false}, {"in": "query", "name": "limit", "schema": {"default": 10, "title": "Limit", "type": "integer"}, "required": false}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"items": {"$ref": "#/components/schemas/ArticleOut"}, "title": "Response", "type": "array"}}}}}, "description": "Schnelle Artikelsuche (SKU/Name/Barcode) für die Review-Maske.", "tags": ["inventory:articles"], "security": [{"ApiKey": []}], "x-lavesy-scope": "articles:read"}}, "/api/v1/inventory/articles/export.csv": {"get": {"operationId": "apps_inventory_api_articles_export_articles", "summary": "Export Articles", "parameters": [{"in": "query", "name": "ids", "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Ids"}, "required": false}], "responses": {"200": {"description": "OK"}}, "description": "Stream the article master data as CSV (tenant-scoped).\n\n``ids`` narrows the export to the rows the user selected in the table; the\nfull list is exported when it is absent.", "tags": ["inventory:articles"], "security": [{"ApiKey": []}], "x-lavesy-scope": "articles:read"}}, "/api/v1/inventory/articles/{article_id}": {"get": {"operationId": "apps_inventory_api_articles_get_article", "summary": "Get Article", "parameters": [{"in": "path", "name": "article_id", "schema": {"format": "uuid", "title": "Article Id", "type": "string"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ArticleOut"}}}}}, "tags": ["inventory:articles"], "security": [{"ApiKey": []}], "x-lavesy-scope": "articles:read"}, "patch": {"operationId": "apps_inventory_api_articles_update_article", "summary": "Update Article", "parameters": [{"in": "path", "name": "article_id", "schema": {"format": "uuid", "title": "Article Id", "type": "string"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ArticleOut"}}}}}, "tags": ["inventory:articles"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/ArticleUpdate"}}}, "required": true}, "security": [{"ApiKey": []}], "x-lavesy-scope": "articles:write"}, "delete": {"operationId": "apps_inventory_api_articles_delete_article", "summary": "Delete Article", "parameters": [{"in": "path", "name": "article_id", "schema": {"format": "uuid", "title": "Article Id", "type": "string"}, "required": true}], "responses": {"204": {"description": "No Content"}}, "tags": ["inventory:articles"], "security": [{"ApiKey": []}], "x-lavesy-scope": "articles:write"}}, "/api/v1/inventory/categories": {"get": {"operationId": "apps_inventory_api_categories_list_categories", "summary": "List Categories", "parameters": [{"in": "query", "name": "q", "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Q"}, "required": false}, {"in": "query", "name": "ids", "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Ids"}, "required": false}, {"in": "query", "name": "sort", "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Sort"}, "required": false}, {"in": "query", "name": "limit", "schema": {"default": 100, "maximum": 5000, "minimum": 1, "title": "Limit", "type": "integer"}, "required": false}, {"in": "query", "name": "offset", "schema": {"default": 0, "minimum": 0, "title": "Offset", "type": "integer"}, "required": false}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/PagedCategoryOut"}}}}}, "tags": ["inventory:categories"], "security": [{"ApiKey": []}], "x-lavesy-scope": "articles:read"}, "post": {"operationId": "apps_inventory_api_categories_create_category", "summary": "Create Category", "parameters": [], "responses": {"201": {"description": "Created", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/CategoryOut"}}}}}, "tags": ["inventory:categories"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/CategoryIn"}}}, "required": true}, "security": [{"ApiKey": []}], "x-lavesy-scope": "articles:write"}}, "/api/v1/inventory/categories/{category_id}": {"get": {"operationId": "apps_inventory_api_categories_get_category", "summary": "Get Category", "parameters": [{"in": "path", "name": "category_id", "schema": {"format": "uuid", "title": "Category Id", "type": "string"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/CategoryOut"}}}}}, "tags": ["inventory:categories"], "security": [{"ApiKey": []}], "x-lavesy-scope": "articles:read"}, "patch": {"operationId": "apps_inventory_api_categories_update_category", "summary": "Update Category", "parameters": [{"in": "path", "name": "category_id", "schema": {"format": "uuid", "title": "Category Id", "type": "string"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/CategoryOut"}}}}}, "tags": ["inventory:categories"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/CategoryUpdate"}}}, "required": true}, "security": [{"ApiKey": []}], "x-lavesy-scope": "articles:write"}, "delete": {"operationId": "apps_inventory_api_categories_delete_category", "summary": "Delete Category", "parameters": [{"in": "path", "name": "category_id", "schema": {"format": "uuid", "title": "Category Id", "type": "string"}, "required": true}], "responses": {"204": {"description": "No Content"}}, "tags": ["inventory:categories"], "security": [{"ApiKey": []}], "x-lavesy-scope": "articles:write"}}, "/api/v1/inventory/warehouses": {"get": {"operationId": "apps_inventory_api_warehouses_list_warehouses", "summary": "List Warehouses", "parameters": [{"in": "query", "name": "q", "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Q"}, "required": false}, {"in": "query", "name": "ids", "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Ids"}, "required": false}, {"in": "query", "name": "sort", "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Sort"}, "required": false}, {"in": "query", "name": "kind", "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Kind"}, "required": false}, {"in": "query", "name": "limit", "schema": {"default": 100, "maximum": 5000, "minimum": 1, "title": "Limit", "type": "integer"}, "required": false}, {"in": "query", "name": "offset", "schema": {"default": 0, "minimum": 0, "title": "Offset", "type": "integer"}, "required": false}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/PagedWarehouseOut"}}}}}, "tags": ["inventory:warehouses"], "security": [{"ApiKey": []}], "x-lavesy-scope": "articles:read"}}, "/api/v1/inventory/warehouses/{warehouse_id}": {"get": {"operationId": "apps_inventory_api_warehouses_get_warehouse", "summary": "Get Warehouse", "parameters": [{"in": "path", "name": "warehouse_id", "schema": {"format": "uuid", "title": "Warehouse Id", "type": "string"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/WarehouseOut"}}}}}, "tags": ["inventory:warehouses"], "security": [{"ApiKey": []}], "x-lavesy-scope": "articles:read"}}, "/api/v1/inventory/locations": {"get": {"operationId": "apps_inventory_api_locations_list_locations", "summary": "List Locations", "parameters": [{"in": "query", "name": "q", "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Q"}, "required": false}, {"in": "query", "name": "ids", "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Ids"}, "required": false}, {"in": "query", "name": "sort", "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Sort"}, "required": false}, {"in": "query", "name": "limit", "schema": {"default": 100, "maximum": 5000, "minimum": 1, "title": "Limit", "type": "integer"}, "required": false}, {"in": "query", "name": "offset", "schema": {"default": 0, "minimum": 0, "title": "Offset", "type": "integer"}, "required": false}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/PagedLocationOut"}}}}}, "tags": ["inventory:locations"], "security": [{"ApiKey": []}], "x-lavesy-scope": "articles:read"}, "post": {"operationId": "apps_inventory_api_locations_create_location", "summary": "Create Location", "parameters": [], "responses": {"201": {"description": "Created", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/LocationOut"}}}}}, "tags": ["inventory:locations"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/LocationIn"}}}, "required": true}, "security": [{"ApiKey": []}], "x-lavesy-scope": "articles:write"}}, "/api/v1/inventory/locations/{location_id}": {"get": {"operationId": "apps_inventory_api_locations_get_location", "summary": "Get Location", "parameters": [{"in": "path", "name": "location_id", "schema": {"format": "uuid", "title": "Location Id", "type": "string"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/LocationOut"}}}}}, "tags": ["inventory:locations"], "security": [{"ApiKey": []}], "x-lavesy-scope": "articles:read"}, "patch": {"operationId": "apps_inventory_api_locations_update_location", "summary": "Update Location", "parameters": [{"in": "path", "name": "location_id", "schema": {"format": "uuid", "title": "Location Id", "type": "string"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/LocationOut"}}}}}, "tags": ["inventory:locations"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/LocationUpdate"}}}, "required": true}, "security": [{"ApiKey": []}], "x-lavesy-scope": "articles:write"}, "delete": {"operationId": "apps_inventory_api_locations_delete_location", "summary": "Delete Location", "parameters": [{"in": "path", "name": "location_id", "schema": {"format": "uuid", "title": "Location Id", "type": "string"}, "required": true}], "responses": {"204": {"description": "No Content"}}, "tags": ["inventory:locations"], "security": [{"ApiKey": []}], "x-lavesy-scope": "articles:write"}}, "/api/v1/inventory/stock": {"get": {"operationId": "apps_inventory_api_stock_list_stock", "summary": "List Stock", "parameters": [{"in": "query", "name": "article_sku", "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Article Sku"}, "required": false}, {"in": "query", "name": "article_id", "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Article Id"}, "required": false}, {"in": "query", "name": "location_code", "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Location Code"}, "required": false}, {"in": "query", "name": "warehouse_id", "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Warehouse Id"}, "required": false}, {"in": "query", "name": "article", "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Article"}, "required": false}, {"in": "query", "name": "category", "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Category"}, "required": false}, {"in": "query", "name": "batch_number", "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Batch Number"}, "required": false}, {"in": "query", "name": "status", "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Status"}, "required": false}, {"in": "query", "name": "q", "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Q"}, "required": false}, {"in": "query", "name": "sort", "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Sort"}, "required": false}, {"in": "query", "name": "limit", "schema": {"default": 100, "maximum": 5000, "minimum": 1, "title": "Limit", "type": "integer"}, "required": false}, {"in": "query", "name": "offset", "schema": {"default": 0, "minimum": 0, "title": "Offset", "type": "integer"}, "required": false}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/PagedStockItemOut"}}}}}, "tags": ["inventory:stock"], "security": [{"ApiKey": []}], "x-lavesy-scope": "stock:read"}}, "/api/v1/inventory/articles/{article_id}/stock": {"get": {"operationId": "apps_inventory_api_stock_article_stock", "summary": "Article Stock", "parameters": [{"in": "path", "name": "article_id", "schema": {"format": "uuid", "title": "Article Id", "type": "string"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ArticleStockOut"}}}}}, "description": "Stock of one article: totals over every live location (SQL aggregate,\nnever a client-side sum over one page) plus the largest holdings per\nLagerplatz, batches folded together.", "tags": ["inventory:stock"], "security": [{"ApiKey": []}], "x-lavesy-scope": "stock:read"}}, "/api/v1/inventory/stock/export.csv": {"get": {"operationId": "apps_inventory_api_stock_export_stock", "summary": "Export Stock", "parameters": [{"in": "query", "name": "ids", "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Ids"}, "required": false}], "responses": {"200": {"description": "OK"}}, "description": "Stream the current stock snapshot as CSV (tenant-scoped).\n\n``ids`` narrows the export to the rows selected in the table. Above\n``EXPORT_SYNC_MAX_ROWS`` rows the answer is 202 + a background export job.", "tags": ["inventory:stock"], "security": [{"ApiKey": []}], "x-lavesy-scope": "stock:read"}}, "/api/v1/inventory/movements": {"get": {"operationId": "apps_inventory_api_stock_list_movements", "summary": "List Movements", "parameters": [{"in": "query", "name": "article_sku", "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Article Sku"}, "required": false}, {"in": "query", "name": "location_code", "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Location Code"}, "required": false}, {"in": "query", "name": "movement_type", "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Movement Type"}, "required": false}, {"in": "query", "name": "batch_number", "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Batch Number"}, "required": false}, {"in": "query", "name": "reference_type", "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Reference Type"}, "required": false}, {"in": "query", "name": "reference_id", "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Reference Id"}, "required": false}, {"in": "query", "name": "date_from", "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Date From"}, "required": false}, {"in": "query", "name": "date_to", "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Date To"}, "required": false}, {"in": "query", "name": "q", "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Q"}, "required": false}, {"in": "query", "name": "sort", "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Sort"}, "required": false}, {"in": "query", "name": "limit", "schema": {"default": 100, "maximum": 5000, "minimum": 1, "title": "Limit", "type": "integer"}, "required": false}, {"in": "query", "name": "offset", "schema": {"default": 0, "minimum": 0, "title": "Offset", "type": "integer"}, "required": false}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/PagedStockMovementOut"}}}}}, "tags": ["inventory:movements"], "security": [{"ApiKey": []}], "x-lavesy-scope": "movements:read"}}, "/api/v1/inventory/movements/export.csv": {"get": {"operationId": "apps_inventory_api_stock_export_movements_csv", "summary": "Export Movements Csv", "parameters": [{"in": "query", "name": "article_sku", "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Article Sku"}, "required": false}, {"in": "query", "name": "location_code", "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Location Code"}, "required": false}, {"in": "query", "name": "movement_type", "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Movement Type"}, "required": false}, {"in": "query", "name": "batch_number", "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Batch Number"}, "required": false}, {"in": "query", "name": "reference_type", "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Reference Type"}, "required": false}, {"in": "query", "name": "reference_id", "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Reference Id"}, "required": false}, {"in": "query", "name": "date_from", "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Date From"}, "required": false}, {"in": "query", "name": "date_to", "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Date To"}, "required": false}, {"in": "query", "name": "sort", "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Sort"}, "required": false}], "responses": {"200": {"description": "OK"}}, "description": "Stream the (filtered) movement ledger as CSV (202 + job when large).", "tags": ["inventory:movements"], "security": [{"ApiKey": []}], "x-lavesy-scope": "movements:read"}}, "/api/v1/inventory/movements/export.xlsx": {"get": {"operationId": "apps_inventory_api_stock_export_movements_xlsx", "summary": "Export Movements Xlsx", "parameters": [{"in": "query", "name": "article_sku", "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Article Sku"}, "required": false}, {"in": "query", "name": "location_code", "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Location Code"}, "required": false}, {"in": "query", "name": "movement_type", "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Movement Type"}, "required": false}, {"in": "query", "name": "batch_number", "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Batch Number"}, "required": false}, {"in": "query", "name": "reference_type", "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Reference Type"}, "required": false}, {"in": "query", "name": "reference_id", "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Reference Id"}, "required": false}, {"in": "query", "name": "date_from", "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Date From"}, "required": false}, {"in": "query", "name": "date_to", "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Date To"}, "required": false}, {"in": "query", "name": "sort", "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Sort"}, "required": false}], "responses": {"200": {"description": "OK"}}, "description": "Download the (filtered) movement ledger as XLSX (202 + job when large).", "tags": ["inventory:movements"], "security": [{"ApiKey": []}], "x-lavesy-scope": "movements:read"}}, "/api/v1/inventory/scan": {"get": {"operationId": "apps_inventory_api_scan_scan_code", "summary": "Scan Code", "parameters": [{"in": "query", "name": "code", "schema": {"title": "Code", "type": "string"}, "required": true}, {"in": "query", "name": "limit", "schema": {"default": 100, "title": "Limit", "type": "integer"}, "required": false}, {"in": "query", "name": "offset", "schema": {"default": 0, "title": "Offset", "type": "integer"}, "required": false}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ScanResult"}}}}}, "description": "Resolve a scanned code to an article (barcode → SKU → id) or a location.\n\nRead-only lookup that powers the scan hub: the client follows up with the\nexisting posting actions. Returns ``kind=\"not_found\"`` when nothing matches,\nso the UI can react without treating it as an error. The stock rows are\npaged (``limit``/``offset``, ``stock_count`` = total); the totals are not.", "tags": ["inventory:scan"], "security": [{"ApiKey": []}], "x-lavesy-scope": "stock:read"}}, "/api/v1/inventory/batches": {"get": {"operationId": "apps_inventory_api_batches_list_batches", "summary": "List Batches", "parameters": [{"in": "query", "name": "article_sku", "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Article Sku"}, "required": false}, {"in": "query", "name": "status", "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Status"}, "required": false}, {"in": "query", "name": "q", "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Q"}, "required": false}, {"in": "query", "name": "search", "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Search"}, "required": false}, {"in": "query", "name": "expiring_within_days", "schema": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Expiring Within Days"}, "required": false}, {"in": "query", "name": "sort", "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Sort"}, "required": false}, {"in": "query", "name": "limit", "schema": {"default": 100, "maximum": 5000, "minimum": 1, "title": "Limit", "type": "integer"}, "required": false}, {"in": "query", "name": "offset", "schema": {"default": 0, "minimum": 0, "title": "Offset", "type": "integer"}, "required": false}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/PagedBatchOut"}}}}}, "description": "Batches for the tenant, newest expiry first (NULL expiry last).", "tags": ["inventory:batches"], "security": [{"ApiKey": []}], "x-lavesy-scope": "stock:read"}}, "/api/v1/inventory/batches/{batch_id}": {"get": {"operationId": "apps_inventory_api_batches_get_batch", "summary": "Get Batch", "parameters": [{"in": "path", "name": "batch_id", "schema": {"title": "Batch Id", "type": "string"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/BatchDetailOut"}}}}}, "description": "Single batch with its per-location stock breakdown and recent movements.", "tags": ["inventory:batches"], "security": [{"ApiKey": []}], "x-lavesy-scope": "stock:read"}}, "/api/v1/inventory/serials": {"get": {"operationId": "apps_inventory_api_batches_list_serials", "summary": "List Serials", "parameters": [{"in": "query", "name": "article_sku", "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Article Sku"}, "required": false}, {"in": "query", "name": "status", "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Status"}, "required": false}, {"in": "query", "name": "q", "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Q"}, "required": false}, {"in": "query", "name": "search", "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Search"}, "required": false}, {"in": "query", "name": "sort", "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Sort"}, "required": false}, {"in": "query", "name": "limit", "schema": {"default": 100, "maximum": 5000, "minimum": 1, "title": "Limit", "type": "integer"}, "required": false}, {"in": "query", "name": "offset", "schema": {"default": 0, "minimum": 0, "title": "Offset", "type": "integer"}, "required": false}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/PagedSerialNumberOut"}}}}}, "description": "Serial numbers for the tenant, newest first.", "tags": ["inventory:serials"], "security": [{"ApiKey": []}], "x-lavesy-scope": "stock:read"}}, "/api/v1/inventory/actions/receive": {"post": {"operationId": "apps_inventory_api_actions_receive_stock", "summary": "Receive Stock", "parameters": [], "responses": {"201": {"description": "Created", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/StockMovementOut"}}}}}, "tags": ["inventory:actions"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/ReceiveIn"}}}, "required": true}, "security": [{"ApiKey": []}], "x-lavesy-scope": "stock:write"}}, "/api/v1/inventory/actions/correct": {"post": {"operationId": "apps_inventory_api_actions_correct_stock", "summary": "Correct Stock", "parameters": [], "responses": {"201": {"description": "Created", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/StockMovementOut"}}}}}, "tags": ["inventory:actions"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/CorrectionIn"}}}, "required": true}, "security": [{"ApiKey": []}], "x-lavesy-scope": "stock:write"}}, "/api/v1/inventory/actions/transfer": {"post": {"operationId": "apps_inventory_api_actions_transfer_stock", "summary": "Transfer Stock", "parameters": [], "responses": {"201": {"description": "Created", "content": {"application/json": {"schema": {"items": {"$ref": "#/components/schemas/StockMovementOut"}, "title": "Response", "type": "array"}}}}}, "tags": ["inventory:actions"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/TransferIn"}}}, "required": true}, "security": [{"ApiKey": []}], "x-lavesy-scope": "stock:write"}}, "/api/v1/inventory/movements/{movement_id}/reverse": {"post": {"operationId": "apps_inventory_api_actions_reverse_stock_movement", "summary": "Reverse Stock Movement", "parameters": [{"in": "path", "name": "movement_id", "schema": {"format": "uuid", "title": "Movement Id", "type": "string"}, "required": true}], "responses": {"201": {"description": "Created", "content": {"application/json": {"schema": {"items": {"$ref": "#/components/schemas/StockMovementOut"}, "title": "Response", "type": "array"}}}}}, "description": "Cancel a stock booking by posting the compensating one.\n\nThe ledger is append-only, so this never deletes: the original stays\nvisible and the correction references it. A transfer is cancelled as a\ntransfer back (both legs), everything else as a signed correction.\nCancelling twice, or cancelling a cancellation, is a 409.", "tags": ["inventory:actions"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/ReverseIn"}}}, "required": true}, "security": [{"ApiKey": []}], "x-lavesy-scope": "movements:write"}}, "/api/v1/inventory/reservations": {"get": {"operationId": "apps_inventory_api_actions_list_reservations", "summary": "List Reservations", "parameters": [{"in": "query", "name": "status", "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Status"}, "required": false}, {"in": "query", "name": "article_id", "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Article Id"}, "required": false}, {"in": "query", "name": "location_id", "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Location Id"}, "required": false}, {"in": "query", "name": "reference_type", "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Reference Type"}, "required": false}, {"in": "query", "name": "q", "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Q"}, "required": false}, {"in": "query", "name": "sort", "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Sort"}, "required": false}, {"in": "query", "name": "limit", "schema": {"default": 100, "maximum": 5000, "minimum": 1, "title": "Limit", "type": "integer"}, "required": false}, {"in": "query", "name": "offset", "schema": {"default": 0, "minimum": 0, "title": "Offset", "type": "integer"}, "required": false}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/PagedReservationOut"}}}}}, "description": "Reservations for the tenant, active ones first.\n\nWithout this, held stock was invisible: the stock list showed\n\"on hand 50, available 0\" and there was no way to find out what was holding\nthe difference, or to release it.", "tags": ["inventory:actions"], "security": [{"ApiKey": []}], "x-lavesy-scope": "stock:read"}}, "/api/v1/inventory/actions/reserve": {"post": {"operationId": "apps_inventory_api_actions_reserve", "summary": "Reserve", "parameters": [], "responses": {"201": {"description": "Created", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ReservationOut"}}}}}, "tags": ["inventory:actions"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/ReservationIn"}}}, "required": true}, "security": [{"ApiKey": []}], "x-lavesy-scope": "stock:write"}}, "/api/v1/inventory/actions/release-reservation/{reservation_id}": {"post": {"operationId": "apps_inventory_api_actions_release", "summary": "Release", "parameters": [{"in": "path", "name": "reservation_id", "schema": {"format": "uuid", "title": "Reservation Id", "type": "string"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ReservationOut"}}}}}, "tags": ["inventory:actions"], "security": [{"ApiKey": []}], "x-lavesy-scope": "stock:write"}}, "/api/v1/inventory/actions/consume-reservation/{reservation_id}": {"post": {"operationId": "apps_inventory_api_actions_consume", "summary": "Consume", "parameters": [{"in": "path", "name": "reservation_id", "schema": {"format": "uuid", "title": "Reservation Id", "type": "string"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/StockMovementOut"}}}}}, "tags": ["inventory:actions"], "security": [{"ApiKey": []}], "x-lavesy-scope": "stock:write"}}, "/api/v1/purchasing/": {"get": {"operationId": "apps_purchasing_api_list_pos", "summary": "List Pos", "parameters": [{"in": "query", "name": "status", "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Status"}, "required": false}, {"in": "query", "name": "q", "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Q"}, "required": false}, {"in": "query", "name": "sort", "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Sort"}, "required": false}, {"in": "query", "name": "limit", "schema": {"default": 100, "maximum": 5000, "minimum": 1, "title": "Limit", "type": "integer"}, "required": false}, {"in": "query", "name": "offset", "schema": {"default": 0, "minimum": 0, "title": "Offset", "type": "integer"}, "required": false}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/PagedPOOut"}}}}}, "tags": ["purchasing"], "security": [{"ApiKey": []}], "x-lavesy-scope": "purchase_orders:read"}, "post": {"operationId": "apps_purchasing_api_create_po", "summary": "Create Po", "parameters": [], "responses": {"201": {"description": "Created", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/POOut"}}}}}, "tags": ["purchasing"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/POIn"}}}, "required": true}, "security": [{"ApiKey": []}], "x-lavesy-scope": "purchase_orders:write"}}, "/api/v1/purchasing/reorder-suggestions": {"get": {"operationId": "apps_purchasing_api_reorder_suggestions", "summary": "Reorder Suggestions", "parameters": [{"in": "query", "name": "q", "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Q"}, "required": false}, {"in": "query", "name": "limit", "schema": {"default": 100, "maximum": 5000, "minimum": 1, "title": "Limit", "type": "integer"}, "required": false}, {"in": "query", "name": "offset", "schema": {"default": 0, "minimum": 0, "title": "Offset", "type": "integer"}, "required": false}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/PagedReorderSuggestionOut"}}}}}, "description": "Articles at/below minimum stock, each with its selectable suppliers.\n\nThe preferred supplier is the default, but every active supplier mapped to\nthe article is returned so the user can switch it before ordering. Paged\n(``limit``/``offset``); ``q`` narrows by SKU or name.", "tags": ["purchasing"], "security": [{"ApiKey": []}], "x-lavesy-scope": "purchase_orders:read"}}, "/api/v1/purchasing/{po_id}": {"put": {"operationId": "apps_purchasing_api_update_po", "summary": "Update Po", "parameters": [{"in": "path", "name": "po_id", "schema": {"format": "uuid", "title": "Po Id", "type": "string"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/POOut"}}}}}, "description": "Edit a draft order (header + lines) before it is placed.\n\nPlaced orders are a document the supplier already has — they stay as sent\n(``order_not_editable``). Lines are replaced wholesale; a draft has no\nreceipts or invoices hanging off its lines yet.", "tags": ["purchasing"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/POIn"}}}, "required": true}, "security": [{"ApiKey": []}], "x-lavesy-scope": "purchase_orders:write"}, "get": {"operationId": "apps_purchasing_api_get_po", "summary": "Get Po", "parameters": [{"in": "path", "name": "po_id", "schema": {"format": "uuid", "title": "Po Id", "type": "string"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/POOut"}}}}}, "tags": ["purchasing"], "security": [{"ApiKey": []}], "x-lavesy-scope": "purchase_orders:read"}}, "/api/v1/purchasing/{po_id}/place": {"post": {"operationId": "apps_purchasing_api_place_po", "summary": "Place Po", "parameters": [{"in": "path", "name": "po_id", "schema": {"format": "uuid", "title": "Po Id", "type": "string"}, "required": true}, {"in": "query", "name": "send_email", "schema": {"default": true, "title": "Send Email", "type": "boolean"}, "required": false}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/POOut"}}}}}, "description": "Confirm a draft order and notify the supplier's primary contact.\n\n``send_email=false`` records the order as placed without mailing it (\"Nur\nBestellung anlegen\" in the send preview).", "tags": ["purchasing"], "security": [{"ApiKey": []}], "x-lavesy-scope": "purchase_orders:write"}}, "/api/v1/purchasing/{po_id}/cancel": {"post": {"operationId": "apps_purchasing_api_cancel_po", "summary": "Cancel Po", "parameters": [{"in": "path", "name": "po_id", "schema": {"format": "uuid", "title": "Po Id", "type": "string"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/POOut"}}}}}, "tags": ["purchasing"], "security": [{"ApiKey": []}], "x-lavesy-scope": "purchase_orders:write"}}, "/api/v1/purchasing/{po_id}/close": {"post": {"operationId": "apps_purchasing_api_close_po", "summary": "Close Po", "parameters": [{"in": "path", "name": "po_id", "schema": {"format": "uuid", "title": "Po Id", "type": "string"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/POOut"}}}}}, "description": "Close an order that will not be completed (short delivery accepted).\n\nNeeded because an order that stays open keeps covering demand in the\nreplenishment calculation — see `purchasing.services.fulfilment`.", "tags": ["purchasing"], "security": [{"ApiKey": []}], "x-lavesy-scope": "purchase_orders:write"}}, "/api/v1/receiving/goods-receipts": {"get": {"operationId": "apps_receiving_api_list_goods_receipts", "summary": "List Goods Receipts", "parameters": [{"in": "query", "name": "status", "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Status"}, "required": false}, {"in": "query", "name": "q", "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Q"}, "required": false}, {"in": "query", "name": "sort", "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Sort"}, "required": false}, {"in": "query", "name": "limit", "schema": {"default": 100, "maximum": 5000, "minimum": 1, "title": "Limit", "type": "integer"}, "required": false}, {"in": "query", "name": "offset", "schema": {"default": 0, "minimum": 0, "title": "Offset", "type": "integer"}, "required": false}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/PagedGoodsReceiptOut"}}}}}, "tags": ["receiving"], "security": [{"ApiKey": []}], "x-lavesy-scope": "goods_receipts:read"}, "post": {"operationId": "apps_receiving_api_create_goods_receipt", "summary": "Create Goods Receipt", "parameters": [], "responses": {"201": {"description": "Created", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/GoodsReceiptOut"}}}}}, "tags": ["receiving"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/GoodsReceiptIn"}}}, "required": true}, "security": [{"ApiKey": []}], "x-lavesy-scope": "goods_receipts:write"}}, "/api/v1/receiving/goods-receipts/{receipt_id}": {"put": {"operationId": "apps_receiving_api_update_goods_receipt", "summary": "Update Goods Receipt", "parameters": [{"in": "path", "name": "receipt_id", "schema": {"format": "uuid", "title": "Receipt Id", "type": "string"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/GoodsReceiptOut"}}}}}, "description": "Edit a draft receipt (header + lines); with ``post`` book it right after.\n\nA posted receipt already moved stock — it stays as booked\n(``receipt_not_editable``); corrections go through a new movement.", "tags": ["receiving"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/GoodsReceiptIn"}}}, "required": true}, "security": [{"ApiKey": []}], "x-lavesy-scope": "goods_receipts:write"}, "get": {"operationId": "apps_receiving_api_get_goods_receipt", "summary": "Get Goods Receipt", "parameters": [{"in": "path", "name": "receipt_id", "schema": {"format": "uuid", "title": "Receipt Id", "type": "string"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/GoodsReceiptOut"}}}}}, "tags": ["receiving"], "security": [{"ApiKey": []}], "x-lavesy-scope": "goods_receipts:read"}}, "/api/v1/receiving/goods-receipts/{receipt_id}/post": {"post": {"operationId": "apps_receiving_api_post_receipt", "summary": "Post Receipt", "parameters": [{"in": "path", "name": "receipt_id", "schema": {"format": "uuid", "title": "Receipt Id", "type": "string"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/GoodsReceiptOut"}}}}}, "tags": ["receiving"], "security": [{"ApiKey": []}], "x-lavesy-scope": "goods_receipts:write"}}, "/api/v1/receiving/goods-receipts/{receipt_id}/cancel": {"post": {"operationId": "apps_receiving_api_cancel_receipt", "summary": "Cancel Receipt", "parameters": [{"in": "path", "name": "receipt_id", "schema": {"format": "uuid", "title": "Receipt Id", "type": "string"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/GoodsReceiptOut"}}}}}, "tags": ["receiving"], "security": [{"ApiKey": []}], "x-lavesy-scope": "goods_receipts:write"}}, "/api/v1/outbound/": {"get": {"operationId": "apps_outbound_api_movements_list_outbounds", "summary": "List Outbounds", "parameters": [{"in": "query", "name": "status", "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Status"}, "required": false}, {"in": "query", "name": "q", "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Q"}, "required": false}, {"in": "query", "name": "sort", "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Sort"}, "required": false}, {"in": "query", "name": "limit", "schema": {"default": 100, "maximum": 5000, "minimum": 1, "title": "Limit", "type": "integer"}, "required": false}, {"in": "query", "name": "offset", "schema": {"default": 0, "minimum": 0, "title": "Offset", "type": "integer"}, "required": false}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/PagedOutboundOut"}}}}}, "tags": ["outbound"], "security": [{"ApiKey": []}], "x-lavesy-scope": "outbound:read"}, "post": {"operationId": "apps_outbound_api_movements_create_outbound", "summary": "Create Outbound", "parameters": [], "responses": {"201": {"description": "Created", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/OutboundOut"}}}}}, "tags": ["outbound"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/OutboundIn"}}}, "required": true}, "security": [{"ApiKey": []}], "x-lavesy-scope": "outbound:write"}}, "/api/v1/outbound/quick": {"post": {"operationId": "apps_outbound_api_movements_quick_outbound", "summary": "Quick Outbound", "parameters": [], "responses": {"201": {"description": "Created", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/QuickOutboundOut"}}}}}, "tags": ["outbound"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/QuickOutboundIn"}}}, "required": true}, "security": [{"ApiKey": []}], "x-lavesy-scope": "outbound:write"}}, "/api/v1/outbound/{outbound_id}": {"get": {"operationId": "apps_outbound_api_movements_get_outbound", "summary": "Get Outbound", "parameters": [{"in": "path", "name": "outbound_id", "schema": {"format": "uuid", "title": "Outbound Id", "type": "string"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/OutboundOut"}}}}}, "tags": ["outbound"], "security": [{"ApiKey": []}], "x-lavesy-scope": "outbound:read"}}, "/api/v1/outbound/{outbound_id}/post": {"post": {"operationId": "apps_outbound_api_movements_post_outbound", "summary": "Post Outbound", "parameters": [{"in": "path", "name": "outbound_id", "schema": {"format": "uuid", "title": "Outbound Id", "type": "string"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/OutboundOut"}}}}}, "tags": ["outbound"], "security": [{"ApiKey": []}], "x-lavesy-scope": "outbound:write"}}, "/api/v1/outbound/{outbound_id}/cancel": {"post": {"operationId": "apps_outbound_api_movements_cancel_outbound", "summary": "Cancel Outbound", "parameters": [{"in": "path", "name": "outbound_id", "schema": {"format": "uuid", "title": "Outbound Id", "type": "string"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/OutboundOut"}}}}}, "tags": ["outbound"], "security": [{"ApiKey": []}], "x-lavesy-scope": "outbound:write"}}}, "components": {"schemas": {"ArticleIn": {"properties": {"sku": {"default": "", "title": "Sku", "type": "string"}, "name": {"title": "Name", "type": "string"}, "description": {"default": "", "title": "Description", "type": "string"}, "unit": {"default": "piece", "title": "Unit", "type": "string"}, "barcode": {"default": "", "title": "Barcode", "type": "string"}, "category": {"default": "", "title": "Category", "type": "string"}, "category_id": {"anyOf": [{"format": "uuid", "type": "string"}, {"type": "null"}], "title": "Category Id"}, "min_stock": {"anyOf": [{"type": "number"}, {"type": "string"}], "default": "0", "title": "Min Stock"}, "target_stock": {"anyOf": [{"type": "number"}, {"type": "string"}], "default": "0", "title": "Target Stock"}, "default_storage_location_id": {"anyOf": [{"format": "uuid", "type": "string"}, {"type": "null"}], "title": "Default Storage Location Id"}, "is_stocked": {"default": true, "title": "Is Stocked", "type": "boolean"}, "status": {"default": "active", "title": "Status", "type": "string"}, "track_batches": {"default": false, "title": "Track Batches", "type": "boolean"}, "track_serial_numbers": {"default": false, "title": "Track Serial Numbers", "type": "boolean"}}, "required": ["name"], "title": "ArticleIn", "type": "object"}, "ArticleOut": {"properties": {"id": {"format": "uuid", "title": "Id", "type": "string"}, "sku": {"title": "Sku", "type": "string"}, "name": {"title": "Name", "type": "string"}, "description": {"title": "Description", "type": "string"}, "unit": {"title": "Unit", "type": "string"}, "barcode": {"title": "Barcode", "type": "string"}, "category": {"title": "Category", "type": "string"}, "category_id": {"anyOf": [{"format": "uuid", "type": "string"}, {"type": "null"}], "title": "Category Id"}, "min_stock": {"title": "Min Stock", "type": "string"}, "target_stock": {"title": "Target Stock", "type": "string"}, "default_storage_location_id": {"anyOf": [{"format": "uuid", "type": "string"}, {"type": "null"}], "title": "Default Storage Location Id"}, "is_stocked": {"title": "Is Stocked", "type": "boolean"}, "track_batches": {"title": "Track Batches", "type": "boolean"}, "track_serial_numbers": {"title": "Track Serial Numbers", "type": "boolean"}, "status": {"title": "Status", "type": "string"}, "moving_average_cost": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Moving Average Cost"}, "last_purchase_price": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Last Purchase Price"}, "created_at": {"format": "date-time", "title": "Created At", "type": "string"}}, "required": ["id", "sku", "name", "description", "unit", "barcode", "category", "category_id", "min_stock", "target_stock", "default_storage_location_id", "is_stocked", "track_batches", "track_serial_numbers", "status", "moving_average_cost", "last_purchase_price", "created_at"], "title": "ArticleOut", "type": "object"}, "ArticleStockLocationOut": {"properties": {"location_id": {"format": "uuid", "title": "Location Id", "type": "string"}, "location_code": {"title": "Location Code", "type": "string"}, "warehouse_code": {"title": "Warehouse Code", "type": "string"}, "quantity_on_hand": {"title": "Quantity On Hand", "type": "string"}, "quantity_available": {"title": "Quantity Available", "type": "string"}}, "required": ["location_id", "location_code", "warehouse_code", "quantity_on_hand", "quantity_available"], "title": "ArticleStockLocationOut", "type": "object"}, "ArticleStockOut": {"properties": {"quantity_on_hand": {"title": "Quantity On Hand", "type": "string"}, "quantity_reserved": {"title": "Quantity Reserved", "type": "string"}, "quantity_available": {"title": "Quantity Available", "type": "string"}, "location_count": {"title": "Location Count", "type": "integer"}, "locations": {"items": {"$ref": "#/components/schemas/ArticleStockLocationOut"}, "title": "Locations", "type": "array"}}, "required": ["quantity_on_hand", "quantity_reserved", "quantity_available", "location_count", "locations"], "title": "ArticleStockOut", "type": "object"}, "ArticleUpdate": {"properties": {"sku": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Sku"}, "name": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Name"}, "description": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Description"}, "unit": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Unit"}, "barcode": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Barcode"}, "category": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Category"}, "category_id": {"anyOf": [{"format": "uuid", "type": "string"}, {"type": "null"}], "title": "Category Id"}, "min_stock": {"anyOf": [{"type": "number"}, {"type": "string"}, {"type": "null"}], "title": "Min Stock"}, "target_stock": {"anyOf": [{"type": "number"}, {"type": "string"}, {"type": "null"}], "title": "Target Stock"}, "default_storage_location_id": {"anyOf": [{"format": "uuid", "type": "string"}, {"type": "null"}], "title": "Default Storage Location Id"}, "is_stocked": {"anyOf": [{"type": "boolean"}, {"type": "null"}], "title": "Is Stocked"}, "status": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Status"}, "track_batches": {"anyOf": [{"type": "boolean"}, {"type": "null"}], "title": "Track Batches"}, "track_serial_numbers": {"anyOf": [{"type": "boolean"}, {"type": "null"}], "title": "Track Serial Numbers"}}, "title": "ArticleUpdate", "type": "object"}, "BatchDetailOut": {"properties": {"id": {"format": "uuid", "title": "Id", "type": "string"}, "article_id": {"format": "uuid", "title": "Article Id", "type": "string"}, "article_sku": {"title": "Article Sku", "type": "string"}, "article_name": {"title": "Article Name", "type": "string"}, "batch_number": {"title": "Batch Number", "type": "string"}, "expiry_date": {"anyOf": [{"format": "date", "type": "string"}, {"type": "null"}], "title": "Expiry Date"}, "production_date": {"anyOf": [{"format": "date", "type": "string"}, {"type": "null"}], "title": "Production Date"}, "status": {"title": "Status", "type": "string"}, "note": {"title": "Note", "type": "string"}, "quantity_on_hand": {"title": "Quantity On Hand", "type": "string"}, "stock": {"items": {"$ref": "#/components/schemas/BatchStockRow"}, "title": "Stock", "type": "array"}, "movements": {"items": {"$ref": "#/components/schemas/BatchMovementRow"}, "title": "Movements", "type": "array"}}, "required": ["id", "article_id", "article_sku", "article_name", "batch_number", "expiry_date", "production_date", "status", "note", "quantity_on_hand", "stock", "movements"], "title": "BatchDetailOut", "type": "object"}, "BatchMovementRow": {"properties": {"id": {"format": "uuid", "title": "Id", "type": "string"}, "movement_type": {"title": "Movement Type", "type": "string"}, "quantity": {"title": "Quantity", "type": "string"}, "location_code": {"title": "Location Code", "type": "string"}, "reference_type": {"title": "Reference Type", "type": "string"}, "reason": {"title": "Reason", "type": "string"}, "created_at": {"format": "date-time", "title": "Created At", "type": "string"}}, "required": ["id", "movement_type", "quantity", "location_code", "reference_type", "reason", "created_at"], "title": "BatchMovementRow", "type": "object"}, "BatchOut": {"properties": {"id": {"format": "uuid", "title": "Id", "type": "string"}, "article_id": {"format": "uuid", "title": "Article Id", "type": "string"}, "article_sku": {"title": "Article Sku", "type": "string"}, "article_name": {"title": "Article Name", "type": "string"}, "batch_number": {"title": "Batch Number", "type": "string"}, "expiry_date": {"anyOf": [{"format": "date", "type": "string"}, {"type": "null"}], "title": "Expiry Date"}, "production_date": {"anyOf": [{"format": "date", "type": "string"}, {"type": "null"}], "title": "Production Date"}, "status": {"title": "Status", "type": "string"}, "quantity_on_hand": {"title": "Quantity On Hand", "type": "string"}, "note": {"title": "Note", "type": "string"}}, "required": ["id", "article_id", "article_sku", "article_name", "batch_number", "expiry_date", "production_date", "status", "quantity_on_hand", "note"], "title": "BatchOut", "type": "object"}, "BatchStockRow": {"properties": {"location_id": {"format": "uuid", "title": "Location Id", "type": "string"}, "location_code": {"title": "Location Code", "type": "string"}, "warehouse_code": {"title": "Warehouse Code", "type": "string"}, "quantity_on_hand": {"title": "Quantity On Hand", "type": "string"}, "quantity_reserved": {"title": "Quantity Reserved", "type": "string"}, "quantity_available": {"title": "Quantity Available", "type": "string"}}, "required": ["location_id", "location_code", "warehouse_code", "quantity_on_hand", "quantity_reserved", "quantity_available"], "title": "BatchStockRow", "type": "object"}, "CategoryIn": {"properties": {"name": {"title": "Name", "type": "string"}, "sku_prefix": {"title": "Sku Prefix", "type": "string"}, "parent_id": {"anyOf": [{"format": "uuid", "type": "string"}, {"type": "null"}], "title": "Parent Id"}, "status": {"default": "active", "title": "Status", "type": "string"}}, "required": ["name", "sku_prefix"], "title": "CategoryIn", "type": "object"}, "CategoryOut": {"properties": {"id": {"format": "uuid", "title": "Id", "type": "string"}, "name": {"title": "Name", "type": "string"}, "sku_prefix": {"title": "Sku Prefix", "type": "string"}, "sku_counter": {"title": "Sku Counter", "type": "integer"}, "parent_id": {"anyOf": [{"format": "uuid", "type": "string"}, {"type": "null"}], "title": "Parent Id"}, "parent_name": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Parent Name"}, "status": {"title": "Status", "type": "string"}, "created_at": {"format": "date-time", "title": "Created At", "type": "string"}, "article_count": {"title": "Article Count", "type": "integer"}}, "required": ["id", "name", "sku_prefix", "sku_counter", "parent_id", "parent_name", "status", "created_at", "article_count"], "title": "CategoryOut", "type": "object"}, "CategoryUpdate": {"properties": {"name": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Name"}, "sku_prefix": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Sku Prefix"}, "parent_id": {"anyOf": [{"format": "uuid", "type": "string"}, {"type": "null"}], "title": "Parent Id"}, "status": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Status"}}, "title": "CategoryUpdate", "type": "object"}, "CorrectionIn": {"properties": {"article_id": {"format": "uuid", "title": "Article Id", "type": "string"}, "location_id": {"format": "uuid", "title": "Location Id", "type": "string"}, "quantity": {"anyOf": [{"type": "number"}, {"type": "string"}], "title": "Quantity"}, "batch_id": {"anyOf": [{"format": "uuid", "type": "string"}, {"type": "null"}], "title": "Batch Id"}, "serials": {"default": [], "items": {"type": "string"}, "title": "Serials", "type": "array"}, "reason": {"default": "", "title": "Reason", "type": "string"}}, "required": ["article_id", "location_id", "quantity"], "title": "CorrectionIn", "type": "object"}, "CustomerIn": {"properties": {"customer_number": {"default": "", "title": "Customer Number", "type": "string"}, "name": {"title": "Name", "type": "string"}, "vat_id": {"default": "", "title": "Vat Id", "type": "string"}, "email": {"default": "", "title": "Email", "type": "string"}, "phone": {"default": "", "title": "Phone", "type": "string"}, "status": {"default": "active", "title": "Status", "type": "string"}}, "required": ["name"], "title": "CustomerIn", "type": "object"}, "CustomerOut": {"properties": {"id": {"format": "uuid", "title": "Id", "type": "string"}, "customer_number": {"title": "Customer Number", "type": "string"}, "name": {"title": "Name", "type": "string"}, "vat_id": {"title": "Vat Id", "type": "string"}, "email": {"title": "Email", "type": "string"}, "phone": {"title": "Phone", "type": "string"}, "status": {"title": "Status", "type": "string"}, "created_at": {"format": "date-time", "title": "Created At", "type": "string"}}, "required": ["id", "customer_number", "name", "vat_id", "email", "phone", "status", "created_at"], "title": "CustomerOut", "type": "object"}, "CustomerUpdate": {"properties": {"name": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Name"}, "vat_id": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Vat Id"}, "email": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Email"}, "phone": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Phone"}, "status": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Status"}}, "title": "CustomerUpdate", "type": "object"}, "GoodsReceiptIn": {"properties": {"supplier_id": {"anyOf": [{"format": "uuid", "type": "string"}, {"type": "null"}], "title": "Supplier Id"}, "purchase_order_id": {"anyOf": [{"format": "uuid", "type": "string"}, {"type": "null"}], "title": "Purchase Order Id"}, "receipt_number": {"default": "", "title": "Receipt Number", "type": "string"}, "delivery_note_number": {"default": "", "title": "Delivery Note Number", "type": "string"}, "receipt_date": {"format": "date", "title": "Receipt Date", "type": "string"}, "lines": {"items": {"$ref": "#/components/schemas/GoodsReceiptLineIn"}, "title": "Lines", "type": "array"}, "post": {"default": false, "title": "Post", "type": "boolean"}}, "required": ["receipt_date", "lines"], "title": "GoodsReceiptIn", "type": "object"}, "GoodsReceiptLineIn": {"properties": {"article_id": {"format": "uuid", "title": "Article Id", "type": "string"}, "purchase_order_line_id": {"anyOf": [{"format": "uuid", "type": "string"}, {"type": "null"}], "title": "Purchase Order Line Id"}, "location_id": {"format": "uuid", "title": "Location Id", "type": "string"}, "received_quantity": {"anyOf": [{"type": "number"}, {"type": "string"}], "title": "Received Quantity"}, "accepted_quantity": {"anyOf": [{"type": "number"}, {"type": "string"}, {"type": "null"}], "title": "Accepted Quantity"}, "rejected_quantity": {"anyOf": [{"type": "number"}, {"type": "string"}], "default": "0", "title": "Rejected Quantity"}, "unit_price": {"anyOf": [{"type": "number"}, {"type": "string"}, {"type": "null"}], "title": "Unit Price"}, "note": {"default": "", "title": "Note", "type": "string"}}, "required": ["article_id", "location_id", "received_quantity"], "title": "GoodsReceiptLineIn", "type": "object"}, "GoodsReceiptLineOut": {"properties": {"id": {"format": "uuid", "title": "Id", "type": "string"}, "article_id": {"format": "uuid", "title": "Article Id", "type": "string"}, "article_sku": {"title": "Article Sku", "type": "string"}, "location_id": {"format": "uuid", "title": "Location Id", "type": "string"}, "location_code": {"title": "Location Code", "type": "string"}, "received_quantity": {"title": "Received Quantity", "type": "string"}, "accepted_quantity": {"title": "Accepted Quantity", "type": "string"}, "rejected_quantity": {"title": "Rejected Quantity", "type": "string"}, "unit_price": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Unit Price"}, "note": {"title": "Note", "type": "string"}}, "required": ["id", "article_id", "article_sku", "location_id", "location_code", "received_quantity", "accepted_quantity", "rejected_quantity", "unit_price", "note"], "title": "GoodsReceiptLineOut", "type": "object"}, "GoodsReceiptOut": {"properties": {"id": {"format": "uuid", "title": "Id", "type": "string"}, "receipt_number": {"title": "Receipt Number", "type": "string"}, "delivery_note_number": {"title": "Delivery Note Number", "type": "string"}, "receipt_date": {"format": "date", "title": "Receipt Date", "type": "string"}, "status": {"title": "Status", "type": "string"}, "supplier_id": {"format": "uuid", "title": "Supplier Id", "type": "string"}, "supplier_name": {"title": "Supplier Name", "type": "string"}, "purchase_order_id": {"anyOf": [{"format": "uuid", "type": "string"}, {"type": "null"}], "title": "Purchase Order Id"}, "lines": {"items": {"$ref": "#/components/schemas/GoodsReceiptLineOut"}, "title": "Lines", "type": "array"}, "created_at": {"format": "date-time", "title": "Created At", "type": "string"}}, "required": ["id", "receipt_number", "delivery_note_number", "receipt_date", "status", "supplier_id", "supplier_name", "purchase_order_id", "lines", "created_at"], "title": "GoodsReceiptOut", "type": "object"}, "LocationIn": {"properties": {"warehouse_id": {"format": "uuid", "title": "Warehouse Id", "type": "string"}, "code": {"title": "Code", "type": "string"}, "zone": {"default": "", "title": "Zone", "type": "string"}, "aisle": {"default": "", "title": "Aisle", "type": "string"}, "rack": {"default": "", "title": "Rack", "type": "string"}, "shelf": {"default": "", "title": "Shelf", "type": "string"}, "bin": {"default": "", "title": "Bin", "type": "string"}, "status": {"default": "active", "title": "Status", "type": "string"}, "capacity": {"anyOf": [{"type": "number"}, {"type": "string"}, {"type": "null"}], "title": "Capacity"}}, "required": ["warehouse_id", "code"], "title": "LocationIn", "type": "object"}, "LocationOut": {"properties": {"id": {"format": "uuid", "title": "Id", "type": "string"}, "code": {"title": "Code", "type": "string"}, "warehouse_id": {"format": "uuid", "title": "Warehouse Id", "type": "string"}, "warehouse_code": {"title": "Warehouse Code", "type": "string"}, "warehouse_name": {"default": "", "title": "Warehouse Name", "type": "string"}, "zone": {"title": "Zone", "type": "string"}, "aisle": {"title": "Aisle", "type": "string"}, "rack": {"title": "Rack", "type": "string"}, "shelf": {"title": "Shelf", "type": "string"}, "bin": {"title": "Bin", "type": "string"}, "plan_x": {"anyOf": [{"type": "number"}, {"type": "null"}], "title": "Plan X"}, "plan_y": {"anyOf": [{"type": "number"}, {"type": "null"}], "title": "Plan Y"}, "plan_w": {"anyOf": [{"type": "number"}, {"type": "null"}], "title": "Plan W"}, "plan_h": {"anyOf": [{"type": "number"}, {"type": "null"}], "title": "Plan H"}, "plan_z": {"anyOf": [{"type": "number"}, {"type": "null"}], "title": "Plan Z"}, "plan_height": {"anyOf": [{"type": "number"}, {"type": "null"}], "title": "Plan Height"}, "plan_object": {"title": "Plan Object", "type": "string"}, "status": {"title": "Status", "type": "string"}, "capacity": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Capacity"}}, "required": ["id", "code", "warehouse_id", "warehouse_code", "zone", "aisle", "rack", "shelf", "bin", "plan_x", "plan_y", "plan_w", "plan_h", "plan_z", "plan_height", "plan_object", "status", "capacity"], "title": "LocationOut", "type": "object"}, "LocationUpdate": {"properties": {"code": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Code"}, "zone": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Zone"}, "aisle": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Aisle"}, "rack": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Rack"}, "shelf": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Shelf"}, "bin": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Bin"}, "status": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Status"}, "capacity": {"anyOf": [{"type": "number"}, {"type": "string"}, {"type": "null"}], "title": "Capacity"}, "plan_z": {"anyOf": [{"maximum": 1000, "minimum": 0, "type": "number"}, {"type": "null"}], "title": "Plan Z"}, "plan_height": {"anyOf": [{"exclusiveMinimum": 0, "maximum": 1000, "type": "number"}, {"type": "null"}], "title": "Plan Height"}, "plan_object": {"anyOf": [{"enum": ["", "shelf", "pallet_rack", "floor", "bin_shelf", "cabinet", "drawer_cabinet"], "type": "string"}, {"type": "null"}], "title": "Plan Object"}}, "title": "LocationUpdate", "type": "object"}, "MaterialCostLineOut": {"properties": {"article_id": {"format": "uuid", "title": "Article Id", "type": "string"}, "sku": {"title": "Sku", "type": "string"}, "name": {"title": "Name", "type": "string"}, "unit": {"title": "Unit", "type": "string"}, "quantity": {"title": "Quantity", "type": "string"}, "value": {"title": "Value", "type": "string"}, "unvalued": {"title": "Unvalued", "type": "boolean"}}, "required": ["article_id", "sku", "name", "unit", "quantity", "value", "unvalued"], "title": "MaterialCostLineOut", "type": "object"}, "MaterialCostsOut": {"properties": {"lines": {"items": {"$ref": "#/components/schemas/MaterialCostLineOut"}, "title": "Lines", "type": "array"}, "total_value": {"title": "Total Value", "type": "string"}, "unvalued_lines": {"title": "Unvalued Lines", "type": "integer"}, "currency": {"title": "Currency", "type": "string"}}, "required": ["lines", "total_value", "unvalued_lines", "currency"], "title": "MaterialCostsOut", "type": "object"}, "OutboundIn": {"properties": {"customer_id": {"anyOf": [{"format": "uuid", "type": "string"}, {"type": "null"}], "title": "Customer Id"}, "outbound_number": {"default": "", "title": "Outbound Number", "type": "string"}, "outbound_date": {"format": "date", "title": "Outbound Date", "type": "string"}, "reason": {"default": "customer_delivery", "title": "Reason", "type": "string"}, "lines": {"items": {"$ref": "#/components/schemas/OutboundLineIn"}, "title": "Lines", "type": "array"}}, "required": ["outbound_date", "lines"], "title": "OutboundIn", "type": "object"}, "OutboundLineIn": {"properties": {"article_id": {"format": "uuid", "title": "Article Id", "type": "string"}, "location_id": {"format": "uuid", "title": "Location Id", "type": "string"}, "quantity": {"anyOf": [{"type": "number"}, {"type": "string"}], "title": "Quantity"}, "note": {"default": "", "title": "Note", "type": "string"}}, "required": ["article_id", "location_id", "quantity"], "title": "OutboundLineIn", "type": "object"}, "OutboundLineOut": {"properties": {"id": {"format": "uuid", "title": "Id", "type": "string"}, "article_id": {"format": "uuid", "title": "Article Id", "type": "string"}, "article_sku": {"title": "Article Sku", "type": "string"}, "location_id": {"format": "uuid", "title": "Location Id", "type": "string"}, "location_code": {"title": "Location Code", "type": "string"}, "quantity": {"title": "Quantity", "type": "string"}, "note": {"title": "Note", "type": "string"}}, "required": ["id", "article_id", "article_sku", "location_id", "location_code", "quantity", "note"], "title": "OutboundLineOut", "type": "object"}, "OutboundOut": {"properties": {"id": {"format": "uuid", "title": "Id", "type": "string"}, "outbound_number": {"title": "Outbound Number", "type": "string"}, "outbound_date": {"format": "date", "title": "Outbound Date", "type": "string"}, "status": {"title": "Status", "type": "string"}, "reason": {"title": "Reason", "type": "string"}, "customer_id": {"anyOf": [{"format": "uuid", "type": "string"}, {"type": "null"}], "title": "Customer Id"}, "customer_name": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Customer Name"}, "lines": {"items": {"$ref": "#/components/schemas/OutboundLineOut"}, "title": "Lines", "type": "array"}, "created_at": {"format": "date-time", "title": "Created At", "type": "string"}}, "required": ["id", "outbound_number", "outbound_date", "status", "reason", "customer_id", "customer_name", "lines", "created_at"], "title": "OutboundOut", "type": "object"}, "POIn": {"properties": {"supplier_id": {"format": "uuid", "title": "Supplier Id", "type": "string"}, "order_number": {"default": "", "title": "Order Number", "type": "string"}, "order_date": {"format": "date", "title": "Order Date", "type": "string"}, "expected_delivery_date": {"anyOf": [{"format": "date", "type": "string"}, {"type": "null"}], "title": "Expected Delivery Date"}, "currency": {"default": "EUR", "title": "Currency", "type": "string"}, "lines": {"items": {"$ref": "#/components/schemas/POLineIn"}, "title": "Lines", "type": "array"}, "draft": {"default": false, "title": "Draft", "type": "boolean"}}, "required": ["supplier_id", "order_date", "lines"], "title": "POIn", "type": "object"}, "POLineIn": {"properties": {"article_id": {"format": "uuid", "title": "Article Id", "type": "string"}, "line_number": {"title": "Line Number", "type": "integer"}, "description": {"default": "", "title": "Description", "type": "string"}, "unit": {"default": "", "title": "Unit", "type": "string"}, "ordered_quantity": {"anyOf": [{"type": "number"}, {"type": "string"}], "title": "Ordered Quantity"}, "unit_price": {"anyOf": [{"type": "number"}, {"type": "string"}], "title": "Unit Price"}, "tax_rate": {"anyOf": [{"type": "number"}, {"type": "string"}], "default": "19", "title": "Tax Rate"}}, "required": ["article_id", "line_number", "ordered_quantity", "unit_price"], "title": "POLineIn", "type": "object"}, "POLineOut": {"properties": {"id": {"format": "uuid", "title": "Id", "type": "string"}, "line_number": {"title": "Line Number", "type": "integer"}, "article_id": {"format": "uuid", "title": "Article Id", "type": "string"}, "article_sku": {"title": "Article Sku", "type": "string"}, "article_name": {"default": "", "title": "Article Name", "type": "string"}, "description": {"title": "Description", "type": "string"}, "unit": {"title": "Unit", "type": "string"}, "ordered_quantity": {"title": "Ordered Quantity", "type": "string"}, "received_quantity": {"title": "Received Quantity", "type": "string"}, "invoiced_quantity": {"title": "Invoiced Quantity", "type": "string"}, "unit_price": {"title": "Unit Price", "type": "string"}, "tax_rate": {"title": "Tax Rate", "type": "string"}}, "required": ["id", "line_number", "article_id", "article_sku", "description", "unit", "ordered_quantity", "received_quantity", "invoiced_quantity", "unit_price", "tax_rate"], "title": "POLineOut", "type": "object"}, "POOut": {"properties": {"id": {"format": "uuid", "title": "Id", "type": "string"}, "order_number": {"title": "Order Number", "type": "string"}, "order_date": {"format": "date", "title": "Order Date", "type": "string"}, "expected_delivery_date": {"anyOf": [{"format": "date", "type": "string"}, {"type": "null"}], "title": "Expected Delivery Date"}, "status": {"title": "Status", "type": "string"}, "currency": {"title": "Currency", "type": "string"}, "supplier_id": {"format": "uuid", "title": "Supplier Id", "type": "string"}, "supplier_name": {"title": "Supplier Name", "type": "string"}, "net_total": {"title": "Net Total", "type": "string"}, "tax_total": {"title": "Tax Total", "type": "string"}, "gross_total": {"title": "Gross Total", "type": "string"}, "lines": {"items": {"$ref": "#/components/schemas/POLineOut"}, "title": "Lines", "type": "array"}, "created_at": {"format": "date-time", "title": "Created At", "type": "string"}}, "required": ["id", "order_number", "order_date", "expected_delivery_date", "status", "currency", "supplier_id", "supplier_name", "net_total", "tax_total", "gross_total", "lines", "created_at"], "title": "POOut", "type": "object"}, "PagedArticleOut": {"properties": {"items": {"items": {"$ref": "#/components/schemas/ArticleOut"}, "title": "Items", "type": "array"}, "count": {"title": "Count", "type": "integer"}}, "required": ["items", "count"], "title": "PagedArticleOut", "type": "object"}, "PagedBatchOut": {"properties": {"items": {"items": {"$ref": "#/components/schemas/BatchOut"}, "title": "Items", "type": "array"}, "count": {"title": "Count", "type": "integer"}}, "required": ["items", "count"], "title": "PagedBatchOut", "type": "object"}, "PagedCategoryOut": {"properties": {"items": {"items": {"$ref": "#/components/schemas/CategoryOut"}, "title": "Items", "type": "array"}, "count": {"title": "Count", "type": "integer"}}, "required": ["items", "count"], "title": "PagedCategoryOut", "type": "object"}, "PagedCustomerOut": {"properties": {"items": {"items": {"$ref": "#/components/schemas/CustomerOut"}, "title": "Items", "type": "array"}, "count": {"title": "Count", "type": "integer"}}, "required": ["items", "count"], "title": "PagedCustomerOut", "type": "object"}, "PagedGoodsReceiptOut": {"properties": {"items": {"items": {"$ref": "#/components/schemas/GoodsReceiptOut"}, "title": "Items", "type": "array"}, "count": {"title": "Count", "type": "integer"}}, "required": ["items", "count"], "title": "PagedGoodsReceiptOut", "type": "object"}, "PagedLocationOut": {"properties": {"items": {"items": {"$ref": "#/components/schemas/LocationOut"}, "title": "Items", "type": "array"}, "count": {"title": "Count", "type": "integer"}}, "required": ["items", "count"], "title": "PagedLocationOut", "type": "object"}, "PagedOutboundOut": {"properties": {"items": {"items": {"$ref": "#/components/schemas/OutboundOut"}, "title": "Items", "type": "array"}, "count": {"title": "Count", "type": "integer"}}, "required": ["items", "count"], "title": "PagedOutboundOut", "type": "object"}, "PagedPOOut": {"properties": {"items": {"items": {"$ref": "#/components/schemas/POOut"}, "title": "Items", "type": "array"}, "count": {"title": "Count", "type": "integer"}}, "required": ["items", "count"], "title": "PagedPOOut", "type": "object"}, "PagedProjectOut": {"properties": {"items": {"items": {"$ref": "#/components/schemas/ProjectOut"}, "title": "Items", "type": "array"}, "count": {"title": "Count", "type": "integer"}}, "required": ["items", "count"], "title": "PagedProjectOut", "type": "object"}, "PagedReorderSuggestionOut": {"properties": {"items": {"items": {"$ref": "#/components/schemas/ReorderSuggestionOut"}, "title": "Items", "type": "array"}, "count": {"title": "Count", "type": "integer"}}, "required": ["items", "count"], "title": "PagedReorderSuggestionOut", "type": "object"}, "PagedReservationOut": {"properties": {"items": {"items": {"$ref": "#/components/schemas/ReservationOut"}, "title": "Items", "type": "array"}, "count": {"title": "Count", "type": "integer"}}, "required": ["items", "count"], "title": "PagedReservationOut", "type": "object"}, "PagedSerialNumberOut": {"properties": {"items": {"items": {"$ref": "#/components/schemas/SerialNumberOut"}, "title": "Items", "type": "array"}, "count": {"title": "Count", "type": "integer"}}, "required": ["items", "count"], "title": "PagedSerialNumberOut", "type": "object"}, "PagedStockItemOut": {"properties": {"items": {"items": {"$ref": "#/components/schemas/StockItemOut"}, "title": "Items", "type": "array"}, "count": {"title": "Count", "type": "integer"}}, "required": ["items", "count"], "title": "PagedStockItemOut", "type": "object"}, "PagedStockMovementOut": {"properties": {"items": {"items": {"$ref": "#/components/schemas/StockMovementOut"}, "title": "Items", "type": "array"}, "count": {"title": "Count", "type": "integer"}}, "required": ["items", "count"], "title": "PagedStockMovementOut", "type": "object"}, "PagedSupplierOut": {"properties": {"items": {"items": {"$ref": "#/components/schemas/SupplierOut"}, "title": "Items", "type": "array"}, "count": {"title": "Count", "type": "integer"}}, "required": ["items", "count"], "title": "PagedSupplierOut", "type": "object"}, "PagedWarehouseOut": {"properties": {"items": {"items": {"$ref": "#/components/schemas/WarehouseOut"}, "title": "Items", "type": "array"}, "count": {"title": "Count", "type": "integer"}}, "required": ["items", "count"], "title": "PagedWarehouseOut", "type": "object"}, "ProjectIn": {"properties": {"code": {"title": "Code", "type": "string"}, "name": {"title": "Name", "type": "string"}, "status": {"default": "active", "title": "Status", "type": "string"}}, "required": ["code", "name"], "title": "ProjectIn", "type": "object"}, "ProjectOut": {"properties": {"id": {"format": "uuid", "title": "Id", "type": "string"}, "code": {"title": "Code", "type": "string"}, "name": {"title": "Name", "type": "string"}, "status": {"title": "Status", "type": "string"}, "created_at": {"format": "date-time", "title": "Created At", "type": "string"}}, "required": ["id", "code", "name", "status", "created_at"], "title": "ProjectOut", "type": "object"}, "ProjectUpdate": {"properties": {"code": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Code"}, "name": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Name"}, "status": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Status"}}, "title": "ProjectUpdate", "type": "object"}, "QuickOutboundIn": {"properties": {"article_id": {"format": "uuid", "title": "Article Id", "type": "string"}, "quantity": {"anyOf": [{"type": "number"}, {"type": "string"}], "title": "Quantity"}, "reason": {"title": "Reason", "type": "string"}, "location_id": {"anyOf": [{"format": "uuid", "type": "string"}, {"type": "null"}], "title": "Location Id"}, "batch_id": {"anyOf": [{"format": "uuid", "type": "string"}, {"type": "null"}], "title": "Batch Id"}, "serials": {"default": [], "items": {"type": "string"}, "title": "Serials", "type": "array"}, "note": {"default": "", "title": "Note", "type": "string"}, "project_id": {"anyOf": [{"format": "uuid", "type": "string"}, {"type": "null"}], "title": "Project Id"}}, "required": ["article_id", "quantity", "reason"], "title": "QuickOutboundIn", "type": "object"}, "QuickOutboundOut": {"properties": {"id": {"format": "uuid", "title": "Id", "type": "string"}, "outbound_number": {"title": "Outbound Number", "type": "string"}, "outbound_date": {"format": "date", "title": "Outbound Date", "type": "string"}, "status": {"title": "Status", "type": "string"}, "reason": {"title": "Reason", "type": "string"}, "customer_id": {"anyOf": [{"format": "uuid", "type": "string"}, {"type": "null"}], "title": "Customer Id"}, "customer_name": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Customer Name"}, "lines": {"items": {"$ref": "#/components/schemas/OutboundLineOut"}, "title": "Lines", "type": "array"}, "created_at": {"format": "date-time", "title": "Created At", "type": "string"}, "movement_ids": {"default": [], "items": {"format": "uuid", "type": "string"}, "title": "Movement Ids", "type": "array"}, "project_id": {"anyOf": [{"format": "uuid", "type": "string"}, {"type": "null"}], "title": "Project Id"}, "project_name": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Project Name"}}, "required": ["id", "outbound_number", "outbound_date", "status", "reason", "customer_id", "customer_name", "lines", "created_at"], "title": "QuickOutboundOut", "type": "object"}, "ReceiveIn": {"properties": {"article_id": {"format": "uuid", "title": "Article Id", "type": "string"}, "location_id": {"anyOf": [{"format": "uuid", "type": "string"}, {"type": "null"}], "title": "Location Id"}, "quantity": {"anyOf": [{"type": "number"}, {"type": "string"}], "title": "Quantity"}, "batch_id": {"anyOf": [{"format": "uuid", "type": "string"}, {"type": "null"}], "title": "Batch Id"}, "batch_number": {"default": "", "title": "Batch Number", "type": "string"}, "expiry_date": {"anyOf": [{"format": "date", "type": "string"}, {"type": "null"}], "title": "Expiry Date"}, "serials": {"default": [], "items": {"type": "string"}, "title": "Serials", "type": "array"}, "unit_cost": {"anyOf": [{"type": "number"}, {"type": "string"}, {"type": "null"}], "title": "Unit Cost"}, "reason": {"default": "", "title": "Reason", "type": "string"}}, "required": ["article_id", "quantity"], "title": "ReceiveIn", "type": "object"}, "ReorderSuggestionOut": {"properties": {"article_id": {"format": "uuid", "title": "Article Id", "type": "string"}, "article_sku": {"title": "Article Sku", "type": "string"}, "article_name": {"title": "Article Name", "type": "string"}, "on_hand": {"title": "On Hand", "type": "string"}, "min_stock": {"title": "Min Stock", "type": "string"}, "target_stock": {"title": "Target Stock", "type": "string"}, "shortfall": {"title": "Shortfall", "type": "string"}, "has_supplier": {"title": "Has Supplier", "type": "boolean"}, "supplier_id": {"anyOf": [{"format": "uuid", "type": "string"}, {"type": "null"}], "title": "Supplier Id"}, "supplier_name": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Supplier Name"}, "suppliers": {"items": {"$ref": "#/components/schemas/ReorderSupplierOption"}, "title": "Suppliers", "type": "array"}}, "required": ["article_id", "article_sku", "article_name", "on_hand", "min_stock", "target_stock", "shortfall", "has_supplier", "supplier_id", "supplier_name", "suppliers"], "title": "ReorderSuggestionOut", "type": "object"}, "ReorderSupplierOption": {"properties": {"supplier_id": {"format": "uuid", "title": "Supplier Id", "type": "string"}, "supplier_name": {"title": "Supplier Name", "type": "string"}, "unit_price": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Unit Price"}, "lead_time_days": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Lead Time Days"}, "is_preferred": {"title": "Is Preferred", "type": "boolean"}, "pack_size": {"title": "Pack Size", "type": "string"}, "min_order_quantity": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Min Order Quantity"}}, "required": ["supplier_id", "supplier_name", "unit_price", "lead_time_days", "is_preferred", "pack_size", "min_order_quantity"], "title": "ReorderSupplierOption", "type": "object"}, "ReservationIn": {"properties": {"article_id": {"format": "uuid", "title": "Article Id", "type": "string"}, "location_id": {"format": "uuid", "title": "Location Id", "type": "string"}, "quantity": {"anyOf": [{"type": "number"}, {"type": "string"}], "title": "Quantity"}, "reference_type": {"default": "", "title": "Reference Type", "type": "string"}, "reference_id": {"anyOf": [{"format": "uuid", "type": "string"}, {"type": "null"}], "title": "Reference Id"}, "expires_at": {"anyOf": [{"format": "date-time", "type": "string"}, {"type": "null"}], "title": "Expires At"}}, "required": ["article_id", "location_id", "quantity"], "title": "ReservationIn", "type": "object"}, "ReservationOut": {"properties": {"id": {"format": "uuid", "title": "Id", "type": "string"}, "article_id": {"format": "uuid", "title": "Article Id", "type": "string"}, "article_sku": {"title": "Article Sku", "type": "string"}, "article_name": {"title": "Article Name", "type": "string"}, "location_id": {"format": "uuid", "title": "Location Id", "type": "string"}, "location_code": {"title": "Location Code", "type": "string"}, "warehouse_code": {"title": "Warehouse Code", "type": "string"}, "batch_id": {"anyOf": [{"format": "uuid", "type": "string"}, {"type": "null"}], "title": "Batch Id"}, "batch_number": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Batch Number"}, "quantity": {"title": "Quantity", "type": "string"}, "status": {"title": "Status", "type": "string"}, "reference_type": {"title": "Reference Type", "type": "string"}, "reference_id": {"anyOf": [{"format": "uuid", "type": "string"}, {"type": "null"}], "title": "Reference Id"}, "expires_at": {"anyOf": [{"format": "date-time", "type": "string"}, {"type": "null"}], "title": "Expires At"}, "created_by_email": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Created By Email"}, "created_at": {"format": "date-time", "title": "Created At", "type": "string"}}, "required": ["id", "article_id", "article_sku", "article_name", "location_id", "location_code", "warehouse_code", "batch_id", "batch_number", "quantity", "status", "reference_type", "reference_id", "expires_at", "created_by_email", "created_at"], "title": "ReservationOut", "type": "object"}, "ReverseIn": {"properties": {"reason": {"default": "", "title": "Reason", "type": "string"}}, "title": "ReverseIn", "type": "object"}, "ScanLocationOut": {"properties": {"id": {"format": "uuid", "title": "Id", "type": "string"}, "code": {"title": "Code", "type": "string"}, "warehouse_code": {"title": "Warehouse Code", "type": "string"}, "warehouse_name": {"default": "", "title": "Warehouse Name", "type": "string"}, "status": {"title": "Status", "type": "string"}}, "required": ["id", "code", "warehouse_code", "status"], "title": "ScanLocationOut", "type": "object"}, "ScanResult": {"properties": {"kind": {"title": "Kind", "type": "string"}, "query": {"title": "Query", "type": "string"}, "article": {"anyOf": [{"$ref": "#/components/schemas/ArticleOut"}, {"type": "null"}]}, "location": {"anyOf": [{"$ref": "#/components/schemas/ScanLocationOut"}, {"type": "null"}]}, "stock": {"default": [], "items": {"$ref": "#/components/schemas/ScanStockRow"}, "title": "Stock", "type": "array"}, "stock_count": {"default": 0, "title": "Stock Count", "type": "integer"}, "stock_offset": {"default": 0, "title": "Stock Offset", "type": "integer"}, "stock_limit": {"default": 0, "title": "Stock Limit", "type": "integer"}, "total_available": {"default": "0", "title": "Total Available", "type": "string"}, "units_mixed": {"default": false, "title": "Units Mixed", "type": "boolean"}, "totals_by_unit": {"default": [], "items": {"$ref": "#/components/schemas/UnitTotal"}, "title": "Totals By Unit", "type": "array"}}, "required": ["kind", "query"], "title": "ScanResult", "type": "object"}, "ScanStockRow": {"properties": {"location_id": {"format": "uuid", "title": "Location Id", "type": "string"}, "location_code": {"title": "Location Code", "type": "string"}, "warehouse_code": {"title": "Warehouse Code", "type": "string"}, "warehouse_name": {"default": "", "title": "Warehouse Name", "type": "string"}, "article_id": {"anyOf": [{"format": "uuid", "type": "string"}, {"type": "null"}], "title": "Article Id"}, "article_sku": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Article Sku"}, "article_name": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Article Name"}, "article_unit": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Article Unit"}, "article_track_batches": {"anyOf": [{"type": "boolean"}, {"type": "null"}], "title": "Article Track Batches"}, "article_track_serial_numbers": {"anyOf": [{"type": "boolean"}, {"type": "null"}], "title": "Article Track Serial Numbers"}, "batch_id": {"anyOf": [{"format": "uuid", "type": "string"}, {"type": "null"}], "title": "Batch Id"}, "batch_number": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Batch Number"}, "batch_status": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Batch Status"}, "quantity_on_hand": {"title": "Quantity On Hand", "type": "string"}, "quantity_reserved": {"title": "Quantity Reserved", "type": "string"}, "quantity_available": {"title": "Quantity Available", "type": "string"}}, "required": ["location_id", "location_code", "warehouse_code", "batch_id", "batch_number", "quantity_on_hand", "quantity_reserved", "quantity_available"], "title": "ScanStockRow", "type": "object"}, "SerialNumberOut": {"properties": {"id": {"format": "uuid", "title": "Id", "type": "string"}, "article_id": {"format": "uuid", "title": "Article Id", "type": "string"}, "article_sku": {"title": "Article Sku", "type": "string"}, "article_name": {"title": "Article Name", "type": "string"}, "serial": {"title": "Serial", "type": "string"}, "batch_id": {"anyOf": [{"format": "uuid", "type": "string"}, {"type": "null"}], "title": "Batch Id"}, "batch_number": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Batch Number"}, "location_id": {"anyOf": [{"format": "uuid", "type": "string"}, {"type": "null"}], "title": "Location Id"}, "location_code": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Location Code"}, "status": {"title": "Status", "type": "string"}, "received_at": {"anyOf": [{"format": "date-time", "type": "string"}, {"type": "null"}], "title": "Received At"}, "issued_at": {"anyOf": [{"format": "date-time", "type": "string"}, {"type": "null"}], "title": "Issued At"}}, "required": ["id", "article_id", "article_sku", "article_name", "serial", "batch_id", "batch_number", "location_id", "location_code", "status", "received_at", "issued_at"], "title": "SerialNumberOut", "type": "object"}, "StockItemOut": {"properties": {"id": {"format": "uuid", "title": "Id", "type": "string"}, "article_id": {"format": "uuid", "title": "Article Id", "type": "string"}, "article_sku": {"title": "Article Sku", "type": "string"}, "article_name": {"title": "Article Name", "type": "string"}, "category": {"title": "Category", "type": "string"}, "location_id": {"format": "uuid", "title": "Location Id", "type": "string"}, "location_code": {"title": "Location Code", "type": "string"}, "warehouse_id": {"format": "uuid", "title": "Warehouse Id", "type": "string"}, "warehouse_code": {"title": "Warehouse Code", "type": "string"}, "quantity_on_hand": {"title": "Quantity On Hand", "type": "string"}, "quantity_reserved": {"title": "Quantity Reserved", "type": "string"}, "quantity_available": {"title": "Quantity Available", "type": "string"}, "batch_id": {"anyOf": [{"format": "uuid", "type": "string"}, {"type": "null"}], "title": "Batch Id"}, "batch_number": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Batch Number"}, "batch_expiry_date": {"anyOf": [{"format": "date", "type": "string"}, {"type": "null"}], "title": "Batch Expiry Date"}, "batch_status": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Batch Status"}, "last_movement_at": {"anyOf": [{"format": "date-time", "type": "string"}, {"type": "null"}], "title": "Last Movement At"}, "article_total_on_hand": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Article Total On Hand"}, "stock_status": {"title": "Stock Status", "type": "string"}, "updated_at": {"format": "date-time", "title": "Updated At", "type": "string"}}, "required": ["id", "article_id", "article_sku", "article_name", "category", "location_id", "location_code", "warehouse_id", "warehouse_code", "quantity_on_hand", "quantity_reserved", "quantity_available", "batch_id", "batch_number", "batch_expiry_date", "batch_status", "last_movement_at", "stock_status", "updated_at"], "title": "StockItemOut", "type": "object"}, "StockMovementOut": {"properties": {"id": {"format": "uuid", "title": "Id", "type": "string"}, "movement_type": {"title": "Movement Type", "type": "string"}, "quantity": {"title": "Quantity", "type": "string"}, "article_sku": {"title": "Article Sku", "type": "string"}, "location_code": {"title": "Location Code", "type": "string"}, "warehouse_code": {"title": "Warehouse Code", "type": "string"}, "batch_id": {"anyOf": [{"format": "uuid", "type": "string"}, {"type": "null"}], "title": "Batch Id"}, "batch_number": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Batch Number"}, "transfer_group": {"anyOf": [{"format": "uuid", "type": "string"}, {"type": "null"}], "title": "Transfer Group"}, "counterpart_location_code": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Counterpart Location Code"}, "unit_cost": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Unit Cost"}, "unit_cost_is_derived": {"title": "Unit Cost Is Derived", "type": "boolean"}, "reference_type": {"title": "Reference Type", "type": "string"}, "reference_id": {"anyOf": [{"format": "uuid", "type": "string"}, {"type": "null"}], "title": "Reference Id"}, "reason": {"title": "Reason", "type": "string"}, "can_reverse": {"title": "Can Reverse", "type": "boolean"}, "created_at": {"format": "date-time", "title": "Created At", "type": "string"}}, "required": ["id", "movement_type", "quantity", "article_sku", "location_code", "warehouse_code", "batch_id", "batch_number", "transfer_group", "counterpart_location_code", "unit_cost", "unit_cost_is_derived", "reference_type", "reference_id", "reason", "can_reverse", "created_at"], "title": "StockMovementOut", "type": "object"}, "SupplierIn": {"properties": {"supplier_number": {"default": "", "title": "Supplier Number", "type": "string"}, "name": {"title": "Name", "type": "string"}, "vat_id": {"default": "", "title": "Vat Id", "type": "string"}, "iban": {"default": "", "title": "Iban", "type": "string"}, "bic": {"default": "", "title": "Bic", "type": "string"}, "email": {"default": "", "title": "Email", "type": "string"}, "phone": {"default": "", "title": "Phone", "type": "string"}, "payment_terms_days": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Payment Terms Days"}, "discount_days": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Discount Days"}, "discount_percent": {"anyOf": [{"type": "number"}, {"type": "string"}, {"type": "null"}], "title": "Discount Percent"}, "our_customer_number": {"default": "", "title": "Our Customer Number", "type": "string"}, "status": {"default": "active", "title": "Status", "type": "string"}, "messaging_channels": {"default": [], "items": {"type": "string"}, "title": "Messaging Channels", "type": "array"}}, "required": ["name"], "title": "SupplierIn", "type": "object"}, "SupplierOut": {"properties": {"id": {"format": "uuid", "title": "Id", "type": "string"}, "supplier_number": {"title": "Supplier Number", "type": "string"}, "name": {"title": "Name", "type": "string"}, "vat_id": {"title": "Vat Id", "type": "string"}, "iban": {"title": "Iban", "type": "string"}, "bic": {"title": "Bic", "type": "string"}, "email": {"title": "Email", "type": "string"}, "phone": {"title": "Phone", "type": "string"}, "payment_terms_days": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Payment Terms Days"}, "discount_days": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Discount Days"}, "discount_percent": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Discount Percent"}, "our_customer_number": {"title": "Our Customer Number", "type": "string"}, "status": {"title": "Status", "type": "string"}, "messaging_channels": {"items": {"type": "string"}, "title": "Messaging Channels", "type": "array"}, "created_at": {"format": "date-time", "title": "Created At", "type": "string"}}, "required": ["id", "supplier_number", "name", "vat_id", "iban", "bic", "email", "phone", "payment_terms_days", "discount_days", "discount_percent", "our_customer_number", "status", "messaging_channels", "created_at"], "title": "SupplierOut", "type": "object"}, "SupplierUpdate": {"properties": {"name": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Name"}, "vat_id": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Vat Id"}, "iban": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Iban"}, "bic": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Bic"}, "email": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Email"}, "phone": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Phone"}, "payment_terms_days": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Payment Terms Days"}, "discount_days": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Discount Days"}, "discount_percent": {"anyOf": [{"type": "number"}, {"type": "string"}, {"type": "null"}], "title": "Discount Percent"}, "our_customer_number": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Our Customer Number"}, "status": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Status"}, "messaging_channels": {"anyOf": [{"items": {"type": "string"}, "type": "array"}, {"type": "null"}], "title": "Messaging Channels"}}, "title": "SupplierUpdate", "type": "object"}, "TransferIn": {"properties": {"article_id": {"format": "uuid", "title": "Article Id", "type": "string"}, "source_location_id": {"format": "uuid", "title": "Source Location Id", "type": "string"}, "target_location_id": {"format": "uuid", "title": "Target Location Id", "type": "string"}, "quantity": {"anyOf": [{"type": "number"}, {"type": "string"}], "title": "Quantity"}, "batch_id": {"anyOf": [{"format": "uuid", "type": "string"}, {"type": "null"}], "title": "Batch Id"}, "serials": {"default": [], "items": {"type": "string"}, "title": "Serials", "type": "array"}, "reason": {"default": "", "title": "Reason", "type": "string"}}, "required": ["article_id", "source_location_id", "target_location_id", "quantity"], "title": "TransferIn", "type": "object"}, "UnitTotal": {"properties": {"unit": {"title": "Unit", "type": "string"}, "quantity": {"title": "Quantity", "type": "string"}}, "required": ["unit", "quantity"], "title": "UnitTotal", "type": "object"}, "WarehouseOut": {"properties": {"id": {"format": "uuid", "title": "Id", "type": "string"}, "code": {"title": "Code", "type": "string"}, "name": {"title": "Name", "type": "string"}, "status": {"title": "Status", "type": "string"}, "plan_width_m": {"anyOf": [{"type": "number"}, {"type": "null"}], "title": "Plan Width M"}, "created_at": {"format": "date-time", "title": "Created At", "type": "string"}, "kind": {"default": "main", "title": "Kind", "type": "string"}, "license_plate": {"default": "", "title": "License Plate", "type": "string"}, "assigned_to_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Assigned To Id"}, "location_count": {"default": 0, "title": "Location Count", "type": "integer"}}, "required": ["id", "code", "name", "status", "plan_width_m", "created_at"], "title": "WarehouseOut", "type": "object"}}, "securitySchemes": {"ApiKey": {"type": "http", "scheme": "bearer", "bearerFormat": "lvs_…", "description": "API-Schlüssel aus Einstellungen → Schnittstellen."}}}, "x-lavesy-scopes": [{"area": "stock", "label": "Bestand"}, {"area": "movements", "label": "Lagerbewegungen"}, {"area": "articles", "label": "Artikel & Lagerorte"}, {"area": "projects", "label": "Projekte"}, {"area": "customers", "label": "Kunden"}, {"area": "suppliers", "label": "Lieferanten"}, {"area": "purchase_orders", "label": "Bestellungen"}, {"area": "goods_receipts", "label": "Wareneingänge"}, {"area": "outbound", "label": "Warenausgänge"}]}