EasyStore MCP by usefulapi
Read EasyStore orders, products and customers; manage stock, fulfillments and customer records.
Sollte ich dies verwenden
Qualität und Sicherheit
Befunde (6)
- LOWin easystore_list_product_variants
- LOWin easystore_list_inventory_levels
- LOWin easystore_list_order_fulfillments
- LOWin easystore_list_order_transactions
- LOWin easystore_list_customer_addresses
- LOWin easystore_adjust_inventory_level
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": {
"easystore": {
"url": "https://easystore.usefulapi.io/mcp"
}
}
}Remote-Endpunkte
https://easystore.usefulapi.io/mcpstreamable-httpWas es kann
Tool-Inventar
Tools (29)
🟢easystore_get_store
The store behind this access token: name, contact emails, easystore domain, plan, locale, country, time zone, currencies and locations. Needs no API access scope. GET /api/3.0/store.json.
Eingabe-Schema
{
"type": "object",
"properties": {},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢easystore_list_locations(page, limit)
The store's stock and pickup locations (warehouses, outlets) with address, phone, is_primary and pickup settings. Use the ids for inventory levels. Needs read_locations. GET /api/3.0/locations.json.
Eingabe-Schema
{
"type": "object",
"properties": {
"page": {
"description": "Page number, from 1 (default 1). Pass the previous reply's next_page.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100000
},
"limit": {
"description": "Results per page, 1-100 (default 25).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢easystore_list_products(collection_ids, skus, visibility, is_bundle, created_at_min, ...)
List products with variants, prices, SKUs, stock, images and collections. Filter by collection, SKU, published status or dates. Needs read_products. GET /api/3.0/products.json.
Eingabe-Schema
{
"type": "object",
"properties": {
"collection_ids": {
"description": "Only products in these collection ids, comma-separated, e.g. 2311217,2311218.",
"type": "string",
"pattern": "^\\d+(\\s*,\\s*\\d+)*$"
},
"skus": {
"description": "Only products with these SKUs, comma-separated.",
"type": "string",
"minLength": 1,
"maxLength": 500
},
"visibility": {
"description": "Only published or only unpublished products.",
"type": "string",
"enum": [
"published",
"unpublished"
]
},
"is_bundle": {
"description": "true = only bundle products, false = no bundle products.",
"type": "boolean"
},
"created_at_min": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}([ T]\\d{2}:\\d{2}(:\\d{2})?)?$",
"description": "yyyy-mm-dd or yyyy-mm-dd hh:mm:ss, read in the store's own time zone."
},
"created_at_max": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}([ T]\\d{2}:\\d{2}(:\\d{2})?)?$",
"description": "yyyy-mm-dd or yyyy-mm-dd hh:mm:ss, read in the store's own time zone."
},
"updated_at_min": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}([ T]\\d{2}:\\d{2}(:\\d{2})?)?$",
"description": "yyyy-mm-dd or yyyy-mm-dd hh:mm:ss, read in the store's own time zone."
},
"updated_at_max": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}([ T]\\d{2}:\\d{2}(:\\d{2})?)?$",
"description": "yyyy-mm-dd or yyyy-mm-dd hh:mm:ss, read in the store's own time zone."
},
"since_id": {
"description": "Start at this product id (inclusive: id >= since_id).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"sort": {
"description": "Sort as field.asc or field.desc, e.g. id.asc (a stable order for paging through everything).",
"type": "string",
"pattern": "^[a-z_]{1,40}\\.(asc|desc)$"
},
"page": {
"description": "Page number, from 1 (default 1). Pass the previous reply's next_page.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100000
},
"limit": {
"description": "Results per page, 1-100 (default 25).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢easystore_get_product(product_id)
One product by id with its variants, options, images and collections. Needs read_products. GET /api/3.0/products/{id}.json.
Eingabe-Schema
{
"type": "object",
"properties": {
"product_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "EasyStore product id."
}
},
"required": [
"product_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢easystore_list_product_variants(product_id)
The variants of one product (price, SKU, barcode, stock, weight, enabled flag). Needs read_products. GET /api/3.0/products/{id}/variants.json.
Eingabe-Schema
{
"type": "object",
"properties": {
"product_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "EasyStore product id."
}
},
"required": [
"product_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢easystore_list_collections(ids, visibility, since_id, sort, page, ...)
List product collections. Needs read_products. GET /api/3.0/collections.json.
Eingabe-Schema
{
"type": "object",
"properties": {
"ids": {
"description": "Only these collection ids, comma-separated.",
"type": "string",
"pattern": "^\\d+(\\s*,\\s*\\d+)*$"
},
"visibility": {
"description": "true = only published collections.",
"type": "boolean"
},
"since_id": {
"description": "Start at this collection id (inclusive).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"sort": {
"description": "Sort as field.asc or field.desc, e.g. id.asc (a stable order for paging through everything).",
"type": "string",
"pattern": "^[a-z_]{1,40}\\.(asc|desc)$"
},
"page": {
"description": "Page number, from 1 (default 1). Pass the previous reply's next_page.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100000
},
"limit": {
"description": "Results per page, 1-100 (default 25).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢easystore_get_collection(collection_id)
One collection by id. Needs read_products. GET /api/3.0/collections/{id}.json.
Eingabe-Schema
{
"type": "object",
"properties": {
"collection_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "EasyStore collection id."
}
},
"required": [
"collection_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢easystore_list_inventory_levels(variant_ids, location_ids, page, limit)
Stock per variant per location: available (inventory_quantity), committed, incoming and reserved. Pass variant_ids or location_ids (at least one is required). Needs read_products. GET /api/4.0/inventory_levels.json.
Eingabe-Schema
{
"type": "object",
"properties": {
"variant_ids": {
"description": "Variant ids, comma-separated (see easystore_list_product_variants).",
"type": "string",
"pattern": "^\\d+(\\s*,\\s*\\d+)*$"
},
"location_ids": {
"description": "Location ids, comma-separated (see easystore_list_locations).",
"type": "string",
"pattern": "^\\d+(\\s*,\\s*\\d+)*$"
},
"page": {
"description": "Page number, from 1 (default 1). Pass the previous reply's next_page.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100000
},
"limit": {
"description": "Results per page, 1-100 (default 25).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢easystore_list_orders(financial_status, fulfillment_status, customer_id, ids, processed_at_min, ...)
List orders from every sales channel with customer, items, totals, payment and fulfillment status. Filter by payment or fulfillment status, customer, or dates (store time zone). Needs read_orders. GET /api/3.0/orders.json.
Eingabe-Schema
{
"type": "object",
"properties": {
"financial_status": {
"description": "Payment status.",
"type": "string",
"enum": [
"paid",
"partially_paid",
"unpaid",
"cod"
]
},
"fulfillment_status": {
"description": "Shipping status.",
"type": "string",
"enum": [
"fulfilled",
"partially_fulfilled",
"unfulfilled"
]
},
"customer_id": {
"description": "Only this customer's orders.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"ids": {
"description": "Only these order ids, comma-separated.",
"type": "string",
"pattern": "^\\d+(\\s*,\\s*\\d+)*$"
},
"processed_at_min": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}([ T]\\d{2}:\\d{2}(:\\d{2})?)?$",
"description": "yyyy-mm-dd or yyyy-mm-dd hh:mm:ss, read in the store's own time zone."
},
"processed_at_max": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}([ T]\\d{2}:\\d{2}(:\\d{2})?)?$",
"description": "yyyy-mm-dd or yyyy-mm-dd hh:mm:ss, read in the store's own time zone."
},
"created_at_min": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}([ T]\\d{2}:\\d{2}(:\\d{2})?)?$",
"description": "yyyy-mm-dd or yyyy-mm-dd hh:mm:ss, read in the store's own time zone."
},
"created_at_max": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}([ T]\\d{2}:\\d{2}(:\\d{2})?)?$",
"description": "yyyy-mm-dd or yyyy-mm-dd hh:mm:ss, read in the store's own time zone."
},
"updated_at_min": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}([ T]\\d{2}:\\d{2}(:\\d{2})?)?$",
"description": "yyyy-mm-dd or yyyy-mm-dd hh:mm:ss, read in the store's own time zone."
},
"updated_at_max": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}([ T]\\d{2}:\\d{2}(:\\d{2})?)?$",
"description": "yyyy-mm-dd or yyyy-mm-dd hh:mm:ss, read in the store's own time zone."
},
"since_id": {
"description": "Start at this order id (inclusive: id >= since_id). Use with sort=id.asc.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"sort": {
"description": "Sort as field.asc or field.desc, e.g. id.asc (a stable order for paging through everything).",
"type": "string",
"pattern": "^[a-z_]{1,40}\\.(asc|desc)$"
},
"page": {
"description": "Page number, from 1 (default 1). Pass the previous reply's next_page.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100000
},
"limit": {
"description": "Results per page, 1-100 (default 25).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢easystore_get_order(order_id, fields)
One order by id. Ask for extra sections with fields: items, addresses, transactions, fulfillments, refunds, taxes, customer, shipping_fees, discounts, points, cancellation, note_attributes. Needs read_orders. GET /api/3.0/orders/{id}.json.
Eingabe-Schema
{
"type": "object",
"properties": {
"order_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "EasyStore order id (not the order number)."
},
"fields": {
"description": "Comma-separated extra sections, e.g. items,addresses,fulfillments.",
"type": "string",
"pattern": "^[a-z_]+(\\s*,\\s*[a-z_]+)*$"
}
},
"required": [
"order_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢easystore_list_order_fulfillments(order_id)
The fulfillments (shipments with tracking details and status) of one order. Needs read_fulfillments. GET /api/3.0/orders/{id}/fulfillments.json.
Eingabe-Schema
{
"type": "object",
"properties": {
"order_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "EasyStore order id."
}
},
"required": [
"order_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢easystore_list_order_transactions(order_id)
The payment transactions of one order (gateway, amount, status). Needs read_orders. GET /api/3.0/orders/{id}/transactions.json.
Eingabe-Schema
{
"type": "object",
"properties": {
"order_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "EasyStore order id."
}
},
"required": [
"order_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢easystore_list_checkouts(since_id, page, limit)
List checkouts (carts in progress or abandoned). Cart tokens are not returned. Needs read_orders. GET /api/3.0/checkouts.json.
Eingabe-Schema
{
"type": "object",
"properties": {
"since_id": {
"description": "Start at this checkout id (inclusive).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"page": {
"description": "Page number, from 1 (default 1). Pass the previous reply's next_page.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100000
},
"limit": {
"description": "Results per page, 1-50 (default 25).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 50
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢easystore_list_customers(query, ids, created_at_min, created_at_max, updated_at_min, ...)
List customers with contact details, order count, total spent, groups and store credit. Search by name or email with query. Needs read_customers. GET /api/3.0/customers.json.
Eingabe-Schema
{
"type": "object",
"properties": {
"query": {
"description": "Match on first name, last name or email.",
"type": "string",
"minLength": 1,
"maxLength": 200
},
"ids": {
"description": "Only these customer ids, comma-separated.",
"type": "string",
"pattern": "^\\d+(\\s*,\\s*\\d+)*$"
},
"created_at_min": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}([T ]\\d{2}:\\d{2}(:\\d{2}(\\.\\d{1,9})?)?(Z|[+-]\\d{2}:\\d{2})?)?$",
"description": "ISO 8601 date or date-time, e.g. 2026-10-01 or 2026-10-01T00:00:00+08:00."
},
"created_at_max": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}([T ]\\d{2}:\\d{2}(:\\d{2}(\\.\\d{1,9})?)?(Z|[+-]\\d{2}:\\d{2})?)?$",
"description": "ISO 8601 date or date-time, e.g. 2026-10-01 or 2026-10-01T00:00:00+08:00."
},
"updated_at_min": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}([T ]\\d{2}:\\d{2}(:\\d{2}(\\.\\d{1,9})?)?(Z|[+-]\\d{2}:\\d{2})?)?$",
"description": "ISO 8601 date or date-time, e.g. 2026-10-01 or 2026-10-01T00:00:00+08:00."
},
"updated_at_max": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}([T ]\\d{2}:\\d{2}(:\\d{2}(\\.\\d{1,9})?)?(Z|[+-]\\d{2}:\\d{2})?)?$",
"description": "ISO 8601 date or date-time, e.g. 2026-10-01 or 2026-10-01T00:00:00+08:00."
},
"since_id": {
"description": "Start at this customer id (inclusive).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"sort": {
"description": "Sort as field.asc or field.desc, e.g. id.asc (a stable order for paging through everything).",
"type": "string",
"pattern": "^[a-z_]{1,40}\\.(asc|desc)$"
},
"page": {
"description": "Page number, from 1 (default 1). Pass the previous reply's next_page.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100000
},
"limit": {
"description": "Results per page, 1-100 (default 25).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢easystore_search_customers(email, phone, code, page, limit)
Find customers by exact email, phone number or customer code. Pass at least one. Needs read_customers. GET /api/3.0/customers/search.json.
Eingabe-Schema
{
"type": "object",
"properties": {
"email": {
"description": "Exact email address.",
"type": "string",
"minLength": 3,
"maxLength": 254
},
"phone": {
"description": "Phone number as stored, e.g. 601110768827.",
"type": "string",
"minLength": 3,
"maxLength": 40
},
"code": {
"description": "Customer code.",
"type": "string",
"minLength": 1,
"maxLength": 100
},
"page": {
"description": "Page number, from 1 (default 1). Pass the previous reply's next_page.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100000
},
"limit": {
"description": "Results per page, 1-100 (default 25).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢easystore_get_customer(customer_id, fields)
One customer by id. Add fields=points,membership for loyalty data. Needs read_customers. GET /api/3.0/customers/{id}.json.
Eingabe-Schema
{
"type": "object",
"properties": {
"customer_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "EasyStore customer id."
},
"fields": {
"description": "Extra sections, e.g. points,membership.",
"type": "string",
"pattern": "^[a-z_]+(\\s*,\\s*[a-z_]+)*$"
}
},
"required": [
"customer_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢easystore_list_customer_addresses(customer_id, page, limit)
The saved addresses of one customer. Needs read_customers. GET /api/3.0/customers/{id}/addresses.json.
Eingabe-Schema
{
"type": "object",
"properties": {
"customer_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "EasyStore customer id."
},
"page": {
"description": "Page number, from 1 (default 1). Pass the previous reply's next_page.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100000
},
"limit": {
"description": "Results per page, 1-100 (default 25).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100
}
},
"required": [
"customer_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢easystore_get_customer_points(customer_id)
The loyalty points balance of one customer. Needs read_customers. GET /api/3.0/customers/{id}/points.json.
Eingabe-Schema
{
"type": "object",
"properties": {
"customer_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "EasyStore customer id."
}
},
"required": [
"customer_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢easystore_list_customer_groups
List customer groups (for example VIP). Needs read_customers. GET /api/3.0/groups.json.
Eingabe-Schema
{
"type": "object",
"properties": {},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢easystore_list_pages(page, limit)
List the store's content pages. Needs read_content. GET /api/3.0/pages.json.
Eingabe-Schema
{
"type": "object",
"properties": {
"page": {
"description": "Page number, from 1 (default 1). Pass the previous reply's next_page.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100000
},
"limit": {
"description": "Results per page, 1-100 (default 25).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢easystore_list_blogs(visibility, page, limit)
List the store's blogs. Needs read_content. GET /api/3.0/blogs.json.
Eingabe-Schema
{
"type": "object",
"properties": {
"visibility": {
"description": "Only published or unpublished blogs.",
"type": "string",
"enum": [
"published",
"unpublished"
]
},
"page": {
"description": "Page number, from 1 (default 1). Pass the previous reply's next_page.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100000
},
"limit": {
"description": "Results per page, 1-100 (default 25).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢easystore_list_articles(visibility, page, limit)
List blog articles. Needs read_content. GET /api/3.0/articles.json.
Eingabe-Schema
{
"type": "object",
"properties": {
"visibility": {
"description": "Only published or unpublished articles.",
"type": "string",
"enum": [
"published",
"unpublished"
]
},
"page": {
"description": "Page number, from 1 (default 1). Pass the previous reply's next_page.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100000
},
"limit": {
"description": "Results per page, 1-100 (default 25).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴easystore_set_inventory_level(variant_id, location_id, quantity)
WRITE. Set the stock of one variant at one location to an exact number (quantity 0 or more). Omit location_id for the primary location. Overwrites the current quantity; use easystore_adjust_inventory_level for a relative change. Needs write_products. PUT /api/4.0/inventory_levels/set.json.
Eingabe-Schema
{
"type": "object",
"properties": {
"variant_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "Variant id (see easystore_list_product_variants)."
},
"location_id": {
"description": "Location id (see easystore_list_locations). Default: the primary location.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"quantity": {
"type": "integer",
"minimum": 0,
"maximum": 1000000000,
"description": "The exact available quantity to set."
}
},
"required": [
"variant_id",
"quantity"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴easystore_adjust_inventory_level(variant_id, location_id, adjustment_quantity)
WRITE. Add to or remove from the stock of one variant at one location by a relative amount (positive adds, negative removes; 0 is rejected). Not idempotent: repeating it changes the stock again. Omit location_id for the primary location. Needs write_products. PUT /api/4.0/inventory_levels/adjust.json.
Eingabe-Schema
{
"type": "object",
"properties": {
"variant_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "Variant id (see easystore_list_product_variants)."
},
"location_id": {
"description": "Location id (see easystore_list_locations). Default: the primary location.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"adjustment_quantity": {
"type": "integer",
"minimum": -1000000000,
"maximum": 1000000000,
"description": "Relative change: 5 adds 5, -5 removes 5."
}
},
"required": [
"variant_id",
"adjustment_quantity"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴easystore_update_variant(product_id, variant_id, price, compare_at_price, cost_price, ...)
WRITE. Change one variant's price, compare-at price, cost price, SKU, barcode or enabled flag. Only the fields you pass change. To change stock use the inventory tools. Needs write_products. PUT /api/3.0/products/{product_id}/variants.json.
Eingabe-Schema
{
"type": "object",
"properties": {
"product_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "The product the variant belongs to."
},
"variant_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "Variant id."
},
"price": {
"description": "Selling price in the store's primary currency.",
"type": "number",
"minimum": 0,
"maximum": 1000000000
},
"compare_at_price": {
"description": "Original price shown struck through.",
"type": "number",
"minimum": 0,
"maximum": 1000000000
},
"cost_price": {
"description": "Cost price.",
"type": "number",
"minimum": 0,
"maximum": 1000000000
},
"sku": {
"description": "SKU.",
"type": "string",
"minLength": 1,
"maxLength": 200
},
"barcode": {
"description": "Barcode.",
"type": "string",
"minLength": 1,
"maxLength": 200
},
"is_enabled": {
"description": "Whether the variant can be sold.",
"type": "boolean"
}
},
"required": [
"product_id",
"variant_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴easystore_cancel_order(order_id, reason)
WRITE, hard to undo. Cancel an order, with an optional reason. Confirm the order id and number with the user first. Needs write_orders. POST /api/3.0/orders/{id}/cancel.json.
Eingabe-Schema
{
"type": "object",
"properties": {
"order_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "EasyStore order id (not the order number)."
},
"reason": {
"description": "Why the order is cancelled, e.g. Damaged item.",
"type": "string",
"minLength": 1,
"maxLength": 500
}
},
"required": [
"order_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴easystore_create_fulfillment(order_id, tracking_company, tracking_number, tracking_url, status, ...)
WRITE. Mark an order (or some of its line items) as shipped, with tracking details. Not idempotent: calling it twice creates two fulfillments. With notify_customer true the customer is emailed. Needs write_fulfillments. POST /api/3.0/orders/{id}/fulfillments.json.
Eingabe-Schema
{
"type": "object",
"properties": {
"order_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "EasyStore order id."
},
"tracking_company": {
"description": "Courier name, e.g. DHL.",
"type": "string",
"minLength": 1,
"maxLength": 200
},
"tracking_number": {
"description": "Tracking number.",
"type": "string",
"minLength": 1,
"maxLength": 200
},
"tracking_url": {
"description": "Tracking page URL.",
"type": "string",
"maxLength": 2000,
"format": "uri"
},
"status": {
"description": "Shipment status.",
"type": "string",
"enum": [
"label_printed",
"label_purchased",
"attempted_delivery",
"available_for_pickup",
"successful_pickup",
"pending_pickup",
"arrived_sorting_hub",
"pending",
"open",
"in_transit",
"out_for_delivery",
"delivered",
"failure",
"cancelled",
"fulfilled"
]
},
"message": {
"description": "Note about this fulfillment.",
"type": "string",
"minLength": 1,
"maxLength": 1000
},
"notify_customer": {
"description": "Email the customer (default false).",
"type": "boolean"
},
"line_items": {
"description": "Only these line items and quantities; omit to fulfill the whole order.",
"minItems": 1,
"maxItems": 200,
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "Order line item id."
},
"quantity": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 1000000
}
},
"required": [
"id",
"quantity"
]
}
}
},
"required": [
"order_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟡easystore_create_customer(first_name, last_name, email, phone, birthdate, ...)
WRITE. Create a customer. Pass at least one of first_name, last_name, email or phone. Not idempotent. Needs write_customers. POST /api/3.0/customers.json.
Eingabe-Schema
{
"type": "object",
"properties": {
"first_name": {
"description": "First name.",
"type": "string",
"minLength": 1,
"maxLength": 200
},
"last_name": {
"description": "Last name.",
"type": "string",
"minLength": 1,
"maxLength": 200
},
"email": {
"description": "Email (unique per store).",
"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, e.g. +60192233445.",
"type": "string",
"minLength": 3,
"maxLength": 40
},
"birthdate": {
"description": "yyyy-mm-dd.",
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"gender": {
"description": "Gender.",
"type": "string",
"enum": [
"male",
"female"
]
},
"country_code": {
"description": "Two-letter country code, e.g. MY.",
"type": "string",
"pattern": "^[A-Za-z]{2}$"
},
"code": {
"description": "Your own customer code.",
"type": "string",
"minLength": 1,
"maxLength": 100
},
"groups": {
"description": "Group names to assign, e.g. [\"VIP\"].",
"maxItems": 50,
"type": "array",
"items": {
"type": "string",
"minLength": 1,
"maxLength": 200
}
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴easystore_update_customer(customer_id, first_name, last_name, email, phone, ...)
WRITE. Change fields of an existing customer; only the fields you pass change. Needs write_customers. PUT /api/3.0/customers/{id}.json.
Eingabe-Schema
{
"type": "object",
"properties": {
"customer_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "EasyStore customer id."
},
"first_name": {
"description": "First name.",
"type": "string",
"minLength": 1,
"maxLength": 200
},
"last_name": {
"description": "Last name.",
"type": "string",
"minLength": 1,
"maxLength": 200
},
"email": {
"description": "Email (unique per store).",
"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, e.g. +60192233445.",
"type": "string",
"minLength": 3,
"maxLength": 40
},
"birthdate": {
"description": "yyyy-mm-dd.",
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"gender": {
"description": "Gender.",
"type": "string",
"enum": [
"male",
"female"
]
},
"country_code": {
"description": "Two-letter country code, e.g. MY.",
"type": "string",
"pattern": "^[A-Za-z]{2}$"
},
"code": {
"description": "Your own customer code.",
"type": "string",
"minLength": 1,
"maxLength": 100
},
"groups": {
"description": "Group names to assign, e.g. [\"VIP\"].",
"maxItems": 50,
"type": "array",
"items": {
"type": "string",
"minLength": 1,
"maxLength": 200
}
}
},
"required": [
"customer_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}Community
Nachweis