Files
dashback/src/api/openapi.js
2026-10-09 10:41:21 +02:00

1627 lines
46 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/**
* Shared OpenAPI components scanned by `scripts/generateApiDocs.js`.
* Route-specific paths live as `@openapi` blocks next to each handler.
*
* @openapi
* components:
* securitySchemes:
* cookieAuth:
* type: apiKey
* in: cookie
* name: token
* description: HTTP-only session cookie set by POST /auth/login
* bearerAuth:
* type: http
* scheme: bearer
* bearerFormat: JWT
* description: JWT token in Authorization header (Bearer <token>)
* schemas:
* Error:
* type: object
* required: [error]
* properties:
* error:
* type: string
* User:
* type: object
* required: [id, email, selectedCompanyId]
* properties:
* id:
* type: integer
* email:
* type: string
* format: email
* selectedCompanyId:
* type: integer
* nullable: true
* picture:
* type: string
* description: Profile image as base64 (from stored picturebinary); omitted when unset
* Company:
* type: object
* properties:
* id:
* type: integer
* iso639:
* type: string
* name:
* type: string
* taxrate:
* type: number
* reducedtaxrate:
* type: number
* SuccessResponse:
* type: object
* required: [ok]
* properties:
* ok:
* type: boolean
* example: true
* CompanySetting:
* type: object
* required: [key, value]
* properties:
* key:
* type: string
* value:
* type: string
* nullable: true
* Category:
* type: object
* properties:
* id:
* type: integer
* parentId:
* type: integer
* nullable: true
* sort:
* type: integer
* name:
* type: string
* Unit:
* type: object
* description: Measurement unit with conversion factor to base SI unit (e.g. g -> kg, ml -> l)
* required: [si, basesi, basesifactor]
* properties:
* si:
* type: string
* description: Unit code identifier (e.g. "g", "kg", "ml", "l", "stk")
* basesi:
* type: string
* description: Base SI reference unit (e.g. "kg" for mass, "l" or "m3" for volume, "stk" for counts)
* basesifactor:
* type: number
* description: Conversion factor to base SI (1 si = basesifactor * basesi; e.g. 0.001 for g -> kg)
* symbol:
* type: string
* nullable: true
* name:
* type: string
* nullable: true
* ArticleSummary:
* type: object
* properties:
* id:
* type: integer
* categoryId:
* type: integer
* name:
* type: string
* sku:
* type: string
* track_stock:
* type: boolean
* Article:
* type: object
* properties:
* id:
* type: integer
* categoryId:
* type: integer
* name:
* type: string
* sku:
* type: string
* track_stock:
* type: boolean
* ArticleDetail:
* type: object
* description: Full article payload (unit, brand, categoryIds, photos, eans, prices, track_stock, …)
* properties:
* id:
* type: integer
* sku:
* type: string
* name:
* type: string
* slug:
* type: string
* desc:
* type: string
* nullable: true
* seo:
* type: string
* nullable: true
* track_stock:
* type: boolean
* unitamount:
* type: number
* nullable: true
* description: Net package content quantity measured in article unit (e.g. 500 for 500g, 0.75 for 0.75l)
* weight:
* type: number
* nullable: true
* description: Shipping weight in kg (must be >= 0)
* unit:
* $ref: '#/components/schemas/Unit'
* brand:
* $ref: '#/components/schemas/ArticleBrand'
* nullable: true
* categoryIds:
* type: array
* items:
* type: integer
* photos:
* type: array
* description: Attached article photos
* items:
* $ref: '#/components/schemas/ArticlePhoto'
* eans:
* type: array
* items:
* type: string
* prices:
* type: array
* description: Selling prices by customer group and quantity tier (field is net, not price)
* items:
* $ref: '#/components/schemas/ArticlePriceEntry'
* suppliers:
* type: array
* items:
* $ref: '#/components/schemas/ArticleSupplier'
* ArticlePhoto:
* type: object
* description: Article photo metadata
* required: [sort, fullHash, fullW, fullH, fullSize, thumbW, thumbH, thumbHash]
* properties:
* sort:
* type: integer
* description: Display sort order
* fullHash:
* type: string
* description: SHA-256 hex hash of the full AVIF image
* fullW:
* type: integer
* description: Width in pixels of the full image
* fullH:
* type: integer
* description: Height in pixels of the full image
* fullSize:
* type: integer
* description: Byte length of full AVIF
* thumbW:
* type: integer
* description: Width in pixels of the thumbnail image
* thumbH:
* type: integer
* description: Height in pixels of the thumbnail image
* thumbHash:
* type: string
* description: Base64 thumbhash preview
* ArticlePriceEntry:
* type: object
* description: Article selling price tier for a customer group (note price field is net, not price)
* required: [minmultiplier, net, taxRate, customergroupId]
* properties:
* minmultiplier:
* type: number
* description: Quantity threshold for volume pricing (defaults to 1)
* net:
* type: number
* description: Net selling price
* taxRate:
* type: number
* description: Tax rate in percent (e.g. 19 or 8.1)
* customergroupId:
* type: integer
* description: Customer group ID (e.g. company POS customer group)
* ArticleHistoryEntry:
* type: object
* required: [id, date, text]
* properties:
* id:
* type: integer
* date:
* type: string
* format: date-time
* text:
* type: string
* CompanyHistoryEntry:
* type: object
* required: [id, date, text]
* properties:
* id:
* type: integer
* companyuserId:
* type: integer
* nullable: true
* date:
* type: string
* format: date-time
* text:
* type: string
* ArticleSupplierPrice:
* type: object
* required: [net, taxId]
* properties:
* net:
* type: number
* description: Net purchase price
* taxId:
* type: integer
* description: Tax ID
* taxRate:
* type: number
* nullable: true
* description: Tax rate in percent
* ArticleSupplier:
* type: object
* required: [id, articleId, entityId, pu, sort]
* properties:
* id:
* type: integer
* articleId:
* type: integer
* entityId:
* type: integer
* supplierName:
* type: string
* nullable: true
* sku:
* type: string
* nullable: true
* description: Supplier-specific SKU (Lieferanten-Art.-Nr.)
* pu:
* type: number
* description: Packaging unit (Verpackungseinheit / VPE)
* stock:
* type: number
* nullable: true
* description: Supplier stock
* sort:
* type: integer
* description: Display sort order
* priceId:
* type: integer
* nullable: true
* price:
* $ref: '#/components/schemas/ArticleSupplierPrice'
* nullable: true
* SupplierArticlePhoto:
* type: object
* required: [sort, fullHash, thumbW, thumbH, thumbHash]
* properties:
* sort:
* type: integer
* fullHash:
* type: string
* thumbW:
* type: integer
* thumbH:
* type: integer
* thumbHash:
* type: string
* SupplierArticleInfo:
* type: object
* required: [id, sku]
* properties:
* id:
* type: integer
* sku:
* type: string
* name:
* type: string
* nullable: true
* slug:
* type: string
* nullable: true
* photos:
* type: array
* items:
* $ref: '#/components/schemas/SupplierArticlePhoto'
* eans:
* type: array
* items:
* type: string
* SupplierArticle:
* allOf:
* - $ref: '#/components/schemas/ArticleSupplier'
* - type: object
* required: [article]
* properties:
* article:
* $ref: '#/components/schemas/SupplierArticleInfo'
* BrandPic:
* type: object
* required: [id, sort, fullHash, thumbW, thumbH, thumbHash]
* properties:
* id:
* type: integer
* sort:
* type: integer
* fullHash:
* type: string
* thumbW:
* type: integer
* thumbH:
* type: integer
* thumbHash:
* type: string
* Brand:
* type: object
* required: [id, name, pics]
* properties:
* id:
* type: integer
* name:
* type: string
* gsprpinfo:
* type: string
* nullable: true
* pics:
* type: array
* description: Brand pictures sorted by sort
* items:
* $ref: '#/components/schemas/BrandPic'
* ArticleBrand:
* type: object
* required: [name]
* properties:
* id:
* type: integer
* nullable: true
* name:
* type: string
* fullHash:
* type: string
* nullable: true
* thumbW:
* type: integer
* nullable: true
* thumbH:
* type: integer
* nullable: true
* thumbHash:
* type: string
* nullable: true
* StuecklisteItem:
* type: object
* required: [id, articleId, sku, name, count, sort]
* properties:
* id:
* type: integer
* articleId:
* type: integer
* sku:
* type: string
* name:
* type: string
* count:
* type: integer
* sort:
* type: integer
* ArticleChild:
* type: object
* required: [id, sku, name, parentsort, attributeValueId, attributeValue]
* properties:
* id:
* type: integer
* sku:
* type: string
* name:
* type: string
* parentsort:
* type: integer
* attributeValueId:
* type: integer
* attributeValue:
* type: string
* ArticleOptionItem:
* type: object
* required: [id, articleId, sku, name, count, sort, mandated]
* properties:
* id:
* type: integer
* articleId:
* type: integer
* sku:
* type: string
* name:
* type: string
* count:
* type: integer
* sort:
* type: integer
* mandated:
* type: boolean
* CategoryTreeNode:
* type: object
* required: [id, sort, posterminalIds]
* properties:
* id:
* type: integer
* parentId:
* type: integer
* nullable: true
* sort:
* type: integer
* name:
* type: string
* nullable: true
* slug:
* type: string
* nullable: true
* fullHash:
* type: string
* nullable: true
* thumbW:
* type: integer
* nullable: true
* thumbH:
* type: integer
* nullable: true
* thumbHash:
* type: string
* nullable: true
* posterminalIds:
* type: array
* items:
* type: integer
* CategoryArticle:
* type: object
* required: [id, sku, name, slug, track_stock, optionsCount, articleListCount, childCount]
* properties:
* id:
* type: integer
* sku:
* type: string
* name:
* type: string
* slug:
* type: string
* net:
* type: number
* nullable: true
* taxRate:
* type: number
* nullable: true
* track_stock:
* type: boolean
* optionsCount:
* type: integer
* articleListCount:
* type: integer
* childCount:
* type: integer
* parentArticleId:
* type: integer
* nullable: true
* parentSku:
* type: string
* nullable: true
* fullHash:
* type: string
* nullable: true
* thumbW:
* type: integer
* nullable: true
* thumbH:
* type: integer
* nullable: true
* thumbHash:
* type: string
* nullable: true
* brand:
* $ref: '#/components/schemas/ArticleBrand'
* nullable: true
* NumberSequence:
* type: object
* required: [id, type, prefix, padding, next]
* properties:
* id:
* type: integer
* type:
* type: string
* description: Sequence type (e.g. entity, article, delivery)
* prefix:
* type: string
* padding:
* type: integer
* description: Zero-padding length for the numeric part
* next:
* type: integer
* description: Next value to allocate
* Supplier:
* type: object
* required: [id, name, createdAt, updatedAt]
* properties:
* id:
* type: integer
* name:
* type: string
* createdAt:
* type: string
* format: date-time
* updatedAt:
* type: string
* format: date-time
* Customergroup:
* type: object
* required: [id, name, sort]
* properties:
* id:
* type: integer
* name:
* type: string
* sort:
* type: integer
* CustomergroupListItem:
* allOf:
* - $ref: '#/components/schemas/Customergroup'
* - type: object
* required: [editable]
* properties:
* editable:
* type: boolean
* description: |
* `false` for implicit groups `POS` and `Lieferanten` (name locked).
* `true` for user-created groups. Reorder all groups via
* `PUT /customergroup/order`.
* Entity:
* type: object
* required: [id, customergroupId, firstName, name, number, createdAt, updatedAt]
* properties:
* id:
* type: integer
* customergroupId:
* type: integer
* firstName:
* type: string
* nullable: true
* name:
* type: string
* number:
* type: string
* nullable: true
* description: Customer number (null for suppliers)
* createdAt:
* type: string
* format: date-time
* updatedAt:
* type: string
* format: date-time
* EntityAddress:
* type: object
* required: [id, entityId, addressType]
* properties:
* id:
* type: integer
* entityId:
* type: integer
* firstName:
* type: string
* nullable: true
* name:
* type: string
* nullable: true
* street:
* type: string
* nullable: true
* streetNumber:
* type: string
* nullable: true
* zip:
* type: string
* nullable: true
* city:
* type: string
* nullable: true
* county:
* type: string
* nullable: true
* addressType:
* type: string
* EntityContact:
* type: object
* required: [id, entityId, contactType, contact]
* properties:
* id:
* type: integer
* entityId:
* type: integer
* contactType:
* type: string
* description: e.g. email, phone
* contact:
* type: string
* DeliverySummary:
* type: object
* required: [id, number, type, supplierId, date]
* properties:
* id:
* type: integer
* number:
* type: string
* description: Auto-allocated via nextNumber('delivery')
* type:
* type: string
* enum: [delivery]
* supplierId:
* type: integer
* nullable: true
* description: manifest.entity_id
* externalNumber:
* type: string
* nullable: true
* description: User-supplied reference number
* date:
* type: string
* format: date-time
* createdAt:
* type: string
* format: date-time
* ledger:
* type: object
* description: Ledger booking summary for this delivery
* properties:
* totalPositions:
* type: integer
* description: Total number of position lines on this manifest
* completelyOnLedgerPositions:
* type: integer
* description: Number of positions whose quantity is fully transacted in the ledger
* DeliveryLine:
* type: object
* required: [id, sku, name, pu, amount, net, rebate, taxrate, comment]
* properties:
* id:
* type: integer
* sku:
* type: string
* nullable: true
* name:
* type: string
* nullable: true
* description: Line item name or custom description
* pu:
* type: number
* description: Packaging unit (defaults to 1)
* amount:
* type: number
* net:
* type: number
* rebate:
* type: number
* taxrate:
* type: number
* description: Tax rate in percent (e.g. 19)
* comment:
* type: string
* nullable: true
* DeliveryLineInput:
* type: object
* required: [amount, net, taxrate]
* description: Line item input. Requires `sku` or `name`.
* properties:
* sku:
* type: string
* nullable: true
* description: SKU reference (sku or name is required)
* name:
* type: string
* nullable: true
* description: Line item name (sku or name is required)
* pu:
* type: number
* description: Packaging unit (defaults to 1)
* amount:
* type: number
* net:
* type: number
* taxrate:
* type: number
* description: Tax rate in percent (resolved via tax.ensure)
* rebate:
* type: number
* description: Defaults to 0
* comment:
* type: string
* nullable: true
* Delivery:
* allOf:
* - $ref: '#/components/schemas/DeliverySummary'
* - type: object
* required: [lines, files]
* properties:
* lines:
* type: array
* items:
* $ref: '#/components/schemas/DeliveryLine'
* files:
* type: array
* description: Attached documents (pdf/txt) for the delivery
* items:
* $ref: '#/components/schemas/DeliveryFile'
* DeliveryFile:
* type: object
* description: Attachment metadata (full binary content is served via `GET /delivery/{id}/file/{fileId}`). Thumbnails (AVIF) are generated server-side.
* required: [id, manifestId, fileId, sort, hash, mimetype, name, size]
* properties:
* id:
* type: integer
* description: manifestattachment id
* manifestId:
* type: integer
* fileId:
* type: integer
* sort:
* type: integer
* hash:
* type: string
* description: SHA-256 of the file content
* mimetype:
* type: string
* description: application/pdf or text/plain
* name:
* type: string
* size:
* type: integer
* created:
* type: string
* format: date-time
* modified:
* type: string
* format: date-time
* thumbavif:
* type: string
* format: byte
* nullable: true
* description: Base64-encoded AVIF thumbnail generated server-side (null for text files)
* thumbx:
* type: integer
* nullable: true
* thumby:
* type: integer
* nullable: true
* meta:
* type: object
* nullable: true
* description: String key/value metadata from the file row
* additionalProperties:
* type: string
* DeliveryFileInput:
* type: object
* required: [mimetype, name, content]
* description: Attachment input. Only application/pdf and text/plain are accepted. Thumbnails are generated server-side and must not be supplied by the client.
* properties:
* mimetype:
* type: string
* enum: [application/pdf, text/plain]
* name:
* type: string
* content:
* type: string
* format: byte
* description: File content (base64-encoded in JSON)
* sort:
* type: integer
* description: Optional sort order (defaults to appending after existing files)
* size:
* type: integer
* description: Optional size in bytes (defaults to content length)
* hash:
* type: string
* description: Optional SHA-256 (auto-computed if omitted)
* created:
* type: string
* format: date-time
* modified:
* type: string
* format: date-time
* meta:
* type: object
* description: Optional string key/value metadata stored with the file
* additionalProperties:
* type: string
* ManifestLine:
* type: object
* required: [id, sku, name, pu, amount, net, rebate, taxrate, comment]
* description: Line shape for quote and order
* properties:
* id:
* type: integer
* sku:
* type: string
* nullable: true
* name:
* type: string
* nullable: true
* description: Line item name or custom description
* pu:
* type: number
* description: Packaging unit (defaults to 1)
* amount:
* type: number
* net:
* type: number
* rebate:
* type: number
* taxrate:
* type: number
* description: Tax rate in percent (e.g. 19)
* comment:
* type: string
* nullable: true
* ManifestLineInput:
* type: object
* required: [amount, net, taxrate]
* description: Line item input. Requires `sku` or `name`.
* properties:
* sku:
* type: string
* nullable: true
* description: SKU reference (sku or name is required)
* name:
* type: string
* nullable: true
* description: Line item name (sku or name is required)
* pu:
* type: number
* description: Packaging unit (defaults to 1)
* amount:
* type: number
* net:
* type: number
* taxrate:
* type: number
* description: Tax rate in percent (resolved via tax.ensure)
* rebate:
* type: number
* description: Defaults to 0
* comment:
* type: string
* nullable: true
* QuoteSummary:
* type: object
* required: [id, number, type, entityId, date]
* properties:
* id:
* type: integer
* number:
* type: string
* type:
* type: string
* enum: [quote]
* entityId:
* type: integer
* nullable: true
* description: Customer (manifest.entity_id)
* date:
* type: string
* format: date-time
* description: Document date / valid-until
* createdAt:
* type: string
* format: date-time
* Quote:
* allOf:
* - $ref: '#/components/schemas/QuoteSummary'
* - type: object
* required: [lines]
* properties:
* lines:
* type: array
* items:
* $ref: '#/components/schemas/ManifestLine'
* OrderSummary:
* type: object
* required: [id, number, type, entityId, date]
* properties:
* id:
* type: integer
* number:
* type: string
* type:
* type: string
* enum: [order]
* entityId:
* type: integer
* nullable: true
* description: Customer (manifest.entity_id)
* date:
* type: string
* format: date-time
* description: Document date / expected delivery
* createdAt:
* type: string
* format: date-time
* Order:
* allOf:
* - $ref: '#/components/schemas/OrderSummary'
* - type: object
* required: [lines]
* properties:
* lines:
* type: array
* items:
* $ref: '#/components/schemas/ManifestLine'
* ArticleImage:
* type: object
* required: [picId, sort, full, thumb, hash, thumbHash]
* properties:
* picId:
* type: integer
* sort:
* type: integer
* full:
* type: object
* required: [w, h, size]
* properties:
* w:
* type: integer
* h:
* type: integer
* size:
* type: integer
* description: Byte length of full AVIF (as-is when already AVIF ≤1000×1000)
* thumb:
* type: object
* required: [w, h]
* properties:
* w:
* type: integer
* h:
* type: integer
* hash:
* type: string
* description: SHA-256 hex of full image bytes
* thumbHash:
* type: string
* description: Base64 thumbhash of thumb preview
* LedgerEntry:
* type: object
* required: [id, manifestarticle_id, transaction_type, amount, transaction_text, hash_version]
* properties:
* id:
* type: integer
* manifestarticle_id:
* type: integer
* description: References manifestarticle.id
* transaction_type:
* type: string
* description: Transaction identifier / type
* amount:
* type: number
* description: Movement amount
* transaction_text:
* type: string
* description: Transaction memo / details
* hash_version:
* type: integer
* description: Algorithm version (1)
* prev_hash:
* type: string
* description: Previous entry SHA-512 hex or initial seed hash
* sku:
* type: string
* nullable: true
* description: SKU from referenced manifestarticle (present in query views)
* created_at:
* type: string
* format: date-time
* description: Timestamp when the row was created
* LedgerEntryInput:
* type: object
* required: [manifestarticle_id, transaction_type, amount, transaction_text]
* properties:
* manifestarticle_id:
* type: integer
* description: References manifestarticle.id
* transaction_type:
* type: string
* description: Transaction identifier / type (max 100 chars)
* amount:
* type: number
* description: Movement amount
* transaction_text:
* type: string
* description: Transaction memo / details
* ModelConversation:
* type: object
* required: [id, companyuser_id, provider, model, created_at, updated_at, state]
* properties:
* id:
* type: integer
* companyuser_id:
* type: integer
* provider:
* type: string
* model:
* type: string
* created_at:
* type: string
* updated_at:
* type: string
* state:
* type: string
* enum: [idle, busy]
* description: Messages can only be posted while `idle`
* ModelConversationCreateInput:
* type: object
* required: [provider, model]
* properties:
* provider:
* type: string
* model:
* type: string
* ModelMessage:
* type: object
* required: [id, conversation_id, created_at, role, message]
* properties:
* id:
* type: integer
* conversation_id:
* type: integer
* created_at:
* type: string
* role:
* type: string
* enum: [system, user, assistant, tool, reasoning, usage]
* message:
* type: string
* ModelMessageCreateInput:
* type: object
* properties:
* message:
* type: string
* description: User message text or fallback content
* role:
* type: string
* enum: [user, tool]
* description: Message role ('user' or 'tool')
* tool_call_id:
* type: string
* description: Target tool call ID when responding to a tool like ask_user
* content:
* description: Tool response content payload
* answer:
* description: Shorthand answer for ask_user response
* Account:
* type: object
* required: [id, companyId, type, name]
* properties:
* id:
* type: integer
* companyId:
* type: integer
* type:
* type: string
* name:
* type: string
* Payment:
* type: object
* required: [id, accountId, manifestId, type, amount]
* properties:
* id:
* type: integer
* accountId:
* type: integer
* manifestId:
* type: integer
* type:
* type: string
* amount:
* type: number
* Shipping:
* type: object
* required: [id, manifestId, number, type, state]
* properties:
* id:
* type: integer
* manifestId:
* type: integer
* number:
* type: string
* description: Shipping number from the `shipping` number sequence
* type:
* type: string
* state:
* type: string
* Package:
* type: object
* required: [id, shippingId, entityaddressId, number, type, state]
* properties:
* id:
* type: integer
* shippingId:
* type: integer
* entityaddressId:
* type: integer
* number:
* type: string
* description: Package number from the `package` number sequence
* type:
* type: string
* state:
* type: string
* details:
* type: string
* nullable: true
* Printer:
* type: object
* required: [id, company_id, address, type, sort]
* properties:
* id:
* type: integer
* company_id:
* type: integer
* address:
* type: string
* description: Printer network address or hostname
* type:
* type: string
* enum: [esc/pos, zpl, ipp]
* description: Printer type ("esc/pos" for lines, "zpl" for pages, or "ipp")
* model:
* type: string
* nullable: true
* description: Printer model name
* serial:
* type: string
* nullable: true
* description: Printer serial number
* sort:
* type: integer
* description: Sort order
* desc:
* type: string
* nullable: true
* description: Printer description
* PrinterCreateInput:
* type: object
* required: [address, type]
* properties:
* address:
* type: string
* description: Printer network address or hostname
* type:
* type: string
* enum: [esc/pos, zpl, ipp]
* description: Printer type ("esc/pos" for lines, "zpl" for pages, or "ipp")
* model:
* type: string
* nullable: true
* serial:
* type: string
* nullable: true
* sort:
* type: integer
* desc:
* type: string
* nullable: true
* PrinterUpdateInput:
* type: object
* properties:
* address:
* type: string
* type:
* type: string
* enum: [esc/pos, zpl, ipp]
* model:
* type: string
* nullable: true
* serial:
* type: string
* nullable: true
* sort:
* type: integer
* desc:
* type: string
* nullable: true
* Posterminal:
* type: object
* required: [id, name]
* properties:
* id:
* type: integer
* name:
* type: string
* pairingpin:
* type: string
* nullable: true
* token:
* type: string
* nullable: true
* pairedAt:
* type: string
* nullable: true
* clientserial:
* type: string
* nullable: true
* rootCategoryId:
* type: integer
* nullable: true
* syncRootArticles:
* type: boolean
* lastseenAt:
* type: string
* nullable: true
* updatedAt:
* type: string
* nullable: true
* categoryIds:
* type: array
* items:
* type: integer
* LabelObject:
* type: object
* required: [id, type, x, y]
* properties:
* id:
* type: string
* type:
* type: string
* enum: [textbox, barcode, png]
* x:
* type: number
* y:
* type: number
* w:
* type: number
* h:
* type: number
* text:
* type: string
* font:
* type: string
* fontSize:
* type: number
* barcodeFormat:
* type: string
* enum: [EAN8, EAN13, CODE128, QR]
* LabelContent:
* type: object
* required: [objects]
* properties:
* objects:
* type: array
* description: Canvas label editor items
* items:
* $ref: '#/components/schemas/LabelObject'
* LabelTemplateSummary:
* type: object
* required: [id, name, width, height, dpi, type]
* properties:
* id:
* type: integer
* name:
* type: string
* width:
* type: number
* height:
* type: number
* dpi:
* type: integer
* type:
* type: string
* thumb:
* type: string
* nullable: true
* LabelTemplate:
* type: object
* required: [id, name, width, height, dpi, type, content]
* properties:
* id:
* type: integer
* name:
* type: string
* width:
* type: number
* height:
* type: number
* dpi:
* type: integer
* type:
* type: string
* content:
* $ref: '#/components/schemas/LabelContent'
* thumb:
* type: string
* nullable: true
* LabelTemplateCreateInput:
* type: object
* required: [name, width, height, dpi, type, content]
* properties:
* name:
* type: string
* width:
* type: number
* height:
* type: number
* dpi:
* type: integer
* type:
* type: string
* content:
* $ref: '#/components/schemas/LabelContent'
* LabelTemplateUpdateInput:
* type: object
* properties:
* name:
* type: string
* width:
* type: number
* height:
* type: number
* dpi:
* type: integer
* type:
* type: string
* content:
* $ref: '#/components/schemas/LabelContent'
* Warehouse:
* type: object
* required: [id, name, sort]
* properties:
* id:
* type: integer
* name:
* type: string
* sort:
* type: integer
* description: Sort order
* WarehouseCreateInput:
* type: object
* required: [name]
* properties:
* name:
* type: string
* sort:
* type: integer
* description: Optional sort order (defaults to auto-increment)
* WarehouseUpdateInput:
* type: object
* properties:
* name:
* type: string
* sort:
* type: integer
* description: Sort order
* StockAdjustmentInput:
* type: object
* description: Stock adjustment input. Provide `sku` and `amount` for single-item adjustments, or `lines` for batch adjustments. Note that `sku` must be a string (e.g. "25"), not a number.
* properties:
* sku:
* type: string
* description: Article SKU string (e.g. "25", not a number; for single-item adjustment)
* warehouseId:
* type: integer
* description: Target warehouse ID
* amount:
* type: number
* description: Signed adjustment quantity (+ to add, - to remove)
* text:
* type: string
* nullable: true
* description: Reason or memo
* lines:
* type: array
* description: Batch adjustment lines
* items:
* type: object
* required: [sku, amount]
* properties:
* sku:
* type: string
* description: Article SKU string (e.g. "25", not a number)
* warehouseId:
* type: integer
* description: Target warehouse ID
* amount:
* type: number
* description: Signed adjustment quantity (+ to add, - to remove)
* text:
* type: string
* description: Reason or memo
* StockAdjustmentResult:
* type: object
* properties:
* manifest:
* type: object
* properties:
* id:
* type: integer
* number:
* type: string
* type:
* type: string
* example: adjustment
* date:
* type: string
* format: date-time
* createdAt:
* type: string
* format: date-time
* lines:
* type: array
* items:
* type: object
* required: [manifestarticle_id, sku, name, warehouse_id, amount, text]
* properties:
* manifestarticle_id:
* type: integer
* sku:
* type: string
* name:
* type: string
* warehouse_id:
* type: integer
* amount:
* type: number
* text:
* type: string
* ledger:
* type: array
* items:
* $ref: '#/components/schemas/LedgerEntry'
* Propertyname:
* type: object
* required: [id, name, sort, exclusive]
* properties:
* id:
* type: integer
* name:
* type: string
* sort:
* type: integer
* exclusive:
* type: boolean
* ArticleProperty:
* type: object
* required: [id, propertyId, name, exclusive, value, sort]
* properties:
* id:
* type: integer
* articleId:
* type: integer
* propertyId:
* type: integer
* name:
* type: string
* exclusive:
* type: boolean
* value:
* type: string
* sort:
* type: integer
* AttributeValue:
* type: object
* required: [id, attributeId, value, sort]
* properties:
* id:
* type: integer
* attributeId:
* type: integer
* value:
* type: string
* sort:
* type: integer
* Attributename:
* type: object
* required: [id, name, sort, exclusive, values]
* properties:
* id:
* type: integer
* name:
* type: string
* sort:
* type: integer
* exclusive:
* type: boolean
* values:
* type: array
* items:
* $ref: '#/components/schemas/AttributeValue'
* ArticleAttributeValue:
* type: object
* required: [id, attributeId, attributeName, attributeValueId, value, sort]
* properties:
* id:
* type: integer
* articleId:
* type: integer
* attributeId:
* type: integer
* attributeName:
* type: string
* exclusive:
* type: boolean
* attributeValueId:
* type: integer
* value:
* type: string
* sort:
* type: integer
* CategoryProperty:
* type: object
* required: [id, propertyId, name, exclusive, value, sort]
* properties:
* id:
* type: integer
* categoryId:
* type: integer
* propertyId:
* type: integer
* name:
* type: string
* exclusive:
* type: boolean
* value:
* type: string
* sort:
* type: integer
* CategoryAttributeValue:
* type: object
* required: [id, attributeId, attributeName, attributeValueId, value, sort]
* properties:
* id:
* type: integer
* categoryId:
* type: integer
* attributeId:
* type: integer
* attributeName:
* type: string
* exclusive:
* type: boolean
* attributeValueId:
* type: integer
* value:
* type: string
* sort:
* type: integer
* VfsFile:
* type: object
* required: [name, size, mime, updated_at, created_at, isText, isImage, isPdf]
* properties:
* name:
* type: string
* description: Relative file path within the virtual filesystem
* size:
* type: integer
* description: File size in bytes
* mime:
* type: string
* description: Detected or declared MIME type
* updated_at:
* type: string
* format: date-time
* description: ISO timestamp of last modification
* created_at:
* type: string
* format: date-time
* description: ISO timestamp of creation
* isText:
* type: boolean
* description: True if file is text, code, JSON, Markdown, or tabular data
* isImage:
* type: boolean
* description: True if file is a supported raster image eligible for preview thumbnailing
* isPdf:
* type: boolean
* description: True if file is a PDF document
*/
export {};