الكائنات
كل مخطط تعيده الواجهة أو تقبله، مع خصائصه ومثال مولَّد.
في هذه الصفحة
- Error
- Money
- OrderStatus
- SettableOrderStatus
- PaymentStatus
- WebhookTopic
- WebhookEnvelope
- Order
- OrderItem
- OrderCustomer
- FulfillmentLine
- Fulfillment
- RefundLine
- Refund
- OrderReference
- OrderAttributes
- OrderAttributesPatch
- OrderDetail
- Variant
- VariantDetail
- VariantList
- ProductCategory
- Product
- Store
- Discount
- Movement
- WebhookSubscription
- Installation
- WebhookTestEvent
- OrderPage
- ProductPage
- DiscountPage
- MovementPage
- CreateOrderItem
- CreateOrderRequest
- UpdateOrderRequest
- UpdateOrderStatusRequest
- CreateFulfillmentRequest
- UpdateFulfillmentRequest
- CreateRefundRequest
- CreateInventoryMovementRequest
- UpsertWebhookSubscriptionRequest
- CreateWebhookTestEventRequest
- OrderCreatedEventData
- OrderStatusChangedEventData
- OrderPaidEventData
- ProductCreatedEventData
- ProductUpdatedEventData
- ProductDeletedEventData
- InventoryMovementCreatedEventData
- FulfillmentRequestedEventData
- FulfillmentCreatedEventData
- FulfillmentUpdatedEventData
- RefundCreatedEventData
- AppUninstalledEventData
Error#
Every non-2xx response. 5xx bodies carry only internal_error and the request id.
| الاسم | النوع | الوصف |
|---|---|---|
errorمطلوب | object | |
codeمطلوب | string | Stable machine code: invalid_request, unauthorized, forbidden, not_found, conflict, payload_too_large, rate_limited, internal_error, or a more specific code named on the operation. |
messageمطلوب | string | |
request_id | string | Echo of X-Request-Id; quote it when reporting a problem. |
details | object |
{
"error": {
"code": "invalid_request",
"message": "A human-readable explanation",
"request_id": "req_01J8Z1K5X9",
"details": {}
}
}Money#
Integer minor units plus the exponent that scales them. Never a float.
| الاسم | النوع | الوصف |
|---|---|---|
amount_minorمطلوب | integer | |
currencyمطلوب | string | |
decimalsمطلوب | integer | Minor-unit exponent for THIS amount. Dukkan deviates from ISO 4217 (SYP is zero-decimal), so always scale by this field, never by an ISO currency table. |
{
"amount_minor": 275000,
"currency": "SYP",
"decimals": 0
}OrderStatus#
Order lifecycle state. Transitions follow the server matrix; money-bearing states are reachable only through refunds.
placedapprovedprocessingshippeddelivereddelivered_failedreturnedcancelledcompletedpartially_refundedrefunded"placed"SettableOrderStatus#
Statuses an app may set through PATCH /orders/{id}/status. Money-bearing statuses are reachable only through refunds.
placedapprovedprocessingshippeddelivereddelivered_failedreturnedcancelled"placed"PaymentStatus#
Ledger-projected payment state. Independent of the delivery status: a delivered COD order is unpaid until the remittance is confirmed.
not_requiredunpaidpendingauthorizedpartially_paidpaidpartially_refundedrefundedfailed"not_required"WebhookTopic#
Webhook topic. Subscribing needs the read scope that governs the payload; app.uninstalled needs none and still delivers after revocation.
order.createdorder.status_changedorder.paidproduct.createdproduct.updatedproduct.deletedinventory.movement_createdfulfillment.requestedfulfillment.createdfulfillment.updatedrefund.createdapp.uninstalled"order.created"WebhookEnvelope#
Signed store event. Verify X-Dukkan-Hmac-Sha256 over {X-Dukkan-Timestamp}.{raw body} with the install's signing secret before parsing.
| الاسم | النوع | الوصف |
|---|---|---|
idمطلوب | string | Event id. Deduplicate on this signed value, never on the delivery header. |
api_versionمطلوب | "v1" | |
topicمطلوب | WebhookTopic | Webhook topic. Subscribing needs the read scope that governs the payload; القيم: order.createdorder.status_changedorder.paidproduct.createdproduct.updatedproduct.deletedinventory.movement_createdfulfillment.requestedfulfillment.createdfulfillment.updatedrefund.createdapp.uninstalled |
store_idمطلوب | string | |
install_idمطلوب | string | The install this delivery was fanned out to. Verify the signature with THIS install's secret and refuse a store mismatch. |
sequenceمطلوب | integer | Strictly increasing per store with gaps. Order by it; never count on contiguity. |
occurred_atمطلوب | string | |
test | boolean | Present and true only for sandbox test deliveries (POST /webhooks/test). Absent in production traffic. |
dataمطلوب | object |
{
"id": "6f1d2c3b-4a59-4e8f-9b70-2d1c3e4f5a6b",
"api_version": "v1",
"topic": "order.created",
"store_id": "6f1d2c3b-4a59-4e8f-9b70-2d1c3e4f5a6b",
"install_id": "6f1d2c3b-4a59-4e8f-9b70-2d1c3e4f5a6b",
"sequence": 1661,
"occurred_at": "2026-08-18T16:00:00Z",
"test": true,
"data": {}
}Order#
PII-free order. Customer contact fields appear only on the detail endpoint with the clients:read scope.
| الاسم | النوع | الوصف |
|---|---|---|
idمطلوب | string | |
order_numberمطلوب | string | |
statusمطلوب | OrderStatus | Order lifecycle state. Transitions follow the server matrix; money-bearing states are reachable only through refunds. القيم: placedapprovedprocessingshippeddelivereddelivered_failedreturnedcancelledcompletedpartially_refundedrefunded |
payment_statusمطلوب | PaymentStatus | Ledger-projected payment state. Independent of the delivery status: a delivered COD order is القيم: not_requiredunpaidpendingauthorizedpartially_paidpaidpartially_refundedrefundedfailed |
sourceمطلوبيقبل null | string | Sales channel that created the order ( |
line_pricingمطلوب | string | How line totals relate to order totals. "gross": sum of line totals equals subtotal and the discount lives on the order. "net" (POS orders): line totals are net of the applied promo, so sum of line totals plus discount equals subtotal. Branch on this field when reconciling, never on القيم: netgross |
subtotalمطلوب | Money | Integer minor units plus the exponent that scales them. Never a float. |
discountمطلوب | Money | Integer minor units plus the exponent that scales them. Never a float. |
shippingمطلوب | Money | Integer minor units plus the exponent that scales them. Never a float. |
taxمطلوب | Money | Integer minor units plus the exponent that scales them. Never a float. |
totalمطلوب | Money | Integer minor units plus the exponent that scales them. Never a float. |
paidمطلوب | Money | Integer minor units plus the exponent that scales them. Never a float. |
refundedمطلوب | Money | Integer minor units plus the exponent that scales them. Never a float. |
exchange_rateمطلوبيقبل null | object | Snapshot of the rate applied when the order was priced in a non-store currency: rate = scaled / 10^scale. |
scaledمطلوب | integer | |
scaleمطلوب | integer | |
tagsمطلوب | string[] | Merchant and app tags (see PATCH /orders/{id}). |
created_atمطلوب | string | |
updated_atمطلوب | string |
{
"id": "6f1d2c3b-4a59-4e8f-9b70-2d1c3e4f5a6b",
"order_number": "1042",
"status": "placed",
"payment_status": "not_required",
"source": "online",
"line_pricing": "net",
"subtotal": {
"amount_minor": 275000,
"currency": "SYP",
"decimals": 0
},
"discount": {
"amount_minor": 275000,
"currency": "SYP",
"decimals": 0
},
"shipping": {
"amount_minor": 275000,
"currency": "SYP",
"decimals": 0
},
"tax": {
"amount_minor": 275000,
"currency": "SYP",
"decimals": 0
},
"total": {
"amount_minor": 275000,
"currency": "SYP",
"decimals": 0
},
"paid": {
"amount_minor": 275000,
"currency": "SYP",
"decimals": 0
},
"refunded": {
"amount_minor": 275000,
"currency": "SYP",
"decimals": 0
},
"exchange_rate": {
"scaled": 1300000,
"scale": 4
},
"tags": [
"string"
],
"created_at": "2026-08-18T16:00:00Z",
"updated_at": "2026-08-18T16:00:00Z"
}OrderItem#
Immutable line snapshot.
| الاسم | النوع | الوصف |
|---|---|---|
idمطلوب | string | |
variant_idمطلوبيقبل null | string | Null for custom lines. |
kindمطلوب | string |
القيم: variantcustom |
nameمطلوب | string | Product name snapshot at order time. |
quantityمطلوب | integer | |
unit_priceمطلوب | Money | Integer minor units plus the exponent that scales them. Never a float. |
totalمطلوب | Money | Integer minor units plus the exponent that scales them. Never a float. |
{
"id": "6f1d2c3b-4a59-4e8f-9b70-2d1c3e4f5a6b",
"variant_id": "6f1d2c3b-4a59-4e8f-9b70-2d1c3e4f5a6b",
"kind": "variant",
"name": "Olive oil 1 L",
"quantity": 2,
"unit_price": {
"amount_minor": 275000,
"currency": "SYP",
"decimals": 0
},
"total": {
"amount_minor": 275000,
"currency": "SYP",
"decimals": 0
}
}OrderCustomer#
Customer contact details. Requires the clients:read scope.
| الاسم | النوع | الوصف |
|---|---|---|
first_nameمطلوبيقبل null | string | |
last_nameمطلوبيقبل null | string | |
emailمطلوبيقبل null | string | |
phoneمطلوبيقبل null | string |
{
"first_name": "string",
"last_name": "string",
"email": "string",
"phone": "string"
}FulfillmentLine#
| الاسم | النوع | الوصف |
|---|---|---|
order_item_idمطلوب | string | |
quantityمطلوب | integer |
{
"order_item_id": "6f1d2c3b-4a59-4e8f-9b70-2d1c3e4f5a6b",
"quantity": 2
}Fulfillment#
A shipment covering some or all lines of an order.
| الاسم | النوع | الوصف |
|---|---|---|
idمطلوب | string | |
providerمطلوبيقبل null | string | |
tracking_numberمطلوبيقبل null | string | |
statusمطلوب | string | القيم: pendingshippeddeliveredcancelled |
created_atمطلوب | string | |
updated_atمطلوب | string | |
linesمطلوب | FulfillmentLine[] |
{
"id": "6f1d2c3b-4a59-4e8f-9b70-2d1c3e4f5a6b",
"provider": "Aramex",
"tracking_number": "RX123456789SY",
"status": "pending",
"created_at": "2026-08-18T16:00:00Z",
"updated_at": "2026-08-18T16:00:00Z",
"lines": [
{
"order_item_id": "6f1d2c3b-4a59-4e8f-9b70-2d1c3e4f5a6b",
"quantity": 2
}
]
}RefundLine#
| الاسم | النوع | الوصف |
|---|---|---|
order_item_idمطلوبيقبل null | string | |
quantityمطلوب | integer | |
amount_minorمطلوب | integer |
{
"order_item_id": "6f1d2c3b-4a59-4e8f-9b70-2d1c3e4f5a6b",
"quantity": 2,
"amount_minor": 275000
}Refund#
An append-only refund against captured funds.
| الاسم | النوع | الوصف |
|---|---|---|
idمطلوب | string | |
amountمطلوب | Money | Integer minor units plus the exponent that scales them. Never a float. |
reasonمطلوبيقبل null | string | |
created_atمطلوب | string | |
linesمطلوب | RefundLine[] |
{
"id": "6f1d2c3b-4a59-4e8f-9b70-2d1c3e4f5a6b",
"amount": {
"amount_minor": 275000,
"currency": "SYP",
"decimals": 0
},
"reason": "correction",
"created_at": "2026-08-18T16:00:00Z",
"lines": [
{
"order_item_id": "6f1d2c3b-4a59-4e8f-9b70-2d1c3e4f5a6b",
"quantity": 2,
"amount_minor": 275000
}
]
}OrderReference#
Link from an order back to the app's own record.
| الاسم | النوع | الوصف |
|---|---|---|
kindمطلوب | string | Record type in the app, e.g. |
numberمطلوب | string | Human-readable record number, e.g. |
urlيقبل null | string | Deep link into the app. Must be https on the app's registered origin; otherwise 422. الافتراضي: null |
{
"kind": "string",
"number": "string",
"url": null
}OrderAttributes#
Up to 20 keys ([a-z0-9_.-]{1,64}), scalar values up to 1000 UTF-8 bytes, 8192 bytes in total. Private to the calling app.
{}OrderAttributesPatch#
Merged into the app's namespace; a null value deletes that key.
{}OrderDetail#
Order with its immutable line snapshots and reconciliation collections.
| الاسم | النوع | الوصف |
|---|---|---|
idمطلوب | string | |
order_numberمطلوب | string | |
statusمطلوب | OrderStatus | Order lifecycle state. Transitions follow the server matrix; money-bearing states are reachable only through refunds. القيم: placedapprovedprocessingshippeddelivereddelivered_failedreturnedcancelledcompletedpartially_refundedrefunded |
payment_statusمطلوب | PaymentStatus | Ledger-projected payment state. Independent of the delivery status: a delivered COD order is القيم: not_requiredunpaidpendingauthorizedpartially_paidpaidpartially_refundedrefundedfailed |
sourceمطلوبيقبل null | string | Sales channel that created the order ( |
line_pricingمطلوب | string | How line totals relate to order totals. "gross": sum of line totals equals subtotal and the discount lives on the order. "net" (POS orders): line totals are net of the applied promo, so sum of line totals plus discount equals subtotal. Branch on this field when reconciling, never on القيم: netgross |
subtotalمطلوب | Money | Integer minor units plus the exponent that scales them. Never a float. |
discountمطلوب | Money | Integer minor units plus the exponent that scales them. Never a float. |
shippingمطلوب | Money | Integer minor units plus the exponent that scales them. Never a float. |
taxمطلوب | Money | Integer minor units plus the exponent that scales them. Never a float. |
totalمطلوب | Money | Integer minor units plus the exponent that scales them. Never a float. |
paidمطلوب | Money | Integer minor units plus the exponent that scales them. Never a float. |
refundedمطلوب | Money | Integer minor units plus the exponent that scales them. Never a float. |
exchange_rateمطلوبيقبل null | object | Snapshot of the rate applied when the order was priced in a non-store currency: rate = scaled / 10^scale. |
scaledمطلوب | integer | |
scaleمطلوب | integer | |
tagsمطلوب | string[] | Merchant and app tags (see PATCH /orders/{id}). |
created_atمطلوب | string | |
updated_atمطلوب | string | |
itemsمطلوب | OrderItem[] | |
fulfillmentsمطلوب | Fulfillment[] | |
refundsمطلوب | Refund[] | |
noteمطلوبيقبل null | string | Order note (merchant or app). |
attributesمطلوب | OrderAttributes | The CALLING app's own attributes on this order. Other apps' namespaces are never returned. |
customer | OrderCustomer | Present only when the install holds the |
shipping_addressيقبل null | object | Free-form delivery address snapshot. Present only with the |
{
"id": "6f1d2c3b-4a59-4e8f-9b70-2d1c3e4f5a6b",
"order_number": "1042",
"status": "placed",
"payment_status": "not_required",
"source": "online",
"line_pricing": "net",
"subtotal": {
"amount_minor": 275000,
"currency": "SYP",
"decimals": 0
},
"discount": {
"amount_minor": 275000,
"currency": "SYP",
"decimals": 0
},
"shipping": {
"amount_minor": 275000,
"currency": "SYP",
"decimals": 0
},
"tax": {
"amount_minor": 275000,
"currency": "SYP",
"decimals": 0
},
"total": {
"amount_minor": 275000,
"currency": "SYP",
"decimals": 0
},
"paid": {
"amount_minor": 275000,
"currency": "SYP",
"decimals": 0
},
"refunded": {
"amount_minor": 275000,
"currency": "SYP",
"decimals": 0
},
"exchange_rate": {
"scaled": 1300000,
"scale": 4
},
"tags": [
"string"
],
"created_at": "2026-08-18T16:00:00Z",
"updated_at": "2026-08-18T16:00:00Z",
"items": [
{
"id": "6f1d2c3b-4a59-4e8f-9b70-2d1c3e4f5a6b",
"variant_id": "6f1d2c3b-4a59-4e8f-9b70-2d1c3e4f5a6b",
"kind": "variant",
"name": "Olive oil 1 L",
"quantity": 2,
"unit_price": {
"amount_minor": 275000,
"currency": "SYP",
"decimals": 0
},
"total": {
"amount_minor": 275000,
"currency": "SYP",
"decimals": 0
}
}
],
"fulfillments": [
{
"id": "6f1d2c3b-4a59-4e8f-9b70-2d1c3e4f5a6b",
"provider": "Aramex",
"tracking_number": "RX123456789SY",
"status": "pending",
"created_at": "2026-08-18T16:00:00Z",
"updated_at": "2026-08-18T16:00:00Z",
"lines": [
{
"order_item_id": "6f1d2c3b-4a59-4e8f-9b70-2d1c3e4f5a6b",
"quantity": 2
}
]
}
],
"refunds": [
{
"id": "6f1d2c3b-4a59-4e8f-9b70-2d1c3e4f5a6b",
"amount": {
"amount_minor": 275000,
"currency": "SYP",
"decimals": 0
},
"reason": "correction",
"created_at": "2026-08-18T16:00:00Z",
"lines": [
{
"order_item_id": "6f1d2c3b-4a59-4e8f-9b70-2d1c3e4f5a6b",
"quantity": 2,
"amount_minor": 275000
}
]
}
],
"note": "Stock count 2026-08-18",
"attributes": {},
"customer": {
"first_name": "string",
"last_name": "string",
"email": "string",
"phone": "string"
},
"shipping_address": {}
}Variant#
| الاسم | النوع | الوصف |
|---|---|---|
idمطلوب | string | |
product_idمطلوب | string | |
skuمطلوبيقبل null | string | |
priceمطلوب | Money | Integer minor units plus the exponent that scales them. Never a float. |
statusمطلوب | string | |
nameمطلوب | string | Variant label (e.g. |
attributesمطلوب | object | Option name → value, e.g. { color: 'أحمر', size: 'L' }. |
barcodeمطلوبيقبل null | string | |
compare_at_priceمطلوبيقبل null | Money | Higher strike-through price when set. |
image_urlمطلوبيقبل null | string | Main image for this variant (own image, else the product's). |
weight_gramمطلوبيقبل null | integer | |
available_quantityمطلوبيقبل null | integer | Stock minus reservations across the store's locations. Null when the product is not inventory-managed or the install lacks inventory:read. |
{
"id": "6f1d2c3b-4a59-4e8f-9b70-2d1c3e4f5a6b",
"product_id": "6f1d2c3b-4a59-4e8f-9b70-2d1c3e4f5a6b",
"sku": "OIL-1L",
"price": {
"amount_minor": 275000,
"currency": "SYP",
"decimals": 0
},
"status": "placed",
"name": "Olive oil 1 L",
"attributes": {},
"barcode": "string",
"compare_at_price": {
"amount_minor": 275000,
"currency": "SYP",
"decimals": 0
},
"image_url": "string",
"weight_gram": 1,
"available_quantity": 1
}VariantDetail#
Variant with its product's name and status (GET /products/variants).
| الاسم | النوع | الوصف |
|---|---|---|
idمطلوب | string | |
product_idمطلوب | string | |
skuمطلوبيقبل null | string | |
priceمطلوب | Money | Integer minor units plus the exponent that scales them. Never a float. |
statusمطلوب | string | |
nameمطلوب | string | Variant label (e.g. |
attributesمطلوب | object | Option name → value, e.g. { color: 'أحمر', size: 'L' }. |
barcodeمطلوبيقبل null | string | |
compare_at_priceمطلوبيقبل null | Money | Higher strike-through price when set. |
image_urlمطلوبيقبل null | string | Main image for this variant (own image, else the product's). |
weight_gramمطلوبيقبل null | integer | |
available_quantityمطلوبيقبل null | integer | Stock minus reservations across the store's locations. Null when the product is not inventory-managed or the install lacks inventory:read. |
product_nameمطلوب | string | |
product_statusمطلوب | string |
{
"id": "6f1d2c3b-4a59-4e8f-9b70-2d1c3e4f5a6b",
"product_id": "6f1d2c3b-4a59-4e8f-9b70-2d1c3e4f5a6b",
"sku": "OIL-1L",
"price": {
"amount_minor": 275000,
"currency": "SYP",
"decimals": 0
},
"status": "placed",
"name": "Olive oil 1 L",
"attributes": {},
"barcode": "string",
"compare_at_price": {
"amount_minor": 275000,
"currency": "SYP",
"decimals": 0
},
"image_url": "string",
"weight_gram": 1,
"available_quantity": 1,
"product_name": "string",
"product_status": "string"
}VariantList#
Batch variant lookup. Unknown ids are omitted, never errors.
| الاسم | النوع | الوصف |
|---|---|---|
dataمطلوب | VariantDetail[] |
{
"data": [
{
"id": "6f1d2c3b-4a59-4e8f-9b70-2d1c3e4f5a6b",
"product_id": "6f1d2c3b-4a59-4e8f-9b70-2d1c3e4f5a6b",
"sku": "OIL-1L",
"price": {
"amount_minor": 275000,
"currency": "SYP",
"decimals": 0
},
"status": "placed",
"name": "Olive oil 1 L",
"attributes": {},
"barcode": "string",
"compare_at_price": {
"amount_minor": 275000,
"currency": "SYP",
"decimals": 0
},
"image_url": "string",
"weight_gram": 1,
"available_quantity": 1,
"product_name": "string",
"product_status": "string"
}
]
}ProductCategory#
| الاسم | النوع | الوصف |
|---|---|---|
idمطلوب | string | |
nameمطلوب | string |
{
"id": "6f1d2c3b-4a59-4e8f-9b70-2d1c3e4f5a6b",
"name": "Olive oil 1 L"
}Product#
| الاسم | النوع | الوصف |
|---|---|---|
idمطلوب | string | |
dsinمطلوب | string | Dukkan store item number: the merchant-facing product code. |
nameمطلوب | string | |
statusمطلوب | string | |
updated_atمطلوبيقبل null | string | |
image_urlمطلوبيقبل null | string | Main product image. |
image_colorمطلوبيقبل null | string | Dominant colour of the main image (#rrggbb) for placeholders. |
brandمطلوبيقبل null | string | |
categoryمطلوبيقبل null | ProductCategory | |
descriptionمطلوبيقبل null | string | Plain text, at most 500 characters. |
images | string[] | Gallery, present on GET /products/{id} only. |
variantsمطلوب | Variant[] |
{
"id": "6f1d2c3b-4a59-4e8f-9b70-2d1c3e4f5a6b",
"dsin": "D7Q2K9",
"name": "Olive oil 1 L",
"status": "placed",
"updated_at": "2026-08-18T16:00:00Z",
"image_url": "string",
"image_color": "string",
"brand": "string",
"category": {
"id": "6f1d2c3b-4a59-4e8f-9b70-2d1c3e4f5a6b",
"name": "Olive oil 1 L"
},
"description": "string",
"images": [
"string"
],
"variants": [
{
"id": "6f1d2c3b-4a59-4e8f-9b70-2d1c3e4f5a6b",
"product_id": "6f1d2c3b-4a59-4e8f-9b70-2d1c3e4f5a6b",
"sku": "OIL-1L",
"price": {
"amount_minor": 275000,
"currency": "SYP",
"decimals": 0
},
"status": "placed",
"name": "Olive oil 1 L",
"attributes": {},
"barcode": "string",
"compare_at_price": {
"amount_minor": 275000,
"currency": "SYP",
"decimals": 0
},
"image_url": "string",
"weight_gram": 1,
"available_quantity": 1
}
]
}Store#
Public identity and checkout facts of the token's store.
| الاسم | النوع | الوصف |
|---|---|---|
idمطلوب | string | |
slugمطلوب | string | |
nameمطلوب | string | |
descriptionمطلوبيقبل null | string | |
logo_urlمطلوبيقبل null | string | |
banner_urlsمطلوب | string[] | |
storefront_urlمطلوب | string | Public https origin; a connected custom domain wins over the platform subdomain. |
whatsapp_numberمطلوبيقبل null | string | |
phoneمطلوبيقبل null | string | |
addressمطلوبيقبل null | string | |
accent_colorمطلوبيقبل null | string | Published theme accent, or the store's primary colour. |
localeمطلوب | string | |
timezoneمطلوب | string | |
countryمطلوبيقبل null | string | |
pricing_currencyمطلوب | object | The currency catalog prices are stored in. |
codeمطلوب | string | |
decimalsمطلوب | integer | |
storefront_currenciesمطلوب | object | Currencies a customer may pay in; POST /orders accepts these only. |
allowedمطلوب | string[] | |
defaultمطلوب | string | |
fxمطلوبيقبل null | object | Store-adjusted rates from the pricing currency, exactly what checkout applies; includes the base at identity. Null when no rate table is available. |
baseمطلوب | string | |
as_ofمطلوب | string | |
ratesمطلوب | object | |
payment_methodsمطلوب | object[] | Enabled manual payment methods. |
idمطلوب | string | القيم: codshamcash_manual |
shamcash_id | string | Present for shamcash_manual: the pay-to id shown at checkout. |
provincesمطلوب | object[] | Accepted |
valueمطلوب | string | |
arمطلوب | string | |
enمطلوب | string |
{
"id": "6f1d2c3b-4a59-4e8f-9b70-2d1c3e4f5a6b",
"slug": "string",
"name": "Olive oil 1 L",
"description": "string",
"logo_url": "string",
"banner_urls": [
"string"
],
"storefront_url": "string",
"whatsapp_number": "string",
"phone": "string",
"address": "string",
"accent_color": "string",
"locale": "string",
"timezone": "string",
"country": "string",
"pricing_currency": {
"code": "invalid_request",
"decimals": 0
},
"storefront_currencies": {
"allowed": [
"string"
],
"default": "string"
},
"fx": {
"base": "string",
"as_of": "2026-08-18T16:00:00Z",
"rates": {}
},
"payment_methods": [
{
"id": "cod",
"shamcash_id": "6f1d2c3b-4a59-4e8f-9b70-2d1c3e4f5a6b"
}
],
"provinces": [
{
"value": "string",
"ar": "string",
"en": "string"
}
]
}Discount#
Read-only view of a discount. Redemption accounting stays first-party.
| الاسم | النوع | الوصف |
|---|---|---|
idمطلوب | string | |
methodمطلوب | string | القيم: codeautomatic |
codeمطلوبيقبل null | string | |
titleمطلوبيقبل null | string | |
value_typeمطلوب | string | القيم: percentagefixed_amountfree_shippingbuy_x_get_y |
targetمطلوب | string | القيم: orderproductscategories |
percentمطلوبيقبل null | number | Set only for percentage discounts; |
amountمطلوبيقبل null | Money | Integer minor units plus the exponent that scales them. Never a float. |
is_activeمطلوب | boolean | |
usage_limit_totalمطلوبيقبل null | integer | |
used_countمطلوب | integer | |
applies_to_posمطلوب | boolean | |
applies_to_onlineمطلوب | boolean | |
starts_atمطلوبيقبل null | string | |
ends_atمطلوبيقبل null | string | |
created_atمطلوب | string | |
updated_atمطلوبيقبل null | string |
{
"id": "6f1d2c3b-4a59-4e8f-9b70-2d1c3e4f5a6b",
"method": "code",
"code": "invalid_request",
"title": "Summer sale",
"value_type": "percentage",
"target": "order",
"percent": 15,
"amount": {
"amount_minor": 275000,
"currency": "SYP",
"decimals": 0
},
"is_active": true,
"usage_limit_total": 100,
"used_count": 12,
"applies_to_pos": true,
"applies_to_online": true,
"starts_at": "2026-08-18T16:00:00Z",
"ends_at": "2026-08-18T16:00:00Z",
"created_at": "2026-08-18T16:00:00Z",
"updated_at": "2026-08-18T16:00:00Z"
}Movement#
One append-only stock movement.
| الاسم | النوع | الوصف |
|---|---|---|
idمطلوب | string | |
sequenceمطلوب | integer | Monotonic insert sequence; the stable sort key for what happened in which order. |
variant_idمطلوبيقبل null | string | |
location_idمطلوب | string | |
deltaمطلوب | integer | |
stock_afterمطلوب | integer | |
reasonمطلوب | string | |
occurred_atمطلوب | string |
{
"id": "6f1d2c3b-4a59-4e8f-9b70-2d1c3e4f5a6b",
"sequence": 1661,
"variant_id": "6f1d2c3b-4a59-4e8f-9b70-2d1c3e4f5a6b",
"location_id": "6f1d2c3b-4a59-4e8f-9b70-2d1c3e4f5a6b",
"delta": -2,
"stock_after": 38,
"reason": "correction",
"occurred_at": "2026-08-18T16:00:00Z"
}WebhookSubscription#
One subscription per install; PUT is a full replace.
| الاسم | النوع | الوصف |
|---|---|---|
idمطلوب | string | |
endpoint_urlمطلوب | string | |
topicsمطلوب | WebhookTopic[] | |
statusمطلوب | string |
القيم: activedisabled |
consecutive_failuresمطلوب | integer | |
activated_atمطلوب | string | Events that occurred before this instant are never delivered to this subscription. |
disabled_atمطلوبيقبل null | string | |
secret | string | Present only on the PUT response that minted or rotated it. Store it immediately; it can never be read back. |
{
"id": "6f1d2c3b-4a59-4e8f-9b70-2d1c3e4f5a6b",
"endpoint_url": "string",
"topics": [
"order.created"
],
"status": "active",
"consecutive_failures": 1,
"activated_at": "2026-08-18T16:00:00Z",
"disabled_at": "2026-08-18T16:00:00Z",
"secret": "string"
}Installation#
The install and the store it is bound to, as the platform sees them.
| الاسم | النوع | الوصف |
|---|---|---|
installمطلوب | object | |
idمطلوب | string | |
app_idمطلوب | string | |
statusمطلوب | string | A token only resolves for an active install; القيم: activesuspended |
granted_scopesمطلوب | string[] | Scopes the merchant consented to. |
effective_scopesمطلوب | string[] | Granted scopes intersected with the grantor's live permissions. This is what every request is checked against. |
distribution_channelمطلوب | string | القيم: developmentprivatepublic |
installed_atمطلوب | string | |
api_versionمطلوب | string | Dated v1 revision this server speaks (same value as X-Dukkan-Api-Version). |
webhookمطلوبيقبل null | object | The active subscription, or null when none is configured. |
idمطلوب | string | |
endpoint_urlمطلوب | string | |
topicsمطلوب | WebhookTopic[] | |
statusمطلوب | string |
القيم: activedisabled |
consecutive_failuresمطلوب | integer | |
activated_atمطلوب | string | Events that occurred before this instant are never delivered to this subscription. |
disabled_atمطلوبيقبل null | string | |
storeمطلوب | object | |
idمطلوب | string | |
slugمطلوب | string | |
nameمطلوب | string | |
currencyمطلوب | string | |
decimalsمطلوب | integer | Minor-unit exponent of the store currency. |
localeمطلوب | string | Storefront locale ( |
timezoneمطلوب | string | IANA zone derived from the store country; use it for day boundaries in reports. |
countryمطلوبيقبل null | string | ISO 3166-1 alpha-2 when the merchant set one. |
is_developmentمطلوب | boolean | True for sandbox stores. Test deliveries and dev sessions exist only here. |
{
"install": {
"id": "6f1d2c3b-4a59-4e8f-9b70-2d1c3e4f5a6b",
"app_id": "6f1d2c3b-4a59-4e8f-9b70-2d1c3e4f5a6b",
"status": "active",
"granted_scopes": [
"string"
],
"effective_scopes": [
"string"
],
"distribution_channel": "development",
"installed_at": "2026-08-18T16:00:00Z",
"api_version": "string",
"webhook": {
"id": "6f1d2c3b-4a59-4e8f-9b70-2d1c3e4f5a6b",
"endpoint_url": "string",
"topics": [
"order.created"
],
"status": "active",
"consecutive_failures": 1,
"activated_at": "2026-08-18T16:00:00Z",
"disabled_at": "2026-08-18T16:00:00Z"
}
},
"store": {
"id": "6f1d2c3b-4a59-4e8f-9b70-2d1c3e4f5a6b",
"slug": "string",
"name": "Olive oil 1 L",
"currency": "SYP",
"decimals": 0,
"locale": "string",
"timezone": "string",
"country": "string",
"is_development": true
}
}WebhookTestEvent#
The accepted test event and its queued deliveries.
| الاسم | النوع | الوصف |
|---|---|---|
event_idمطلوب | string | |
topicمطلوب | WebhookTopic | Webhook topic. Subscribing needs the read scope that governs the payload; القيم: order.createdorder.status_changedorder.paidproduct.createdproduct.updatedproduct.deletedinventory.movement_createdfulfillment.requestedfulfillment.createdfulfillment.updatedrefund.createdapp.uninstalled |
sequenceمطلوب | integer | |
occurred_atمطلوب | string | |
testمطلوب | "true" | |
dataمطلوب | object | The payload that was written, after overrides and validation. |
deliveriesمطلوب | object[] | One row per subscription the event fanned out to; the worker sends within about a minute. |
idمطلوب | string | Delivery id; also sent as X-Dukkan-Delivery-Id. |
statusمطلوب | string | القيم: pendingdeliveringretry_scheduledsucceededdead |
endpoint_urlمطلوب | string |
{
"event_id": "6f1d2c3b-4a59-4e8f-9b70-2d1c3e4f5a6b",
"topic": "order.created",
"sequence": 1661,
"occurred_at": "2026-08-18T16:00:00Z",
"test": true,
"data": {},
"deliveries": [
{
"id": "6f1d2c3b-4a59-4e8f-9b70-2d1c3e4f5a6b",
"status": "pending",
"endpoint_url": "string"
}
]
}OrderPage#
Cursor page of PII-free orders.
| الاسم | النوع | الوصف |
|---|---|---|
dataمطلوب | Order[] | |
next_cursorمطلوبيقبل null | string | Pass back as |
{
"data": [
{
"id": "6f1d2c3b-4a59-4e8f-9b70-2d1c3e4f5a6b",
"order_number": "1042",
"status": "placed",
"payment_status": "not_required",
"source": "online",
"line_pricing": "net",
"subtotal": {
"amount_minor": 275000,
"currency": "SYP",
"decimals": 0
},
"discount": {
"amount_minor": 275000,
"currency": "SYP",
"decimals": 0
},
"shipping": {
"amount_minor": 275000,
"currency": "SYP",
"decimals": 0
},
"tax": {
"amount_minor": 275000,
"currency": "SYP",
"decimals": 0
},
"total": {
"amount_minor": 275000,
"currency": "SYP",
"decimals": 0
},
"paid": {
"amount_minor": 275000,
"currency": "SYP",
"decimals": 0
},
"refunded": {
"amount_minor": 275000,
"currency": "SYP",
"decimals": 0
},
"exchange_rate": {
"scaled": 1300000,
"scale": 4
},
"tags": [
"string"
],
"created_at": "2026-08-18T16:00:00Z",
"updated_at": "2026-08-18T16:00:00Z"
}
],
"next_cursor": "eyJjcmVhdGVkX2F0IjoiMjAyNi0wOC0xOFQxNjowMDowMFoifQ"
}ProductPage#
Cursor page of products with variants.
| الاسم | النوع | الوصف |
|---|---|---|
dataمطلوب | Product[] | |
next_cursorمطلوبيقبل null | string | Pass back as |
{
"data": [
{
"id": "6f1d2c3b-4a59-4e8f-9b70-2d1c3e4f5a6b",
"dsin": "D7Q2K9",
"name": "Olive oil 1 L",
"status": "placed",
"updated_at": "2026-08-18T16:00:00Z",
"image_url": "string",
"image_color": "string",
"brand": "string",
"category": {
"id": "6f1d2c3b-4a59-4e8f-9b70-2d1c3e4f5a6b",
"name": "Olive oil 1 L"
},
"description": "string",
"images": [
"string"
],
"variants": [
{
"id": "6f1d2c3b-4a59-4e8f-9b70-2d1c3e4f5a6b",
"product_id": "6f1d2c3b-4a59-4e8f-9b70-2d1c3e4f5a6b",
"sku": "OIL-1L",
"price": {
"amount_minor": 275000,
"currency": "SYP",
"decimals": 0
},
"status": "placed",
"name": "Olive oil 1 L",
"attributes": {},
"barcode": "string",
"compare_at_price": {
"amount_minor": 275000,
"currency": "SYP",
"decimals": 0
},
"image_url": "string",
"weight_gram": 1,
"available_quantity": 1
}
]
}
],
"next_cursor": "eyJjcmVhdGVkX2F0IjoiMjAyNi0wOC0xOFQxNjowMDowMFoifQ"
}DiscountPage#
Cursor page of discounts.
| الاسم | النوع | الوصف |
|---|---|---|
dataمطلوب | Discount[] | |
next_cursorمطلوبيقبل null | string | Pass back as |
{
"data": [
{
"id": "6f1d2c3b-4a59-4e8f-9b70-2d1c3e4f5a6b",
"method": "code",
"code": "invalid_request",
"title": "Summer sale",
"value_type": "percentage",
"target": "order",
"percent": 15,
"amount": {
"amount_minor": 275000,
"currency": "SYP",
"decimals": 0
},
"is_active": true,
"usage_limit_total": 100,
"used_count": 12,
"applies_to_pos": true,
"applies_to_online": true,
"starts_at": "2026-08-18T16:00:00Z",
"ends_at": "2026-08-18T16:00:00Z",
"created_at": "2026-08-18T16:00:00Z",
"updated_at": "2026-08-18T16:00:00Z"
}
],
"next_cursor": "eyJjcmVhdGVkX2F0IjoiMjAyNi0wOC0xOFQxNjowMDowMFoifQ"
}MovementPage#
Cursor page of append-only inventory movements.
| الاسم | النوع | الوصف |
|---|---|---|
dataمطلوب | Movement[] | |
next_cursorمطلوبيقبل null | string | Pass back as |
{
"data": [
{
"id": "6f1d2c3b-4a59-4e8f-9b70-2d1c3e4f5a6b",
"sequence": 1661,
"variant_id": "6f1d2c3b-4a59-4e8f-9b70-2d1c3e4f5a6b",
"location_id": "6f1d2c3b-4a59-4e8f-9b70-2d1c3e4f5a6b",
"delta": -2,
"stock_after": 38,
"reason": "correction",
"occurred_at": "2026-08-18T16:00:00Z"
}
],
"next_cursor": "eyJjcmVhdGVkX2F0IjoiMjAyNi0wOC0xOFQxNjowMDowMFoifQ"
}CreateOrderItem#
One order line with the price the merchant agreed.
| الاسم | النوع | الوصف |
|---|---|---|
variant_idمطلوبيقبل null | string | Catalog variant, or null for a custom line. |
name | string | Line label. Required when variant_id is null; ignored otherwise (the catalog name is snapshotted). |
quantityمطلوب | integer | |
unit_price_minorمطلوب | integer | Agreed unit price in minor units of the order currency. Zero is allowed. |
{
"variant_id": "6f1d2c3b-4a59-4e8f-9b70-2d1c3e4f5a6b",
"name": "Olive oil 1 L",
"quantity": 2,
"unit_price_minor": 1
}CreateOrderRequest#
Create an order with app-set prices. Totals are recomputed server-side: subtotal = Σ quantity × unit_price_minor, total = subtotal − discount + shipping, tax 0.
| الاسم | النوع | الوصف |
|---|---|---|
currencyمطلوب | string | One of the store's allowed storefront currencies; otherwise 422 |
status | string |
القيم: placedapprovedالافتراضي: "placed" |
itemsمطلوب | CreateOrderItem[] | |
discountيقبل null | object | Order-level discount; must not exceed the sum of the lines. الافتراضي: null |
amount_minorمطلوب | integer | |
titleيقبل null | string | الافتراضي: null |
shippingمطلوب | object | |
amount_minorمطلوب | integer | |
methodمطلوب | string | القيم: deliverypickup |
customerمطلوب | object | |
nameمطلوب | string | |
phoneمطلوب | string | Full international number with country code; stored normalised. |
emailيقبل null | string | Optional. Never invented when absent. الافتراضي: null |
shipping_addressيقبل null | object | Required when shipping.method is الافتراضي: null |
addressمطلوب | string | |
provinceمطلوب | string | Syrian province value, e.g. |
cityيقبل null | string | الافتراضي: null |
notesيقبل null | string | الافتراضي: null |
payment_methodمطلوب | string | Must be enabled in the store; otherwise 409 القيم: codshamcash_manual |
exchange_rateيقبل null | object | Required when currency differs from the store's pricing currency, forbidden otherwise. rate = scaled / 10^scale, oriented 1 pricing-currency unit = rate order-currency units (same as GET /store الافتراضي: null |
scaledمطلوب | integer | |
scaleمطلوب | integer | |
noteيقبل null | string | الافتراضي: null |
tags | string[] | At most 10 tags after case-insensitive dedupe. |
attributes | OrderAttributes | Up to 20 keys ( الافتراضي: {} |
inventory | string | القيم: decrementskipالافتراضي: "decrement" |
{
"currency": "SYP",
"status": "placed",
"items": [
{
"variant_id": "6f1d2c3b-4a59-4e8f-9b70-2d1c3e4f5a6b",
"name": "Olive oil 1 L",
"quantity": 2,
"unit_price_minor": 1
}
],
"discount": {
"amount_minor": 275000,
"title": null
},
"shipping": {
"amount_minor": 275000,
"method": "delivery"
},
"customer": {
"name": "Olive oil 1 L",
"phone": "string",
"email": null
},
"shipping_address": {
"address": "string",
"province": "string",
"city": null,
"notes": null
},
"payment_method": "cod",
"exchange_rate": {
"scaled": 1300000,
"scale": 4
},
"note": null,
"tags": [
"string"
],
"attributes": {},
"inventory": "decrement"
}UpdateOrderRequest#
Update the note, add/remove tags, or merge the app's own attributes. Money, lines, customer and address are immutable after creation.
| الاسم | النوع | الوصف |
|---|---|---|
noteيقبل null | string | Replace the order note; null clears it. |
tags | object | Set operations, never a replace: the merchant's and other apps' tags survive. |
add | string[] | At most 10 tags after case-insensitive dedupe. |
remove | string[] | Removed case-insensitively. |
attributes | OrderAttributesPatch | Merged into the app's namespace; a |
{
"note": "Stock count 2026-08-18",
"tags": {
"add": [
"string"
],
"remove": [
"string"
]
},
"attributes": {}
}UpdateOrderStatusRequest#
Transition an order through the server matrix.
| الاسم | النوع | الوصف |
|---|---|---|
statusمطلوب | SettableOrderStatus | Statuses an app may set through PATCH /orders/{id}/status. Money-bearing statuses are reachable only through refunds. القيم: placedapprovedprocessingshippeddelivereddelivered_failedreturnedcancelled |
{
"status": "placed"
}CreateFulfillmentRequest#
Fulfill selected line quantities. Each order item may appear once.
| الاسم | النوع | الوصف |
|---|---|---|
providerيقبل null | string | |
tracking_numberيقبل null | string | |
status | string | "pending" reserves the quantities without auto-shipping the order (carrier booked, pickup not yet made); move to "shipped" via PATCH when the parcel leaves. القيم: pendingshippedالافتراضي: "shipped" |
linesمطلوب | object[] | |
order_item_idمطلوب | string | |
quantityمطلوب | integer |
{
"provider": "Aramex",
"tracking_number": "RX123456789SY",
"status": "shipped",
"lines": [
{
"order_item_id": "6f1d2c3b-4a59-4e8f-9b70-2d1c3e4f5a6b",
"quantity": 2
}
]
}UpdateFulfillmentRequest#
Update tracking, mark delivered, cancel, or propose a COD remittance. At least one field is required.
| الاسم | النوع | الوصف |
|---|---|---|
tracking_numberيقبل null | string | |
status | string | القيم: shippeddeliveredcancelled |
cod_collected_minor | integer | COD remittance PROPOSAL: the cash the courier reports collecting (minor units; may be less than the order total). Moves no money. The merchant confirms in admin, and that confirmation writes the cod_collection ledger row which updates payment status and fires order.paid. One open proposal per order; re-sending updates it. |
cod_collected_note | string |
{
"tracking_number": "RX123456789SY",
"status": "shipped",
"cod_collected_minor": 275000,
"cod_collected_note": "string"
}CreateRefundRequest#
Append a refund against captured funds.
| الاسم | النوع | الوصف |
|---|---|---|
amount_minorمطلوب | integer | |
currency | string | Optional confirmation guard; 409 when it differs from the order's currency. |
reasonيقبل null | string | |
lines | object[] | Optional line breakdown; amounts must sum to amount_minor. |
order_item_idمطلوب | string | |
quantityمطلوب | integer | |
amount_minorمطلوب | integer | |
restock | object | Return the refunded quantities to stock. Requires |
location_idمطلوب | string |
{
"amount_minor": 275000,
"currency": "SYP",
"reason": "correction",
"lines": [
{
"order_item_id": "6f1d2c3b-4a59-4e8f-9b70-2d1c3e4f5a6b",
"quantity": 2,
"amount_minor": 275000
}
],
"restock": {
"location_id": "6f1d2c3b-4a59-4e8f-9b70-2d1c3e4f5a6b"
}
}CreateInventoryMovementRequest#
Append an inventory movement.
| الاسم | النوع | الوصف |
|---|---|---|
variant_idمطلوب | string | |
location_idمطلوب | string | |
deltaمطلوب | integer | Signed quantity change. Absolute stock writes are forbidden. |
reasonمطلوب | string | القيم: correctioninitialreturndamage |
noteيقبل null | string |
{
"variant_id": "6f1d2c3b-4a59-4e8f-9b70-2d1c3e4f5a6b",
"location_id": "6f1d2c3b-4a59-4e8f-9b70-2d1c3e4f5a6b",
"delta": -2,
"reason": "correction",
"note": "Stock count 2026-08-18"
}UpsertWebhookSubscriptionRequest#
Create or replace the install's single subscription.
| الاسم | النوع | الوصف |
|---|---|---|
endpoint_urlمطلوب | string | Public HTTPS URL. Private, loopback and IP-literal hosts are refused. |
topicsمطلوب | WebhookTopic[] | |
rotate_secret | boolean | Mint a new signing secret and return it once in the response. |
{
"endpoint_url": "https://app.example.com/webhooks/dukkan",
"topics": [
"order.created"
],
"rotate_secret": false
}CreateWebhookTestEventRequest#
Fire one signed test delivery (sandbox stores only).
| الاسم | النوع | الوصف |
|---|---|---|
topicمطلوب | WebhookTopic | Webhook topic. Subscribing needs the read scope that governs the payload; القيم: order.createdorder.status_changedorder.paidproduct.createdproduct.updatedproduct.deletedinventory.movement_createdfulfillment.requestedfulfillment.createdfulfillment.updatedrefund.createdapp.uninstalled |
data | object | Optional overrides merged over the platform-built sample payload for the topic (at most 16 KB). |
{
"topic": "order.created",
"data": {}
}OrderCreatedEventData#
| الاسم | النوع | الوصف |
|---|---|---|
order_idمطلوب | string | |
order_numberمطلوب | string | |
statusمطلوب | string | Order status at creation (usually |
total_minorمطلوب | integer | Integer minor units of |
currencyمطلوب | string | |
sourceيقبل null | string | Sales channel ( |
{
"order_id": "6f1d2c3b-4a59-4e8f-9b70-2d1c3e4f5a6b",
"order_number": "1042",
"status": "placed",
"total_minor": 1,
"currency": "SYP",
"source": "online"
}OrderStatusChangedEventData#
| الاسم | النوع | الوصف |
|---|---|---|
order_idمطلوب | string | |
from_statusمطلوب | string | |
statusمطلوب | string | The status the order moved to. |
{
"order_id": "6f1d2c3b-4a59-4e8f-9b70-2d1c3e4f5a6b",
"from_status": "string",
"status": "placed"
}OrderPaidEventData#
Fires when captured funds reach the order total, from the payments ledger only. COD orders reach it when the merchant confirms the courier's remittance, never on delivery.
| الاسم | النوع | الوصف |
|---|---|---|
order_idمطلوب | string | |
amount_minorمطلوب | integer | Captured funds at the moment they crossed the order total. |
currencyمطلوب | string |
{
"order_id": "6f1d2c3b-4a59-4e8f-9b70-2d1c3e4f5a6b",
"amount_minor": 275000,
"currency": "SYP"
}ProductCreatedEventData#
| الاسم | النوع | الوصف |
|---|---|---|
product_idمطلوب | string |
{
"product_id": "6f1d2c3b-4a59-4e8f-9b70-2d1c3e4f5a6b"
}ProductUpdatedEventData#
| الاسم | النوع | الوصف |
|---|---|---|
product_idمطلوب | string | |
variant_id | string | Set when a variant row changed rather than the product itself. |
operation | string | Present on variant changes: which write on the variant fired the event. القيم: insertupdatedelete |
{
"product_id": "6f1d2c3b-4a59-4e8f-9b70-2d1c3e4f5a6b",
"variant_id": "6f1d2c3b-4a59-4e8f-9b70-2d1c3e4f5a6b",
"operation": "insert"
}ProductDeletedEventData#
| الاسم | النوع | الوصف |
|---|---|---|
product_idمطلوب | string |
{
"product_id": "6f1d2c3b-4a59-4e8f-9b70-2d1c3e4f5a6b"
}InventoryMovementCreatedEventData#
| الاسم | النوع | الوصف |
|---|---|---|
movement_idمطلوب | string | |
variant_idمطلوبيقبل null | string | |
location_idمطلوب | string | |
deltaمطلوب | integer | |
stock_afterمطلوب | integer | |
reasonمطلوب | string |
{
"movement_id": "6f1d2c3b-4a59-4e8f-9b70-2d1c3e4f5a6b",
"variant_id": "6f1d2c3b-4a59-4e8f-9b70-2d1c3e4f5a6b",
"location_id": "6f1d2c3b-4a59-4e8f-9b70-2d1c3e4f5a6b",
"delta": -2,
"stock_after": 38,
"reason": "correction"
}FulfillmentRequestedEventData#
A fulfillment was created as pending: a pickup is waiting to be booked by a carrier app.
| الاسم | النوع | الوصف |
|---|---|---|
fulfillment_idمطلوب | string | |
order_idمطلوب | string | |
linesمطلوب | object[] | |
order_item_idمطلوب | string | |
quantityمطلوب | integer |
{
"fulfillment_id": "6f1d2c3b-4a59-4e8f-9b70-2d1c3e4f5a6b",
"order_id": "6f1d2c3b-4a59-4e8f-9b70-2d1c3e4f5a6b",
"lines": [
{
"order_item_id": "6f1d2c3b-4a59-4e8f-9b70-2d1c3e4f5a6b",
"quantity": 2
}
]
}FulfillmentCreatedEventData#
| الاسم | النوع | الوصف |
|---|---|---|
fulfillment_idمطلوب | string | |
order_idمطلوب | string | |
statusمطلوب | string | القيم: pendingshipped |
tracking_numberمطلوبيقبل null | string | |
linesمطلوب | object[] | |
order_item_idمطلوب | string | |
quantityمطلوب | integer | |
order_fully_fulfilledمطلوب | boolean | True when every line of the order is now covered by a fulfillment. |
{
"fulfillment_id": "6f1d2c3b-4a59-4e8f-9b70-2d1c3e4f5a6b",
"order_id": "6f1d2c3b-4a59-4e8f-9b70-2d1c3e4f5a6b",
"status": "pending",
"tracking_number": "RX123456789SY",
"lines": [
{
"order_item_id": "6f1d2c3b-4a59-4e8f-9b70-2d1c3e4f5a6b",
"quantity": 2
}
],
"order_fully_fulfilled": true
}FulfillmentUpdatedEventData#
| الاسم | النوع | الوصف |
|---|---|---|
fulfillment_idمطلوب | string | |
order_idمطلوب | string | |
statusمطلوب | string | القيم: pendingshippeddeliveredcancelled |
previous_statusمطلوب | string | |
tracking_numberمطلوبيقبل null | string |
{
"fulfillment_id": "6f1d2c3b-4a59-4e8f-9b70-2d1c3e4f5a6b",
"order_id": "6f1d2c3b-4a59-4e8f-9b70-2d1c3e4f5a6b",
"status": "pending",
"previous_status": "string",
"tracking_number": "RX123456789SY"
}RefundCreatedEventData#
| الاسم | النوع | الوصف |
|---|---|---|
refund_idمطلوب | string | |
order_idمطلوب | string | |
amount_minorمطلوب | integer | Integer minor units of |
currencyمطلوب | string | |
lines | object[] | Line breakdown when the refund carried one. Absent on POS refunds. |
order_item_idمطلوبيقبل null | string | |
quantityمطلوب | integer | |
amount_minorمطلوب | integer | Integer minor units of |
source | "pos" | Present when the refund was written at the point of sale. |
{
"refund_id": "6f1d2c3b-4a59-4e8f-9b70-2d1c3e4f5a6b",
"order_id": "6f1d2c3b-4a59-4e8f-9b70-2d1c3e4f5a6b",
"amount_minor": 275000,
"currency": "SYP",
"lines": [
{
"order_item_id": "6f1d2c3b-4a59-4e8f-9b70-2d1c3e4f5a6b",
"quantity": 2,
"amount_minor": 275000
}
],
"source": "pos"
}AppUninstalledEventData#
Farewell notice: the merchant removed the app. Tokens are already dead; delete what the DPA requires and stop calling the API for this install.
| الاسم | النوع | الوصف |
|---|---|---|
app_idمطلوب | string | |
install_idمطلوب | string |
{
"app_id": "6f1d2c3b-4a59-4e8f-9b70-2d1c3e4f5a6b",
"install_id": "6f1d2c3b-4a59-4e8f-9b70-2d1c3e4f5a6b"
}