Lightspeed Retail (R-Series) MCP by usefulapi
Read Lightspeed R-Series items, stock, sales, customers and POs; create customers and set stock.
Sollte ich dies verwenden
Qualität und Sicherheit
Basierend auf einer automatisierten Analyse der Tool-Definitionen und der Einhaltung des Protokolls.
Kontextkosten
Dies ist die ungefähre Anzahl der Tokens, die jedes Mal verbraucht werden, wenn die Tools des Servers in den Kontext eines Modells geladen werden. Höhere Werte verringern die Aufmerksamkeit, die für andere Aufgaben verfügbar ist.
Installieren
Installation mit einem Klick
Fügen Sie dies Ihrer Datei `claude_desktop_config.json` hinzu:
{
"mcpServers": {
"lightspeed-r-series": {
"url": "https://lightspeed-r-series.usefulapi.io/mcp"
}
}
}Remote-Endpunkte
https://lightspeed-r-series.usefulapi.io/mcpstreamable-httpWas es kann
Tool-Inventar
Tools (17)
🟢get_account
The connected Lightspeed Retail (R-Series) account: id, name, status, employee count/limit, default and purchasing currencies. Good first call. GET /Account/{accountID}.json.
Eingabe-Schema
{
"type": "object",
"properties": {},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢list_shops(include_contact, limit, sort, next_url)
List the account's shops (store locations): shopID, name, time zone, archived flag. Use shopID to filter sales, inventory and purchase orders. GET /Account/{accountID}/Shop.json.
Eingabe-Schema
{
"type": "object",
"properties": {
"include_contact": {
"description": "Also load each shop's Contact (address, phone).",
"type": "boolean"
},
"limit": {
"description": "Records per page (1-100, default 100).",
"type": "integer",
"minimum": 1,
"maximum": 100
},
"sort": {
"description": "Sort field; prefix \"-\" for descending. Allowed: shopID.",
"type": "string",
"enum": [
"shopID",
"-shopID"
]
},
"next_url": {
"description": "To get the next page: the next_url value from a previous call of this same tool, unchanged. Other filters are ignored when it is set.",
"type": "string",
"maxLength": 4000
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢list_items(description, item_code, system_sku, custom_sku, manufacturer_sku, ...)
Search the product catalog. Each item has itemID, description, SKUs (systemSku, customSku, upc, ean, manufacturerSku), defaultCost, categoryID and its Prices (price levels). Set include_stock to add per-shop quantities (ItemShops; shopID 0 = all shops). Paginate with next_url. GET /Account/{accountID}/Item.json.
Eingabe-Schema
{
"type": "object",
"properties": {
"description": {
"description": "Description contains this text (like search).",
"type": "string",
"maxLength": 200
},
"item_code": {
"description": "Exact match on itemID, UPC or EAN.",
"type": "string",
"pattern": "^\\d+$"
},
"system_sku": {
"description": "Exact Lightspeed system SKU (the barcode on labels).",
"type": "string",
"pattern": "^\\d+$"
},
"custom_sku": {
"description": "Exact custom SKU.",
"type": "string",
"maxLength": 100
},
"manufacturer_sku": {
"description": "Exact manufacturer SKU.",
"type": "string",
"maxLength": 100
},
"upc": {
"description": "Exact UPC.",
"type": "string",
"pattern": "^\\d+$"
},
"ean": {
"description": "Exact EAN.",
"type": "string",
"pattern": "^\\d+$"
},
"category_id": {
"type": "string",
"pattern": "^\\d+$",
"description": "Only items in this category (categoryID)."
},
"vendor_id": {
"type": "string",
"pattern": "^\\d+$",
"description": "Only items whose default vendor is this vendorID."
},
"modified_since": {
"description": "Only items modified at or after this time (item timeStamp, UTC unless an offset is given).",
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}(T\\d{2}:\\d{2}(:\\d{2})?(Z|[+-]\\d{2}:?\\d{2})?)?$"
},
"min_qoh": {
"description": "Only items with at least one shop record whose quantity on hand is >= this (loads ItemShops).",
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"archived": {
"description": "false (default) = active records only, true = active and archived, only = archived only.",
"type": "string",
"enum": [
"false",
"true",
"only"
]
},
"include_stock": {
"description": "Include per-shop stock (ItemShops relation).",
"type": "boolean"
},
"include_category": {
"description": "Include the Category record.",
"type": "boolean"
},
"limit": {
"description": "Records per page (1-100, default 100).",
"type": "integer",
"minimum": 1,
"maximum": 100
},
"sort": {
"description": "Sort field; prefix \"-\" for descending. Allowed: itemID, timeStamp, description.",
"type": "string",
"enum": [
"itemID",
"-itemID",
"timeStamp",
"-timeStamp",
"description",
"-description"
]
},
"next_url": {
"description": "To get the next page: the next_url value from a previous call of this same tool, unchanged. Other filters are ignored when it is set.",
"type": "string",
"maxLength": 4000
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢get_item(item_id, relations)
One item by itemID with its prices, per-shop stock (ItemShops), category and other related records. GET /Account/{accountID}/Item/{itemID}.json.
Eingabe-Schema
{
"type": "object",
"properties": {
"item_id": {
"type": "string",
"pattern": "^\\d+$",
"description": "The itemID (from list_items)."
},
"relations": {
"description": "Related records to include (each adds a little to the request's rate-limit cost). Default: ItemShops, Category, Manufacturer, ItemVendorNums, Note. Allowed: Category, TaxClass, ItemAttributes, ItemAttributes.ItemAttributeSet, Manufacturer, Note, Images, ItemShops, ItemVendorNums, ItemComponents, ItemECommerce, TagRelations, TagRelations.Tag, CustomFieldValues, CustomFieldValues.value, ItemPrices.",
"maxItems": 16,
"type": "array",
"items": {
"type": "string",
"enum": [
"Category",
"TaxClass",
"ItemAttributes",
"ItemAttributes.ItemAttributeSet",
"Manufacturer",
"Note",
"Images",
"ItemShops",
"ItemVendorNums",
"ItemComponents",
"ItemECommerce",
"TagRelations",
"TagRelations.Tag",
"CustomFieldValues",
"CustomFieldValues.value",
"ItemPrices"
]
}
}
},
"required": [
"item_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢list_inventory(shop_id, item_id, min_qoh, max_qoh, modified_since, ...)
Stock levels per item per shop (ItemShop records): qoh (quantity on hand), sellable, backorder, reorderPoint, reorderLevel, costs and values. shopID 0 is the all-shops summary. Paginate with next_url. GET /Account/{accountID}/ItemShop.json.
Eingabe-Schema
{
"type": "object",
"properties": {
"shop_id": {
"type": "string",
"pattern": "^\\d+$",
"description": "Only this shop (shopID; 0 = the all-shops summary records)."
},
"item_id": {
"type": "string",
"pattern": "^\\d+$",
"description": "Only this item (itemID)."
},
"min_qoh": {
"description": "Quantity on hand >= this.",
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"max_qoh": {
"description": "Quantity on hand <= this (e.g. 0 for out of stock).",
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"modified_since": {
"description": "Only records changed at or after this time (timeStamp).",
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}(T\\d{2}:\\d{2}(:\\d{2})?(Z|[+-]\\d{2}:?\\d{2})?)?$"
},
"limit": {
"description": "Records per page (1-100, default 100).",
"type": "integer",
"minimum": 1,
"maximum": 100
},
"sort": {
"description": "Sort field; prefix \"-\" for descending. Allowed: itemShopID, timeStamp.",
"type": "string",
"enum": [
"itemShopID",
"-itemShopID",
"timeStamp",
"-timeStamp"
]
},
"next_url": {
"description": "To get the next page: the next_url value from a previous call of this same tool, unchanged. Other filters are ignored when it is set.",
"type": "string",
"maxLength": 4000
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢list_categories(name, parent_id, limit, sort, next_url)
Item categories (hierarchical): categoryID, name, fullPathName, parentID, nodeDepth. GET /Account/{accountID}/Category.json.
Eingabe-Schema
{
"type": "object",
"properties": {
"name": {
"description": "Name contains this text.",
"type": "string",
"maxLength": 200
},
"parent_id": {
"type": "string",
"pattern": "^\\d+$",
"description": "Only direct children of this categoryID (0 = top level)."
},
"limit": {
"description": "Records per page (1-100, default 100).",
"type": "integer",
"minimum": 1,
"maximum": 100
},
"sort": {
"description": "Sort field; prefix \"-\" for descending. Allowed: categoryID, timeStamp, leftNode, rightNode.",
"type": "string",
"enum": [
"categoryID",
"-categoryID",
"timeStamp",
"-timeStamp",
"leftNode",
"-leftNode",
"rightNode",
"-rightNode"
]
},
"next_url": {
"description": "To get the next page: the next_url value from a previous call of this same tool, unchanged. Other filters are ignored when it is set.",
"type": "string",
"maxLength": 4000
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢list_sales(from, to, date_field, shop_id, customer_id, ...)
Sales history: saleID, completed/voided flags, completeTime, totals (calcSubtotal, calcTax1/2, total, balance), customerID, employeeID, shopID, registerID. Filter by a date range on completeTime (default) or timeStamp, shop, customer, employee. Set include_lines for SaleLines (items sold). Paginate with next_url. GET /Account/{accountID}/Sale.json.
Eingabe-Schema
{
"type": "object",
"properties": {
"from": {
"description": "Start (inclusive), e.g. 2026-10-01 or 2026-10-01T00:00:00-04:00. Times are UTC unless an offset is given.",
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}(T\\d{2}:\\d{2}(:\\d{2})?(Z|[+-]\\d{2}:?\\d{2})?)?$"
},
"to": {
"description": "End (inclusive), same format.",
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}(T\\d{2}:\\d{2}(:\\d{2})?(Z|[+-]\\d{2}:?\\d{2})?)?$"
},
"date_field": {
"description": "Which date from/to apply to (default completeTime).",
"type": "string",
"enum": [
"completeTime",
"timeStamp",
"createTime"
]
},
"shop_id": {
"type": "string",
"pattern": "^\\d+$",
"description": "Only sales in this shop (shopID)."
},
"customer_id": {
"type": "string",
"pattern": "^\\d+$",
"description": "Only sales for this customer (customerID)."
},
"employee_id": {
"type": "string",
"pattern": "^\\d+$",
"description": "Only sales processed by this employee (employeeID)."
},
"completed": {
"description": "true = completed sales only, false = open/unfinished only.",
"type": "boolean"
},
"voided": {
"description": "true = voided only, false = exclude voided.",
"type": "boolean"
},
"include_lines": {
"description": "Include the SaleLines relation (line items).",
"type": "boolean"
},
"include_payments": {
"description": "Include the SalePayments relation.",
"type": "boolean"
},
"limit": {
"description": "Records per page (1-100, default 100).",
"type": "integer",
"minimum": 1,
"maximum": 100
},
"sort": {
"description": "Sort field; prefix \"-\" for descending. Allowed: saleID, timeStamp, completeTime, updatetime.",
"type": "string",
"enum": [
"saleID",
"-saleID",
"timeStamp",
"-timeStamp",
"completeTime",
"-completeTime",
"updatetime",
"-updatetime"
]
},
"next_url": {
"description": "To get the next page: the next_url value from a previous call of this same tool, unchanged. Other filters are ignored when it is set.",
"type": "string",
"maxLength": 4000
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢get_sale(sale_id, relations)
One sale by saleID with its line items (SaleLines with Item), payments (SalePayments with PaymentType) and customer. GET /Account/{accountID}/Sale/{saleID}.json.
Eingabe-Schema
{
"type": "object",
"properties": {
"sale_id": {
"type": "string",
"pattern": "^\\d+$",
"description": "The saleID (from list_sales)."
},
"relations": {
"description": "Related records to include (each adds a little to the request's rate-limit cost). Default: SaleLines, SaleLines.Item, SalePayments, SalePayments.PaymentType, Customer. Allowed: SaleLines, SaleLines.Discount, SaleLines.TaxClass, SaleLines.Note, SaleLines.Item, SaleLines.InventorySales, SaleNotes, SalePayments, SalePayments.PaymentType, SalePayments.CCCharge, SalePayments.SaleAccounts, SalePayments.Signatures, ShipTo, ShipTo.Contact, Customer, Customer.Contact, Discount, TaxCategory, TaxCategory.TaxCategoryClasses, Quote.",
"maxItems": 20,
"type": "array",
"items": {
"type": "string",
"enum": [
"SaleLines",
"SaleLines.Discount",
"SaleLines.TaxClass",
"SaleLines.Note",
"SaleLines.Item",
"SaleLines.InventorySales",
"SaleNotes",
"SalePayments",
"SalePayments.PaymentType",
"SalePayments.CCCharge",
"SalePayments.SaleAccounts",
"SalePayments.Signatures",
"ShipTo",
"ShipTo.Contact",
"Customer",
"Customer.Contact",
"Discount",
"TaxCategory",
"TaxCategory.TaxCategoryClasses",
"Quote"
]
}
}
},
"required": [
"sale_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢list_customers(first_name, last_name, company, email, include_contact, ...)
Search customers by name, company or email: customerID, firstName, lastName, company, customerTypeID, createTime. Email search loads the Contact relation (emails, phones, addresses). Paginate with next_url. GET /Account/{accountID}/Customer.json.
Eingabe-Schema
{
"type": "object",
"properties": {
"first_name": {
"description": "First name contains this text.",
"type": "string",
"maxLength": 100
},
"last_name": {
"description": "Last name contains this text.",
"type": "string",
"maxLength": 100
},
"company": {
"description": "Company contains this text.",
"type": "string",
"maxLength": 200
},
"email": {
"description": "Email contains this text (searches Contact.email).",
"type": "string",
"maxLength": 254
},
"include_contact": {
"description": "Include the Contact relation (emails, phones, addresses).",
"type": "boolean"
},
"archived": {
"description": "false (default) = active records only, true = active and archived, only = archived only.",
"type": "string",
"enum": [
"false",
"true",
"only"
]
},
"limit": {
"description": "Records per page (1-100, default 100).",
"type": "integer",
"minimum": 1,
"maximum": 100
},
"sort": {
"description": "Sort field; prefix \"-\" for descending. Allowed: customerID, timeStamp, firstName, lastName.",
"type": "string",
"enum": [
"customerID",
"-customerID",
"timeStamp",
"-timeStamp",
"firstName",
"-firstName",
"lastName",
"-lastName"
]
},
"next_url": {
"description": "To get the next page: the next_url value from a previous call of this same tool, unchanged. Other filters are ignored when it is set.",
"type": "string",
"maxLength": 4000
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢get_customer(customer_id, relations)
One customer by customerID with Contact (emails, phones, addresses), customer type and notes. GET /Account/{accountID}/Customer/{customerID}.json.
Eingabe-Schema
{
"type": "object",
"properties": {
"customer_id": {
"type": "string",
"pattern": "^\\d+$",
"description": "The customerID (from list_customers)."
},
"relations": {
"description": "Related records to include (each adds a little to the request's rate-limit cost). Default: Contact, CustomerType, Note. Allowed: Contact, CustomerType, Discount, Note, TaxCategory, CreditAccount, Tags, CustomFieldValues, CustomFieldValues.value.",
"maxItems": 9,
"type": "array",
"items": {
"type": "string",
"enum": [
"Contact",
"CustomerType",
"Discount",
"Note",
"TaxCategory",
"CreditAccount",
"Tags",
"CustomFieldValues",
"CustomFieldValues.value"
]
}
}
},
"required": [
"customer_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢list_vendors(name, include_contact, archived, limit, sort, ...)
Suppliers: vendorID, name, accountNumber, archived. GET /Account/{accountID}/Vendor.json.
Eingabe-Schema
{
"type": "object",
"properties": {
"name": {
"description": "Name contains this text.",
"type": "string",
"maxLength": 200
},
"include_contact": {
"description": "Include the Contact relation.",
"type": "boolean"
},
"archived": {
"description": "false (default) = active records only, true = active and archived, only = archived only.",
"type": "string",
"enum": [
"false",
"true",
"only"
]
},
"limit": {
"description": "Records per page (1-100, default 100).",
"type": "integer",
"minimum": 1,
"maximum": 100
},
"sort": {
"description": "Sort field; prefix \"-\" for descending. Allowed: vendorID, timeStamp, name.",
"type": "string",
"enum": [
"vendorID",
"-vendorID",
"timeStamp",
"-timeStamp",
"name",
"-name"
]
},
"next_url": {
"description": "To get the next page: the next_url value from a previous call of this same tool, unchanged. Other filters are ignored when it is set.",
"type": "string",
"maxLength": 4000
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢list_purchase_orders(shop_id, vendor_id, complete, include_lines, archived, ...)
Purchase orders to vendors: orderID, vendorID, shopID, orderedDate, arrivalDate, receivedDate, complete, totalQuantity, shipCost. GET /Account/{accountID}/Order.json.
Eingabe-Schema
{
"type": "object",
"properties": {
"shop_id": {
"type": "string",
"pattern": "^\\d+$",
"description": "Only orders for this shop (shopID)."
},
"vendor_id": {
"type": "string",
"pattern": "^\\d+$",
"description": "Only orders to this vendor (vendorID)."
},
"complete": {
"description": "true = completed orders only, false = open orders only.",
"type": "boolean"
},
"include_lines": {
"description": "Include the OrderLines relation.",
"type": "boolean"
},
"archived": {
"description": "false (default) = active records only, true = active and archived, only = archived only.",
"type": "string",
"enum": [
"false",
"true",
"only"
]
},
"limit": {
"description": "Records per page (1-100, default 100).",
"type": "integer",
"minimum": 1,
"maximum": 100
},
"sort": {
"description": "Sort field; prefix \"-\" for descending. Allowed: orderID, timeStamp.",
"type": "string",
"enum": [
"orderID",
"-orderID",
"timeStamp",
"-timeStamp"
]
},
"next_url": {
"description": "To get the next page: the next_url value from a previous call of this same tool, unchanged. Other filters are ignored when it is set.",
"type": "string",
"maxLength": 4000
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢get_purchase_order(order_id, relations)
One purchase order by orderID with its lines (OrderLines: itemID, quantity, numReceived, price), vendor and shop. GET /Account/{accountID}/Order/{orderID}.json.
Eingabe-Schema
{
"type": "object",
"properties": {
"order_id": {
"type": "string",
"pattern": "^\\d+$",
"description": "The orderID (from list_purchase_orders)."
},
"relations": {
"description": "Related records to include (each adds a little to the request's rate-limit cost). Default: OrderLines, Vendor, Shop, Note. Allowed: OrderLines, Note, Vendor, Shop, CustomFieldValues, CustomFieldValues.value.",
"maxItems": 6,
"type": "array",
"items": {
"type": "string",
"enum": [
"OrderLines",
"Note",
"Vendor",
"Shop",
"CustomFieldValues",
"CustomFieldValues.value"
]
}
}
},
"required": [
"order_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢list_employees(include_contact, archived, limit, sort, next_url)
Employees: employeeID, firstName, lastName, lockOut, archived, employeeRoleID, limitToShopID. Use employeeID to filter sales. GET /Account/{accountID}/Employee.json.
Eingabe-Schema
{
"type": "object",
"properties": {
"include_contact": {
"description": "Include the Contact relation.",
"type": "boolean"
},
"archived": {
"description": "false (default) = active records only, true = active and archived, only = archived only.",
"type": "string",
"enum": [
"false",
"true",
"only"
]
},
"limit": {
"description": "Records per page (1-100, default 100).",
"type": "integer",
"minimum": 1,
"maximum": 100
},
"sort": {
"description": "Sort field; prefix \"-\" for descending. Allowed: employeeID, timeStamp.",
"type": "string",
"enum": [
"employeeID",
"-employeeID",
"timeStamp",
"-timeStamp"
]
},
"next_url": {
"description": "To get the next page: the next_url value from a previous call of this same tool, unchanged. Other filters are ignored when it is set.",
"type": "string",
"maxLength": 4000
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟡create_customer(first_name, last_name, company, title, email, ...)
Create a new customer, optionally with a primary email and one phone number (stored in the customer's Contact). Give at least a first name, last name or company. Returns the new customer with its customerID. POST /Account/{accountID}/Customer.json.
Eingabe-Schema
{
"type": "object",
"properties": {
"first_name": {
"description": "First name.",
"type": "string",
"maxLength": 100
},
"last_name": {
"description": "Last name.",
"type": "string",
"maxLength": 100
},
"company": {
"description": "Company name.",
"type": "string",
"maxLength": 200
},
"title": {
"description": "Job title.",
"type": "string",
"maxLength": 100
},
"email": {
"description": "Primary email address.",
"type": "string",
"maxLength": 254,
"format": "email",
"pattern": "^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"
},
"phone": {
"description": "Phone number.",
"type": "string",
"maxLength": 50
},
"phone_type": {
"description": "Phone type (default Mobile).",
"type": "string",
"enum": [
"Home",
"Work",
"Mobile",
"Pager",
"Fax"
]
},
"customer_type_id": {
"type": "string",
"pattern": "^\\d+$",
"description": "customerTypeID to assign."
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴update_item(item_id, description, default_cost, custom_sku, manufacturer_sku, ...)
Change fields of an existing item: description, default cost, SKUs, category. Only the fields you pass are changed. Prices and stock are not changed here (use update_stock for quantities). PUT /Account/{accountID}/Item/{itemID}.json.
Eingabe-Schema
{
"type": "object",
"properties": {
"item_id": {
"type": "string",
"pattern": "^\\d+$",
"description": "The itemID to update."
},
"description": {
"description": "New description (shown on receipts and labels).",
"type": "string",
"minLength": 1,
"maxLength": 255
},
"default_cost": {
"description": "New default (reorder) cost.",
"type": "number",
"minimum": 0
},
"custom_sku": {
"description": "New custom SKU.",
"type": "string",
"maxLength": 100
},
"manufacturer_sku": {
"description": "New manufacturer SKU.",
"type": "string",
"maxLength": 100
},
"upc": {
"description": "New UPC (11-14 digits).",
"type": "string",
"pattern": "^\\d{11,14}$"
},
"ean": {
"description": "New EAN (11-14 digits).",
"type": "string",
"pattern": "^\\d{11,14}$"
},
"category_id": {
"type": "string",
"pattern": "^\\d+$",
"description": "New categoryID (0 = no category)."
}
},
"required": [
"item_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴update_stock(item_id, shop_id, item_shop_id, qoh)
CHANGES STOCK COUNTS: sets (does not add to) the quantity on hand of one item in one shop to `qoh`, by updating the item's ItemShop record. Use for correcting a few items; for many items use an inventory count in Lightspeed. Identify the shop by shop_id, or by item_shop_id from get_item's ItemShops. Not for shopID 0 (the all-shops summary). PUT /Account/{accountID}/Item/{itemID}.json with ItemShops.
Eingabe-Schema
{
"type": "object",
"properties": {
"item_id": {
"type": "string",
"pattern": "^\\d+$",
"description": "The itemID."
},
"shop_id": {
"type": "string",
"pattern": "^\\d+$",
"description": "The shopID whose stock to set (from list_shops)."
},
"item_shop_id": {
"type": "string",
"pattern": "^\\d+$",
"description": "Or the itemShopID of that item/shop record (from get_item ItemShops)."
},
"qoh": {
"type": "integer",
"minimum": 0,
"maximum": 10000000,
"description": "The new quantity on hand."
}
},
"required": [
"item_id",
"qoh"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}Community
Nachweis