Lightspeed Retail (R-Series) MCP by usefulapi
Read Lightspeed R-Series items, stock, sales, customers and POs; create customers and set stock.
사용해야 할까요
품질 및 안전성
도구 정의와 프로토콜 준수에 대한 자동 분석을 기반으로 합니다.
컨텍스트 비용
이는 서버의 도구가 모델의 컨텍스트에 로드될 때마다 소비되는 대략적인 토큰 수입니다. 수치가 높을수록 다른 작업에 사용할 수 있는 주의가 줄어듭니다.
설치
원클릭 설치
`claude_desktop_config.json` 파일에 다음을 추가하세요:
{
"mcpServers": {
"lightspeed-r-series": {
"url": "https://lightspeed-r-series.usefulapi.io/mcp"
}
}
}원격 엔드포인트
https://lightspeed-r-series.usefulapi.io/mcpstreamable-http할 수 있는 일
도구 목록
도구 (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.
입력 스키마
{
"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.
입력 스키마
{
"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.
입력 스키마
{
"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.
입력 스키마
{
"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.
입력 스키마
{
"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.
입력 스키마
{
"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.
입력 스키마
{
"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.
입력 스키마
{
"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.
입력 스키마
{
"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.
입력 스키마
{
"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.
입력 스키마
{
"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.
입력 스키마
{
"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.
입력 스키마
{
"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.
입력 스키마
{
"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.
입력 스키마
{
"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.
입력 스키마
{
"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.
입력 스키마
{
"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"
}커뮤니티
증거